提交 c325ceca authored 作者: 宋雄's avatar 宋雄

完善授权

上级 34f22543
NODE_ENV=development NODE_ENV=development
VUE_APP_API_BASE_URL='http://192.168.0.118:9999/property-central' VUE_APP_API_BASE_URL='http://192.168.0.118:9999'
# VUE_APP_API_BASE_URL='http://220.203.25.212:9999/property-central' # VUE_APP_API_BASE_URL='http://220.203.25.212:9999/property-central'
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
......
...@@ -11,42 +11,43 @@ ...@@ -11,42 +11,43 @@
"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",
"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",
"echarts": "^5.4.2",
"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-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 +57,13 @@ ...@@ -56,13 +57,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 +101,10 @@ ...@@ -100,7 +101,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>
......
...@@ -2,6 +2,9 @@ import { getAction, deleteAction, putAction, postAction, httpAction } from '@/ap ...@@ -2,6 +2,9 @@ import { getAction, deleteAction, putAction, postAction, httpAction } from '@/ap
import Vue from 'vue' import Vue from 'vue'
import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types" import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
// 首页统计数据
const getDataStatisticsApi = (params)=>getAction("/property-central/central/homepage/dataStatistics",params);
//角色管理 //角色管理
const addRole = (params)=>postAction("/sys/role/add",params); const addRole = (params)=>postAction("/sys/role/add",params);
const editRole = (params)=>putAction("/sys/role/edit",params); const editRole = (params)=>putAction("/sys/role/edit",params);
...@@ -28,6 +31,7 @@ const getSystemSubmenu = (params)=>getAction("/sys/permission/getSystemSubmenu", ...@@ -28,6 +31,7 @@ const getSystemSubmenu = (params)=>getAction("/sys/permission/getSystemSubmenu",
const getSystemSubmenuBatch = (params) => getAction('/sys/permission/getSystemSubmenuBatch', params) const getSystemSubmenuBatch = (params) => getAction('/sys/permission/getSystemSubmenuBatch', params)
const queryTreeList = (params)=>getAction("/sys/permission/queryTreeList",params); const queryTreeList = (params)=>getAction("/sys/permission/queryTreeList",params);
const queryTreeListForRole = (params)=>getAction("/sys/role/queryTreeList",params); const queryTreeListForRole = (params)=>getAction("/sys/role/queryTreeList",params);
const queryTreeListByTypeForRole = (params)=>getAction("/sys/role/queryTreeListByType",{...params, platformType: 'company'});
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);
...@@ -40,9 +44,9 @@ const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermission ...@@ -40,9 +44,9 @@ const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermission
const queryDepartTreeList = (params)=>getAction("/sys/sysDepart/queryTreeList",params); const queryDepartTreeList = (params)=>getAction("/sys/sysDepart/queryTreeList",params);
const queryDepartTreeSync = (params)=>getAction("/sys/sysDepart/queryDepartTreeSync",params); const queryDepartTreeSync = (params)=>getAction("/sys/sysDepart/queryDepartTreeSync",params);
const queryIdTree = (params)=>getAction("/sys/sysDepart/queryIdTree",params); const queryIdTree = (params)=>getAction("/sys/sysDepart/queryIdTree",params);
const queryParentName = (params)=>getAction("/sys/sysDepart/queryParentName",params); const queryParentName = (params)=>getAction("/sys/sysDepart/queryParentName",params);
const searchByKeywords = (params)=>getAction("/sys/sysDepart/searchBy",params); const searchByKeywords = (params)=>getAction("/sys/sysDepart/searchBy",params);
const deleteByDepartId = (params)=>deleteAction("/sys/sysDepart/delete",params); const deleteByDepartId = (params)=>deleteAction("/sys/sysDepart/delete",params);
//二级部门管理 //二级部门管理
const queryDepartPermission = (params)=>getAction("/sys/permission/queryDepartPermission",params); const queryDepartPermission = (params)=>getAction("/sys/permission/queryDepartPermission",params);
...@@ -56,17 +60,6 @@ const queryMyDepartTreeList = (params)=>getAction("/sys/sysDepart/queryMyDeptTre ...@@ -56,17 +60,6 @@ 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 getPropertyDetailApi = (params)=>getAction("/property/propertySettled/queryById",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);
const editDict = (params)=>putAction("/sys/dict/edit",params); const editDict = (params)=>putAction("/sys/dict/edit",params);
...@@ -110,7 +103,22 @@ export const transitRESTful = { ...@@ -110,7 +103,22 @@ export const transitRESTful = {
http: (url, parameter) => httpAction(getTransitURL(url), parameter), http: (url, parameter) => httpAction(getTransitURL(url), parameter),
} }
//入驻管理
const getPropertyListApi = (params)=>getAction("/property-central/property/propertySettled/list",params);
const getPropertyDetailApi = (params)=>getAction("/property-central/property/propertySettled/queryById",params);
const AddUpdatePropertyApi = (params)=>postAction("/property-central/property/propertySettled/add",params);
const auditPropertyApi = (params)=>postAction("/property-central/property/propertySettled/audit",params);
const freezeOrPropertyApi = (params)=>getAction(`/property-central/property/propertySettled/freezeOrThaw/${params.id}/${params.status}`,{});
//费用管理
const getCostListApi = (params)=>getAction("/property-central/property/propertyChargrule/list",params);
const getCostDetailApi = (params)=>getAction("/property-central/property/propertyChargrule/queryById",params);
const AddUpdateCostApi = (params)=>postAction("/property-central/property/propertyChargrule/add",params);
const AuditUpdateCostApi = (params)=>postAction("/property-central/property/propertyChargrule/audit",params);
const getPropertyChargruleListApi = (params)=>getAction("/property-central/property/propertyChargrule/propertyChargruleList",params);
export { export {
getDataStatisticsApi,
addRole, addRole,
editRole, editRole,
checkRoleCode, checkRoleCode,
...@@ -153,6 +161,7 @@ export { ...@@ -153,6 +161,7 @@ export {
queryUserByDepId, queryUserByDepId,
duplicateCheck, duplicateCheck,
queryTreeListForRole, queryTreeListForRole,
queryTreeListByTypeForRole,
getSystemMenuList, getSystemMenuList,
getSystemSubmenu, getSystemSubmenu,
getSystemSubmenuBatch, getSystemSubmenuBatch,
...@@ -169,11 +178,14 @@ export { ...@@ -169,11 +178,14 @@ export {
getPropertyListApi, getPropertyListApi,
getPropertyDetailApi, getPropertyDetailApi,
AddUpdatePropertyApi, AddUpdatePropertyApi,
auditPropertyApi,
freezeOrPropertyApi,
getCostListApi, getCostListApi,
getCostDetailApi, getCostDetailApi,
AddUpdateCostApi, AddUpdateCostApi,
AuditUpdateCostApi AuditUpdateCostApi,
getPropertyChargruleListApi
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
* @param title 要修改的新标题 * @param title 要修改的新标题
*/ */
changeTitle(title) { changeTitle(title) {
let projectTitle = "Jeecg-Boot 企业级低代码平台" let projectTitle = "湖北汉江之星科技有限公司"
// 首页特殊处理 // 首页特殊处理
if (this.$route.path === indexKey) { if (this.$route.path === indexKey) {
document.title = projectTitle document.title = projectTitle
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
min-height: 100%; min-height: 100%;
background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%; background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%;
background-size: 100%; background-size: 100%;
padding: 110px 0 144px; padding-top: 110px;
position: relative; position: relative;
a { a {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
props: { props: {
title: { title: {
type: String, type: String,
default: '汉江之星', default: '汉星科技',
required: false required: false
}, },
showTitle: { showTitle: {
......
...@@ -26,6 +26,8 @@ import 'vue-photo-preview/dist/skin.css' ...@@ -26,6 +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,
PLATFORM_CODE,
PLATFORM_TYPE,
DEFAULT_COLOR, DEFAULT_COLOR,
DEFAULT_THEME, DEFAULT_THEME,
DEFAULT_LAYOUT_MODE, DEFAULT_LAYOUT_MODE,
...@@ -81,6 +83,8 @@ function main() { ...@@ -81,6 +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_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, 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,6 +8,8 @@ import { getAction } from '@/api/manage' ...@@ -8,6 +8,8 @@ import { getAction } from '@/api/manage'
const user = { const user = {
state: { state: {
token: '', token: '',
platformCode: '',
platformType: '',
username: '', username: '',
realname: '', realname: '',
tenantid:'', tenantid:'',
...@@ -23,6 +25,12 @@ const user = { ...@@ -23,6 +25,12 @@ const user = {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
SET_CODE: (state, platformCode) => {
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
state.realname = realname state.realname = realname
...@@ -85,6 +93,8 @@ const user = { ...@@ -85,6 +93,8 @@ const user = {
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() })
...@@ -179,6 +189,8 @@ const user = { ...@@ -179,6 +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(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 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, TENANT_ID } from "@/store/mutation-types" import { ACCESS_TOKEN, PLATFORM_CODE, PLATFORM_TYPE, TENANT_ID } from "@/store/mutation-types"
/** /**
* 【指定 axios的 baseURL】 * 【指定 axios的 baseURL】
...@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot"; ...@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
const service = axios.create({ const service = axios.create({
//baseURL: '/jeecg-boot', //baseURL: '/jeecg-boot',
baseURL: apiBaseUrl, // api base_url baseURL: apiBaseUrl, // api base_url
timeout: 15000 // 请求超时时间 timeout: 30000 // 请求超时时间
}) })
const err = (error) => { const err = (error) => {
...@@ -105,9 +105,17 @@ const err = (error) => { ...@@ -105,9 +105,17 @@ 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 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 请根据实际情况自行修改
} }
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
const $route = router.currentRoute const $route = router.currentRoute
......
...@@ -155,7 +155,10 @@ ...@@ -155,7 +155,10 @@
{ {
title:'状态', title:'状态',
align:"center", align:"center",
dataIndex: 'status' dataIndex: 'status',
customRender: function(text) {
return filterDictTextByCache('advStatus', text);
}
}, },
{ {
title: '操作', title: '操作',
...@@ -167,10 +170,10 @@ ...@@ -167,10 +170,10 @@
} }
], ],
url: { url: {
list: "/property/propertyAdv/list", list: "/property-central/property/propertyAdv/list",
delete: "/property/propertyAdv/delete", delete: "/property-central/property/propertyAdv/delete",
deleteBatch: "/property/propertyAdv/deleteBatch", deleteBatch: "/property-central/property/propertyAdv/deleteBatch",
exportXlsUrl: "/property/propertyAdv/exportXls" exportXlsUrl: "/property-central/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-central/property/propertyAdv/add",
edit: "/property/propertyAdv/edit", edit: "/property-central/property/propertyAdv/edit",
queryById: "/property/propertyAdv/queryById" queryById: "/property-central/property/propertyAdv/queryById"
} }
} }
}, },
......
...@@ -158,10 +158,10 @@ ...@@ -158,10 +158,10 @@
showSizeChanger: true showSizeChanger: true
}, },
url: { url: {
list: "/property/propertyChargrule/list", list: "/property-central/property/propertyChargrule/list",
delete: '/property/propertyChargrule/delete', delete: '/property-central/property/propertyChargrule/delete',
deleteBatch: '/property/propertyChargrule/deleteBatch', deleteBatch: '/property-central/property/propertyChargrule/deleteBatch',
exportXlsUrl: "/property/propertyChargrule/exportXls" exportXlsUrl: "/property-central/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-central/property/propertyChargrule/add",
edit: "/property/propertyChargrule/edit", edit: "/property-central/property/propertyChargrule/edit",
queryById: "/property/propertyChargrule/queryById" queryById: "/property-central/property/propertyChargrule/queryById"
}, },
dictOptions: [] dictOptions: []
} }
......
<template>
<div>
<index-chart v-if="indexStyle==1"></index-chart>
<index-bdc v-if="indexStyle==2"></index-bdc>
<index-task v-if="indexStyle==3"></index-task>
<div style="width: 100%;text-align: right;margin-top: 20px">
请选择首页样式:
<a-radio-group v-model="indexStyle">
<a-radio :value="1">统计图表</a-radio>
<a-radio :value="2">统计图表2</a-radio>
<a-radio :value="3">任务表格</a-radio>
</a-radio-group>
</div>
</div>
</template>
<script>
import IndexChart from './IndexChart'
import IndexTask from "./IndexTask"
import IndexBdc from './IndexBdc'
export default {
name: "Analysis",
components: {
IndexChart,
IndexTask,
IndexBdc
},
data() {
return {
indexStyle:1
}
},
created() {
},
methods: {
}
}
</script>
\ No newline at end of file
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
<index-chart v-if="indexStyle==1"></index-chart> <index-chart v-if="indexStyle==1"></index-chart>
<index-bdc v-if="indexStyle==2"></index-bdc> <index-bdc v-if="indexStyle==2"></index-bdc>
<index-task v-if="indexStyle==3"></index-task> <index-task v-if="indexStyle==3"></index-task>
<div style="width: 100%;text-align: right;margin-top: 20px"> <!-- <div style="width: 100%;text-align: right;margin-top: 20px">
请选择首页样式: 请选择首页样式:
<a-radio-group v-model="indexStyle"> <a-radio-group v-model="indexStyle">
<a-radio :value="1">统计图表</a-radio> <a-radio :value="1">统计图表</a-radio>
<a-radio :value="2">统计图表2</a-radio> <a-radio :value="2">统计图表2</a-radio>
<a-radio :value="3">任务表格</a-radio> <a-radio :value="3">任务表格</a-radio>
</a-radio-group> </a-radio-group>
</div> </div> -->
</div> </div>
</template> </template>
......
...@@ -2,10 +2,8 @@ ...@@ -2,10 +2,8 @@
<div class="page-header-index-wide"> <div class="page-header-index-wide">
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }"> <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<chart-card :loading="loading" title="总销售额" total="¥126,560"> <chart-card :loading="loading" title="入驻物业公司数量" :total="200 | NumberFormat">
<a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" />
</a-tooltip>
<div> <div>
<trend flag="up" style="margin-right: 16px;"> <trend flag="up" style="margin-right: 16px;">
<span slot="term">周同比</span> <span slot="term">周同比</span>
...@@ -20,7 +18,7 @@ ...@@ -20,7 +18,7 @@
</chart-card> </chart-card>
</a-col> </a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }"> <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<chart-card :loading="loading" title="订单量" :total="8846 | NumberFormat"> <chart-card :loading="loading" title="累计物业社区数量" :total="8846 | NumberFormat">
<a-tooltip title="指标说明" slot="action"> <a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" /> <a-icon type="info-circle-o" />
</a-tooltip> </a-tooltip>
...@@ -31,7 +29,7 @@ ...@@ -31,7 +29,7 @@
</chart-card> </chart-card>
</a-col> </a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }"> <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<chart-card :loading="loading" title="支付笔数" :total="6560 | NumberFormat"> <chart-card :loading="loading" title="累计小区数量" :total="6560 | NumberFormat">
<a-tooltip title="指标说明" slot="action"> <a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" /> <a-icon type="info-circle-o" />
</a-tooltip> </a-tooltip>
...@@ -42,7 +40,7 @@ ...@@ -42,7 +40,7 @@
</chart-card> </chart-card>
</a-col> </a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }"> <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<chart-card :loading="loading" title="运营活动效果" total="78%"> <chart-card :loading="loading" title="累计业主数量" total="78%">
<a-tooltip title="指标说明" slot="action"> <a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" /> <a-icon type="info-circle-o" />
</a-tooltip> </a-tooltip>
...@@ -63,7 +61,21 @@ ...@@ -63,7 +61,21 @@
</a-col> </a-col>
</a-row> </a-row>
<a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}"> <!-- <div class="map-box">
<h3>待处理事务</h3>
<div class="dealt-with">
<div class="box">
<h6>{{}}</h6>
</div>
</div>
</div> -->
<div class="map-box">
<h3>社区分布数量图</h3>
<div ref="mapEcharts" class="map-echart" style="height: 500px"></div>
</div>
<!-- <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
<div class="salesCard"> <div class="salesCard">
<a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}"> <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
<div class="extra-wrapper" slot="tabBarExtraContent"> <div class="extra-wrapper" slot="tabBarExtraContent">
...@@ -97,9 +109,9 @@ ...@@ -97,9 +109,9 @@
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</div> </div>
</a-card> </a-card> -->
<a-row> <!-- <a-row>
<a-col :span="24"> <a-col :span="24">
<a-card :loading="loading" :bordered="false" title="最近一周访问量统计" :style="{ marginTop: '24px' }"> <a-card :loading="loading" :bordered="false" title="最近一周访问量统计" :style="{ marginTop: '24px' }">
<a-row> <a-row>
...@@ -131,11 +143,13 @@ ...@@ -131,11 +143,13 @@
<line-chart-multid :fields="visitFields" :dataSource="visitInfo"></line-chart-multid> <line-chart-multid :fields="visitFields" :dataSource="visitInfo"></line-chart-multid>
</a-card> </a-card>
</a-col> </a-col>
</a-row> </a-row> -->
</div> </div>
</template> </template>
<script> <script>
import * as echarts from "echarts";
import chinaData from "@/assets/china.json"; //地图包
import ChartCard from '@/components/ChartCard' import ChartCard from '@/components/ChartCard'
import ACol from "ant-design-vue/es/grid/Col" import ACol from "ant-design-vue/es/grid/Col"
import ATooltip from "ant-design-vue/es/tooltip/Tooltip" import ATooltip from "ant-design-vue/es/tooltip/Tooltip"
...@@ -148,7 +162,7 @@ ...@@ -148,7 +162,7 @@
import HeadInfo from '@/components/tools/HeadInfo.vue' import HeadInfo from '@/components/tools/HeadInfo.vue'
import Trend from '@/components/Trend' import Trend from '@/components/Trend'
import { getLoginfo,getVisitInfo } from '@/api/api' import { getDataStatisticsApi, getLoginfo,getVisitInfo } from '@/api/api'
const rankList = [] const rankList = []
for (let i = 0; i < 7; i++) { for (let i = 0; i < 7; i++) {
...@@ -181,6 +195,8 @@ ...@@ -181,6 +195,8 @@
}, },
data() { data() {
return { return {
mapData: [],
waitAuditList: [],
loading: true, loading: true,
center: null, center: null,
rankList, rankList,
...@@ -196,6 +212,7 @@ ...@@ -196,6 +212,7 @@
this.loading = !this.loading this.loading = !this.loading
}, 1000) }, 1000)
this.initLogInfo(); this.initLogInfo();
this.getDataStatistics()
}, },
methods: { methods: {
initLogInfo () { initLogInfo () {
...@@ -213,6 +230,84 @@ ...@@ -213,6 +230,84 @@
} }
}) })
}, },
async getDataStatistics() {
let {result} = await getDataStatisticsApi();
this.mapData = result.propertySettledList.map(item=> {
return {
name: item.propertyName,
value: [item.longitude, item.latitude],
text: {...item}
}
}) || []
this.mapEcharts()
},
//地图
mapEcharts() {
// 获取地图数据
// 使用数据注册地图
echarts.registerMap("china", chinaData);
this.$nextTick(() => {
// 初始化地图
this.map = echarts.init(this.$refs["mapEcharts"]);
// 设置基础配置项
const option = {
areaColor: "#97bff7",
// 悬浮窗
tooltip: {
trigger: "item",
formatter: function (params) {
return `公司:${params.data.name}</br>注册地址:${params.data.text.provinceName}${params.data.text.cityName}${params.data.text.countyName}</br>详细地址:${params.data.text.addressInfo}</br>联系人:${params.data.text.contactName}</br>联系电话:${params.data.text.contactPhone}`;
},
borderColor: "#fff",
textStyle: {
//color: "#fff",
fontSize: "13"
}
},
geo: {
type: "map",
map: "china",
//height: "100%",
top: 0,
width: "50%",
roam: true,
zoom: 1,
scaleLimit: {
//滚轮缩放的极限控制
min: 0.6, //最小的缩放值
max: 20
},
// 地图区域的样式设置
itemStyle: {
borderColor: "#fff",
borderWidth: 1,
areaColor: "#c1dbff"
}
},
// 要显示的散点数据
series: [
{
name: "社区分布数量图",
type: "scatter",
coordinateSystem: "geo", //设置坐标系为 geo
data: this.mapData,
itemStyle: {
color: function (params) {
//根据不同数据显示不同颜色的标记
if (params.data.text.customerAccount >= 100) {
return "#67c23a";
} else {
return "#409eff";
}
}
}
}
]
};
// 将配置应用到地图上
this.map.setOption(option);
});
},
} }
} }
</script> </script>
...@@ -265,4 +360,20 @@ ...@@ -265,4 +360,20 @@
} }
} }
} }
.map-box {
background-color: #fff;
padding: 20px;
.dealt-with {
width: 100%;
max-width: 100%;
overflow-x: auto;
display: flex;
.box {
border: 1px solid #f5f5f5;
}
}
}
</style> </style>
\ No newline at end of file
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
const columns = [ const columns = [
{ {
title: '菜单名称111', title: '菜单名称',
dataIndex: 'name', dataIndex: 'name',
key: 'name' key: 'name'
}, { }, {
......
...@@ -6,21 +6,21 @@ ...@@ -6,21 +6,21 @@
<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.propertyName"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<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.dataId"></a-input> <a-input placeholder="请选择入驻时间" v-model="queryParam.createTime"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24"> <a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery">查询</a-button> <a-button type="primary" @click="searchQuery">查询</a-button>
<a-button style="margin-left: 8px" @click="searchReset">重置</a-button> <a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
</a-col> </a-col>
</span> </span>
</a-row> </a-row>
</a-form> </a-form>
</div> </div>
...@@ -59,11 +59,11 @@ ...@@ -59,11 +59,11 @@
class="j-table-force-nowrap" class="j-table-force-nowrap"
@change="handleTableChange" @change="handleTableChange"
> >
<span slot="empowerDate" slot-scope="text, record"> <span slot="propertyStatus" slot-scope="text, record">
<span>{{record.empowerBeginDate}}{{record.empowerEndDate}}</span> <span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span> </span>
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a> <a @click="onLoadDetail(record, 'edit')">编辑</a>
<a-divider type="vertical"/> <a-divider type="vertical"/>
<a-dropdown> <a-dropdown>
...@@ -71,10 +71,18 @@ ...@@ -71,10 +71,18 @@
更多 <a-icon type="down"/> 更多 <a-icon type="down"/>
</a> </a>
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item v-if="record.auditStatus !== 'waitAudit'">
<a @click="handlePerssion(record.roleId)">授权</a>
</a-menu-item>
<a-menu-item> <a-menu-item>
<a href="javascript:;" @click="handleDetail(record)">详情</a> <a href="javascript:;" @click="onLoadDetail(record)">详情</a>
</a-menu-item>
<a-menu-item v-if="record.auditStatus === 'waitAudit'">
<a href="javascript:;" @click="onExamine(record)">审核</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;" @click="onStatus(record)">{{record.propertyStatus === 'normal' ? '冻结' : '解冻'}}</a>
</a-menu-item> </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">
<a>删除</a> <a>删除</a>
...@@ -83,14 +91,6 @@ ...@@ -83,14 +91,6 @@
</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>
...@@ -98,165 +98,16 @@ ...@@ -98,165 +98,16 @@
<property-settled-modal ref="modalForm" @ok="modalFormOk"></property-settled-modal> <property-settled-modal ref="modalForm" @ok="modalFormOk"></property-settled-modal>
<a-modal <!-- 右侧的角色权限配置 -->
:title="modalTitle + '入驻物业集团'" <user-role-modal ref="modalUserRole"></user-role-modal>
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 { auditPropertyApi, freezeOrPropertyApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import PropertySettledModal from './modules/PropertySettledModal' import PropertySettledModal from './modules/PropertySettledModal'
import JEllipsis from '@/components/jeecg/JEllipsis' import UserRoleModal from './modules/UserRoleModal'
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 = [
...@@ -304,9 +155,10 @@ ...@@ -304,9 +155,10 @@
key: 'ontrialEndDate' key: 'ontrialEndDate'
}, },
{ {
title: '冻结/解冻', title: '状态',
dataIndex: 'refuseDesc', dataIndex: 'propertyStatus',
key: 'refuseDesc' scopedSlots: { customRender: 'propertyStatus' },
key: 'propertyStatus'
}, },
{ {
title: '操作', title: '操作',
...@@ -322,106 +174,80 @@ ...@@ -322,106 +174,80 @@
mixins: [JeecgListMixin], mixins: [JeecgListMixin],
components: { components: {
PropertySettledModal, PropertySettledModal,
JEllipsis, UserRoleModal
JUpload,
JImageUpload
}, },
data() { data() {
return { return {
// 表头 // 表头
columns: columns, columns: columns,
loading: false, loading: false,
pagination: {}, pagination: {
url: { total: 0,
list: "/property/propertySettled/list", current: 1,
delete: '/sys/permission/delete', pageSize: 10,
deleteBatch: '/sys/permission/deleteBatch' showSizeChanger: true
}, },
url: {
modalTitle: '新增', list: "/property-central/property/propertySettled/list",
visible: false, delete: '/property-central/property/propertySettled/delete',
labelCol: { span: 6 }, deleteBatch: '/property-central/property/propertySettled/deleteBatch'
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: { methods: {
loadData() { onLoadDetail(record, type) {
this.loading = true record['registAdress'] = [record.provinceCode, record.cityCode, record.countyCode]
getPropertyListApi({ if(type === 'edit') {
pageNo: 1, this.handleEdit(record)
pageSize: 10 } else {
}).then((res) => { this.handleDetail(record)
if (res.success) { }
const pagination = { ...this.pagination };
pagination.total = res.result.total
this.dataSource = res.result.records
}
}).finally(()=>{
this.loading = false
})
}, },
onSubmit() { onExamine(record) {
this.$refs.ruleForm.validate(valid => { let that = this
if (valid) { this.$confirm({
alert('submit!'); title: '确认审核此物业?',
} else { closable: true,
console.log('error submit!!'); okText: '审核通过',
return false; cancelText: '审核驳回',
onOk() {
return auditPropertyApi({
id: record.id,
auditStatus: 'auditPass'
}).then(res=> {
that.searchQuery()
})
},
onCancel() {
return auditPropertyApi({
id: record.id,
auditStatus: 'refuse'
}).then(res=> {
that.searchQuery()
})
} }
}); });
}, },
close() { onStatus(record) {
this.visible = false let that = this
}, this.$confirm({
handleSelectChange() {}, title: `确认${record.propertyStatus === 'normal' ? '冻结' : '解冻'}此物业?`,
handleSubmit() {}, closable: true,
okText: `${record.propertyStatus === 'normal' ? '冻结' : '解冻'}`,
onSubmit() { onOk() {
this.$refs.ruleForm.validate(valid => { return freezeOrPropertyApi({
if (valid) { id: record.id,
alert('submit!'); status: `${record.propertyStatus === 'normal' ? 'freeze' : 'normal'}`
} else { }).then(res=> {
console.log('error submit!!'); that.searchQuery()
return false; })
} },
onCancel() {}
}); });
}, },
resetForm() { handlePerssion(roleId) {
this.$refs.ruleForm.resetFields(); this.$refs.modalUserRole.show(roleId);
}, }
} }
} }
</script> </script>
......
...@@ -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,9 +128,9 @@ ...@@ -128,9 +128,9 @@
<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 { getPropertyChargruleListApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage' import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util' import { isMobile } from '@/utils/validate'
export default { export default {
name: 'PropertySettledForm', name: 'PropertySettledForm',
...@@ -143,34 +143,41 @@ ...@@ -143,34 +143,41 @@
} }
}, },
data () { data () {
const validateToNextPhone = (rule, value, callback)=> {
if (value && isMobile(value)) {
callback();
} else {
callback('请输入正确的联系人电话!');
}
}
return { return {
pcaa: this.$Jpcaa, pcaa: this.$Jpcaa,
model:{ model:{
propertyName: '恒大集团', propertyName: '',
creditCode: '3452342342', creditCode: '',
legalName: '张三', legalName: '',
registCapital: 100000, registCapital: undefined,
contactName: '李四', contactName: '',
contactPhone: '', contactPhone: '',
registAdress: '', registAdress: [],
provinceName: '', provinceName: '',
provinceCode: '', provinceCode: '',
cityName: '', cityName: '',
cityCode: '', cityCode: '',
countyName: '', countyName: '',
countyCode: '', countyCode: '',
addressInfo: '三岩街道', addressInfo: '',
logoUrl: 'scott/pic/20230306163904_1683357843947.jpg', logoUrl: '',
groupInfo: '我们是海企业', groupInfo: '',
empowerBeginDate: '2023-05-04', empowerBeginDate: '',
empowerEndDate: '2023-05-31', empowerEndDate: '',
ontrialCommunityNum: 12, ontrialCommunityNum: undefined,
chargingStandardId: '', chargingStandardId: '',
contractUrl: 'temp/阿里开发手册_1683357897532.pdf', contractUrl: '',
adminLoginName: '', adminLoginName: '',
adminPassword: '123456', adminPassword: '123456',
longitude: '32.43324232', longitude: '',
latitude: '123.3453453' latitude: ''
}, },
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
...@@ -187,7 +194,10 @@ ...@@ -187,7 +194,10 @@
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }], legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }], registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }], contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
contactPhone: [{ required: true, message: '请输入联系人电话', trigger: 'blur' }], contactPhone: [
{ required: true, message: '请输入联系人电话', trigger: 'blur' },
{ validator: validateToNextPhone }
],
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }], registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }], addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }], logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
...@@ -197,9 +207,9 @@ ...@@ -197,9 +207,9 @@
contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }] contractUrl: [{ required: true, message: '请上传合同附件', trigger: 'change' }]
}, },
url: { url: {
add: "/property/propertySettled/add", add: "/property-central/property/propertySettled/add",
edit: "/propertySettled/propertySettled/edit", edit: "/property-central/property/propertySettled/edit",
queryById: "/propertySettled/propertySettled/queryById" queryById: "/property-central/property/propertySettled/queryById"
}, },
costList: [], costList: [],
mapRef: null, mapRef: null,
...@@ -243,11 +253,8 @@ ...@@ -243,11 +253,8 @@
}, },
methods: { methods: {
async onLoadCostList() { async onLoadCostList() {
let data = await getCostListApi({ let data = await getPropertyChargruleListApi()
pageNo: 1, this.costList = data.result
pageSize: 10
})
this.costList = data.result.records
}, },
add () { add () {
this.edit(this.modelDefault); this.edit(this.modelDefault);
...@@ -270,6 +277,11 @@ ...@@ -270,6 +277,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;
// 创建地理编码实例 // 创建地理编码实例
...@@ -315,6 +327,8 @@ ...@@ -315,6 +327,8 @@
myGeo.getPoint(address, function(point){ myGeo.getPoint(address, function(point){
if(point){ if(point){
_this.mapRef.clearOverlays(); _this.mapRef.clearOverlays();
_this.model.longitude = point.lng
_this.model.latitude = point.lat
_this.positionMap(point.lng, point.lat, zoom, address) _this.positionMap(point.lng, point.lat, zoom, address)
}else{ }else{
console.log('您选择的地址没有解析到结果!'); console.log('您选择的地址没有解析到结果!');
...@@ -336,7 +350,7 @@ ...@@ -336,7 +350,7 @@
httpurl+=this.url.edit; httpurl+=this.url.edit;
method = 'put'; method = 'put';
} }
this.model.registAdress = null 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>
<a-drawer
title="数据规则/按钮权限配置"
width="365"
:closable="false"
@close="onClose"
:visible="visible"
>
<a-tabs defaultActiveKey="1">
<a-tab-pane tab="数据规则" key="1">
<a-checkbox-group v-model="dataruleChecked" v-if="dataruleList.length>0">
<a-row>
<a-col :span="24" v-for="(item,index) in dataruleList" :key=" 'dr'+index ">
<a-checkbox :value="item.id">{{ item.ruleName }}</a-checkbox>
</a-col>
<a-col :span="24">
<div style="width: 100%;margin-top: 15px">
<a-button @click="saveDataruleForRole" type="primary" size="small" icon="save">点击保存</a-button>
</div>
</a-col>
</a-row>
</a-checkbox-group>
<div v-else><h3>无配置信息!</h3></div>
</a-tab-pane>
<!--<a-tab-pane tab="按钮权限" key="2">敬请期待!!!</a-tab-pane>-->
</a-tabs>
</a-drawer>
</template>
<script>
import ARow from 'ant-design-vue/es/grid/Row'
import ACol from 'ant-design-vue/es/grid/Col'
import { getAction,postAction } from '@/api/manage'
export default {
name: 'RoleDataruleModal',
components: { ACol, ARow },
data(){
return {
functionId:'',
roleId:'',
visible:false,
tabList: [{
key: '1',
tab: '数据规则',
}, {
key: '2',
tab: '按钮权限',
}],
activeTabKey: '1',
url:{
datarule:"/sys/role/datarule",
},
dataruleList:[],
dataruleChecked:[]
}
},
methods:{
loadData(){
getAction(`${this.url.datarule}/${this.functionId}/${this.roleId}`).then(res=>{
console.log(res)
if(res.success){
this.dataruleList = res.result.datarule
let drChecked = res.result.drChecked
if(drChecked){
this.dataruleChecked = drChecked.split(",")
}
}
})
},
saveDataruleForRole(){
if(!this.dataruleChecked || this.dataruleChecked.length==0){
this.$message.warning("请注意,现未勾选任何数据权限!")
}
let params = {
permissionId:this.functionId,
roleId:this.roleId,
dataRuleIds:this.dataruleChecked.join(",")
}
console.log("保存数据权限",params)
postAction(this.url.datarule,params).then(res=>{
if(res.success){
this.$message.success(res.message)
}else{
this.$message.error(res.message)
}
})
},
show(functionId,roleId){
this.onReset()
this.functionId = functionId
this.roleId = roleId
this.visible=true
this.loadData()
},
onClose(){
this.visible=false
this.onReset()
},
onTabChange (key) {
this.activeTabKey = key
},
onReset(){
this.functionId=''
this.roleId=''
this.dataruleList=[]
this.dataruleChecked=[]
}
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<a-drawer
:title="title"
:maskClosable="true"
width=650
placement="right"
:closable="true"
@close="close"
:visible="visible"
style="overflow: auto;padding-bottom: 53px;">
<a-form>
<a-form-item label='所拥有的权限'>
<a-tree
checkable
@check="onCheck"
:checkedKeys="checkedKeys"
:treeData="treeData"
@expand="onExpand"
@select="onTreeNodeSelect"
:selectedKeys="selectedKeys"
:expandedKeys="expandedKeysss"
:checkStrictly="checkStrictly">
<span slot="hasDatarule" slot-scope="{slotTitle,ruleFlag}">
{{ slotTitle }}<a-icon v-if="ruleFlag" type="align-left" style="margin-left:5px;color: red;"></a-icon>
</span>
</a-tree>
</a-form-item>
</a-form>
<div class="drawer-bootom-button">
<a-dropdown style="float: left" :trigger="['click']" placement="topCenter">
<a-menu slot="overlay">
<a-menu-item key="1" @click="switchCheckStrictly(1)">父子关联</a-menu-item>
<a-menu-item key="2" @click="switchCheckStrictly(2)">取消关联</a-menu-item>
<a-menu-item key="3" @click="checkALL">全部勾选</a-menu-item>
<a-menu-item key="4" @click="cancelCheckALL">取消全选</a-menu-item>
<a-menu-item key="5" @click="expandAll">展开所有</a-menu-item>
<a-menu-item key="6" @click="closeAll">合并所有</a-menu-item>
</a-menu>
<a-button>
树操作 <a-icon type="up" />
</a-button>
</a-dropdown>
<a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">
<a-button style="margin-right: .8rem">取消</a-button>
</a-popconfirm>
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button>
<a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button>
</div>
<role-datarule-modal ref="datarule"></role-datarule-modal>
</a-drawer>
</template>
<script>
import {queryTreeListByTypeForRole,queryRolePermission,saveRolePermission} from '@/api/api'
import RoleDataruleModal from './RoleDataruleModal.vue'
export default {
name: "RoleModal",
components:{
RoleDataruleModal
},
data(){
return {
roleId:"",
treeData: [],
defaultCheckedKeys:[],
checkedKeys:[],
expandedKeysss:[],
allTreeKeys:[],
autoExpandParent: true,
checkStrictly: true,
title:"物业权限配置",
visible: false,
loading: false,
selectedKeys:[]
}
},
methods: {
onTreeNodeSelect(id){
if(id && id.length>0){
this.selectedKeys = id
}
this.$refs.datarule.show(this.selectedKeys[0],this.roleId)
},
onCheck (o) {
if(this.checkStrictly){
this.checkedKeys = o.checked;
}else{
this.checkedKeys = o
}
},
show(roleId){
this.roleId=roleId
this.visible = true;
},
close () {
this.reset()
this.$emit('close');
this.visible = false;
},
onExpand(expandedKeys){
this.expandedKeysss = expandedKeys;
this.autoExpandParent = false
},
reset () {
this.expandedKeysss = []
this.checkedKeys = []
this.defaultCheckedKeys = []
this.loading = false
},
expandAll () {
this.expandedKeysss = this.allTreeKeys
},
closeAll () {
this.expandedKeysss = []
},
checkALL () {
this.checkedKeys = this.allTreeKeys
},
cancelCheckALL () {
//this.checkedKeys = this.defaultCheckedKeys
this.checkedKeys = []
},
switchCheckStrictly (v) {
if(v==1){
this.checkStrictly = false
}else if(v==2){
this.checkStrictly = true
}
},
handleCancel () {
this.close()
},
handleSubmit(exit) {
let that = this;
let params = {
roleId:that.roleId,
permissionIds:that.checkedKeys.join(","),
lastpermissionIds:that.defaultCheckedKeys.join(","),
};
that.loading = true;
console.log("请求参数:",params);
saveRolePermission(params).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.loading = false;
if (exit) {
that.close()
}
}else {
that.$message.error(res.message);
that.loading = false;
if (exit) {
that.close()
}
}
this.loadData();
})
},
loadData(){
queryTreeListByTypeForRole().then((res) => {
this.treeData = res.result.treeList
this.allTreeKeys = res.result.ids
queryRolePermission({roleId:this.roleId}).then((res)=>{
this.checkedKeys = [...res.result];
this.defaultCheckedKeys = [...res.result];
this.expandedKeysss = this.allTreeKeys;
console.log(this.defaultCheckedKeys)
})
})
}
},
watch: {
visible () {
if (this.visible) {
this.loadData();
}
}
}
}
</script>
<style lang="less" scoped>
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>
\ No newline at end of file
<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: 'central'
} }
console.log("登录参数", loginParams) console.log("登录参数", loginParams)
this.Login(loginParams).then((res) => { this.Login(loginParams).then((res) => {
......
...@@ -25,7 +25,7 @@ module.exports = { ...@@ -25,7 +25,7 @@ module.exports = {
// } // }
// }, // },
//打包app时放开该配置 //打包app时放开该配置
publicPath: './', // publicPath: './',
configureWebpack: config => { configureWebpack: config => {
//生产环境取消 console.log //生产环境取消 console.log
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
......
...@@ -4573,6 +4573,14 @@ ecc-jsbn@~0.1.1: ...@@ -4573,6 +4573,14 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0" jsbn "~0.1.0"
safer-buffer "^2.1.0" safer-buffer "^2.1.0"
echarts@^5.4.2:
version "5.4.2"
resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.4.2.tgz#9f38781c9c6ae323e896956178f6956952c77a48"
integrity sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==
dependencies:
tslib "2.3.0"
zrender "5.4.3"
ee-first@1.1.1: ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
...@@ -11019,6 +11027,11 @@ tsconfig-paths@^3.9.0: ...@@ -11019,6 +11027,11 @@ tsconfig-paths@^3.9.0:
minimist "^1.2.0" minimist "^1.2.0"
strip-bom "^3.0.0" strip-bom "^3.0.0"
tslib@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
tslib@^1.10.0, tslib@^1.9.0: tslib@^1.10.0, tslib@^1.9.0:
version "1.13.0" version "1.13.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
...@@ -12081,3 +12094,10 @@ yorkie@^2.0.0: ...@@ -12081,3 +12094,10 @@ yorkie@^2.0.0:
is-ci "^1.0.10" is-ci "^1.0.10"
normalize-path "^1.0.0" normalize-path "^1.0.0"
strip-indent "^2.0.0" strip-indent "^2.0.0"
zrender@5.4.3:
version "5.4.3"
resolved "https://registry.yarnpkg.com/zrender/-/zrender-5.4.3.tgz#41ffaf835f3a3210224abd9d6964b48ff01e79f5"
integrity sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==
dependencies:
tslib "2.3.0"
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论