提交 8121d106 authored 作者: 宋雄's avatar 宋雄

新增页面

上级 572e6bfc
NODE_ENV=development NODE_ENV=development
VUE_APP_API_BASE_URL='http://192.168.0.118:9999/property-company' VUE_APP_API_BASE_URL='http://192.168.0.118:9999'
# VUE_APP_API_BASE_URL='http://220.203.25.212:9999/property-company' # VUE_APP_API_BASE_URL='http://220.203.25.212:9999/property-company'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
......
NODE_ENV=production NODE_ENV=production
VUE_APP_API_BASE_URL=http://220.203.25.212:9999/property-central VUE_APP_API_BASE_URL=http://220.203.25.212:9999
VUE_APP_CAS_BASE_URL=http://localhost:8888/cas VUE_APP_CAS_BASE_URL=http://localhost:8888/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
\ No newline at end of file
...@@ -11,42 +11,46 @@ ...@@ -11,42 +11,46 @@
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {
"@antv/data-set": "^0.11.4",
"@jeecg/antd-online-mini": "3.4.3-beta2", "@jeecg/antd-online-mini": "3.4.3-beta2",
"@tinymce/tinymce-vue": "2.1.0",
"@toast-ui/editor": "^2.1.2",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^1.0.2",
"@wangeditor/plugin-mention": "^1.0.0",
"ant-design-vue": "^1.7.2", "ant-design-vue": "^1.7.2",
"@antv/data-set": "^0.11.4",
"viser-vue": "^2.4.8",
"axios": "^0.18.0", "axios": "^0.18.0",
"china-area-data": "^5.0.1",
"clipboard": "^2.0.4",
"codemirror": "^5.46.0",
"cron-parser": "^2.10.0",
"dayjs": "^1.8.0", "dayjs": "^1.8.0",
"dom-align": "1.12.0",
"enquire.js": "^2.1.6", "enquire.js": "^2.1.6",
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"lodash.get": "^4.4.2", "lodash.get": "^4.4.2",
"lodash.pick": "^4.4.0", "lodash.pick": "^4.4.0",
"md5": "^2.2.1", "md5": "^2.2.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"qiankun": "^2.5.1",
"tinymce": "5.4.1",
"viser-vue": "^2.4.8",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-area-linkage": "^5.1.0",
"vue-cropper": "^0.5.4", "vue-cropper": "^0.5.4",
"vue-html2pdf": "^1.8.0",
"vue-i18n": "^8.7.0", "vue-i18n": "^8.7.0",
"vue-loader": "^15.7.0", "vue-loader": "^15.7.0",
"vue-ls": "^3.2.0", "vue-ls": "^3.2.0",
"vue-router": "^3.0.1",
"vuex": "^3.1.0",
"vue-print-nb-jeecg": "^1.0.12",
"clipboard": "^2.0.4",
"vue-photo-preview": "^1.1.3", "vue-photo-preview": "^1.1.3",
"vue-print-nb-jeecg": "^1.0.12",
"vue-router": "^3.0.1",
"vue-splitpane": "^1.0.4", "vue-splitpane": "^1.0.4",
"vuedraggable": "^2.20.0", "vuedraggable": "^2.20.0",
"codemirror": "^5.46.0", "vuex": "^3.1.0",
"@tinymce/tinymce-vue": "2.1.0",
"tinymce": "5.4.1",
"@toast-ui/editor": "^2.1.2",
"vue-area-linkage": "^5.1.0",
"china-area-data": "^5.0.1",
"dom-align": "1.12.0",
"xe-utils": "2.4.8",
"vxe-table": "2.9.13", "vxe-table": "2.9.13",
"vxe-table-plugin-antd": "1.8.10", "vxe-table-plugin-antd": "1.8.10",
"cron-parser": "^2.10.0", "xe-utils": "2.4.8",
"qiankun": "^2.5.1",
"xss": "^1.0.13" "xss": "^1.0.13"
}, },
"devDependencies": { "devDependencies": {
...@@ -56,13 +60,13 @@ ...@@ -56,13 +60,13 @@
"@vue/cli-service": "^3.3.0", "@vue/cli-service": "^3.3.0",
"@vue/eslint-config-standard": "^4.0.0", "@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "7.2.3", "babel-eslint": "7.2.3",
"compression-webpack-plugin": "^3.1.0",
"eslint": "^5.16.0", "eslint": "^5.16.0",
"eslint-plugin-vue": "^5.1.0", "eslint-plugin-vue": "^5.1.0",
"html-webpack-plugin": "^4.2.0",
"less": "^3.9.0", "less": "^3.9.0",
"less-loader": "^4.1.0", "less-loader": "^4.1.0",
"vue-template-compiler": "^2.6.10", "vue-template-compiler": "^2.6.10"
"html-webpack-plugin": "^4.2.0",
"compression-webpack-plugin": "^3.1.0"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,
...@@ -100,7 +104,10 @@ ...@@ -100,7 +104,10 @@
"vue/html-closing-bracket-newline": 0, "vue/html-closing-bracket-newline": 0,
"vue/no-parsing-error": 0, "vue/no-parsing-error": 0,
"no-tabs": 0, "no-tabs": 0,
"indent": ["off", 2], "indent": [
"off",
2
],
"no-console": 0, "no-console": 0,
"space-before-function-paren": 0 "space-before-function-paren": 0
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>JeecgBoot 企业级低代码平台</title> <title>湖北汉江之星科技有限公司</title>
<link rel="icon" href="<%= BASE_URL %>logo.png"> <link rel="icon" href="<%= BASE_URL %>logo.png">
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script> <script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
<style> <style>
......
...@@ -31,7 +31,7 @@ const queryTreeListForRole = (params)=>getAction("/sys/role/queryTreeList",param ...@@ -31,7 +31,7 @@ const queryTreeListForRole = (params)=>getAction("/sys/role/queryTreeList",param
const queryListAsync = (params)=>getAction("/sys/permission/queryListAsync",params); const queryListAsync = (params)=>getAction("/sys/permission/queryListAsync",params);
const queryRolePermission = (params)=>getAction("/sys/permission/queryRolePermission",params); const queryRolePermission = (params)=>getAction("/sys/permission/queryRolePermission",params);
const saveRolePermission = (params)=>postAction("/sys/permission/saveRolePermission",params); const saveRolePermission = (params)=>postAction("/sys/permission/saveRolePermission",params);
const queryPermissionsByUser = ()=>getAction("/property/permission/getUserPermissionByToken"); const queryPermissionsByUser = ()=>getAction("/sys/permission/getUserPermissionByToken");
const loadAllRoleIds = (params)=>getAction("/sys/permission/loadAllRoleIds",params); const loadAllRoleIds = (params)=>getAction("/sys/permission/loadAllRoleIds",params);
const getPermissionRuleList = (params)=>getAction("/sys/permission/getPermRuleListByPermId",params); const getPermissionRuleList = (params)=>getAction("/sys/permission/getPermRuleListByPermId",params);
const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermissionRule",params); const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermissionRule",params);
...@@ -56,16 +56,9 @@ const queryMyDepartTreeList = (params)=>getAction("/sys/sysDepart/queryMyDeptTre ...@@ -56,16 +56,9 @@ const queryMyDepartTreeList = (params)=>getAction("/sys/sysDepart/queryMyDeptTre
const deleteLog = (params)=>deleteAction("/sys/log/delete",params); const deleteLog = (params)=>deleteAction("/sys/log/delete",params);
const deleteLogList = (params)=>deleteAction("/sys/log/deleteBatch",params); const deleteLogList = (params)=>deleteAction("/sys/log/deleteBatch",params);
//入驻管理 //收费类型列表
const getPropertyListApi = (params)=>getAction("/property/propertySettled/list",params); const getChargeListApi = (params)=>getAction("/property-company/system/chargeType/chargeTypelist",params);
const getPropertyDetailApi = (params)=>getAction("/property/propertySettled/queryById",params); const addReceiptTemplate = (params)=>postAction("/property-company/system/receiptTemplate/add",params);
const AddUpdatePropertyApi = (params)=>postAction("/property/propertySettled/add",params);
//费用管理
const getCostListApi = (params)=>getAction("/property/propertyChargrule/list",params);
const getCostDetailApi = (params)=>getAction("/property/propertyChargrule/queryById",params);
const AddUpdateCostApi = (params)=>postAction("/property/propertyChargrule/add",params);
const AuditUpdateCostApi = (params)=>postAction("/property/propertyChargrule/audit",params);
//数据字典 //数据字典
const addDict = (params)=>postAction("/sys/dict/add",params); const addDict = (params)=>postAction("/sys/dict/add",params);
...@@ -166,14 +159,8 @@ export { ...@@ -166,14 +159,8 @@ export {
queryMyDepartTreeList, queryMyDepartTreeList,
getUserNoticeInfo, getUserNoticeInfo,
getDictItemsFromCache, getDictItemsFromCache,
getPropertyListApi, getChargeListApi,
getPropertyDetailApi, addReceiptTemplate
AddUpdatePropertyApi,
getCostListApi,
getCostDetailApi,
AddUpdateCostApi,
AuditUpdateCostApi
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="components-input-demo-presuffix" v-if="avalid"> <div class="components-input-demo-presuffix" v-if="avalid">
<!----> <!---->
<a-input @click="openModal" :placeholder="placeholder" v-model="showText" readOnly :disabled="disabled"> <a-input @click="openModal" :placeholder="placeholder" v-model="showText" readOnly :disabled="disabled">
<a-icon slot="prefix" type="cluster" :title="title"/> <a-icon slot="prefix" :type="icon" :title="title"/>
<a-icon v-if="showText" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/> <a-icon v-if="showText" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
</a-input> </a-input>
...@@ -93,6 +93,11 @@ ...@@ -93,6 +93,11 @@
required: false, required: false,
default: ',' default: ','
}, },
icon: {
type: String,
default: 'cluster',
required: false
},
/** 分组ID,用于将多个popup的请求合并到一起,不传不分组 */ /** 分组ID,用于将多个popup的请求合并到一起,不传不分组 */
groupId: String groupId: String
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
@click="toggle"/> @click="toggle"/>
<span v-if="device === 'desktop'">欢迎进入 湖北汉江之星科技有限公司 企业平台</span> <span v-if="device === 'desktop'">欢迎进入 湖北汉江之星科技有限公司 企业平台</span>
<span v-else>Jeecg-Boot</span> <!-- <span v-else>Jeecg-Boot</span> -->
<user-menu :theme="theme"/> <user-menu :theme="theme"/>
</div> </div>
......
...@@ -26,11 +26,11 @@ ...@@ -26,11 +26,11 @@
<!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 --> <!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
<!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 --> <!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 -->
<!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 --> <!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
<span class="action"> <!-- <span class="action">
<a class="logout_title" target="_blank" href="http://doc.jeecg.com"> <a class="logout_title" target="_blank" href="http://doc.jeecg.com">
<a-icon type="question-circle-o"></a-icon> <a-icon type="question-circle-o"></a-icon>
</a> </a>
</span> </span> -->
<!-- <header-notice class="action"/> --> <!-- <header-notice class="action"/> -->
<a-dropdown> <a-dropdown>
<span class="action action-full ant-dropdown-link user-dropdown-menu"> <span class="action action-full ant-dropdown-link user-dropdown-menu">
......
...@@ -26,7 +26,8 @@ import 'vue-photo-preview/dist/skin.css' ...@@ -26,7 +26,8 @@ import 'vue-photo-preview/dist/skin.css'
import SSO from '@/cas/sso.js' import SSO from '@/cas/sso.js'
import { import {
ACCESS_TOKEN, ACCESS_TOKEN,
PROPERTY_CODE, PLATFORM_CODE,
PLATFORM_TYPE,
DEFAULT_COLOR, DEFAULT_COLOR,
DEFAULT_THEME, DEFAULT_THEME,
DEFAULT_LAYOUT_MODE, DEFAULT_LAYOUT_MODE,
...@@ -82,7 +83,8 @@ function main() { ...@@ -82,7 +83,8 @@ function main() {
store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak)) store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor)) store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN)) store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
store.commit('SET_CODE', Vue.ls.get(PROPERTY_CODE)) store.commit('SET_TYPE', Vue.ls.get(PLATFORM_CODE))
store.commit('SET_CODE', Vue.ls.get(PLATFORM_TYPE))
store.commit('SET_MULTI_PAGE',Vue.ls.get(DEFAULT_MULTI_PAGE,config.multipage)) store.commit('SET_MULTI_PAGE',Vue.ls.get(DEFAULT_MULTI_PAGE,config.multipage))
}, },
render: h => h(App) render: h => h(App)
......
import Vue from 'vue' import Vue from 'vue'
import { login, logout, phoneLogin, thirdLogin } from "@/api/login" import { login, logout, phoneLogin, thirdLogin } from "@/api/login"
import { ACCESS_TOKEN,PROPERTY_CODE, USER_NAME,USER_INFO,USER_AUTH,SYS_BUTTON_AUTH,UI_CACHE_DB_DICT_DATA,TENANT_ID,CACHE_INCLUDED_ROUTES } from "@/store/mutation-types" import { ACCESS_TOKEN,PLATFORM_CODE,PLATFORM_TYPE, USER_NAME,USER_INFO,USER_AUTH,SYS_BUTTON_AUTH,UI_CACHE_DB_DICT_DATA,TENANT_ID,CACHE_INCLUDED_ROUTES } from "@/store/mutation-types"
import { welcome } from "@/utils/util" import { welcome } from "@/utils/util"
import { queryPermissionsByUser } from '@/api/api' import { queryPermissionsByUser } from '@/api/api'
import { getAction } from '@/api/manage' import { getAction } from '@/api/manage'
...@@ -8,7 +8,8 @@ import { getAction } from '@/api/manage' ...@@ -8,7 +8,8 @@ import { getAction } from '@/api/manage'
const user = { const user = {
state: { state: {
token: '', token: '',
propertyCode: '', platformCode: '',
platformType: '',
username: '', username: '',
realname: '', realname: '',
tenantid:'', tenantid:'',
...@@ -24,8 +25,11 @@ const user = { ...@@ -24,8 +25,11 @@ const user = {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
SET_CODE: (state, code) => { SET_CODE: (state, platformCode) => {
state.propertyCode = code state.platformCode = platformCode
},
SET_TYPE: (state, platformType) => {
state.platformType = platformType
}, },
SET_NAME: (state, { username, realname, welcome }) => { SET_NAME: (state, { username, realname, welcome }) => {
state.username = username state.username = username
...@@ -63,7 +67,6 @@ const user = { ...@@ -63,7 +67,6 @@ const user = {
const result = response.result const result = response.result
const userInfo = result.userInfo const userInfo = result.userInfo
Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(PROPERTY_CODE, result.userInfo.propertyCode, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
commit('SET_TOKEN', result.token) commit('SET_TOKEN', result.token)
...@@ -87,10 +90,11 @@ const user = { ...@@ -87,10 +90,11 @@ const user = {
const result = response.result const result = response.result
const userInfo = result.userInfo const userInfo = result.userInfo
Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(PROPERTY_CODE, result.userInfo.propertyCode, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(PLATFORM_CODE, result.userInfo.platformCode, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(PLATFORM_TYPE, result.userInfo.platformType, 7 * 24 * 60 * 60 * 1000)
commit('SET_TOKEN', result.token) commit('SET_TOKEN', result.token)
commit('SET_INFO', userInfo) commit('SET_INFO', userInfo)
commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() }) commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() })
...@@ -112,7 +116,6 @@ const user = { ...@@ -112,7 +116,6 @@ const user = {
const result = response.result const result = response.result
const userInfo = result.userInfo const userInfo = result.userInfo
Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(PROPERTY_CODE, result.userInfo.propertyCode, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000)
...@@ -186,7 +189,8 @@ const user = { ...@@ -186,7 +189,8 @@ const user = {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_PERMISSIONLIST', []) commit('SET_PERMISSIONLIST', [])
Vue.ls.remove(ACCESS_TOKEN) Vue.ls.remove(ACCESS_TOKEN)
Vue.ls.remove(PROPERTY_CODE) Vue.ls.remove(PLATFORM_CODE)
Vue.ls.remove(PLATFORM_TYPE)
Vue.ls.remove(USER_INFO) Vue.ls.remove(USER_INFO)
Vue.ls.remove(USER_NAME) Vue.ls.remove(USER_NAME)
Vue.ls.remove(UI_CACHE_DB_DICT_DATA) Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
......
export const ACCESS_TOKEN = 'Access-Token' export const ACCESS_TOKEN = 'Access-Token'
export const PROPERTY_CODE = 'propertyCode' export const PLATFORM_CODE = 'platformCode'
export const PLATFORM_TYPE = 'platformType'
export const SIDEBAR_TYPE = 'SIDEBAR_TYPE' export const SIDEBAR_TYPE = 'SIDEBAR_TYPE'
export const DEFAULT_THEME = 'DEFAULT_THEME' export const DEFAULT_THEME = 'DEFAULT_THEME'
export const DEFAULT_LAYOUT_MODE = 'DEFAULT_LAYOUT_MODE' export const DEFAULT_LAYOUT_MODE = 'DEFAULT_LAYOUT_MODE'
......
...@@ -3,7 +3,7 @@ import axios from 'axios' ...@@ -3,7 +3,7 @@ import axios from 'axios'
import store from '@/store' import store from '@/store'
import { VueAxios } from './axios' import { VueAxios } from './axios'
import router from '@/router/index' import router from '@/router/index'
import { ACCESS_TOKEN, PROPERTY_CODE, TENANT_ID } from "@/store/mutation-types" import { ACCESS_TOKEN, PLATFORM_CODE, PLATFORM_TYPE, TENANT_ID } from "@/store/mutation-types"
/** /**
* 【指定 axios的 baseURL】 * 【指定 axios的 baseURL】
...@@ -105,10 +105,16 @@ const err = (error) => { ...@@ -105,10 +105,16 @@ const err = (error) => {
// request interceptor // request interceptor
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
const token = Vue.ls.get(ACCESS_TOKEN) const token = Vue.ls.get(ACCESS_TOKEN)
const propertyCode = Vue.ls.get(PROPERTY_CODE) const platformCode = Vue.ls.get(PLATFORM_CODE)
const platformType = Vue.ls.get(PLATFORM_TYPE)
if (token) { if (token) {
config.headers[ 'X-Access-Token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改 config.headers[ 'X-Access-Token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
config.headers[ 'propertyCode' ] = propertyCode // 让每个请求携带自定义 propertyCode }
if (platformCode) {
config.headers[ 'platform_code' ] = platformCode // 让每个请求携带platformCode
}
if (platformType) {
config.headers[ 'platform_type' ] = platformType // 让每个请求携带platformType
} }
// update-begin--author:sunjianlei---date:20200723---for 如果当前在low-app环境,并且携带了appId,就向Header里传递appId // update-begin--author:sunjianlei---date:20200723---for 如果当前在low-app环境,并且携带了appId,就向Header里传递appId
......
...@@ -170,10 +170,10 @@ ...@@ -170,10 +170,10 @@
} }
], ],
url: { url: {
list: "/property/propertyAdv/list", list: "/property-company/notice/companyNotice/list",
delete: "/property/propertyAdv/delete", delete: "/property-company/property/propertyAdv/delete",
deleteBatch: "/property/propertyAdv/deleteBatch", deleteBatch: "/property-company/property/propertyAdv/deleteBatch",
exportXlsUrl: "/property/propertyAdv/exportXls" exportXlsUrl: "/property-company/property/propertyAdv/exportXls"
}, },
dictOptions:{} dictOptions:{}
} }
......
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
releaseTime: [{ required: true, message: '请选择发布日期', trigger: 'change' }] releaseTime: [{ required: true, message: '请选择发布日期', trigger: 'change' }]
}, },
url: { url: {
add: "/property/propertyAdv/add", add: "/property-company/property/propertyAdv/add",
edit: "/property/propertyAdv/edit", edit: "/property-company/property/propertyAdv/edit",
queryById: "/property/propertyAdv/queryById" queryById: "/property-company/property/propertyAdv/queryById"
} }
} }
}, },
......
...@@ -5,13 +5,8 @@ ...@@ -5,13 +5,8 @@
<a-form layout="inline" @keyup.enter.native="searchQuery"> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="表名"> <a-form-item label="姓名">
<a-input placeholder="请输入表名" v-model="queryParam.dataTable"></a-input> <a-input placeholder="请输入姓名" v-model="queryParam.assetName"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="数据ID">
<a-input placeholder="请输入ID" v-model="queryParam.dataId"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
...@@ -28,33 +23,40 @@ ...@@ -28,33 +23,40 @@
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
@click="batchDel" <a-dropdown v-if="selectedRowKeys.length > 0">
v-if="selectedRowKeys.length > 0" <a-menu slot="overlay">
ghost <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
type="primary" </a-menu>
icon="delete">批量删除 <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-button> </a-dropdown>
</div> </div>
<!-- table区域-begin --> <!-- table区域-begin -->
<div> <div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{ <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp; selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" @click="onClearSelected">清空</a> <a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div> </div>
<a-table <a-table
:columns="columns" ref="table"
size="middle" size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
:loading="loading"
:pagination="pagination" :pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
> >
<span slot="employeeStatus" slot-scope="text, record">
<span :style="{'color': record.employeeStatus === '1' ? 'green' : 'red'}">{{record.employeeStatus === '1' ? '在职' : '离职'}}</span>
</span>
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a> <a @click="handleEdit(record)">编辑</a>
...@@ -67,12 +69,6 @@ ...@@ -67,12 +69,6 @@
<a-menu-item> <a-menu-item>
<a href="javascript:;" @click="handleDetail(record)">详情</a> <a href="javascript:;" @click="handleDetail(record)">详情</a>
</a-menu-item> </a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleAddSub(record)">添加下级</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="handleDataRule(record)">数据规则</a>
</a-menu-item>
<a-menu-item> <a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft"> <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
...@@ -82,77 +78,77 @@ ...@@ -82,77 +78,77 @@
</a-menu> </a-menu>
</a-dropdown> </a-dropdown>
</span> </span>
<!-- 字符串超长截取省略号显示 -->
<span slot="url" slot-scope="text">
<j-ellipsis :value="text" :length="25"/>
</span>
<!-- 字符串超长截取省略号显示-->
<span slot="component" slot-scope="text">
<j-ellipsis :value="text"/>
</span>
</a-table> </a-table>
</div> </div>
<!-- table区域-end --> <!-- table区域-end -->
<!-- <permission-modal ref="modalForm" @ok="modalFormOk"></permission-modal> --> <notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<!-- <permission-data-rule-list ref="PermissionDataRuleList" @ok="modalFormOk"></permission-data-rule-list> -->
</a-card> </a-card>
</template> </template>
<script> <script>
// import PermissionModal from './modules/PermissionModal'
import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
// import PermissionDataRuleList from './PermissionDataRuleList' import NoticeModal from './modules/NoticeModal'
import JEllipsis from '@/components/jeecg/JEllipsis' import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
const columns = [ const columns = [
{ {
title: '菜单名称', title: '设备名称',
dataIndex: 'name', dataIndex: 'assetName',
key: 'name' key: 'assetName',
}, { align: 'center'
title: '菜单类型', },
dataIndex: 'menuType', {
key: 'menuType', title: '设备编码',
dataIndex: 'assetCode',
key: 'assetCode',
align: 'center'
},
{
title: '设备品牌',
dataIndex: 'assetBrand',
key: 'assetBrand',
align: 'center'
},
{
title: '设备型号',
dataIndex: 'assetModel',
key: 'assetModel',
align: 'center'
},
{
title: '设备状态',
dataIndex: 'assetStatus',
key: 'assetStatus',
align: 'center',
customRender: function(text) { customRender: function(text) {
if (text == 0) { return filterDictTextByCache('device_status', text);
return '菜单'
} else if (text == 1) {
return '菜单'
} else if (text == 2) {
return '按钮/权限'
} else {
return text
}
} }
},/*{
title: '权限编码',
dataIndex: 'perms',
key: 'permissionCode',
},*/{
title: 'icon',
dataIndex: 'icon',
key: 'icon'
}, },
{ {
title: '组件', title: '首次使用时间',
dataIndex: 'component', dataIndex: 'firstUseDate',
key: 'component', key: 'firstUseDate',
scopedSlots: { customRender: 'component' } align: 'center'
}, },
{ {
title: '路径', title: '使用年限',
dataIndex: 'url', dataIndex: 'useLife',
key: 'url', key: 'useLife',
scopedSlots: { customRender: 'url' } align: 'center'
}, },
{ {
title: '排序', title: '所在位置',
dataIndex: 'sortNo', dataIndex: 'assetPosition',
key: 'sortNo' key: 'assetPosition',
align: 'center'
},
{
title: '所属小区',
dataIndex: 'communityCode',
key: 'communityCode',
align: 'center'
}, },
{ {
title: '操作', title: '操作',
...@@ -166,51 +162,25 @@ ...@@ -166,51 +162,25 @@
export default { export default {
name: 'PermissionListAsync', name: 'PermissionListAsync',
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
components: { components: {NoticeModal},
// PermissionDataRuleList,
// PermissionModal,
JEllipsis
},
data() { data() {
return { return {
description: '这是菜单管理页面',
// 表头 // 表头
columns: columns, columns: columns,
loading: false, pagination: {
pagination: {}, total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: { url: {
list: '/property/propertySettled/list', list: "/property-company/asset/propertyAsset/list",
delete: '/sys/permission/delete', delete: '/property-company/asset/propertyAsset/list',
deleteBatch: '/sys/permission/deleteBatch' deleteBatch: '/property-company/asset/propertyAsset/list'
} }
} }
}, },
methods: { methods: {}
loadData() {
this.loading = true
getPropertyListApi({
pageNo: 1,
pageSize: 10
}).then((res) => {
if (res.success) {
const pagination = { ...this.pagination };
pagination.total = res.result.total
this.dataSource = res.result.records
}
}).finally(()=>{
this.loading = false
})
},
// 打开数据规则编辑
handleDataRule(record) {
this.$refs.PermissionDataRuleList.edit(record)
},
handleAddSub(record) {
this.$refs.modalForm.title = "添加子菜单";
this.$refs.modalForm.disableSubmit = false;
this.$refs.modalForm.edit({status:'1',permsType:'1',route:true,'parentId':record.id,menuType:1});
}
}
} }
</script> </script>
<style scoped> <style scoped>
......
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="设备名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetName">
<a-input v-model="model.assetName" placeholder="请输入设备名称"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="设备编码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetCode">
<a-input v-model="model.assetCode" placeholder="请输入设备编码"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="设备品牌" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetBrand">
<a-input v-model="model.assetBrand" placeholder="请输入设备品牌"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="设备型号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetModel">
<a-input v-model="model.assetModel" placeholder="请输入设备型号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="设备状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetStatus">
<a-select style="width: 100%" v-model="model.assetStatus" placeholder="请选择设备状态">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="首次使用时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="firstUseDate">
<j-date placeholder="请选择首次使用时间" v-model="model.firstUseDate" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="使用年限" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="useLife">
<a-input type="number" v-model="model.useLife" placeholder="请输入使用年限" addon-after="年" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="采购价格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="purchasePrice">
<a-input v-model="model.purchasePrice" placeholder="请输入采购价格" addon-after="元" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所在位置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assetPosition">
<a-input v-model="model.assetPosition" placeholder="请输入所在位置"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityCode">
<a-input v-model="model.communityCode" placeholder="请输入所属小区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="负责人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="headName">
<a-input v-model="model.headName" placeholder="请输入负责人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="headPhone">
<a-input v-model="model.headPhone" placeholder="请输入联系方式"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
assetName: '',
assetCode: '',
assetBrand: '',
assetModel: '',
assetStatus: '1',
firstUseDate: '',
useLife: '',
purchasePrice: '',
assetPosition: '',
communityCode: '1242342342',
headName: '',
headPhone: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
assetName: [{ required: true, message: '请输入设备名称', trigger: 'blur' }],
assetCode: [{ required: true, message: '请输入设备编码', trigger: 'change' }],
assetPosition: [{ required: true, message: '请输入所在位置', trigger: 'blur' }],
communityCode: [{ required: true, message: '请输入所属小区', trigger: 'blur' }]
},
url: {
add: "/property-company/asset/propertyAsset/add",
edit: "/property-company/asset/propertyAsset/edit",
queryById: "/property-company/asset/propertyAsset/queryById"
},
dictOptions: []
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.initDictData()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('device_status')){
this.dictOptions = getDictItemsFromCache('device_status');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('device_status', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
})
},
ruleNumberInput(event) {
let rateValue = event.target.value.replace(/[^\d]/g,"");//清除"数字"和"."和"-"以外的字符
this.model['empowerDays'] = rateValue
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '70%',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="小区名称">
<a-input placeholder="请输入小区名称" v-model="queryParam.communityName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="empowerDate" slot-scope="text, record">
<span>{{record.empowerBeginDate}}{{record.empowerEndDate}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="onLoadDetail(record, 'edit')">编辑</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="onLoadDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
<!-- 字符串超长截取省略号显示 -->
<span slot="url" slot-scope="text">
<j-ellipsis :value="text" :length="25"/>
</span>
<!-- 字符串超长截取省略号显示-->
<span slot="component" slot-scope="text">
<j-ellipsis :value="text"/>
</span>
</a-table>
</div>
<!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<a-modal
:title="modalTitle + '入驻物业集团'"
width="60%"
:visible="visible"
:closable="false"
:maskClosable="false"
>
<template slot="footer">
<a-button @click="close">关闭</a-button>
<a-button type="primary" @click="onSubmit">确认</a-button>
</template>
<a-form-model
ref="ruleForm"
:model="form"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-card title="物业集团基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="物业集团名称" prop="propertyName">
<a-input
v-model="form.propertyName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="统一信用代码" prop="propertyCode">
<a-input
v-model="form.propertyCode"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="法人代表" prop="legalName">
<a-input
v-model="form.legalName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册资本" prop="registCapital">
<a-input-number id="inputNumber" v-model="form.registCapital" :min="1" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人" prop="contactName">
<a-input
v-model="form.contactName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人电话" prop="contactPhone">
<a-input
v-model="form.contactPhone"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册地址" prop="registAdress">
<a-input
v-model="form.registAdress"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="详细地址" prop="adressInfo" :labelCol="{ span: 3 }">
<a-input
v-model="form.adressInfo"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="21" :offset="3">
<a-form-model-item label="" :labelCol="{ span: 3 }">
<div>
<div id="container" style="width:100%;height:100%"></div>
</div>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="集团LOGO" prop="logoUrl" :labelCol="{ span: 3 }">
<j-image-upload bizPath="scott/pic" v-model="form.logoUrl"></j-image-upload>
<span>只能上传jpg/png格式文件,文件不能超过50kb</span>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="集团介绍" prop="groupInfo" :labelCol="{ span: 3 }">
<a-textarea
v-model="form.groupInfo"
placeholder="请输入"
:auto-size="{ minRows: 3, maxRows: 5 }"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="授权信息">
<a-row>
<a-col :span="24">
<a-form-model-item label="授权日期" prop="empowerType" :labelCol="{ span: 3 }">
<a-radio-group v-model="form.empowerType">
<a-radio value="1">永久</a-radio>
<a-radio value="2">授权日期</a-radio>
</a-radio-group>
</a-form-model-item>
</a-col>
<a-col :span="21" :offset="3" v-if="form.empowerType === '2'">
<a-form-model-item label="" prop="empowerDate">
<a-range-picker v-model="form.empowerDate" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="授权物业数量" prop="empowerPropertyNum" :labelCol="{ span: 3 }">
<a-input-number id="inputNumber" v-model="form.empowerPropertyNum" :min="1" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="收费标准" prop="chargingStandardId" :labelCol="{ span: 3 }">
<a-select style="width: 120px" v-model="form.chargingStandardId">
<a-select-option value="lucy">Lucy</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="合同附件">
<a-row>
<a-col :span="24">
<a-form-model-item label="合同附件" prop="contractUrl" :labelCol="{ span: 3 }">
<j-upload v-model="form.contractUrl"></j-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</a-modal>
</a-card>
</template>
<script>
// import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import JEllipsis from '@/components/jeecg/JEllipsis'
import JImageUpload from '@/components/jeecg/JImageUpload'
import JUpload from '@/components/jeecg/JUpload'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
const columns = [
{
title: '小区名称',
dataIndex: 'communityName',
key: 'communityName',
align: 'center'
},
{
title: '所属区域',
dataIndex: 'communityArea',
key: 'communityArea',
align: 'center'
},
{
title: '占地面积(㎡)',
dataIndex: 'coverArea',
key: 'coverArea',
align: 'center'
},
{
title: '总栋数',
dataIndex: 'buildingNum',
key: 'buildingNum',
align: 'center'
},
{
title: '房屋数量',
dataIndex: 'houseNum',
key: 'houseNum',
align: 'center'
},
{
title: '联系人',
dataIndex: 'adminName',
key: 'adminName',
align: 'center'
},
{
title: '联系方式',
dataIndex: 'adminPhone',
key: 'adminPhone',
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {
NoticeModal,
JEllipsis,
JUpload,
JImageUpload
},
data() {
return {
// 表头
columns: columns,
loading: false,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: {
list: "/property-company/community/companyCommunity/list",
delete: '/property-company/community/companyCommunity/delete',
deleteBatch: '/property-company/community/companyCommunity/deleteBatch'
},
modalTitle: '新增',
visible: false,
labelCol: { span: 6 },
wrapperCol: { span: 14 },
other: '',
form: {
communityName: '',
propertyCode: '',
legalName: '',
registCapital: undefined,
contactName: '',
contactPhone: '',
registAdress: '',
adressInfo: '',
logoUrl: [],
groupInfo: '',
empowerType: '1',
empowerDate: [],
empowerPropertyNum: undefined,
chargingStandardId: '',
contractUrl: []
},
rules: {
communityName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
propertyCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [{ required: true, message: '请输入联系人电话', trigger: 'blur' }],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
adressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
empowerPropertyNum: [{ required: true, message: '请输入授权物业数量', trigger: 'blur' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }]
},
uploadDisabled: false
}
},
methods: {
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if(type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
}
},
onSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
close() {
this.visible = false
},
onSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm() {
this.$refs.ruleForm.resetFields();
},
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="小区名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityName">
<a-input v-model="model.communityName" placeholder="请输入小区名称"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="用途" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="useTo">
<a-select style="width: 100%" v-model="model.useTo" placeholder="请选择用途">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属地区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityArea">
<a-input v-model="model.communityArea" placeholder="请输入所属地区"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="详细地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="addressInfo">
<a-input v-model="model.addressInfo" placeholder="请输入详细地址"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="建成日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="completedDate">
<j-date placeholder="请选择建成日期" v-model="model.completedDate" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="占地面积" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="coverArea">
<a-input v-model="model.coverArea" placeholder="请输入占地面积" addon-after="㎡" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="楼栋数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buildingNum">
<a-input v-model="model.buildingNum" placeholder="请输入楼栋数量" addon-after="栋" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="房屋数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="houseNum">
<a-input v-model="model.houseNum" placeholder="请输入房屋数量" addon-after="间" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="停车位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="parkingSpace">
<a-input v-model="model.parkingSpace" placeholder="请输入停车位" addon-after="个" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="充电桩" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargingStation">
<a-input type="number" v-model="model.chargingStation" placeholder="请输入充电桩" addon-after="个" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-model-item label="小区图片" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="communityImage">
<j-image-upload :isMultiple="true" text="点击上传" bizPath="scott/pic" v-model="model.communityImage"></j-image-upload>
<p style="line-height:1;margin:0">建议尺寸640*320,小于10M的JPG、PNG格式图片,可上传多张</p>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="小区简介" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="communityIntro">
<a-textarea placeholder="小区简介" v-model="model.communityIntro" allow-clear />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="小区管理员姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminName">
<a-input v-model="model.adminName" placeholder="请输入小区管理员姓名"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="管理员联系电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminPhone">
<a-input v-model="model.adminPhone" placeholder="请输入管理员联系电话"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="管理员登录密码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminPassword">
<a-input v-model="model.adminPassword" placeholder="请输入管理员登录密码"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
chargingName: '',
chargingMoney: '',
chargingCycle: '',
empowerNum: '',
empowerDays: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
communityName: [{ required: true, message: '请输入小区名称', trigger: 'blur' }],
useTo: [{ required: true, message: '请选择用途', trigger: 'change' }],
communityArea: [{ required: true, message: '请输入所属地区', trigger: 'blur' }],
chargingMoney: [{ required: true, message: '请输入收费金额', trigger: 'blur' }],
coverArea: [{ required: true, message: '请输入占地面积', trigger: 'blur' }],
buildingNum: [{ required: true, message: '请输入楼栋数量', trigger: 'blur' }],
houseNum: [{ required: true, message: '请输入房屋数量', trigger: 'blur' }],
parkingSpace: [{ required: true, message: '请输入停车位', trigger: 'blur' }],
chargingStation: [{ required: true, message: '请输入充电桩', trigger: 'blur' }]
},
url: {
add: "/property-company/community/companyCommunity/add",
edit: "/property-company/community/companyCommunity/edit",
queryById: "/property-company/community/companyCommunity/queryById"
},
dictOptions: [
{label: '商用', value: 1},
{label: '普通住宅', value: 2},
{label: '商住合一', value: 3}
]
}
},
watch: {
'model.chargingCycle': {
handler(newV, oldV) {
switch(newV) {
case '1':
this.model.empowerDays = '30'
break
case '2':
this.model.empowerDays = '90'
break
case '3':
this.model.empowerDays = '365'
break
default:
if(oldV) {
this.model.empowerDays = ''
}
}
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
// this.initDictData()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('chargingCycle')){
this.dictOptions = getDictItemsFromCache('chargingCycle');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('chargingCycle', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
})
},
ruleNumberInput(event) {
let rateValue = event.target.value.replace(/[^\d]/g,"");//清除"数字"和"."和"-"以外的字符
this.model['empowerDays'] = rateValue
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '70%',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="员工姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeName">
<a-input v-model="model.employeeName" placeholder="请输入员工姓名"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePhone">
<a-input v-model="model.employeePhone" placeholder="请输入联系电话"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="员工职务" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeDuties">
<a-select style="width: 100%" v-model="model.employeeDuties" placeholder="请选择员工职务">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityCode">
<j-popup v-model="model.communityCode" placeholder="请选择所属小区" icon="home" code="demo" field="name" orgFields="name" destFields="name" :multi="false"/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeStatus">
<a-select style="width: 100%" v-model="model.employeeStatus" placeholder="请选择状态">
<a-select-option value="1">在职</a-select-option>
<a-select-option value="0">离职</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-model-item label="员工头像" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="employeeAvatar">
<j-image-upload :isMultiple="false" text="点击上传" bizPath="scott/pic" v-model="model.employeeAvatar"></j-image-upload>
<p style="line-height:1;margin:0">建议尺寸640*320,小于10M的JPG、PNG格式图片</p>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
dictOptions: [],
model:{
employeeName: '',
employeePhone: '',
employeeDuties: '',
communityCode: '',
communityId: '',
employeeStatus: '1',
employeeAvatar: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
employeeName: [{ required: true, message: '请输入员工姓名', trigger: 'blur' }],
employeePhone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
employeeDuties: [{ required: true, message: '请选择员工职务', trigger: 'change' }]
},
url: {
add: "/property-company/employee/companyEmployee/add",
edit: "/property-company/property/propertyChargrule/edit",
queryById: "/property-company/property/propertyChargrule/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.initDictData()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('duties')){
this.dictOptions = getDictItemsFromCache('duties');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('duties', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
})
},
ruleNumberInput(event) {
let rateValue = event.target.value.replace(/[^\d]/g,"");//清除"数字"和"."和"-"以外的字符
this.model['empowerDays'] = rateValue
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '70%',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="姓名">
<a-input placeholder="请输入姓名" v-model="queryParam.employeeName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="employeeStatus" slot-scope="text, record">
<span :style="{'color': record.employeeStatus === '1' ? 'green' : 'red'}">{{record.employeeStatus === '1' ? '在职' : '离职'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
const columns = [
{
title: '姓名',
dataIndex: 'employeeName',
key: 'employeeName',
align: 'center'
},
{
title: '联系方式',
dataIndex: 'employeePhone',
key: 'employeePhone',
align: 'center'
},
{
title: '职务',
dataIndex: 'employeeDuties',
key: 'employeeDuties',
align: 'center',
customRender: function(text) {
return filterDictTextByCache('duties', text);
}
},
{
title: '所属小区',
dataIndex: 'communityCode',
key: 'communityCode',
align: 'center'
},
{
title: '在职状态',
dataIndex: 'employeeStatus',
scopedSlots: { customRender: 'employeeStatus' },
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {NoticeModal},
data() {
return {
// 表头
columns: columns,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: {
list: "/property-company/employee/companyEmployee/list",
delete: '/property-company/employee/companyEmployee/delete',
deleteBatch: '/property-company/employee/companyEmployee/deleteBatch'
}
}
},
methods: {}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="收费类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeTypeId">
<a-select style="width: 100%" v-model="model.chargeTypeId" placeholder="请选择收费类型">
<a-select-option v-for="item in chargeList" :key="item.id" :value="item.id">{{item.typeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="收费项目" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeItem">
<a-input v-model="model.chargeItem" placeholder="请输入收费项目"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="付费周期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargeCycle">
<a-select style="width: 100%" v-model="model.chargeCycle" placeholder="请选择付费周期">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="计算公式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="designFormulas">
<a-select style="width: 100%" v-model="model.designFormulas" placeholder="请选择计算公式">
<a-select-option value="1">固定金额</a-select-option>
<a-select-option value="2">建筑面积 × 单价</a-select-option>
<a-select-option value="3">(本期度数 - 上期度数) × 单价</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item :label="model.designFormulas === '1' ? '固定金额' : '单价'" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="amount">
<a-input type="number" v-model="model.amount" :placeholder="`请输入${model.designFormulas === '1' ? '固定金额' : '单价'}`"></a-input>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="remark">
<a-textarea
v-model="model.remark"
placeholder="请输入"
:auto-size="{ minRows: 3, maxRows: 5 }"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache, getChargeListApi} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
chargeList: [],
dictOptions: [],
model:{
chargeTypeId: '',
chargeItem: '',
chargeCycle: '1',
designFormulas: '1',
amount: '',
remark: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
chargeTypeId: [{ required: true, message: '请选择收费类型', trigger: 'change' }],
chargeItem: [{ required: true, message: '请输入收费项目', trigger: 'blur' }],
amount: [{ required: true, message: '请输入金额', trigger: 'blur' }]
},
url: {
add: "/property-company/system/companyChargerule/add",
edit: "/property-company/system/companyChargerule/edit",
queryById: "/property-company/system/companyChargerule/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
}
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.initDictData()
this.getChargeList()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('chargingCycle')){
this.dictOptions = getDictItemsFromCache('chargingCycle');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('chargingCycle', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
})
},
async getChargeList() {
let {result} = await getChargeListApi()
this.chargeList = result
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '70%',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="收费类型">
<a-input placeholder="请输入收费类型" v-model="queryParam.ruleCode"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="chargeItem" slot-scope="text, record">
<span :style="{'color': record.chargeItem === '1' ? 'green' : 'red'}">{{record.chargeItem === '1' ? '在职' : '离职'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
const columns = [
{
title: '收费项目编码',
dataIndex: 'ruleCode',
key: 'ruleCode',
align: 'center'
},
{
title: '所属小区',
dataIndex: 'xiaoqu',
key: 'xiaoqu',
align: 'center'
},
{
title: '收费类型',
dataIndex: 'chargeTypeId',
key: 'chargeTypeId',
align: 'center',
// customRender: function(text) {
// return filterDictTextByCache('duties', text);
// }
},
{
title: '收费项目',
dataIndex: 'chargeItem',
key: 'chargeItem',
align: 'center'
},
{
title: '付费周期 (月)',
dataIndex: 'chargeCycle',
key: 'chargeCycle',
align: 'center'
},
{
title: '计费方式',
dataIndex: 'designFormulas',
key: 'designFormulas',
align: 'center'
},
{
title: '单价(元)',
dataIndex: 'amount',
key: 'amount',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {NoticeModal},
data() {
return {
// 表头
columns: columns,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: {
list: "/property-company/system/companyChargerule/list",
delete: '/property-company/system/companyChargerule/delete',
deleteBatch: '/property-company/system/companyChargerule/deleteBatch'
}
}
},
methods: {}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<div class="top-card">
<span class="card-title">新增模板</span>
<a-row type="flex" justify="start">
<a-button @click="backbtn">返回</a-button>
<a-button style="margin-left: 10px" type="primary" @click="handlePreviewPdf">预览</a-button>
<a-button style="margin-left: 10px" type="primary" @click="handleSaveToPdf">导出pdf</a-button>
<a-button style="margin-left: 10px" type="primary" @click="handleSave()">保存</a-button>
</a-row>
</div>
<div class="template-contract-box">
<a-form-model ref="form" :model="model" :rules="validatorRules">
<a-row>
<a-col :span="8">
<a-form-model-item label="收费名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="templateName">
<a-input placeholder="请输入收费名称" v-model="model.templateName"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="8">
<a-form-model-item label="收费类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="templateType">
<a-select style="width: 100%" v-model="model.templateType" placeholder="请选择收费类型" label-in-value>
<a-select-option v-for="item in chargeList" :key="item.id" :value="item.id">{{item.typeName}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
<my-editor-with-mention ref="editorHtml"></my-editor-with-mention>
<vue-html2pdf
:show-layout="false"
:float-layout="true"
:enable-download="true"
:preview-modal="false"
:html-to-pdf-options="pdfOptions"
:paginate-elements-by-height="1400"
filename="tempFileName"
:pdf-quality="2"
:manual-pagination="false"
pdf-format="a4"
pdf-orientation="landscape"
pdf-content-width="98%"
@progress="onProgress"
ref="html2PdfDownLoad"
>
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report" v-html="content"></span>
</section>
</vue-html2pdf>
<vue-html2pdf
:show-layout="false"
:float-layout="true"
:enable-download="false"
:preview-modal="true"
:html-to-pdf-options="pdfOptions"
:paginate-elements-by-height="1400"
filename="tempFileName"
:pdf-quality="2"
:manual-pagination="false"
pdf-format="a4"
pdf-orientation="landscape"
pdf-content-width="98%"
@progress="onProgress"
ref="html2PdfPreview"
>
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report" v-html="content"></span>
</section>
</vue-html2pdf>
</div>
</a-spin>
</template>
<script>
import {getChargeListApi, addReceiptTemplate} from '@/api/api'
import MyEditorWithMention from './components/MyEditorWithMention'
import VueHtml2pdf from "vue-html2pdf";
const tableHtml = '<table border="1" cellspacing="0" style="width: 100%;"><tbody><tr><th colSpan="1" rowSpan="1">序号</th><th colSpan="1" rowSpan="1">品名</th><th colSpan="1" rowSpan="1">产地品牌</th><th colSpan="1" rowSpan="1">规格型号</th><th colSpan="1" rowSpan="1">数量</th><th colSpan="1" rowSpan="1">税率</th><th colSpan="1" rowSpan="1">单位</th><th colSpan="1" rowSpan="1">单价</th><th colSpan="1" rowSpan="1">总金额(不含税)</th><th colSpan="1" rowSpan="1">税额</th><th colSpan="1" rowSpan="1">总金额(含税)</th><th colSpan="1" rowSpan="1">备注</th></tr><tr><td colspan="1" rowspan="1" style="text-align: center;">1</td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td></tr><tr><td colSpan="1" rowSpan="1">合计</td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td><td colSpan="1" rowSpan="1"></td></tr><tr><td colSpan="3" rowSpan="1" style="text-align: center;">合同金额(大写):</td><td colSpan="9" rowSpan="1"></td></tr></tbody></table>'
export default {
name: 'templateContractAdd',
inject:['closeCurrent'],
components: {
MyEditorWithMention,
VueHtml2pdf
},
data() {
return {
content: '',
previewModal: false,
downloadFile: false,
pdfOptions: {
margin: [20, 10, 20, 10],
filename: ''
},
confirmLoading: false,
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
chargeList: [],
model: {
templateName: '',
// templateType: {key: "1660940550578327554",label: "水费"},
templateType: ''
},
validatorRules: {
templateName: [{ required: true, message: '请输入收费名称', trigger: 'blur' }],
templateType: [{ required: true, message: '请选择收费类型', trigger: 'change' }]
}
}
},
methods: {
async getChargeList() {
let {result} = await getChargeListApi()
this.chargeList = result
},
onProgress(e) {
console.log(e)
},
backbtn() {
this.closeCurrent()
},
handleSave() {
this.$refs.form.validate(valid => {
if(valid) {
this.confirmLoading = true;
addReceiptTemplate({
templateName: this.model.templateName,
templateType: this.model.templateType.key,
typeName: this.model.templateType.label,
templateStyle: this.content
}).then(res=> {
this.$message.warning(res.message);
this.backbtn()
}).finally(() => {
this.confirmLoading = false;
})
}
})
},
handleSaveToPdf() {
this.pdfOptions.filename = '收费模板'
this.content = this.$refs.editorHtml.curHtml.replace('<p><span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="产品列表" data-info="%7B%22id%22%3A%22e%22%7D">@产品列表</span></p>', tableHtml)
console.log(this.content)
this.$refs.html2PdfDownLoad.generatePdf();
},
handlePreviewPdf() {
this.content = this.$refs.editorHtml.curHtml.replace('<p><span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="产品列表" data-info="%7B%22id%22%3A%22e%22%7D">@产品列表</span></p>', tableHtml)
// this.downloadFile = false
// this.previewModal = true
this.$refs.html2PdfPreview.generatePdf()
}
},
created () {
this.getChargeList()
},
mounted() {
this.content = this.$refs.editorHtml.curHtml
}
}
</script>
<style lang="less" scoped>
.template-contract-box {
background-color: #fff;
padding: 25px 5px 5px;
margin-top: 10px;
}
.top-card {
-webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border: 1px solid #ebeef5;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 4px;
padding: 15px 20px;
.card-title {
font-weight: 700;
margin-right: 15px;
color: #000;
}
}
.box-card {
width: 800px;
}
.page-break-after {
page-break-after: always;
}
</style>
<template>
<div id="mention-modal" :style="{ top: top, left: left }">
<input id="mention-input" v-model="searchVal" ref="input" @keyup="inputKeyupHandler">
<ul id="mention-list">
<li
v-for="item in searchedList"
:key="item.id"
@click="insertMentionHandler(item.id, item.name)"
>{{item.name}}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'MentionModal',
props: {
list: {
type: Array,
default: ()=> {
return []
}
}
},
data() {
return {
// 定位信息
top: '',
left: '',
// list 信息
searchVal: '',
// list: [
// { id: 'a', name: '买家名称' },
// { id: 'b', name: '买家编码' },
// { id: 'c', name: '卖方名称' },
// { id: 'd', name: '卖方编码' },
// { id: 'e', name: '订单类型' },
// { id: 'f', name: '配送方式' },
// ]
}
},
computed: {
// 根据 <input> value 筛选 list
searchedList() {
const searchVal = this.searchVal.trim().toLowerCase()
return this.list.filter(item => {
const name = item.name.toLowerCase()
if (name.indexOf(searchVal) >= 0) {
return true
}
return false
})
}
},
methods: {
inputKeyupHandler(event) {
// esc - 隐藏 modal
if (event.key === 'Escape') {
this.$emit('hideMentionModal')
}
// enter - 插入 mention node
if (event.key === 'Enter') {
// 插入第一个
const firstOne = this.searchedList[0]
if (firstOne) {
const { id, name } = firstOne
this.insertMentionHandler(id, name)
}
}
},
insertMentionHandler(id, name) {
this.$emit('insertMention', id, name)
this.$emit('hideMentionModal') // 隐藏 modal
}
},
mounted() {
// 获取光标位置
const domSelection = document.getSelection()
const domRange = domSelection.getRangeAt(0)
if (domRange == null) return
const rect = domRange.getBoundingClientRect()
// 定位 modal
this.top = `${rect.top + 20}px`
this.left = `${rect.left + 5}px`
// focus input
this.$refs.input.focus()
},
}
</script>
<style>
#mention-modal {
position: absolute;
border: 1px solid #ccc;
background-color: #fff;
padding: 5px;
}
#mention-modal input {
width: 100px;
outline: none;
}
#mention-modal ul {
padding: 0;
margin: 0;
}
#mention-modal ul li {
list-style: none;
cursor: pointer;
padding: 3px 0;
text-align: left;
}
#mention-modal ul li:hover {
text-decoration: underline;
}
</style>
<template>
<div>
<div style="border: 1px solid #ccc;">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editor"
:defaultConfig="toolbarConfig"
mode="simple"
/>
<Editor
style="height: 400px"
v-model="curHtml"
:defaultConfig="editorConfig"
@onChange="onChange"
@onCreated="onCreated"
mode="simple"
/>
<mention-modal
:list="searchList"
v-if="isShowModal"
@hideMentionModal="hideMentionModal"
@insertMention="insertMention"
></mention-modal>
</div>
<!-- <div style="margin-top: 10px;">
<textarea v-model="curHtml" style="width: 100%; height: 500px;"></textarea>
</div> -->
</div>
</template>
<script>
import { Boot, DomEditor } from '@wangeditor/editor'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import mentionModule from '@wangeditor/plugin-mention'
import MentionModal from './MentionModal'
// 注册插件
Boot.registerModule(mentionModule)
export default {
name: 'MyEditorWithMention',
components: { Editor, Toolbar, MentionModal },
// props: {
// templateHtml: {
// type: String,
// default: ''
// }
// },
// watch: {
// templateHtml(newV, oldV) {
// this.curHtml = newV
// }
// },
data() {
return {
editor: null,
curHtml: '<p style="text-align: center;"><strong>收据名称</strong></p><p style="text-align: center;">单号:@单号</p><p style="text-align: left;">业主:@业主 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;缴费时间:@缴费时间</p><hr/><p>今收到 <u style="text-decoration: underline;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </u> 金额(大写)<u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</u></p><p>收款单位(盖章) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;¥:<u> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</u></p><hr/><p>开票人:@审核人 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;收款人:@审核人 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;客户:@业主</p>',
toolbarConfig: {
excludeKeys: [
"italic",
"color",
"bgColor",
"clearStyle",
"todo",
"insertLink",
'group-image',
"insertVideo",
"codeBlock"
]
},
editorConfig: {
placeholder: '请输入内容...',
EXTEND_CONF: {
mentionConfig: {
showModal: this.showMentionModal,
hideModal: this.hideMentionModal,
},
},
},
isShowModal: false,
searchList: [
{ id: 'a', name: '收据名称' },
{ id: 'b', name: '单号' },
// { id: 'c', name: '卖方名称' },
{ id: 'd', name: '业主名称' },
{ id: 'e', name: '缴费时间' },
{ id: 'f', name: '审核人' },
// { id: 'g', name: '乙方法定联系人' },
]
}
},
methods: {
onCreated(editor) {
this.editor = Object.seal(editor) // 【注意】一定要用 Object.seal() 否则会报错
// this.$nextTick(()=> {
// const toolbar = DomEditor.getToolbar(editor)
// const curToolbarConfig = toolbar.getConfig()
// console.log( curToolbarConfig.toolbarKeys )
// })
},
onChange(editor) {
this.curHtml = editor.getHtml()
},
showMentionModal() {
this.isShowModal = true
},
hideMentionModal() {
this.isShowModal = false
},
insertMention(id, name) {
const mentionNode = {
type: 'mention', // 必须是 'mention'
value: name,
info: { id },
children: [{ text: '' }], // 必须有一个空 text 作为 children
}
const editor = this.editor
if (editor) {
editor.restoreSelection() // 恢复选区
editor.deleteBackward('character') // 删除 '@'
editor.insertNode(mentionNode) // 插入 mention
editor.move(1) // 移动光标
}
}
},
beforeDestroy() {
const editor = this.editor
if (editor == null) return
editor.destroy() // 组件销毁时,及时销毁 editor ,重要!!!
},
}
</script>
<style src="@wangeditor/editor/dist/css/style.css"></style>
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="12">
<a-form-model-item label="员工姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeName">
<a-input v-model="model.employeeName" placeholder="请输入员工姓名"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePhone">
<a-input v-model="model.employeePhone" placeholder="请输入联系电话"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="员工职务" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeDuties">
<a-select style="width: 100%" v-model="model.employeeDuties" placeholder="请选择员工职务">
<a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="所属小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityCode">
<j-popup v-model="model.communityCode" placeholder="请选择所属小区" icon="home" code="demo" field="name" orgFields="name" destFields="name" :multi="false"/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeStatus">
<a-select style="width: 100%" v-model="model.employeeStatus" placeholder="请选择状态">
<a-select-option value="1">在职</a-select-option>
<a-select-option value="0">离职</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-model-item label="员工头像" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="employeeAvatar">
<j-image-upload :isMultiple="false" text="点击上传" bizPath="scott/pic" v-model="model.employeeAvatar"></j-image-upload>
<p style="line-height:1;margin:0">建议尺寸640*320,小于10M的JPG、PNG格式图片</p>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
dictOptions: [],
model:{
employeeName: '',
employeePhone: '',
employeeDuties: '',
communityCode: '',
communityId: '',
employeeStatus: '1',
employeeAvatar: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
employeeName: [{ required: true, message: '请输入员工姓名', trigger: 'blur' }],
employeePhone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
employeeDuties: [{ required: true, message: '请选择员工职务', trigger: 'change' }]
},
url: {
add: "/property-company/employee/companyEmployee/add",
edit: "/property-company/property/propertyChargrule/edit",
queryById: "/property-company/property/propertyChargrule/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.initDictData()
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('duties')){
this.dictOptions = getDictItemsFromCache('duties');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('duties', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
})
},
ruleNumberInput(event) {
let rateValue = event.target.value.replace(/[^\d]/g,"");//清除"数字"和"."和"-"以外的字符
this.model['empowerDays'] = rateValue
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '70%',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="收据名称">
<a-input placeholder="请输入收据名称" v-model="queryParam.templateName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="onHandleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="action" slot-scope="text, record">
<a @click="previewContract(record)">预览</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="downloadContract(record)">下载</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<div>
<vue-html2pdf :show-layout="false" :float-layout="true" :enable-download="true" :preview-modal="false"
:html-to-pdf-options="pdfOptions" :paginate-elements-by-height="1400" filename="tempFileName" :pdf-quality="2"
:manual-pagination="false" pdf-format="a4" pdf-orientation="landscape" pdf-content-width="98%"
ref="html2PdfDownLoad">
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report1" v-html="contractBindingValue"></span>
</section>
</vue-html2pdf>
<vue-html2pdf :show-layout="false" :float-layout="true" :enable-download="false" :preview-modal="true"
:html-to-pdf-options="pdfOptions" :paginate-elements-by-height="1400" filename="tempFileName" :pdf-quality="2"
:manual-pagination="false" pdf-format="a4" pdf-orientation="landscape" pdf-content-width="98%"
ref="html2PdfPreview">
<section slot="pdf-content">
<!-- PDF Content Here -->
<span id="report" v-html="contractBindingValue"></span>
</section>
</vue-html2pdf>
</div>
</a-card>
</template>
<script>
import VueHtml2pdf from "vue-html2pdf";
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
const columns = [
{
title: '收据编号',
dataIndex: 'templateCode',
key: 'templateCode',
align: 'center'
},
{
title: '收据名称',
dataIndex: 'templateName',
key: 'templateName',
align: 'center'
},
{
title: '收据类型',
dataIndex: 'typeName',
key: 'typeName',
align: 'center'
},
{
title: '上传人',
dataIndex: 'createBy',
key: 'createBy',
align: 'center'
},
{
title: '上传时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {
VueHtml2pdf
},
data() {
return {
// 表头
columns: columns,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: {
list: "/property-company/system/receiptTemplate/list",
delete: '/property-company/system/receiptTemplate/delete',
deleteBatch: '/property-company/system/receiptTemplate/deleteBatch'
},
pdfOptions: {
margin: [20, 10, 20, 10],
filename: ""
},
contractBindingValue: ""
}
},
methods: {
onHandleAdd() {
this.$router.push({
path: '/charge/templateSettings/add',
// params: Object.assign({}, this.$route.params, {
// pageNo: val
// }),
});
},
previewContract(row) {
this.contractBindingValue = row.templateStyle.replace(
'<p><span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="产品列表" data-info="%7B%22id%22%3A%22e%22%7D">@产品列表</span></p>',
''
);
this.$refs.html2PdfPreview.generatePdf();
},
downloadContract(row) {
this.pdfOptions.filename = row.templateName;
this.contractBindingValue = row.templateStyle.replace(
'<p><span data-w-e-type="mention" data-w-e-is-void data-w-e-is-inline data-value="产品列表" data-info="%7B%22id%22%3A%22e%22%7D">@产品列表</span></p>',
''
);
this.$refs.html2PdfDownLoad.generatePdf();
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="收费类型名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="typeName">
<a-input v-model="model.typeName" placeholder="请输入收费类型名称"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default {
name: 'PropertyChargruleForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
typeName: ''
},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
typeName: [{ required: true, message: '请输入收费类型名称', trigger: 'blur' }]
},
url: {
add: "/property-company/system/chargeType/add",
edit: "/property-company/system/chargeType/edit",
queryById: "/property-company/system/chargeType/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
console.log(record)
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>
\ No newline at end of file
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-settled-form>
</j-modal>
</template>
<script>
import PropertySettledForm from './NoticeForm'
export default {
name: 'PropertySettledModal',
components: {
PropertySettledForm
},
data () {
return {
title:'',
width: '500px',
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>
\ No newline at end of file
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-item label="姓名">
<a-input placeholder="请输入姓名" v-model="queryParam.typeCode"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span slot="employeeStatus" slot-scope="text, record">
<span :style="{'color': record.employeeStatus === '1' ? 'green' : 'red'}">{{record.employeeStatus === '1' ? '在职' : '离职'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/>
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
</a>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;" @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
const columns = [
{
title: '收费类型编码',
dataIndex: 'typeCode',
key: 'typeCode',
align: 'center'
},
{
title: '收费类型名称',
dataIndex: 'typeName',
key: 'typeName',
align: 'center'
},
{
title: '操作人',
dataIndex: 'createBy',
key: 'createBy',
align: 'center'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {NoticeModal},
data() {
return {
// 表头
columns: columns,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
},
url: {
list: "/property-company/system/chargeType/list",
delete: '/property-company/system/chargeType/delete',
deleteBatch: '/property-company/system/chargeType/deleteBatch'
}
}
},
methods: {}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
...@@ -88,7 +88,6 @@ ...@@ -88,7 +88,6 @@
</template> </template>
<script> <script>
import {AuditUpdateCostApi} from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil' import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
import PropertyChargruleModal from './modules/PropertyChargruleModal' import PropertyChargruleModal from './modules/PropertyChargruleModal'
...@@ -158,10 +157,10 @@ ...@@ -158,10 +157,10 @@
showSizeChanger: true showSizeChanger: true
}, },
url: { url: {
list: "/property/propertyChargrule/list", list: "/property-company/property/propertyChargrule/list",
delete: '/property/propertyChargrule/delete', delete: '/property-company/property/propertyChargrule/delete',
deleteBatch: '/property/propertyChargrule/deleteBatch', deleteBatch: '/property-company/property/propertyChargrule/deleteBatch',
exportXlsUrl: "/property/propertyChargrule/exportXls" exportXlsUrl: "/property-company/property/propertyChargrule/exportXls"
}, },
dictOptions: [], dictOptions: [],
} }
......
...@@ -82,9 +82,9 @@ ...@@ -82,9 +82,9 @@
chargingMoney: [{ required: true, message: '请输入收费金额', trigger: 'blur' }] chargingMoney: [{ required: true, message: '请输入收费金额', trigger: 'blur' }]
}, },
url: { url: {
add: "/property/propertyChargrule/add", add: "/property-company/property/propertyChargrule/add",
edit: "/property/propertyChargrule/edit", edit: "/property-company/property/propertyChargrule/edit",
queryById: "/property/propertyChargrule/queryById" queryById: "/property-company/property/propertyChargrule/queryById"
}, },
dictOptions: [] dictOptions: []
} }
......
...@@ -5,13 +5,8 @@ ...@@ -5,13 +5,8 @@
<a-form layout="inline" @keyup.enter.native="searchQuery"> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<a-form-item label="物业名称"> <a-form-item label="公告标题">
<a-input placeholder="请输入物业名称" v-model="queryParam.propertyName"></a-input> <a-input placeholder="请输入公告标题" v-model="queryParam.employeeName"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="入驻时间">
<a-input placeholder="请选择入驻时间" v-model="queryParam.createTime"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
...@@ -59,11 +54,11 @@ ...@@ -59,11 +54,11 @@
class="j-table-force-nowrap" class="j-table-force-nowrap"
@change="handleTableChange" @change="handleTableChange"
> >
<span slot="empowerDate" slot-scope="text, record"> <span slot="employeeStatus" slot-scope="text, record">
<span>{{record.empowerBeginDate}}{{record.empowerEndDate}}</span> <span :style="{'color': record.employeeStatus === '1' ? 'green' : 'red'}">{{record.employeeStatus === '1' ? '在职' : '离职'}}</span>
</span> </span>
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a @click="onLoadDetail(record, 'edit')">编辑</a> <a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/> <a-divider type="vertical"/>
<a-dropdown> <a-dropdown>
...@@ -72,7 +67,7 @@ ...@@ -72,7 +67,7 @@
</a> </a>
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item> <a-menu-item>
<a href="javascript:;" @click="onLoadDetail(record)">详情</a> <a href="javascript:;" @click="handleDetail(record)">详情</a>
</a-menu-item> </a-menu-item>
<a-menu-item> <a-menu-item>
...@@ -83,230 +78,53 @@ ...@@ -83,230 +78,53 @@
</a-menu> </a-menu>
</a-dropdown> </a-dropdown>
</span> </span>
<!-- 字符串超长截取省略号显示 -->
<span slot="url" slot-scope="text">
<j-ellipsis :value="text" :length="25"/>
</span>
<!-- 字符串超长截取省略号显示-->
<span slot="component" slot-scope="text">
<j-ellipsis :value="text"/>
</span>
</a-table> </a-table>
</div> </div>
<!-- table区域-end --> <!-- table区域-end -->
<notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal> <notice-modal ref="modalForm" @ok="modalFormOk"></notice-modal>
<a-modal
:title="modalTitle + '入驻物业集团'"
width="60%"
:visible="visible"
:closable="false"
:maskClosable="false"
>
<template slot="footer">
<a-button @click="close">关闭</a-button>
<a-button type="primary" @click="onSubmit">确认</a-button>
</template>
<a-form-model
ref="ruleForm"
:model="form"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-card title="物业集团基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="物业集团名称" prop="propertyName">
<a-input
v-model="form.propertyName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="统一信用代码" prop="propertyCode">
<a-input
v-model="form.propertyCode"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="法人代表" prop="legalName">
<a-input
v-model="form.legalName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册资本" prop="registCapital">
<a-input-number id="inputNumber" v-model="form.registCapital" :min="1" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人" prop="contactName">
<a-input
v-model="form.contactName"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人电话" prop="contactPhone">
<a-input
v-model="form.contactPhone"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册地址" prop="registAdress">
<a-input
v-model="form.registAdress"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="详细地址" prop="adressInfo" :labelCol="{ span: 3 }">
<a-input
v-model="form.adressInfo"
placeholder="请输入"
/>
</a-form-model-item>
</a-col>
<a-col :span="21" :offset="3">
<a-form-model-item label="" :labelCol="{ span: 3 }">
<div>
<div id="container" style="width:100%;height:100%"></div>
</div>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="集团LOGO" prop="logoUrl" :labelCol="{ span: 3 }">
<j-image-upload bizPath="scott/pic" v-model="form.logoUrl"></j-image-upload>
<span>只能上传jpg/png格式文件,文件不能超过50kb</span>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="集团介绍" prop="groupInfo" :labelCol="{ span: 3 }">
<a-textarea
v-model="form.groupInfo"
placeholder="请输入"
:auto-size="{ minRows: 3, maxRows: 5 }"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="授权信息">
<a-row>
<a-col :span="24">
<a-form-model-item label="授权日期" prop="empowerType" :labelCol="{ span: 3 }">
<a-radio-group v-model="form.empowerType">
<a-radio value="1">永久</a-radio>
<a-radio value="2">授权日期</a-radio>
</a-radio-group>
</a-form-model-item>
</a-col>
<a-col :span="21" :offset="3" v-if="form.empowerType === '2'">
<a-form-model-item label="" prop="empowerDate">
<a-range-picker v-model="form.empowerDate" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="授权物业数量" prop="empowerPropertyNum" :labelCol="{ span: 3 }">
<a-input-number id="inputNumber" v-model="form.empowerPropertyNum" :min="1" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="收费标准" prop="chargingStandardId" :labelCol="{ span: 3 }">
<a-select style="width: 120px" v-model="form.chargingStandardId">
<a-select-option value="lucy">Lucy</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="合同附件">
<a-row>
<a-col :span="24">
<a-form-model-item label="合同附件" prop="contractUrl" :labelCol="{ span: 3 }">
<j-upload v-model="form.contractUrl"></j-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</a-modal>
</a-card> </a-card>
</template> </template>
<script> <script>
// import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal' import NoticeModal from './modules/NoticeModal'
import JEllipsis from '@/components/jeecg/JEllipsis'
import JImageUpload from '@/components/jeecg/JImageUpload'
import JUpload from '@/components/jeecg/JUpload'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil' import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
const columns = [ const columns = [
{ {
title: '物业名称', title: '公告标题',
dataIndex: 'propertyName', dataIndex: 'employeeName',
key: 'propertyName' key: 'employeeName',
align: 'center'
}, },
{ {
title: '统一社会信用代码', title: '紧急程度',
dataIndex: 'creditCode', dataIndex: 'employeePhone',
key: 'creditCode' key: 'employeePhone',
align: 'center'
}, },
{ {
title: '联系人', title: '是否定时发布',
dataIndex: 'contactName', dataIndex: 'communityCode',
key: 'contactName' key: 'communityCode',
align: 'center'
}, },
{ {
title: '电话', title: '发布人',
dataIndex: 'contactPhone', dataIndex: 'employeeDuties',
key: 'contactPhone' key: 'employeeDuties',
}, align: 'center',
{
title: '授权时间',
dataIndex: 'empowerDate',
key: 'empowerDate'
},
{
title: '授权物业数量',
dataIndex: 'ontrialCommunityNum',
key: 'ontrialCommunityNum'
},
{
title: '审核状态',
dataIndex: 'auditStatus',
key: 'auditStatus',
customRender: function(text) { customRender: function(text) {
return filterDictTextByCache('auditStatus', text); return filterDictTextByCache('duties', text);
} }
}, },
{ {
title: '到期提示', title: '发布时间',
dataIndex: 'ontrialEndDate', dataIndex: 'createTime',
key: 'ontrialEndDate' key: 'createTime',
}, align: 'center'
{
title: '冻结/解冻',
dataIndex: 'refuseDesc',
key: 'refuseDesc'
}, },
{ {
title: '操作', title: '操作',
...@@ -320,17 +138,11 @@ ...@@ -320,17 +138,11 @@
export default { export default {
name: 'PermissionListAsync', name: 'PermissionListAsync',
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
components: { components: {NoticeModal},
NoticeModal,
JEllipsis,
JUpload,
JImageUpload
},
data() { data() {
return { return {
// 表头 // 表头
columns: columns, columns: columns,
loading: false,
pagination: { pagination: {
total: 0, total: 0,
current: 1, current: 1,
...@@ -338,86 +150,13 @@ ...@@ -338,86 +150,13 @@
showSizeChanger: true showSizeChanger: true
}, },
url: { url: {
list: "/property/propertySettled/list", list: "/property-company/employee/companyEmployee/list",
delete: '/sys/permission/delete', delete: '/property-company/employee/companyEmployee/delete',
deleteBatch: '/sys/permission/deleteBatch' deleteBatch: '/property-company/employee/companyEmployee/deleteBatch'
},
modalTitle: '新增',
visible: false,
labelCol: { span: 6 },
wrapperCol: { span: 14 },
other: '',
form: {
propertyName: '',
propertyCode: '',
legalName: '',
registCapital: undefined,
contactName: '',
contactPhone: '',
registAdress: '',
adressInfo: '',
logoUrl: [],
groupInfo: '',
empowerType: '1',
empowerDate: [],
empowerPropertyNum: undefined,
chargingStandardId: '',
contractUrl: []
},
rules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
propertyCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [{ required: true, message: '请输入联系人电话', trigger: 'blur' }],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
adressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
empowerPropertyNum: [{ required: true, message: '请输入授权物业数量', trigger: 'blur' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }]
},
uploadDisabled: false
}
},
methods: {
onLoadDetail(record, type) {
record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
if(type === 'edit') {
this.handleEdit(record)
} else {
this.handleDetail(record)
} }
},
onSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
} }
});
}, },
close() { methods: {}
this.visible = false
},
onSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm() {
this.$refs.ruleForm.resetFields();
},
}
} }
</script> </script>
<style scoped> <style scoped>
......
...@@ -2,138 +2,58 @@ ...@@ -2,138 +2,58 @@
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled"> <j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-card title="物业集团基本信息">
<a-row> <a-row>
<a-col :span="12">
<a-form-model-item label="物业集团名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="propertyName">
<a-input v-model="model.propertyName" placeholder="请输入物业集团名称" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="统一信用代码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creditCode">
<a-input v-model="model.creditCode" placeholder="请输入统一信用代码" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="法人姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="legalName">
<a-input v-model="model.legalName" placeholder="请输入法人姓名" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册资本" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registCapital">
<a-input-number v-model="model.registCapital" :min="1" placeholder="请输入注册资本" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName">
<a-input v-model="model.contactName" placeholder="请输入联系人" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="联系人电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactPhone">
<a-input v-model="model.contactPhone" placeholder="请输入联系人电话" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="注册地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="registAdress">
<area-cascader
v-model="model.registAdress"
:data="pcaa"
:level="1"
type="all"
@change="addressChange"
style="width:100%"
/>
</a-form-model-item>
</a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item label="详细地址" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="addressInfo"> <a-form-model-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeTitle">
<a-input v-model="model.addressInfo" placeholder="请输入详细地址" ></a-input> <a-input v-model="model.noticeTitle" placeholder="请输入标题" style="max-width:350px"></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item label="" :offset="3" :pull="3" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }"> <a-form-model-item label="公告范围" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeRange">
<div class="hhh"> <a-input v-model="model.noticeRange" placeholder="请输入公告范围"></a-input>
<div id="container" style="width:100%;height:200px"></div>
</div>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item label="集团logo" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="logoUrl"> <a-form-model-item label="紧急程度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeEmergent">
<j-image-upload bizPath="scott/pic" v-model="model.logoUrl"></j-image-upload> <a-select style="width: 100%" v-model="model.noticeEmergent" placeholder="请选择紧急程度">
</a-form-model-item> <a-select-option v-for="item in dictOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-col>
<a-col :span="24">
<a-form-model-item label="集团介绍" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="groupInfo">
<a-textarea v-model="model.groupInfo" placeholder="请输入集团介绍" :auto-size="{ minRows: 3, maxRows: 5 }" />
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="授权信息">
<a-row>
<!-- <a-col :span="12">
<a-form-model-item label="试用日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="empowerType">
<a-range-picker v-model="model.empowerDate" placeholder="请选择试用日期" />
</a-form-model-item>
</a-col> -->
<a-col :span="12">
<a-form-model-item label="授权开始日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="empowerBeginDate">
<j-date placeholder="请选择授权开始日期" v-model="model.empowerBeginDate" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="授权结束日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="empowerEndDate">
<j-date placeholder="请选择授权结束日期" v-model="model.empowerEndDate" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="试用小区数量" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="ontrialCommunityNum">
<a-input-number v-model="model.ontrialCommunityNum" placeholder="请输入试用小区数量" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="收费标准" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chargingStandardId">
<a-select v-model="model.chargingStandardId" placeholder="请选择收费标准" style="width: 100%">
<a-select-option v-for="item in costList" :key="item.id" :value="item.id">{{item.chargingName}}</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="24">
<a-form-model-item label="管理员账户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminLoginName"> <a-form-model-item label="内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeContent">
<a-input v-model="model.adminLoginName" placeholder="请输入管理员账户" ></a-input> <j-editor placeholder="请输入内容" v-model="model.noticeContent"/>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="24">
<a-form-model-item label="管理员密码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminPassword"> <a-form-model-item label="是否定时发布" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isRegular">
<a-input v-model="model.adminPassword" placeholder="请输入管理员密码" ></a-input> <a-radio-group name="radioGroup" v-model="model.isRegular" style="max-width:350px">
<a-radio value="1"></a-radio>
<a-radio value="0"></a-radio>
</a-radio-group>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row>
</a-card>
<a-card title="合同附件">
<a-row>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item label="合同附件" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="contractUrl"> <a-form-model-item label="发布时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="regularDate">
<j-upload v-model="model.contractUrl"></j-upload> <j-date placeholder="请选择发布日期" v-model="model.regularDate" :showTime="true" dateFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;max-width:350px" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
</a-card>
</a-form-model> </a-form-model>
</j-form-container> </j-form-container>
</a-spin> </a-spin>
</template> </template>
<script> <script>
const mapZoom = [5,8,10,12]
let timer = null;
import { getCostListApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage' import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util' import { validateDuplicateValue } from '@/utils/util'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
export default { export default {
name: 'PropertySettledForm', name: 'PropertyChargruleForm',
components: {
},
props: { props: {
//表单禁用 //表单禁用
disabled: { disabled: {
...@@ -144,65 +64,35 @@ ...@@ -144,65 +64,35 @@
}, },
data () { data () {
return { return {
pcaa: this.$Jpcaa, dictOptions: [],
model:{ model:{
propertyName: '', employeeName: '',
creditCode: '', employeePhone: '',
legalName: '', employeeDuties: '',
registCapital: undefined, communityCode: '',
contactName: '', communityId: '',
contactPhone: '', isRegular: '1',
registAdress: [], employeeAvatar: ''
provinceName: '',
provinceCode: '',
cityName: '',
cityCode: '',
countyName: '',
countyCode: '',
addressInfo: '',
logoUrl: '',
groupInfo: '',
empowerBeginDate: '',
empowerEndDate: '',
ontrialCommunityNum: undefined,
chargingStandardId: '',
contractUrl: '',
adminLoginName: '',
adminPassword: '',
longitude: '',
latitude: ''
}, },
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 6 }, sm: { span: 3 },
}, },
wrapperCol: { wrapperCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 16 }, sm: { span: 20 },
}, },
confirmLoading: false, confirmLoading: false,
validatorRules: { validatorRules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }], employeeName: [{ required: true, message: '请输入员工姓名', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }], employeePhone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }], employeeDuties: [{ required: true, message: '请选择员工职务', trigger: 'change' }]
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [{ required: true, message: '请输入联系人电话', trigger: 'blur' }],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
adminLoginName: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }],
adminPassword: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }],
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }]
}, },
url: { url: {
add: "/property/propertySettled/add", add: "/property-company/employee/companyEmployee/add",
edit: "/property/propertySettled/edit", edit: "/property-company/property/propertyChargrule/edit",
queryById: "/property/propertySettled/queryById" queryById: "/property-company/property/propertyChargrule/queryById"
}, }
costList: [],
mapRef: null,
} }
}, },
computed: { computed: {
...@@ -210,117 +100,37 @@ ...@@ -210,117 +100,37 @@
return this.disabled return this.disabled
}, },
}, },
watch: {
'model.contactPhone': {
handler(newV, oldV) {
this.model.adminLoginName = newV
}
},
'model.addressInfo': {
handler(newV) {
if(newV) {
clearTimeout(timer)
timer = setTimeout(()=> {
// this.getLongitude(this.model.categoryCodes[0], this.model.categoryCodes.join('') + newV, mapZoom[3])
}, 1000)
}
}
}
},
created () { created () {
//备份model原始值 //备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model)); this.modelDefault = JSON.parse(JSON.stringify(this.model));
this.onLoadCostList() this.initDictData()
},
mounted() {
this.mapRef = new BMapGL.Map("container"); // 创建地图实例
var point = new BMapGL.Point(108.5525, 34.3237); // 创建点坐标
this.mapRef.centerAndZoom(point, mapZoom[0]);
// var zoomCtrl = new BMapGL.ZoomControl(); // 添加缩放控件
// this.mapRef.addControl(zoomCtrl);
this.mapRef.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
this.mapRef.addEventListener('click', e=>this.getAddress(e));
}, },
methods: { methods: {
async onLoadCostList() { initDictData() {
let data = await getCostListApi({ //优先从缓存中读取字典配置
pageNo: 1, if(getDictItemsFromCache('duties')){
pageSize: 10 this.dictOptions = getDictItemsFromCache('duties');
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('duties', null).then((res) => {
if (res.success) {
this.dictOptions = res.result;
}
}) })
this.costList = data.result.records },
ruleNumberInput(event) {
let rateValue = event.target.value.replace(/[^\d]/g,"");//清除"数字"和"."和"-"以外的字符
this.model['empowerDays'] = rateValue
}, },
add () { add () {
this.edit(this.modelDefault); this.edit(this.modelDefault);
}, },
edit (record) { edit (record) {
console.log(record)
this.model = Object.assign({}, record); this.model = Object.assign({}, record);
this.visible = true; this.visible = true;
}, },
addressChange(val) {
const province = Object.keys(val[0])[0]
const city = Object.keys(val[1])[0]
const county = Object.keys(val[2])[0]
this.model.provinceName = val[0][province]
this.model.provinceCode = province
this.model.cityName = val[1][city]
this.model.cityCode = city
this.model.countyName = val[2][county]
this.model.countyCode = county
if(this.model.addressInfo) {
this.getLongitude(this.model.provinceName, (this.model.provinceName + this.model.cityName + this.model.countyName + this.model.addressInfo), mapZoom[3])
}
},
getAddress(e) {
let _this = this;
// 创建地理编码实例
var myGeo = new BMapGL.Geocoder();
// 根据坐标得到地址描述
myGeo.getLocation(new BMapGL.Point(e.latlng.lng, e.latlng.lat), function(result){
if(result) {
_this.mapRef.clearOverlays();
_this.model.registAdress = [result.addressComponents.province, result.addressComponents.city, result.addressComponents.district]
_this.model.addressInfo = result.addressComponents.street + result.addressComponents.streetNumber
_this.model.longitude = result.point.lng
_this.model.latitude = result.point.lat
_this.positionMap(e.latlng.lng, e.latlng.lat, mapZoom[3], result.address)
console.log(result)
}
});
},
positionMap(mapCenterLng, mapCenterLat, mapzoom, address) {
var point = new BMapGL.Point(mapCenterLng, mapCenterLat); // 创建点坐标
this.mapRef.centerAndZoom(point, mapzoom);
var marker = new BMapGL.Marker(point, {title: address}); // 创建标注
this.mapRef.addOverlay(marker); // 将标注添加到地图中
let _this = this;
// marker.addEventListener("click", function(){
var label = new BMapGL.Label(address, { // 创建文本标注
position: point, // 设置标注的地理位置
offset: new BMapGL.Size(0, -55) // 设置标注的偏移量
})
_this.mapRef.addOverlay(label); // 将标注添加到地图中
label.setStyle({ // 设置label的样式
color: '#333',
fontSize: '14px',
padding: '4px 10px',
border: '1px solid #1E90FF',
borderRadius: '4px',
transform: 'translateX(-40%)'
})
// });
},
getLongitude(city, address, zoom) {
let _this = this
var myGeo = new BMapGL.Geocoder();
myGeo.getPoint(address, function(point){
if(point){
_this.mapRef.clearOverlays();
_this.positionMap(point.lng, point.lat, zoom, address)
}else{
console.log('您选择的地址没有解析到结果!');
}
}, city)
},
submitForm () { submitForm () {
const that = this; const that = this;
// 触发表单验证 // 触发表单验证
...@@ -350,10 +160,6 @@ ...@@ -350,10 +160,6 @@
}) })
}, },
},
beforeDestroy() {
clearTimeout(timer)
this.mapRef.removeEventListener('click', e=>this.getAddress(e));
} }
} }
</script> </script>
\ No newline at end of file
...@@ -103,7 +103,6 @@ ...@@ -103,7 +103,6 @@
<script> <script>
// import PermissionModal from './modules/PermissionModal' // import PermissionModal from './modules/PermissionModal'
import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
// import PermissionDataRuleList from './PermissionDataRuleList' // import PermissionDataRuleList from './PermissionDataRuleList'
import JEllipsis from '@/components/jeecg/JEllipsis' import JEllipsis from '@/components/jeecg/JEllipsis'
......
...@@ -338,9 +338,9 @@ ...@@ -338,9 +338,9 @@
showSizeChanger: true showSizeChanger: true
}, },
url: { url: {
list: "/property/propertySettled/list", list: "/property-company/property/propertySettled/list",
delete: '/sys/permission/delete', delete: '/property-company/sys/permission/delete',
deleteBatch: '/sys/permission/deleteBatch' deleteBatch: '/property-company/sys/permission/deleteBatch'
}, },
modalTitle: '新增', modalTitle: '新增',
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item label="详细地址" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="addressInfo"> <a-form-model-item label="详细地址" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="addressInfo">
<a-input v-model="model.addressInfo" placeholder="请输入详细地址" ></a-input> <a-input v-model="model.addressInfo" placeholder="请输入详细地址" @blur="addressBlur" ></a-input>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
...@@ -128,7 +128,6 @@ ...@@ -128,7 +128,6 @@
<script> <script>
const mapZoom = [5,8,10,12] const mapZoom = [5,8,10,12]
let timer = null; let timer = null;
import { getCostListApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage' import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util' import { validateDuplicateValue } from '@/utils/util'
...@@ -168,7 +167,7 @@ ...@@ -168,7 +167,7 @@
chargingStandardId: '', chargingStandardId: '',
contractUrl: '', contractUrl: '',
adminLoginName: '', adminLoginName: '',
adminPassword: '', adminPassword: '123456',
longitude: '', longitude: '',
latitude: '' latitude: ''
}, },
...@@ -197,9 +196,9 @@ ...@@ -197,9 +196,9 @@
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }] contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }]
}, },
url: { url: {
add: "/property/propertySettled/add", add: "/property-company/property/propertySettled/add",
edit: "/property/propertySettled/edit", edit: "/property-company/property/propertySettled/edit",
queryById: "/property/propertySettled/queryById" queryById: "/property-company/property/propertySettled/queryById"
}, },
costList: [], costList: [],
mapRef: null, mapRef: null,
...@@ -270,6 +269,11 @@ ...@@ -270,6 +269,11 @@
this.getLongitude(this.model.provinceName, (this.model.provinceName + this.model.cityName + this.model.countyName + this.model.addressInfo), mapZoom[3]) this.getLongitude(this.model.provinceName, (this.model.provinceName + this.model.cityName + this.model.countyName + this.model.addressInfo), mapZoom[3])
} }
}, },
addressBlur(val) {
if(this.model.provinceName) {
this.getLongitude(this.model.provinceName, (this.model.provinceName + this.model.cityName + this.model.countyName + val.target.value), mapZoom[3])
}
},
getAddress(e) { getAddress(e) {
let _this = this; let _this = this;
// 创建地理编码实例 // 创建地理编码实例
...@@ -336,6 +340,7 @@ ...@@ -336,6 +340,7 @@
httpurl+=this.url.edit; httpurl+=this.url.edit;
method = 'put'; method = 'put';
} }
this.model.registAdress = undefined
httpAction(httpurl,this.model,method).then((res)=>{ httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){ if(res.success){
that.$message.success(res.message); that.$message.success(res.message);
......
<template xmlns:background-color="http://www.w3.org/1999/xhtml"> <template xmlns:background-color="http://www.w3.org/1999/xhtml">
<a-row :gutter="10"> <a-row :gutter="10">
<a-col :md="12" :sm="24"> <a-col :md="24" :sm="24">
<a-card :bordered="false"> <a-card :bordered="false">
<!-- 按钮操作区域 --> <!-- 按钮操作区域 -->
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
</div> </div>
<!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------> <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
</a-col> </a-col>
<a-col :md="12" :sm="24"> <!-- <a-col :md="12" :sm="24">
<a-tabs defaultActiveKey="1"> <a-tabs defaultActiveKey="1">
<a-tab-pane tab="基本信息" key="1" > <a-tab-pane tab="基本信息" key="1" >
<a-card :bordered="false" v-if="selectedKeys.length>0"> <a-card :bordered="false" v-if="selectedKeys.length>0">
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</a-col> </a-col> -->
<depart-modal ref="departModal" @ok="loadTree"></depart-modal> <depart-modal ref="departModal" @ok="loadTree"></depart-modal>
</a-row> </a-row>
</template> </template>
......
...@@ -263,12 +263,12 @@ ...@@ -263,12 +263,12 @@
width: 180, width: 180,
dataIndex: 'orgCodeTxt' dataIndex: 'orgCodeTxt'
}, },
{ // {
title: '负责部门', // title: '负责部门',
align: "center", // align: "center",
width: 180, // width: 180,
dataIndex: 'departIds_dictText' // dataIndex: 'departIds_dictText'
}, // },
{ {
title: '状态', title: '状态',
align: "center", align: "center",
......
...@@ -40,17 +40,17 @@ ...@@ -40,17 +40,17 @@
<a-input placeholder="请输入用户姓名" v-model="model.realname" /> <a-input placeholder="请输入用户姓名" v-model="model.realname" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workNo"> <!-- <a-form-model-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workNo">
<a-input placeholder="请输入工号" v-model="model.workNo" /> <a-input placeholder="请输入工号" v-model="model.workNo" />
</a-form-model-item> </a-form-model-item> -->
<a-form-model-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone"> <a-form-model-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
<a-input placeholder="请输入手机号码" v-model="model.phone" /> <a-input placeholder="请输入手机号码" v-model="model.phone" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-form-model-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-select-position placeholder="请选择职务" :multiple="false" v-model="model.post"/> <j-select-position placeholder="请选择职务" :multiple="false" v-model="model.post"/>
</a-form-model-item> </a-form-model-item> -->
<a-form-model-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled" > <a-form-model-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled" >
<j-multi-select-tag <j-multi-select-tag
...@@ -67,21 +67,21 @@ ...@@ -67,21 +67,21 @@
</a-form-model-item> </a-form-model-item>
<!--租户分配--> <!--租户分配-->
<a-form-model-item label="租户分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled"> <!-- <a-form-model-item label="租户分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
<j-multi-select-tag <j-multi-select-tag
:disabled="disableSubmit" :disabled="disableSubmit"
v-model="model.relTenantIds" v-model="model.relTenantIds"
:options="tenantsOptions" :options="tenantsOptions"
placeholder="请选择租户"> placeholder="请选择租户">
</j-multi-select-tag> </j-multi-select-tag>
</a-form-model-item> </a-form-model-item> -->
<a-form-model-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-form-model-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-model="model.userIdentity" @change="identityChange"> <a-radio-group v-model="model.userIdentity" @change="identityChange">
<a-radio :value="1">普通用户</a-radio> <a-radio :value="1">普通用户</a-radio>
<a-radio :value="2">上级</a-radio> <a-radio :value="2">上级</a-radio>
</a-radio-group> </a-radio-group>
</a-form-model-item> </a-form-model-item> -->
<a-form-model-item label="负责部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="departIdShow==true"> <a-form-model-item label="负责部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="departIdShow==true">
<j-multi-select-tag <j-multi-select-tag
:disabled="disableSubmit" :disabled="disableSubmit"
...@@ -119,9 +119,9 @@ ...@@ -119,9 +119,9 @@
<a-input placeholder="请输入座机" v-model="model.telephone" /> <a-input placeholder="请输入座机" v-model="model.telephone" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol"> <!-- <a-form-model-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag v-model="model.activitiSync" placeholder="请选择是否同步工作流引擎" :type="'radio'" dictCode="activiti_sync"/> <j-dict-select-tag v-model="model.activitiSync" placeholder="请选择是否同步工作流引擎" :type="'radio'" dictCode="activiti_sync"/>
</a-form-model-item> </a-form-model-item> -->
</a-form-model> </a-form-model>
</a-spin> </a-spin>
...@@ -171,8 +171,8 @@ ...@@ -171,8 +171,8 @@
phone: [{required: true, message: '请输入手机号!'}, {validator: this.validatePhone}], phone: [{required: true, message: '请输入手机号!'}, {validator: this.validatePhone}],
email: [{validator: this.validateEmail}], email: [{validator: this.validateEmail}],
roles:{}, roles:{},
workNo:[ { required: true, message: '请输入工号' }, // workNo:[ { required: true, message: '请输入工号' },
{ validator: this.validateWorkNo }], // { validator: this.validateWorkNo }],
telephone: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' },] telephone: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' },]
}, },
departIdShow:false, departIdShow:false,
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
const token = Vue.ls.get(ACCESS_TOKEN); const token = Vue.ls.get(ACCESS_TOKEN);
this.headers = {"X-Access-Token":token} this.headers = {"X-Access-Token":token}
this.initRoleList() this.initRoleList()
this.initTenantList() // this.initTenantList()
}, },
computed:{ computed:{
uploadAction:function () { uploadAction:function () {
...@@ -339,9 +339,9 @@ ...@@ -339,9 +339,9 @@
if (valid) { if (valid) {
that.confirmLoading = true; that.confirmLoading = true;
//如果是上级择传入departIds,否则为空 //如果是上级择传入departIds,否则为空
if(this.model.userIdentity!==2){ // if(this.model.userIdentity!==2){
this.model.departIds=""; // this.model.departIds="";
} // }
let obj; let obj;
if(!this.model.id){ if(!this.model.id){
this.model.id = this.userId; this.model.id = this.userId;
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
handleChangeCheckCode(){ handleChangeCheckCode(){
this.currdatetime = new Date().getTime(); this.currdatetime = new Date().getTime();
this.model.inputCode = '' this.model.inputCode = ''
getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{ getAction(`/property-system/sys/randomImage/${this.currdatetime}`).then(res=>{
if(res.success){ if(res.success){
this.randCodeImage = res.result this.randCodeImage = res.result
this.requestCodeSuccess=true this.requestCodeSuccess=true
...@@ -131,6 +131,7 @@ ...@@ -131,6 +131,7 @@
captcha: this.model.inputCode, captcha: this.model.inputCode,
checkKey: this.currdatetime, checkKey: this.currdatetime,
remember_me: rememberMe, remember_me: rememberMe,
platformType: 'company'
} }
console.log("登录参数", loginParams) console.log("登录参数", loginParams)
this.Login(loginParams).then((res) => { this.Login(loginParams).then((res) => {
......
...@@ -127,7 +127,7 @@ export default { ...@@ -127,7 +127,7 @@ export default {
}, },
show(loginResult){ show(loginResult){
this.clear(); this.clear();
this.bizDepart(loginResult); // this.bizDepart(loginResult);
let user = Vue.ls.get(USER_INFO) let user = Vue.ls.get(USER_INFO)
this.username = user.username this.username = user.username
......
...@@ -13,7 +13,7 @@ module.exports = { ...@@ -13,7 +13,7 @@ module.exports = {
https://github.com/vuejs/vue-cli/issues/2463 https://github.com/vuejs/vue-cli/issues/2463
*/ */
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
// productionSourceMap: process.env.NODE_ENV !== "production", productionSourceMap: process.env.NODE_ENV !== "production",
//qiankuan打包时放开 //qiankuan打包时放开
//outputDir: "../dist/main", //outputDir: "../dist/main",
// 多入口配置 // 多入口配置
......
...@@ -821,6 +821,13 @@ ...@@ -821,6 +821,13 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.12.0":
version "7.21.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
dependencies:
regenerator-runtime "^0.13.11"
"@babel/template@^7.10.4": "@babel/template@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
...@@ -945,6 +952,11 @@ ...@@ -945,6 +952,11 @@
"@types/codemirror" "0.0.71" "@types/codemirror" "0.0.71"
codemirror "^5.48.4" codemirror "^5.48.4"
"@transloadit/prettier-bytes@0.0.7":
version "0.0.7"
resolved "https://registry.yarnpkg.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b"
integrity sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==
"@types/anymatch@*": "@types/anymatch@*":
version "1.3.1" version "1.3.1"
resolved "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" resolved "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
...@@ -972,6 +984,11 @@ ...@@ -972,6 +984,11 @@
resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
"@types/event-emitter@^0.3.3":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@types/event-emitter/-/event-emitter-0.3.3.tgz#727032a9fc67565f96bbd78b2e2809275c97d7e7"
integrity sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==
"@types/glob@^7.1.1": "@types/glob@^7.1.1":
version "7.1.3" version "7.1.3"
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
...@@ -1070,6 +1087,49 @@ ...@@ -1070,6 +1087,49 @@
"@types/webpack-sources" "*" "@types/webpack-sources" "*"
source-map "^0.6.0" source-map "^0.6.0"
"@uppy/companion-client@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@uppy/companion-client/-/companion-client-2.2.2.tgz#c70b42fdcca728ef88b3eebf7ee3e2fa04b4923b"
integrity sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==
dependencies:
"@uppy/utils" "^4.1.2"
namespace-emitter "^2.0.1"
"@uppy/core@^2.1.1":
version "2.3.4"
resolved "https://registry.yarnpkg.com/@uppy/core/-/core-2.3.4.tgz#260b85b6bf3aa03cdc67da231f8c69cfbfdcc84a"
integrity sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==
dependencies:
"@transloadit/prettier-bytes" "0.0.7"
"@uppy/store-default" "^2.1.1"
"@uppy/utils" "^4.1.3"
lodash.throttle "^4.1.1"
mime-match "^1.0.2"
namespace-emitter "^2.0.1"
nanoid "^3.1.25"
preact "^10.5.13"
"@uppy/store-default@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@uppy/store-default/-/store-default-2.1.1.tgz#62a656a099bdaa012306e054d093754cb2d36e3e"
integrity sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==
"@uppy/utils@^4.1.2", "@uppy/utils@^4.1.3":
version "4.1.3"
resolved "https://registry.yarnpkg.com/@uppy/utils/-/utils-4.1.3.tgz#9d0be6ece4df25f228d30ef40be0f14208258ce3"
integrity sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==
dependencies:
lodash.throttle "^4.1.1"
"@uppy/xhr-upload@^2.0.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz#0d4e355332fe0c6eb372d7731315e04d02aeeb18"
integrity sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==
dependencies:
"@uppy/companion-client" "^2.2.2"
"@uppy/utils" "^4.1.2"
nanoid "^3.1.25"
"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": "@vue/babel-helper-vue-jsx-merge-props@^1.0.0":
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" resolved "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040"
...@@ -1301,6 +1361,89 @@ ...@@ -1301,6 +1361,89 @@
resolved "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1" resolved "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1"
integrity sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw== integrity sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==
"@wangeditor/basic-modules@^1.1.7":
version "1.1.7"
resolved "https://registry.yarnpkg.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz#a9c3ccf4ef53332f29550d59d3676e15f395946f"
integrity sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==
dependencies:
is-url "^1.2.4"
"@wangeditor/code-highlight@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz#90256857714d5c0cf83ac475aea64db7bf29a7cd"
integrity sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==
dependencies:
prismjs "^1.23.0"
"@wangeditor/core@^1.1.19":
version "1.1.19"
resolved "https://registry.yarnpkg.com/@wangeditor/core/-/core-1.1.19.tgz#f9155f7fd92d03cb1982405b3b82e54c31f1c2b0"
integrity sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==
dependencies:
"@types/event-emitter" "^0.3.3"
event-emitter "^0.3.5"
html-void-elements "^2.0.0"
i18next "^20.4.0"
scroll-into-view-if-needed "^2.2.28"
slate-history "^0.66.0"
"@wangeditor/editor-for-vue@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.2.tgz#62674d56354319ff8dcc83db5c62cec4437ee906"
integrity sha512-BOENvAXJVtVXlE2X50AAvjV82YlCUeu5cbeR0cvEQHQjYtiVnJtq7HSoj85r2kTgGouI5OrpJG9BBEjSjUSPyA==
"@wangeditor/editor@^5.1.23":
version "5.1.23"
resolved "https://registry.yarnpkg.com/@wangeditor/editor/-/editor-5.1.23.tgz#c9d2007b7cb0ceef6b72692b4ee87b01ee2367b3"
integrity sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==
dependencies:
"@uppy/core" "^2.1.1"
"@uppy/xhr-upload" "^2.0.3"
"@wangeditor/basic-modules" "^1.1.7"
"@wangeditor/code-highlight" "^1.0.3"
"@wangeditor/core" "^1.1.19"
"@wangeditor/list-module" "^1.0.5"
"@wangeditor/table-module" "^1.1.4"
"@wangeditor/upload-image-module" "^1.0.2"
"@wangeditor/video-module" "^1.1.4"
dom7 "^3.0.0"
is-hotkey "^0.2.0"
lodash.camelcase "^4.3.0"
lodash.clonedeep "^4.5.0"
lodash.debounce "^4.0.8"
lodash.foreach "^4.5.0"
lodash.isequal "^4.5.0"
lodash.throttle "^4.1.1"
lodash.toarray "^4.4.0"
nanoid "^3.2.0"
slate "^0.72.0"
snabbdom "^3.1.0"
"@wangeditor/list-module@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@wangeditor/list-module/-/list-module-1.0.5.tgz#3fc0b167acddf885536b45fa0c127f9c6adaea33"
integrity sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==
"@wangeditor/plugin-mention@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@wangeditor/plugin-mention/-/plugin-mention-1.0.0.tgz#7da9a2677de9d4de0293642d883ed39cab4048b6"
integrity sha512-txQEoHxzil78WoTGXn0ENONZ2sdEL8GI5qBxETn6TMEXQkqiUXA4Kc8bV8D8nZDniC00oFb80kDmOIpT/KUBGw==
"@wangeditor/table-module@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@wangeditor/table-module/-/table-module-1.1.4.tgz#757d4a5868b2b658041cd323854a4d707c8347e9"
integrity sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==
"@wangeditor/upload-image-module@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz#89e9b9467e10cbc6b11dc5748e08dd23aaebee30"
integrity sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==
"@wangeditor/video-module@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532"
integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==
"@webassemblyjs/ast@1.9.0": "@webassemblyjs/ast@1.9.0":
version "1.9.0" version "1.9.0"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
...@@ -1456,6 +1599,11 @@ ...@@ -1456,6 +1599,11 @@
resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
abab@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
integrity sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==
abs-svg-path@~0.1.1: abs-svg-path@~0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" resolved "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf"
...@@ -1476,6 +1624,13 @@ acorn-dynamic-import@^2.0.0: ...@@ -1476,6 +1624,13 @@ acorn-dynamic-import@^2.0.0:
dependencies: dependencies:
acorn "^4.0.3" acorn "^4.0.3"
acorn-globals@^1.0.4:
version "1.0.9"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
integrity sha512-j3/4pkfih8W4NK22gxVSXcEonTpAHOHh0hu5BoZrKcOsW/4oBPxTi4Yk3SAj+FhC1f3+bRTkXdm4019gw1vg9g==
dependencies:
acorn "^2.1.0"
acorn-jsx@^3.0.0: acorn-jsx@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
...@@ -1498,6 +1653,11 @@ acorn-walk@^7.1.1: ...@@ -1498,6 +1653,11 @@ acorn-walk@^7.1.1:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
acorn@^2.1.0, acorn@^2.4.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
integrity sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg==
acorn@^3.0.4: acorn@^3.0.4:
version "3.3.0" version "3.3.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
...@@ -1754,6 +1914,11 @@ arr-union@^3.1.0: ...@@ -1754,6 +1914,11 @@ arr-union@^3.1.0:
resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==
array-find-index@^1.0.1: array-find-index@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
...@@ -2530,6 +2695,11 @@ balanced-match@^1.0.0: ...@@ -2530,6 +2695,11 @@ balanced-match@^1.0.0:
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base64-arraybuffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
base64-js@^1.0.2: base64-js@^1.0.2:
version "1.3.1" version "1.3.1"
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
...@@ -3025,6 +3195,16 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001087, can ...@@ -3025,6 +3195,16 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001087, can
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz#1129c40c9f5ee3282158da08fd915d301f4a9bd8" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz#1129c40c9f5ee3282158da08fd915d301f4a9bd8"
integrity sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA== integrity sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA==
canvg@^1.0:
version "1.5.3"
resolved "https://registry.yarnpkg.com/canvg/-/canvg-1.5.3.tgz#aad17915f33368bf8eb80b25d129e3ae922ddc5f"
integrity sha512-7Gn2IuQzvUQWPIuZuFHrzsTM0gkPz2RRT9OcbdmA03jeKk8kltrD8gqUzNX15ghY/4PV5bbe5lmD6yDLDY6Ybg==
dependencies:
jsdom "^8.1.0"
rgbcolor "^1.0.1"
stackblur-canvas "^1.4.1"
xmldom "^0.1.22"
case-sensitive-paths-webpack-plugin@^2.2.0: case-sensitive-paths-webpack-plugin@^2.2.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7"
...@@ -3043,6 +3223,11 @@ center-align@^0.1.1: ...@@ -3043,6 +3223,11 @@ center-align@^0.1.1:
align-text "^0.1.3" align-text "^0.1.3"
lazy-cache "^1.0.3" lazy-cache "^1.0.3"
cf-blob.js@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/cf-blob.js/-/cf-blob.js-0.0.1.tgz#f5ab7e12e798caf08ccf828c69aba0f063d83f99"
integrity sha512-KkUmNT/rgVK+KehG7cSvbLwMb+OS5Qby6ADB4LP12jtx6rfVvHCdyqFUjAeQnDpGpQNNwvpi0R/tluT2J6P99Q==
chalk@^1.1.1, chalk@^1.1.3: chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
...@@ -3482,6 +3667,11 @@ compression@^1.7.3, compression@^1.7.4: ...@@ -3482,6 +3667,11 @@ compression@^1.7.3, compression@^1.7.4:
safe-buffer "5.1.2" safe-buffer "5.1.2"
vary "~1.1.2" vary "~1.1.2"
compute-scroll-into-view@^1.0.20:
version "1.0.20"
resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43"
integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==
concat-map@0.0.1: concat-map@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
...@@ -3754,6 +3944,13 @@ css-declaration-sorter@^4.0.1: ...@@ -3754,6 +3944,13 @@ css-declaration-sorter@^4.0.1:
postcss "^7.0.1" postcss "^7.0.1"
timsort "^0.3.0" timsort "^0.3.0"
css-line-break@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
dependencies:
utrie "^1.0.2"
css-loader@^0.28.7: css-loader@^0.28.7:
version "0.28.11" version "0.28.11"
resolved "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" resolved "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
...@@ -3993,6 +4190,18 @@ csso@~2.3.1: ...@@ -3993,6 +4190,18 @@ csso@~2.3.1:
clap "^1.0.9" clap "^1.0.9"
source-map "^0.5.3" source-map "^0.5.3"
cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
version "0.3.8"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
"cssstyle@>= 0.2.34 < 0.3.0":
version "0.2.37"
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
integrity sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==
dependencies:
cssom "0.3.x"
current-script-polyfill@^1.0.0: current-script-polyfill@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" resolved "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615"
...@@ -4475,6 +4684,13 @@ dom-serializer@0: ...@@ -4475,6 +4684,13 @@ dom-serializer@0:
domelementtype "^2.0.1" domelementtype "^2.0.1"
entities "^2.0.0" entities "^2.0.0"
dom7@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/dom7/-/dom7-3.0.0.tgz#b861ce5d67a6becd7aaa3ad02942ff14b1240331"
integrity sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==
dependencies:
ssr-window "^3.0.0-alpha.1"
domain-browser@^1.1.1: domain-browser@^1.1.1:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
...@@ -4744,6 +4960,11 @@ es6-map@^0.1.3: ...@@ -4744,6 +4960,11 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1" es6-symbol "~3.1.1"
event-emitter "~0.3.5" event-emitter "~0.3.5"
es6-promise@^4.2.5:
version "4.2.8"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
es6-set@~0.1.5: es6-set@~0.1.5:
version "0.1.5" version "0.1.5"
resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
...@@ -4796,6 +5017,18 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: ...@@ -4796,6 +5017,18 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escodegen@^1.6.1:
version "1.14.3"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
dependencies:
esprima "^4.0.1"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
source-map "~0.6.1"
escope@^3.6.0: escope@^3.6.0:
version "3.6.0" version "3.6.0"
resolved "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" resolved "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
...@@ -5046,7 +5279,7 @@ esprima@^2.6.0: ...@@ -5046,7 +5279,7 @@ esprima@^2.6.0:
resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
esprima@^4.0.0: esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
...@@ -5065,7 +5298,7 @@ esrecurse@^4.1.0: ...@@ -5065,7 +5298,7 @@ esrecurse@^4.1.0:
dependencies: dependencies:
estraverse "^4.1.0" estraverse "^4.1.0"
estraverse@^4.1.0, estraverse@^4.1.1: estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
...@@ -5085,7 +5318,7 @@ etag@~1.8.1: ...@@ -5085,7 +5318,7 @@ etag@~1.8.1:
resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
event-emitter@~0.3.5: event-emitter@^0.3.5, event-emitter@~0.3.5:
version "0.3.5" version "0.3.5"
resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
...@@ -5412,6 +5645,11 @@ file-loader@^3.0.1: ...@@ -5412,6 +5645,11 @@ file-loader@^3.0.1:
loader-utils "^1.0.2" loader-utils "^1.0.2"
schema-utils "^1.0.0" schema-utils "^1.0.0"
file-saver@1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8"
integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==
file-uri-to-path@1.0.0: file-uri-to-path@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
...@@ -6075,6 +6313,11 @@ html-tags@^2.0.0: ...@@ -6075,6 +6313,11 @@ html-tags@^2.0.0:
resolved "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" resolved "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b"
integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=
html-void-elements@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
html-webpack-plugin@^3.2.0: html-webpack-plugin@^3.2.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
...@@ -6103,6 +6346,23 @@ html-webpack-plugin@^4.2.0: ...@@ -6103,6 +6346,23 @@ html-webpack-plugin@^4.2.0:
tapable "^1.1.3" tapable "^1.1.3"
util.promisify "1.0.0" util.promisify "1.0.0"
html2canvas@^1.0.0-alpha.12:
version "1.4.1"
resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
dependencies:
css-line-break "^2.1.0"
text-segmentation "^1.0.3"
html2pdf.js@^0.9.2:
version "0.9.3"
resolved "https://registry.yarnpkg.com/html2pdf.js/-/html2pdf.js-0.9.3.tgz#e7fc6143f748ce253670eaae403987342b66b15c"
integrity sha512-M254g3Z+ZsjtQFDxJlU6E8Zgb8xOpCBQQM1lFPn4Lq+myAdWoYtMFnwlVo/eOI9R1cG75+YmMSDQofkugwOV/Q==
dependencies:
es6-promise "^4.2.5"
html2canvas "^1.0.0-alpha.12"
jspdf "1.4.1"
htmlparser2@^3.3.0: htmlparser2@^3.3.0:
version "3.10.1" version "3.10.1"
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
...@@ -6205,7 +6465,14 @@ human-signals@^1.1.1: ...@@ -6205,7 +6465,14 @@ human-signals@^1.1.1:
resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: i18next@^20.4.0:
version "20.6.1"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-20.6.1.tgz#535e5f6e5baeb685c7d25df70db63bf3cc0aa345"
integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==
dependencies:
"@babel/runtime" "^7.12.0"
iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.13, iconv-lite@^0.4.17, iconv-lite@^0.4.24:
version "0.4.24" version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
...@@ -6254,6 +6521,11 @@ image-size@~0.5.0: ...@@ -6254,6 +6521,11 @@ image-size@~0.5.0:
resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
immer@^9.0.6:
version "9.0.21"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
import-cwd@^2.0.0: import-cwd@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
...@@ -6635,6 +6907,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: ...@@ -6635,6 +6907,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies: dependencies:
is-extglob "^2.1.1" is-extglob "^2.1.1"
is-hotkey@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef"
integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==
is-mobile@^2.2.1: is-mobile@^2.2.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954" resolved "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954"
...@@ -6720,6 +6997,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: ...@@ -6720,6 +6997,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies: dependencies:
isobject "^3.0.1" isobject "^3.0.1"
is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
is-regex@^1.0.4, is-regex@^1.1.0: is-regex@^1.0.4, is-regex@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
...@@ -6780,6 +7062,11 @@ is-typedarray@~1.0.0: ...@@ -6780,6 +7062,11 @@ is-typedarray@~1.0.0:
resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
is-url@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
is-utf8@^0.2.0: is-utf8@^0.2.0:
version "0.2.1" version "0.2.1"
resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
...@@ -6902,6 +7189,29 @@ jsbn@~0.1.0: ...@@ -6902,6 +7189,29 @@ jsbn@~0.1.0:
resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
jsdom@^8.1.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-8.5.0.tgz#d4d8f5dbf2768635b62a62823b947cf7071ebc98"
integrity sha512-rvWfcn2O8SrXPaX5fTYIfPVwvnbU8DnZkjAXK305wfP67csyaJBhgg0F2aU6imqJ+lZmj9EmrBAXy6rWHf2/9Q==
dependencies:
abab "^1.0.0"
acorn "^2.4.0"
acorn-globals "^1.0.4"
array-equal "^1.0.0"
cssom ">= 0.3.0 < 0.4.0"
cssstyle ">= 0.2.34 < 0.3.0"
escodegen "^1.6.1"
iconv-lite "^0.4.13"
nwmatcher ">= 1.3.7 < 2.0.0"
parse5 "^1.5.1"
request "^2.55.0"
sax "^1.1.4"
symbol-tree ">= 3.1.0 < 4.0.0"
tough-cookie "^2.2.0"
webidl-conversions "^3.0.1"
whatwg-url "^2.0.1"
xml-name-validator ">= 2.0.1 < 3.0.0"
jsesc@^1.3.0: jsesc@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
...@@ -6997,6 +7307,17 @@ jsonfile@^4.0.0: ...@@ -6997,6 +7307,17 @@ jsonfile@^4.0.0:
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
jspdf@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-1.4.1.tgz#8dbd437986346d65efe20ede5361927666b8e4ca"
integrity sha512-2vYVdrvrQUdKKPyWHw81t1jEYYAJ6uFJ/HtTcGbI4qXIQEdl18dLEuL2wTeSv2GzeQLSgUvEvwsXsszuHK+PTw==
dependencies:
canvg "^1.0"
cf-blob.js "0.0.1"
file-saver "1.3.8"
omggif "1.0.7"
stackblur "^1.0.0"
jsprim@^1.2.2: jsprim@^1.2.2:
version "1.4.1" version "1.4.1"
resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
...@@ -7234,6 +7555,16 @@ lodash.camelcase@^4.3.0: ...@@ -7234,6 +7555,16 @@ lodash.camelcase@^4.3.0:
resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
lodash.defaults@^3.1.2: lodash.defaults@^3.1.2:
version "3.1.2" version "3.1.2"
resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
...@@ -7257,6 +7588,11 @@ lodash.find@^4.6.0: ...@@ -7257,6 +7588,11 @@ lodash.find@^4.6.0:
resolved "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" resolved "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1"
integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=
lodash.foreach@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==
lodash.get@^4.4.2: lodash.get@^4.4.2:
version "4.4.2" version "4.4.2"
resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
...@@ -7272,6 +7608,11 @@ lodash.isarray@^3.0.0: ...@@ -7272,6 +7608,11 @@ lodash.isarray@^3.0.0:
resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" resolved "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
lodash.kebabcase@^4.1.1: lodash.kebabcase@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
...@@ -7306,6 +7647,11 @@ lodash.restparam@^3.0.0: ...@@ -7306,6 +7647,11 @@ lodash.restparam@^3.0.0:
resolved "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" resolved "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
lodash.toarray@^4.4.0: lodash.toarray@^4.4.0:
version "4.4.0" version "4.4.0"
resolved "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" resolved "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
...@@ -7560,6 +7906,13 @@ mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": ...@@ -7560,6 +7906,13 @@ mime-db@1.44.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
mime-match@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/mime-match/-/mime-match-1.0.2.tgz#3f87c31e9af1a5fd485fb9db134428b23bbb7ba8"
integrity sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==
dependencies:
wildcard "^1.1.0"
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.27" version "2.1.27"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
...@@ -7770,11 +8123,21 @@ mz@^2.4.0: ...@@ -7770,11 +8123,21 @@ mz@^2.4.0:
object-assign "^4.0.1" object-assign "^4.0.1"
thenify-all "^1.0.0" thenify-all "^1.0.0"
namespace-emitter@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz#978d51361c61313b4e6b8cf6f3853d08dfa2b17c"
integrity sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==
nan@^2.12.1: nan@^2.12.1:
version "2.14.1" version "2.14.1"
resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
nanoid@^3.1.25, nanoid@^3.2.0:
version "3.3.6"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
nanomatch@^1.2.9: nanomatch@^1.2.9:
version "1.2.13" version "1.2.13"
resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
...@@ -7975,6 +8338,11 @@ number-is-nan@^1.0.0: ...@@ -7975,6 +8338,11 @@ number-is-nan@^1.0.0:
resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
"nwmatcher@>= 1.3.7 < 2.0.0":
version "1.4.4"
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
oauth-sign@~0.9.0: oauth-sign@~0.9.0:
version "0.9.0" version "0.9.0"
resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
...@@ -8074,6 +8442,11 @@ obuf@^1.0.0, obuf@^1.1.2: ...@@ -8074,6 +8442,11 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
omggif@1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.7.tgz#59d2eecb0263de84635b3feb887c0c9973f1e49d"
integrity sha512-KVVUF85EHKUB9kxxT2D8CksGgfayZKxWtH/+i34zbyDdxFHvsqQs+O756usW7uri2YBD8jE/8GgAsA6wVA1tjg==
omit.js@^1.0.0: omit.js@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858" resolved "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858"
...@@ -8133,7 +8506,7 @@ opn@^5.1.0, opn@^5.5.0: ...@@ -8133,7 +8506,7 @@ opn@^5.1.0, opn@^5.5.0:
dependencies: dependencies:
is-wsl "^1.1.0" is-wsl "^1.1.0"
optionator@^0.8.2: optionator@^0.8.1, optionator@^0.8.2:
version "0.8.3" version "0.8.3"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
...@@ -8359,6 +8732,11 @@ parse5-htmlparser2-tree-adapter@^5.1.1: ...@@ -8359,6 +8732,11 @@ parse5-htmlparser2-tree-adapter@^5.1.1:
dependencies: dependencies:
parse5 "^5.1.1" parse5 "^5.1.1"
parse5@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
integrity sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==
parse5@^5.1.1: parse5@^5.1.1:
version "5.1.1" version "5.1.1"
resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
...@@ -9187,6 +9565,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3 ...@@ -9187,6 +9565,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3
source-map "^0.6.1" source-map "^0.6.1"
supports-color "^6.1.0" supports-color "^6.1.0"
preact@^10.5.13:
version "10.15.0"
resolved "https://registry.yarnpkg.com/preact/-/preact-10.15.0.tgz#14bae0afe3547ca9d45d22fda2a4266462d31cf3"
integrity sha512-nZSa8M2R2m1n7nJSBlzDpxRJaIsejrTO1vlFbdpFvyC8qM1iU+On2y0otfoUm6SRB5o0lF0CKDFxg6grEFU0iQ==
prelude-ls@~1.1.2: prelude-ls@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
...@@ -9210,6 +9593,11 @@ pretty-error@^2.0.2, pretty-error@^2.1.1: ...@@ -9210,6 +9593,11 @@ pretty-error@^2.0.2, pretty-error@^2.1.1:
renderkid "^2.0.1" renderkid "^2.0.1"
utila "~0.4" utila "~0.4"
prismjs@^1.23.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
private@^0.1.6, private@^0.1.8: private@^0.1.6, private@^0.1.8:
version "0.1.8" version "0.1.8"
resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
...@@ -9526,6 +9914,11 @@ regenerator-runtime@^0.11.0: ...@@ -9526,6 +9914,11 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
regenerator-runtime@^0.13.4: regenerator-runtime@^0.13.4:
version "0.13.5" version "0.13.5"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
...@@ -9682,7 +10075,7 @@ request-promise-native@^1.0.7: ...@@ -9682,7 +10075,7 @@ request-promise-native@^1.0.7:
stealthy-require "^1.1.1" stealthy-require "^1.1.1"
tough-cookie "^2.3.3" tough-cookie "^2.3.3"
request@^2.83.0, request@^2.87.0: request@^2.55.0, request@^2.83.0, request@^2.87.0:
version "2.88.2" version "2.88.2"
resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
...@@ -9848,6 +10241,11 @@ rgba-regex@^1.0.0: ...@@ -9848,6 +10241,11 @@ rgba-regex@^1.0.0:
resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
rgbcolor@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d"
integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==
right-align@^0.1.1: right-align@^0.1.1:
version "0.1.3" version "0.1.3"
resolved "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" resolved "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
...@@ -9944,7 +10342,7 @@ safe-regex@^1.1.0: ...@@ -9944,7 +10342,7 @@ safe-regex@^1.1.0:
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@~1.2.1, sax@~1.2.4: sax@^1.1.4, sax@~1.2.1, sax@~1.2.4:
version "1.2.4" version "1.2.4"
resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
...@@ -9982,6 +10380,13 @@ schema-utils@^2.6.1, schema-utils@^2.6.5: ...@@ -9982,6 +10380,13 @@ schema-utils@^2.6.1, schema-utils@^2.6.5:
ajv "^6.12.2" ajv "^6.12.2"
ajv-keywords "^3.4.1" ajv-keywords "^3.4.1"
scroll-into-view-if-needed@^2.2.28:
version "2.2.31"
resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587"
integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==
dependencies:
compute-scroll-into-view "^1.0.20"
select-hose@^2.0.0: select-hose@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
...@@ -10177,6 +10582,22 @@ slash@^2.0.0: ...@@ -10177,6 +10582,22 @@ slash@^2.0.0:
resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
slate-history@^0.66.0:
version "0.66.0"
resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.66.0.tgz#ac63fddb903098ceb4c944433e3f75fe63acf940"
integrity sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==
dependencies:
is-plain-object "^5.0.0"
slate@^0.72.0:
version "0.72.8"
resolved "https://registry.yarnpkg.com/slate/-/slate-0.72.8.tgz#5a018edf24e45448655293a68bfbcf563aa5ba81"
integrity sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==
dependencies:
immer "^9.0.6"
is-plain-object "^5.0.0"
tiny-warning "^1.0.3"
slice-ansi@1.0.0: slice-ansi@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
...@@ -10193,6 +10614,11 @@ slice-ansi@^2.1.0: ...@@ -10193,6 +10614,11 @@ slice-ansi@^2.1.0:
astral-regex "^1.0.0" astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0" is-fullwidth-code-point "^2.0.0"
snabbdom@^3.1.0:
version "3.5.1"
resolved "https://registry.yarnpkg.com/snabbdom/-/snabbdom-3.5.1.tgz#25f80ef15b194baea703d9d5441892e369de18e1"
integrity sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==
snapdragon-node@^2.0.1: snapdragon-node@^2.0.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
...@@ -10417,6 +10843,11 @@ sshpk@^1.7.0: ...@@ -10417,6 +10843,11 @@ sshpk@^1.7.0:
safer-buffer "^2.0.2" safer-buffer "^2.0.2"
tweetnacl "~0.14.0" tweetnacl "~0.14.0"
ssr-window@^3.0.0-alpha.1:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-3.0.0.tgz#fd5b82801638943e0cc704c4691801435af7ac37"
integrity sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==
ssri@^5.2.4: ssri@^5.2.4:
version "5.3.0" version "5.3.0"
resolved "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" resolved "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
...@@ -10444,6 +10875,16 @@ stable@^0.1.8: ...@@ -10444,6 +10875,16 @@ stable@^0.1.8:
resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
stackblur-canvas@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-1.4.1.tgz#849aa6f94b272ff26f6471fa4130ed1f7e47955b"
integrity sha512-TfbTympL5C1K+F/RizDkMBqH18EkUKU8V+4PphIXR+fWhZwwRi3bekP04gy2TOwOT3R6rJQJXAXFrbcZde7wow==
stackblur@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stackblur/-/stackblur-1.0.0.tgz#b407a7e05c93b08d66883bb808d7cba3a503f12f"
integrity sha512-K92JX8alrs0pTox5U2arVBqB8tJmak9dh9i4Xausy94TnnGMdLfTn7P2Dp/NOzlmxvEs7lDzeryo8YqOy0BHRQ==
stackframe@^1.1.1: stackframe@^1.1.1:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
...@@ -10760,6 +11201,11 @@ svgo@^1.0.0: ...@@ -10760,6 +11201,11 @@ svgo@^1.0.0:
unquote "~1.1.1" unquote "~1.1.1"
util.promisify "~1.0.0" util.promisify "~1.0.0"
"symbol-tree@>= 3.1.0 < 4.0.0":
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@4.0.2: table@4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.npmjs.org/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" resolved "https://registry.npmjs.org/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
...@@ -10837,6 +11283,13 @@ terser@^4.1.2, terser@^4.6.3: ...@@ -10837,6 +11283,13 @@ terser@^4.1.2, terser@^4.6.3:
source-map "~0.6.1" source-map "~0.6.1"
source-map-support "~0.5.12" source-map-support "~0.5.12"
text-segmentation@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
dependencies:
utrie "^1.0.2"
text-table@^0.2.0, text-table@~0.2.0: text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
...@@ -10905,6 +11358,11 @@ tiny-emitter@^2.0.0: ...@@ -10905,6 +11358,11 @@ tiny-emitter@^2.0.0:
resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
tiny-warning@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
tinycolor2@^1.4.1: tinycolor2@^1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
...@@ -10986,7 +11444,7 @@ toposort@^1.0.0: ...@@ -10986,7 +11444,7 @@ toposort@^1.0.0:
resolved "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" resolved "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
tough-cookie@^2.3.3, tough-cookie@~2.5.0: tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@~2.5.0:
version "2.5.0" version "2.5.0"
resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
...@@ -10994,6 +11452,11 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: ...@@ -10994,6 +11452,11 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0:
psl "^1.1.28" psl "^1.1.28"
punycode "^2.1.1" punycode "^2.1.1"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
trim-newlines@^1.0.0: trim-newlines@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
...@@ -11287,6 +11750,13 @@ utils-merge@1.0.1: ...@@ -11287,6 +11750,13 @@ utils-merge@1.0.1:
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
utrie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
dependencies:
base64-arraybuffer "^1.0.2"
uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0" version "3.4.0"
resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
...@@ -11397,6 +11867,13 @@ vue-hot-reload-api@^2.2.0, vue-hot-reload-api@^2.3.0: ...@@ -11397,6 +11867,13 @@ vue-hot-reload-api@^2.2.0, vue-hot-reload-api@^2.3.0:
resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" resolved "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-html2pdf@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/vue-html2pdf/-/vue-html2pdf-1.8.0.tgz#c69a2c285ac4de88245435cd36d64075e1a1f23e"
integrity sha512-8/eH6rZUcMERgvq9a1JZjn680sD/RVLf398PikscxYMKNzqrLVjEmk/CHO7mXAyxE7Z/MCnLdmjE3fAJrEs2Xg==
dependencies:
html2pdf.js "^0.9.2"
vue-i18n@^8.7.0: vue-i18n@^8.7.0:
version "8.18.2" version "8.18.2"
resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.18.2.tgz#cd7c12f2e178e6faa23b0e3cfd2f7bac9305f8fc" resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.18.2.tgz#cd7c12f2e178e6faa23b0e3cfd2f7bac9305f8fc"
...@@ -11576,6 +12053,11 @@ wcwidth@^1.0.1: ...@@ -11576,6 +12053,11 @@ wcwidth@^1.0.1:
dependencies: dependencies:
defaults "^1.0.3" defaults "^1.0.3"
webidl-conversions@^3.0.0, webidl-conversions@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
webpack-bundle-analyzer@^3.3.0: webpack-bundle-analyzer@^3.3.0:
version "3.8.0" version "3.8.0"
resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16"
...@@ -11798,6 +12280,14 @@ websocket-extensions@>=0.1.1: ...@@ -11798,6 +12280,14 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
whatwg-url@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-2.0.1.tgz#5396b2043f020ee6f704d9c45ea8519e724de659"
integrity sha512-sX+FT4N6iR0ZiqGqyDEKklyfMGR99zvxZD+LQ8IGae5uVGswQ7DOeLPB5KgJY8FzkwSzwqOXLQeVQvtOTSQU9Q==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
whet.extend@~0.9.9: whet.extend@~0.9.9:
version "0.9.9" version "0.9.9"
resolved "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" resolved "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
...@@ -11827,6 +12317,11 @@ which@^2.0.1: ...@@ -11827,6 +12317,11 @@ which@^2.0.1:
dependencies: dependencies:
isexe "^2.0.0" isexe "^2.0.0"
wildcard@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
window-size@0.1.0: window-size@0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
...@@ -11916,6 +12411,16 @@ xe-utils@2.4.8: ...@@ -11916,6 +12411,16 @@ xe-utils@2.4.8:
resolved "https://registry.yarnpkg.com/xe-utils/-/xe-utils-2.4.8.tgz#0efda3ca81f6b55f68a8a31e276fb17da59c98b3" resolved "https://registry.yarnpkg.com/xe-utils/-/xe-utils-2.4.8.tgz#0efda3ca81f6b55f68a8a31e276fb17da59c98b3"
integrity sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q== integrity sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q==
"xml-name-validator@>= 2.0.1 < 3.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
integrity sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==
xmldom@^0.1.22:
version "0.1.31"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==
xregexp@^4.2.4: xregexp@^4.2.4:
version "4.3.0" version "4.3.0"
resolved "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" resolved "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论