dai 4 years ago
parent
commit
89d0ae713d
  1. 2
      .env.development
  2. 1
      .env.production.uat
  3. 4
      .env.shibei_production
  4. 1
      .gitignore
  5. 19713
      package-lock.json
  6. 8
      package.json
  7. 20
      public/index.html
  8. 74
      src/App.vue
  9. BIN
      src/assets/img/aiaf-design/cheliu.png
  10. BIN
      src/assets/img/aiaf-design/gongdan.png
  11. BIN
      src/assets/img/aiaf-design/index.png
  12. BIN
      src/assets/img/aiaf-design/renliu.png
  13. BIN
      src/assets/img/aiaf-design/shebei-chongdianzhuang.png
  14. BIN
      src/assets/img/aiaf-design/shebei-denggan.png
  15. BIN
      src/assets/img/aiaf-design/shebei-fabu.png
  16. BIN
      src/assets/img/aiaf-design/shebei-jiankong.png
  17. BIN
      src/assets/img/aiaf-design/shebei-jinggai.png
  18. BIN
      src/assets/img/aiaf-design/shebei-kakou.png
  19. BIN
      src/assets/img/aiaf-design/shebei-laoren.png
  20. BIN
      src/assets/img/aiaf-design/shebei-menjin.png
  21. BIN
      src/assets/img/aiaf-design/shebei.png
  22. BIN
      src/assets/img/aiaf-design/yujing-alert.png
  23. BIN
      src/assets/img/aiaf-design/yujing.png
  24. BIN
      src/assets/img/caiji-bc.png
  25. BIN
      src/assets/img/logo.png
  26. BIN
      src/assets/img/modules/visual/box-2.png
  27. BIN
      src/assets/img/modules/visual/popup.png
  28. BIN
      src/assets/img/modules/wx-mini/index-set/fangyi-btn.png
  29. BIN
      src/assets/img/plugins/close.png
  30. BIN
      src/assets/img/plugins/danghui.png
  31. BIN
      src/assets/img/plugins/dangqi.png
  32. BIN
      src/assets/img/plugins/dangwei-by.png
  33. BIN
      src/assets/img/plugins/dangyuanzhongxinhu.png
  34. BIN
      src/assets/img/plugins/dian.png
  35. BIN
      src/assets/img/plugins/faguang.png
  36. BIN
      src/assets/img/plugins/jiantou-A.png
  37. BIN
      src/assets/img/plugins/jiantou-D.png
  38. BIN
      src/assets/img/plugins/jiantou-X.png
  39. BIN
      src/assets/img/plugins/louyuanxiaozu.png
  40. BIN
      src/assets/img/plugins/shuoming-X.png
  41. BIN
      src/assets/img/plugins/tanchuang.png
  42. BIN
      src/assets/img/plugins/xiaozu-by.png
  43. BIN
      src/assets/img/plugins/you.png
  44. BIN
      src/assets/img/plugins/zhibu-by.png
  45. BIN
      src/assets/img/plugins/zuo.png
  46. BIN
      src/assets/img/shuju/elegant.png
  47. BIN
      src/assets/img/shuju/logo1.png
  48. BIN
      src/assets/img/shuju/measure/jijin.png
  49. BIN
      src/assets/img/shuju/measure/minban.png
  50. BIN
      src/assets/img/shuju/measure/other.png
  51. BIN
      src/assets/img/unopen-hint.png
  52. 14
      src/assets/scss/aui.scss
  53. 67
      src/assets/scss/buttonstyle copy.scss
  54. 200
      src/assets/scss/buttonstyle.scss
  55. 2
      src/assets/scss/c/config.scss
  56. 15
      src/assets/scss/c/function.scss
  57. 18
      src/assets/scss/common.scss
  58. 8
      src/assets/scss/main-shuju.scss
  59. 42
      src/assets/scss/modules/ai/index.scss
  60. 128
      src/assets/scss/modules/management/epidemic.scss
  61. 49
      src/assets/scss/modules/management/secretaryLog.scss
  62. 66
      src/assets/scss/modules/search.scss
  63. 62
      src/assets/scss/modules/shujirizhi-notice.scss
  64. 499
      src/assets/scss/modules/visual/basicInfoMain copy.scss
  65. 306
      src/assets/scss/modules/visual/basicInfoMain.scss
  66. 66
      src/assets/scss/modules/visual/communityManage.scss
  67. 32
      src/assets/scss/modules/visual/communityManageForm.scss
  68. 344
      src/assets/scss/modules/visual/houseStatic.scss
  69. 1146
      src/assets/scss/modules/visual/people.scss
  70. 68
      src/assets/scss/modules/visual/personCategory.scss
  71. 34
      src/assets/scss/modules/visual/searchPerson.scss
  72. 71
      src/assets/scss/modules/visual/warning-people-list.scss
  73. 153
      src/assets/scss/modules/warning.scss
  74. 197
      src/assets/scss/modules/wx-mini/index-set.scss
  75. 141
      src/assets/scss/pages/caiji.scss
  76. 45
      src/assets/scss/pages/loginWork.scss
  77. 33
      src/assets/scss/people-info.scss
  78. 13
      src/components/wx-index/cpt-item.vue
  79. 4
      src/i18n/zh-CN.js
  80. 472
      src/js/ajax.js
  81. 12
      src/js/dai/request.js
  82. 98
      src/js/dai/request2.js
  83. 72
      src/js/store/index.js
  84. 6
      src/js/store/modules/app.js
  85. 6
      src/main.js
  86. 456
      src/router/index.js
  87. 52
      src/utils/index.js
  88. 2
      src/utils/request.js
  89. 50
      src/utils/treeSelect.js
  90. 43
      src/views/components/CTable.vue
  91. 87
      src/views/components/checkBox.vue
  92. 94
      src/views/components/dragItem.vue
  93. 31
      src/views/components/editResi.vue
  94. 10
      src/views/components/editResi.vue.rej
  95. 126
      src/views/components/rangeInput.vue
  96. 86
      src/views/components/resiForm.vue
  97. 168
      src/views/components/resiSearch.vue
  98. 14
      src/views/components/resiTransfer.vue
  99. 7
      src/views/components/scoreRecord.vue
  100. 179
      src/views/components/tinymce/index.vue

2
.env.development

@ -1,5 +1,5 @@
NODE_ENV=development
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
# VUE_APP_API_SERVER = http://epmet-dev.elinkservice.cn:41080/api
VUE_APP_API_SERVER = http://192.168.1.140/api
#家中开发连级的后端服务

1
.env.production.uat

@ -1,4 +1,5 @@
NODE_ENV=production
# VUE_APP_API_SERVER = http://120.27.18.76/api
VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
VUE_APP_NODE_ENV=prod:uat
VUE_APP_PUBLIC_PATH=epmet-oper

4
.env.shibei_production

@ -0,0 +1,4 @@
NODE_ENV=production
VUE_APP_API_SERVER = https://epdc-shibei.elinkservice.cn/api
VUE_APP_NODE_ENV=shibei_prod
VUE_APP_PUBLIC_PATH=epmet-oper

1
.gitignore

@ -15,4 +15,5 @@ hs_err_pid*
node_modules
dist
epmet-oper
package-lock.json
.idea/

19713
package-lock.json

File diff suppressed because it is too large

8
package.json

@ -9,13 +9,15 @@
"build:sit": "vue-cli-service build --mode production.sit",
"build:uat": "vue-cli-service build --mode production.uat",
"build:prod": "vue-cli-service build --mode production",
"build:shibei_prod": "vue-cli-service build --mode shibei_production",
"lint": "vue-cli-service lint",
"et": "node_modules/.bin/et",
"et:init": "node_modules/.bin/et -i",
"et:list": "gulp themes"
},
"dependencies": {
"@tinymce/tinymce-vue": "^4.0.4",
"@riophae/vue-treeselect": "^0.4.0",
"@tinymce/tinymce-vue": "^3.2.8",
"axios": "^0.19.0",
"babel-eslint": "^8.0.1",
"babel-plugin-component": "^1.1.1",
@ -31,6 +33,7 @@
"js-cookie": "^2.2.0",
"jsencrypt": "^3.0.3",
"lodash": "^4.17.15",
"mint-ui": "^2.2.13",
"node-sass": "^4.12.0",
"ol": "^6.9.0",
"portfinder": "^1.0.21",
@ -43,6 +46,7 @@
"throttle-debounce": "^3.0.1",
"v-distpicker": "^1.2.2",
"vue": "^2.6.11",
"vue-baidu-map": "^0.21.22",
"vue-i18n": "^8.12.0",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.7",
@ -51,6 +55,7 @@
},
"devDependencies": {
"@antv/f2": "^3.8.10-beta.1",
"@tinymce/tinymce-vue": "^3.2.8",
"@vue/cli-plugin-babel": "^3.10.0",
"@vue/cli-plugin-eslint": "^3.10.0",
"@vue/cli-service": "^3.10.0",
@ -60,6 +65,7 @@
"natives": "^1.1.6",
"ol": "^6.9.0",
"script-loader": "^0.7.2",
"tinymce": "^5.8.2",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {

20
public/index.html

@ -4,8 +4,11 @@
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover" />
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico" />
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=LWBBZ-TIGC3-VFP3L-YNMWH-FJB7T-JFBLO"></script>
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
<!-- f2图表 -->
<!-- <script src="https://gw.alipayobjects.com/os/lib/antv/f2/3.8.1/dist/f2.min.js"></script> -->
@ -14,7 +17,7 @@
window.SITE_CONFIG = {}
window.SITE_CONFIG['version'] = 'v2.0.0'
window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>'
window.SITE_CONFIG['apiURL'] = '' // api请求地址
window.SITE_CONFIG['apiURL'] = '<%= process.env.VUE_APP_API_SERVER %>' // api请求地址
window.SITE_CONFIG['storeState'] = {} // vuex本地储存初始化状态(用于不刷新页面的情况下,也能重置初始化项目中所有状态)
window.SITE_CONFIG['contentTabDefault'] = {
// 内容标签页默认属性对象
@ -36,7 +39,7 @@
<!-- npm run build:sit -->
<!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV==='dev' ) { %>
<!-- <% if (process.env.VUE_APP_NODE_ENV==='dev' ) { %>
<script>
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.140/api'
// window.SITE_CONFIG['apiURL'] = 'https://epmet-test.elinkservice.cn/api'
@ -44,7 +47,7 @@
// window.SITE_CONFIG['apiURL'] = 'https://epmet-dev.elinkservice.cn/api'
</script>
<% } %>
<!-- 集成测试环境 dev -->
&lt;!&ndash; 集成测试环境 dev &ndash;&gt;
<% if (process.env.VUE_APP_NODE_ENV==='prod:sit' ) { %>
<script>
// window.SITE_CONFIG['apiURL'] =
@ -54,18 +57,23 @@
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.140/api'
</script>
<% } %>
<!-- 验收测试环境 aliyun -->
&lt;!&ndash; 验收测试环境 aliyun &ndash;&gt;
<% if (process.env.VUE_APP_NODE_ENV==='prod:uat' ) { %>
<script>
// window.SITE_CONFIG['apiURL'] = 'http://120.27.18.76/api'
window.SITE_CONFIG['apiURL'] = 'https://epmet-test.elinkservice.cn/api'
</script>
<% } %>
<!-- 生产环境 -->
&lt;!&ndash; 生产环境 &ndash;&gt;
<% if (process.env.VUE_APP_NODE_ENV==='prod' ) { %>
<script>
window.SITE_CONFIG['apiURL'] = 'https://epmet-cloud.elinkservice.cn/api'
</script>
<% } %>
<% } %>-->
<script>
//window.SITE_CONFIG['apiURL'] = '<%= process.env.VUE_APP_API_SERVER %>'
</script>
</head>
<body>

74
src/App.vue

@ -106,6 +106,8 @@ export default {
</script>
<style lang="scss">
@import "@/assets/scss/buttonstyle.scss";
.tox-dialog__disable-scroll {
.tox-tinymce-aux {
z-index: 130000000;
@ -120,4 +122,76 @@ export default {
z-index: 200000;
}
}
.search-card {
.el-card__body {
padding: 20px 20px 0 20px;
}
}
.name-a {
cursor: pointer;
}
.dialog-h {
.el-dialog__body {
position: relative;
max-height: 82vh;
box-sizing: border-box;
padding: 0 0 20px !important;
.dialog-h-content {
max-height: calc(82vh - 80px);
box-sizing: border-box;
padding: 0 10px;
overflow: auto;
}
}
}
.resi-btns {
margin-top: 20px;
text-align: center;
}
.scroll-h {
&::-webkit-scrollbar {
// display: none;
width: 8px;
height: 8px;
// background: linear-gradient(270deg, #0063FE, #0095FF);
}
&::-webkit-scrollbar-corner,
/* 滚动条角落 */
&::-webkit-scrollbar-thumb,
&::-webkit-scrollbar-track {
/*滚动条的轨道*/
border-radius: 4px;
}
&::-webkit-scrollbar-corner,
&::-webkit-scrollbar-track {
/* 滚动条轨道 */
// background: rgba(12, 129, 254, .24);
box-shadow: inset 0 0 1px rgba(180, 160, 120, 0.5);
}
&::-webkit-scrollbar-thumb {
/* 滚动条手柄 */
background: rgba(0, 0, 0, 0.3);
// background: linear-gradient(270deg, #0063FE, #0095FF);
}
}
/* 列表-操作栏-更多的poppover样式 */
.el-popover.btn-popper {
min-width: 80px !important;
margin-top: 5px !important;
padding: 6px !important;
background-color: rgb(247, 250, 253);
}
//
.table-more-btn {
display: flex;
flex-direction: column;
justify-content: center;
}
</style>

BIN
src/assets/img/aiaf-design/cheliu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/gongdan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 MiB

BIN
src/assets/img/aiaf-design/index.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/renliu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-chongdianzhuang.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-denggan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-fabu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-jiankong.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-jinggai.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-kakou.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-laoren.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-menjin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/yujing-alert.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 MiB

BIN
src/assets/img/aiaf-design/yujing.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

BIN
src/assets/img/caiji-bc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
src/assets/img/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
src/assets/img/modules/visual/box-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/img/modules/visual/popup.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
src/assets/img/modules/wx-mini/index-set/fangyi-btn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/assets/img/plugins/close.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/assets/img/plugins/danghui.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
src/assets/img/plugins/dangqi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
src/assets/img/plugins/dangwei-by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/assets/img/plugins/dangyuanzhongxinhu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/img/plugins/dian.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/img/plugins/faguang.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
src/assets/img/plugins/jiantou-A.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/img/plugins/jiantou-D.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/assets/img/plugins/jiantou-X.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/img/plugins/louyuanxiaozu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/img/plugins/shuoming-X.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/img/plugins/tanchuang.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
src/assets/img/plugins/xiaozu-by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
src/assets/img/plugins/you.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/assets/img/plugins/zhibu-by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/assets/img/plugins/zuo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/img/shuju/elegant.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

BIN
src/assets/img/shuju/logo1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

BIN
src/assets/img/shuju/measure/jijin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/img/shuju/measure/minban.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/img/shuju/measure/other.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/img/unopen-hint.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

14
src/assets/scss/aui.scss

@ -1,11 +1,11 @@
// 变量
@import "~@/element-ui/theme-variables.scss";
@import "./variables.scss";
@import '~@/element-ui/theme-variables.scss';
@import './variables.scss';
// 公共
@import "./normalize.scss";
@import "./common.scss";
@import './normalize.scss';
@import './common.scss';
// 页面
@import "./pages/login.scss";
@import "./pages/404.scss";
@import './pages/login.scss';
@import './pages/404.scss';
// 模块
@import "./modules/home.scss";
@import './modules/home.scss';

67
src/assets/scss/buttonstyle copy.scss

@ -0,0 +1,67 @@
//新增
.el-button--add {
color: #fff;
background-color: #22c1c3;
border-color: #22c1c3;
}
.el-button--add:hover {
color: #fff;
background-color: #05b1b4;
border-color: #05b1b4;
}
.el-button--add:focus {
color: #fff;
background-color: #22c1c3;
border-color: #22c1c3;
}
//删除导入
.el-button--delete {
color: #fff;
background-color: #fe6252;
border-color: #fe6252;
}
.el-button--delete:hover {
color: #fff;
background-color: #fe6252;
border-color: #fe6252;
}
.el-button--delete:focus {
color: #fff;
background-color: #fe6252;
border-color: #fe6252;
}
//重置导出
.el-button--reset {
color: #fff;
background-color: #feb349;
border-color: #feb349;
}
.el-button--reset:hover {
color: #fff;
background-color: #feb349;
border-color: #feb349;
}
.el-button--reset:focus {
color: #fff;
background-color: #feb349;
border-color: #feb349;
}
//查询确定
.el-button--search:hover {
color: #fff;
background-color: #3e8ef7;
border-color: #3e8ef7;
}
.el-button--search:focus {
color: #fff;
background-color: #3e8ef7;
border-color: #3e8ef7;
}
.el-button--search {
color: #fff;
background-color: #3e8ef7;
border-color: #3e8ef7;
}

200
src/assets/scss/buttonstyle.scss

@ -1,61 +1,141 @@
.el-button--green {
color: #fff;
background-color: #22c1c3;
border-color: #22c1c3;
}
.el-button--green:hover {
color: #fff;
background-color: #05b1b4;
border-color: #05b1b4;
}
.el-button--green:focus {
color: #fff;
background-color: #22c1c3;
border-color: #22c1c3;
}
.el-button--yellow:hover {
color: #fff;
background-color: #fa9200;
border-color: #fa9200;
}
.el-button--yellow:focus {
color: #fff;
background-color: #feb349;
border-color: #feb349;
}
.el-button--yellow {
color: #fff;
background-color: #feb349;
border-color: #feb349;
}
.el-button--blue:focus {
color: #fff;
background-color: #2195fe;
border-color: #2195fe;
}
.el-button--blue:hover {
color: #fff;
background-color: #0083fd;
border-color: #0083fd;
}
.el-button--blue {
color: #fff;
background-color: #2195fe;
border-color: #2195fe;
}
.el-button--red:focus {
color: #fff;
background-color: #fe6252;
border-color: #fe6252;
}
.el-button--red:hover {
color: #fff;
background-color: #fd341e;
border-color: #fd341e;
}
.el-button--red {
color: #fff;
background-color: #fe6252;
border-color: #fe6252;
//查询确定
.diy-button--search {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
.diy-button--search:hover {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
.diy-button--search:focus {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
//重置导出
.diy-button--reset {
color: #fff !important;
background-color: #feb349 !important;
border-color: #feb349 !important;
}
.diy-button--reset:hover {
color: #fff !important;
background-color: #feb349 !important;
border-color: #feb349 !important;
}
.diy-button--reset:focus {
color: #fff !important;
background-color: #feb349 !important;
border-color: #feb349 !important;
}
//新增
.diy-button--add {
color: #fff !important;
background-color: #22c1c3 !important;
border-color: #22c1c3 !important;
}
.diy-button--add:hover {
color: #fff !important;
background-color: #22c1c3 !important;
border-color: #22c1c3 !important;
}
.diy-button--add:focus {
color: #fff !important;
background-color: #22c1c3 !important;
border-color: #22c1c3 !important;
}
//删除导入
.diy-button--delete {
color: #fff !important;
background-color: #fe6252 !important;
border-color: #fe6252 !important;
}
.diy-button--delete:hover {
color: #fff !important;
background-color: #fe6252 !important;
border-color: #fe6252 !important;
}
.diy-button--delete:focus {
color: #fff !important;
background-color: #fe6252 !important;
border-color: #fe6252 !important;
}
//下载模板
.diy-button--export {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
.diy-button--export:hover {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
.diy-button--export:focus {
color: #fff !important;
background-color: #3e8ef7 !important;
border-color: #3e8ef7 !important;
}
.diy-button--qrcode {
color: #fff !important;
background-color: #4ec591 !important;
border-color: #4ec591 !important;
}
//列表上方操作按钮其他按钮
.diy-button--more {
color: #fff !important;
background-color: #23c1c4 !important;
border-color: #23c1c4 !important;
}
//table按钮样式
//查看
.div-table-button--detail {
color: #3e8ef7 !important;
text-decoration: underline !important;
}
//修改
.div-table-button--edit {
color: #00a7a9 !important;
text-decoration: underline !important;
}
//删除
.div-table-button--delete {
color: #d51010 !important;
text-decoration: underline !important;
}
//查看
.div-table-button--detail--noline {
color: #3e8ef7 !important;
}
//更多
.div-table-button--more {
color: #333333 !important;
text-decoration: underline !important;
}
//修改
.div-table-button--edit--noline {
color: #00a7a9 !important;
}
//删除
.div-table-button--delete--noline {
color: #d51010 !important;
}
//
.div-table-button--qr {
color: #4ec591 !important;
text-decoration: underline !important;
}

2
src/assets/scss/c/config.scss

@ -11,7 +11,7 @@ $w1: 1200px;
//网站主色 primary color bgcolor
$c1: #ff4c52; // dd000f
$c2: #3b7cff;
$c2: #3e8ef7;
//灰度色 用于字体
$fc0: #010033;

15
src/assets/scss/c/function.scss

@ -87,6 +87,15 @@
text-overflow: ellipsis;
word-wrap: normal;
}
// 强制文本换行 多行
@mixin toeM($num) {
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: $num;
-webkit-box-orient: vertical;
}
// 图片居中
@mixin img_hub {
position: absolute;
@ -206,7 +215,7 @@
}
//党员积分排行榜
@mixin img123 {
width:20px;
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
@ -225,7 +234,7 @@
width: 67.15px;
height: 67.15px;
position: absolute;
display: block;
display: block;
top: 4px;
border-radius: 100%;
}
@ -258,11 +267,9 @@
display: block;
z-index: 10;
margin-top: 40px;
}
@mixin list {
list-style-type: none;
position: absolute;
padding: 0px;
}

18
src/assets/scss/common.scss

@ -9,7 +9,7 @@ body {
font-size: $--font-size-base;
line-height: $base--line-height;
color: $--color-text-primary;
background-color: #fff;
// background-color: #fff;
}
a {
color: mix(#fff, $--color-primary, 20%);
@ -813,3 +813,19 @@ img {
background-color: #fe6252;
border-color: #fe6252;
}
// 修改表格不换行的问题
div.el-table div.cell {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"] {
-moz-appearance: textfield;
}

8
src/assets/scss/main-shuju.scss

@ -5,6 +5,14 @@
body {
}
.m-iframe {
position: relative;
width: 100vw;
height: calc(100vh - 55px);
margin: -10px;
z-index: 100;
}
/* Reset element-ui
------------------------------ */
.g-bd {

42
src/assets/scss/modules/ai/index.scss

@ -0,0 +1,42 @@
@import "../../c/config";
@import "../../c/function";
.m-design {
img {
display: block;
width: 100%;
}
}
.m-sidebar {
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
width: 100px;
.wrap {
background-color: rgba(#037, 0.6);
transform: translateX(50px);
transition: all ease 0.3s;
cursor: pointer;
border-radius: 4px;
box-shadow: 0 0 10px 1px #fff;
&:hover {
transform: translateX(0);
background-color: rgba(#037, 0.9);
}
.nav {
color: rgba(#fff, 0.8);
text-align: center;
font-size: 14px;
line-height: 40px;
&:hover {
color: #fff;
}
&.z-on {
color: #ffa;
font-weight: bold;
}
}
}
}

128
src/assets/scss/modules/management/epidemic.scss

@ -0,0 +1,128 @@
.epidemic-form {
.item_width_1 {
width: 560px;
::v-deep .el-textarea__inner {
padding-bottom: 20px;
}
::v-deep .el-input__count {
right: 20px;
line-height: 12px;
}
}
.item_width_2 {
width: 220px;
}
.item_width_3 {
width: 180px;
}
.btn-selperson {
margin-left: 20px;
}
.form_div_btn {
margin-top: 20px;
text-align: center;
}
}
.main_tab {
margin: 10px 35px;
}
.div_main {
width: 100%;
.div_search {
background: #ffffff;
border-radius: 4px;
padding: 30px 20px 5px;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
}
.list_item_width_1 {
width: 170px;
}
}
.div_table {
background: #ffffff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 15px;
padding: 10px;
position: relative;
.div_btn {
margin-top: 10px;
margin-left: 10px;
display: flex;
.btn_upload {
margin-left: 10px;
display: flex;
}
}
.table {
margin-top: 20px;
}
.div_notice {
position: absolute;
left: 15px;
bottom: 0;
}
}
.div-mult-form {
margin-top: 20px;
.div_person {
display: flex;
font-size: 14px;
padding-bottom: 20px;
.person_title {
text-align: right;
flex: 0 0 100px;
line-height: 36px;
padding: 0 12px 0 0;
}
.tag_item {
margin-right: 10px;
margin-top: 10px;
}
.tag_tip {
margin-top: 10px;
color: #9c9c9c;
}
}
}
.div-mult-table {
position: relative;
padding: 0 20px;
.div_selcount{
position: absolute;
bottom:10px;
left:30px;
}
}
.div_dialog_table {
padding: 10px;
.table {
margin-top: 20px;
}
}
.twoline {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}

49
src/assets/scss/modules/management/secretaryLog.scss

@ -0,0 +1,49 @@
.div_form {
margin: 20px 50px;
}
.form_item {
display: flex;
justify-content: flex-start;
font-size: 15px;
.item_title {
text-align: right;
flex: 0 0 150px;
line-height: 36px;
}
.item_content {
margin-left: 30px;
line-height: 36px;
}
.attach_item {
display: flex;
justify-content: flex-start;
align-items: center;
margin-left: 30px;
line-height: 36px;
.attach_item_name {
margin-left: 10px;
color: #3e8ef7;
text-decoration: underline;
}
.attach_item_name:hover {
cursor: pointer;
color: #1461c7;
}
}
}
.div_btn {
margin-top: 15px;
display: flex;
width: 100%;
justify-content: center;
.btn_right {
margin-left: 50px;
}
}

66
src/assets/scss/modules/search.scss

@ -26,13 +26,15 @@
.input {
position: relative;
select {
.select-show {
border: none;
display: block;
font-size: 16px;
width: 90px;
line-height: 32px;
text-align: center;
color: #0082fb;
cursor: default;
}
input {
@ -197,13 +199,48 @@
background-color: #fff;
border-radius: 10px;
padding: 30px 40px;
.headline {
.header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
font-size: 24px;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
.headline {
font-size: 24px;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
.notice {
width: 85%;
line-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
.notice-btn {
width: 50px;
background-color: #3e8ef7;
color: #fff;
text-align: center;
border-radius: 4px;
cursor: pointer;
}
.notice-list {
// @include toe;
width: calc(100% - 70px);
// height: 24px;
// overflow: hidden;
a {
margin-right: 20px;
cursor: pointer;
color: #999;
&:hover {
color: #3e8ef7;
}
}
}
}
}
.cnt {
@ -217,3 +254,18 @@
}
}
}
.m-crumbs {
padding: 10px 30px 0;
font-size: 16px;
a {
color: #666;
&:hover {
color: #094bea;
}
cursor: pointer;
}
span {
color: #094bea;
}
}

62
src/assets/scss/modules/shujirizhi-notice.scss

@ -0,0 +1,62 @@
@import "../c/anime";
@import "../c/config";
@import "../c/function";
.m-notice {
position: fixed;
z-index: 10000;
bottom: 0;
right: 0;
background-color: #fff;
box-shadow: 0 0 10px 0 rgba(#000, 0.1);
width: 500px;
height: 300px;
box-sizing: border-box;
padding: 25px;
.header {
margin-bottom: 20px;
font-size: 24px;
font-weight: bold;
color: #3e8ef7;
}
.type {
margin-bottom: 10px;
font-size: 20px;
font-weight: bold;
color: #333;
}
.content {
@include toeM(2);
margin-bottom: 10px;
font-size: 16px;
color: #333;
line-height: 30px;
}
.date {
margin-bottom: 30px;
font-size: 16px;
color: #999;
line-height: 30px;
}
.operate {
display: flex;
justify-content: space-around;
.btn {
box-sizing: border-box;
padding: 0 20px;
width: 180px;
text-align: center;
font-size: 20px;
color: #3e8ef7;
line-height: 40px;
cursor: pointer;
&.z-stress {
background-color: #3e8ef7;
color: #fff;
}
}
}
}

499
src/assets/scss/modules/visual/basicInfoMain copy.scss

@ -0,0 +1,499 @@
.div_top {
margin-left: 10px;
height: 35px;
.router_line {
width: 212px;
height: 1px;
border: 1px solid #ffffff;
opacity: 0.09;
/* opacity: 0.09; */
}
.div_router {
margin-top: 5px;
font-size: 16px;
.router_parents {
color: #a0c3d9;
.arrow {
padding: 0 5px;
}
}
.router_parents:hover {
cursor: pointer;
}
.router_child {
color: #ffffff;
}
}
}
.div_content {
display: flex;
.div_map {
box-sizing: border-box;
width: 100%;
// padding: 10px 5px 13px;
// margin-top: 8px;
height: calc(88vh - 15px);
color: #fff;
// background: url('../../../img/modules/visual/warning-box.png') no-repeat
// center;
// background-size: 100% 100%;
}
.div_data {
flex: 0 0 562px;
margin-left: 12px;
.div_search {
width: 100%;
height: 56px;
text-align: center;
background-color: #011168;
border-radius: 4px 0 0 4px;
border: none;
box-shadow: 0 0 10px inset #1a5afd;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
opacity: 0.7;
display: flex;
justify-content: space-between;
.div_search_left {
display: flex;
justify-content: flex-start;
.icon {
display: flex;
align-items: center;
margin-left: 29px;
> img {
width: 24px;
height: 24px;
}
}
> span {
line-height: 56px;
margin-left: 10px;
}
}
.btn {
text-align: center;
flex: 0 0 113px;
height: 56px;
background: linear-gradient(90deg, #1a5afd, #26c4ff);
font-size: 20px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 56px;
border-radius: 0 4px 4px 0;
}
}
.div_search:hover {
cursor: pointer;
}
.div_info {
box-sizing: border-box;
width: 100%;
margin-top: 21px;
height: calc(88vh - 87px);
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
// padding: 45px 21px 35px 24px;
.info_loading {
margin-top: 50px;
}
.info_tip {
padding: 31px 0 0 19px;
display: flex;
> img {
height: 34px;
width: 46px;
}
.tip_title {
line-height: 34px;
margin-left: 7px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
}
}
.info_list {
margin-top: 9px;
.item {
.item_line {
margin-top: 13px;
margin-left: 24px;
width: 517px;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
.list_item {
display: flex;
padding: 18px 59px 0;
justify-content: space-between;
.list_item_col {
flex: 0 0 240px;
display: flex;
> img {
height: 76px;
width: 76px;
}
.item_content {
margin-left: 10px;
height: 76px;
display: flex;
flex-direction: column;
justify-content: center;
.item_label {
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
}
.item_count {
margin-top: 10px;
font-size: 28px;
font-family: PingFang SC;
font-weight: bold;
color: #00fffc;
}
}
}
}
::v-deep .el-popper {
padding: 0px;
}
//
}
}
}
.div_info {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
}
}
.div_community_info {
box-sizing: border-box;
flex: 0 0 calc(100vw - 620px);
// width: calc(100vw - 560px);
height: calc(88vh - 10px);
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
.div_select {
margin-top: 28px;
margin-left: 24px;
display: flex;
.customer_select {
display: flex;
justify-content: flex-start;
> span {
width: auto;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
line-height: 34px;
}
}
> img {
height: 34px;
width: 46px;
}
.tip_title {
line-height: 34px;
margin-left: 12px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
}
}
.div_room_bar {
box-sizing: border-box;
margin-top: 9px;
height: calc(88vh - 120px);
}
.div_room {
// height: calc(88vh - 40px);
// margin-top: 9px;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
margin: 0 21px 0 21px;
.item:hover {
cursor: pointer;
}
.item_sel {
box-shadow: 0 0 10px inset #1a5afd;
}
.item {
background-color: #011168;
margin-top: 12px;
width: 244px;
height: 190px;
border: 1px solid #037ddc;
border-radius: 8px;
text-align: center;
margin-left: 11px;
position: relative;
// &:first-child {
// margin-left: 0;
// }
.housename {
margin-top: 70px;
font-size: 24px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
// line-height: 180px;
}
.icon_party {
position: absolute;
top: 13px;
left: 18px;
}
.icon_category {
position: absolute;
bottom: 14px;
left: 9px;
// margin-left: 7px;
> img {
margin-left: 5px;
width: 21px;
height: 20px;
}
}
.div_user:hover {
cursor: pointer;
}
.div_user {
position: absolute;
bottom: 10px;
right: 11px;
width: 88px;
height: 30px;
background: #073082;
border-radius: 15px;
> img {
width: 10px;
height: 6px;
margin-left: 4px;
}
> span {
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 30px;
}
}
}
}
.div_room::after {
content: '';
flex: 1;
}
}
.user_list {
position: relative;
z-index: 10;
background: #020340;
border: 1px solid #0a359b;
border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd;
.user_item {
padding: 13px 8px 0 14px;
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
.user_item_content {
display: flex;
// justify-content: space-between;
align-items: center;
.name {
max-width: 80%;
text-align: left;
}
> img {
margin-left: auto;
margin-top: 4px;
width: 8px;
height: 12px;
}
}
.item_line {
margin-top: 9px;
width: 70px;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
}
}
.div_agency_tran {
transition: width 2s ease-out, opacity 1s ease-in, visibility 1s ease-in;
width: 0;
height: 470px;
z-index: 1000;
position: absolute;
top: 50px;
right: 600px;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
.div_agency_list {
width: 320px;
height: 470px;
color: #fff;
background: url('../../../img/modules/visual/box-2.png') no-repeat center;
background-size: 100% 100%;
padding: 45px 20px 35px 20px;
.agency_main {
height: 100%;
position: relative;
}
.agency_main {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
.no-data-img {
text-align: center;
margin-top: 50px;
margin-left: 15px;
}
.agency_list {
.agency_item {
// height: 60px;
padding: 15px 0;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
// line-height: 50px;
padding-left: 12px;
display: flex;
flex-direction: row;
align-items: center;
// padding-top: 15px;
.agency_item_name {
// line-height: 20px;
}
}
.agency_item_on {
background: #08216c;
border-radius: 2px;
}
.agency_item:hover {
cursor: pointer;
background-color: #011168;
border-radius: 4px 0 0 4px;
border: none;
box-shadow: 0 0 10px inset #1a5afd;
border-radius: 2px;
}
}
}
.arrow_tip {
margin-right: -2px;
> img {
width: 21px;
height: 176px;
}
}
.arrow_tip:hover {
cursor: pointer;
}
}
.div_agency_tran-fade-in {
width: 341px;
opacity: 1;
visibility: 1;
}
.div_agency_tran-fade-out {
visibility: 0;
opacity: 1;
width: 0;
right: 575px;
}
// .div_agency_list-fade-in {
// width: 341px;
// opacity: 1;
// visibility: 1;
// }
// .div_agency_list-fade-out {
// visibility: 0;
// opacity: 0;
// width: 0;
// }

306
src/assets/scss/modules/visual/basicInfoMain.scss

@ -1,3 +1,6 @@
@import "../../c/config";
@import "../../c/function";
@import "./c/common";
.div_top {
margin-left: 10px;
height: 35px;
@ -42,6 +45,7 @@
// background: url('../../../img/modules/visual/warning-box.png') no-repeat
// center;
// background-size: 100% 100%;
position: relative;
}
.div_data {
@ -104,14 +108,17 @@
.div_info {
box-sizing: border-box;
width: 100%;
margin-top: 21px;
height: calc(88vh - 87px);
height: calc(88vh - 10px);
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
// padding: 45px 21px 35px 24px;
.info_loading {
margin-top: 50px;
}
.info_tip {
padding: 31px 0 0 19px;
display: flex;
@ -182,9 +189,20 @@
}
}
}
::v-deep .el-popper {
padding: 0px;
}
//
}
}
}
.div_info {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
}
}
@ -278,21 +296,40 @@
.icon_party {
position: absolute;
top: 13px;
left: 18px;
top: 10px;
left: 12px;
}
.icon_roomstate {
position: absolute;
top: 16px;
right: 16px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
}
.icon_category {
position: absolute;
bottom: 14px;
left: 9px;
display: flex;
justify-content: flex-start;
// margin-left: 7px;
> img {
margin-left: 5px;
width: 21px;
height: 20px;
.div_icon_item{
.icon_img{
margin-left: 5px;
width: 21px;
height: 20px;
}
.icon_name{
display: flex;
justify-content: center;
}
}
}
.div_user:hover {
cursor: pointer;
@ -320,61 +357,228 @@
color: #ffffff;
line-height: 30px;
}
}
}
}
.div_room::after {
content: '';
flex: 1;
}
}
.user_list {
margin-top: 2px;
position: relative;
z-index: 10;
.user_list {
position: relative;
z-index: 10;
background: #020340;
border: 1px solid #0a359b;
border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd;
background: #020340;
border: 1px solid #0a359b;
border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd;
.user_item {
padding: 13px 8px 0 14px;
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
.user_item {
padding: 9px 8px 0 12px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 10px;
.user_item_content {
display: flex;
// justify-content: space-between;
align-items: center;
.user_item_content {
display: flex;
// justify-content: space-between;
align-items: center;
.name {
max-width: 80%;
text-align: left;
}
.name {
max-width: 80%;
text-align: left;
}
> img {
margin-left: auto;
> img {
margin-left: auto;
margin-top: 4px;
width: 8px;
height: 12px;
}
}
margin-top: 4px;
width: 8px;
height: 12px;
}
}
.item_line {
margin-top: 9px;
width: 70px;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
}
.item_line {
margin-top: 9px;
width: 70px;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
}
}
.m-sidebar {
position: absolute;
right: 0;
top: 50px;
z-index: 1000;
width: 370px;
height: 470px;
overflow: hidden;
.wrap {
display: flex;
justify-content: flex-start;
align-items: center;
background-color: rgba(rgb(173, 173, 173), 0);
transform: translateX(-5px);
transition: all ease 1s;
border-radius: 4px;
}
.wrap-hidden {
transform: translateX(339px);
}
.div_agency_list {
width: 320px;
height: 470px;
color: #fff;
background: url('../../../img/modules/visual/box-2.png') no-repeat center;
background-size: 100% 100%;
padding: 45px 20px 35px 20px;
.agency_main {
height: 100%;
position: relative;
}
.agency_main {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
.no-data-img {
text-align: center;
margin-top: 50px;
margin-left: 15px;
}
.agency_list {
.agency_item {
// height: 60px;
padding: 15px 0;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
// line-height: 50px;
padding-left: 12px;
display: flex;
flex-direction: row;
align-items: center;
// padding-top: 15px;
.agency_item_name {
// line-height: 20px;
}
}
.agency_item_on {
background: #08216c;
border-radius: 2px;
}
.agency_item:hover {
cursor: pointer;
background-color: #011168;
border-radius: 4px 0 0 4px;
border: none;
box-shadow: 0 0 10px inset #1a5afd;
border-radius: 2px;
}
}
}
.div_room::after {
content: '';
flex: 1;
.arrow_tip {
margin-right: -2px;
margin-left: 10px;
> img {
width: 22px;
height: 176px;
}
}
.arrow_tip:hover {
cursor: pointer;
}
}
.m-room-pop {
@include shield;
background-color: rgba(#000, 0.9);
overflow-y: auto;
.wrap {
position: relative;
margin: 120px auto;
width: 680px;
.title {
padding: 10px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
display: flex;
align-items: center;
img {
display: block;
margin-right: 5px;
}
span {
display: block;
}
}
.btn-close {
position: absolute;
top: -15px;
right: -15px;
cursor: pointer;
}
.list {
// display: flex;
// flex-wrap: wrap;
padding: 5px 60px 5px 30px;
.item {
position: relative;
box-sizing: border-box;
padding: 0 15px;
width: 100%;
color: #fff;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 24px;
margin: 15px 0;
&::before {
position: absolute;
left: 0;
top: 9px;
content: "";
display: block;
width: 7px;
height: 7px;
background: #0c81fe;
border-radius: 3px;
}
}
}
}
}

66
src/assets/scss/modules/visual/communityManage.scss

@ -0,0 +1,66 @@
.div_search {
display: flex;
.resi-cell {
display: flex;
align-items: center;
.resi-cell-label {
width: 70px;
box-sizing: border-box;
margin-right: 15px;
text-align: right;
// line-height: 32;
}
.resi-cell-input {
width: 180px;
}
}
}
.div_table_item {
margin-top: 20px;
position: relative;
}
.div_del {
position: absolute;
left: 10px;
bottom: 0;
}
.div_search {
display: flex;
.resi-cell {
display: flex;
align-items: center;
.resi-cell-label {
width: 70px;
box-sizing: border-box;
margin-right: 15px;
text-align: right;
// line-height: 32;
}
.resi-cell-input {
width: 180px;
}
}
}
.div_btn {
display: flex;
margin-top: 20px;
.btn_upload {
margin-left: 10px;
display: flex;
}
}
.el-row {
/* margin-bottom: 20px; */
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-right: 50px;
}

32
src/assets/scss/modules/visual/communityManageForm.scss

@ -0,0 +1,32 @@
.item_width_1 {
width: 500px;
}
.item_width_2 {
width: 400px;
}
.item_width_3 {
margin-left: 10px;
width: 200px;
}
.item_width_4 {
width: 200px;
}
.div_map {
margin-top: 10px;
}
.div_btn {
margin-top: 20px;
text-align: center;
}
.el-tabs {
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
}

344
src/assets/scss/modules/visual/houseStatic.scss

@ -0,0 +1,344 @@
.warning-box{
padding: 0 21px 20px 24px
}
.no-data{
margin-top:50px;
display:flex;
justify-content: center;
}
.card-title {
display: flex;
align-items: center;
cursor: pointer;
.title-icon {
display: block;
width: 46px;
height: 34px;
box-sizing: border-box;
margin-right: 6px;
}
::v-deep .el-dropdown {
font-size: 18px;
color: #fff;
font-weight: 800;
}
.title-time {
display: flex;
align-items: center;
box-sizing: border-box;
margin-left: 30px;
font-size: 14px;
color: #fff;
.title-time-label {
margin-right: 10px;
}
::v-deep .el-date-editor--month {
width: 100px;
.el-input__inner {
width: 100px;
height: 24px;
box-sizing: border-box;
padding: 0;
font-size: 14px;
color: #fff;
line-height: 24px;
text-align: center;
background: #06186d;
border: 1px solid #1a64cc;
border-radius: 2px;
}
.el-input__prefix {
display: none;
}
.el-input__suffix {
right: 0;
.el-input__icon {
line-height: 24px;
}
}
}
}
.title-label {
font-size: 20px;
font-weight: 800;
::v-deep .el-input {
width: 180px;
.el-input__inner {
font-size: 18px;
// font-weight: 800;
color: #fff;
background: #06186d;
border: 1px solid #1a64cc;
}
.el-icon-arrow-down::before {
content: "\e790";
}
}
}
}
.card-left-title {
margin-top: 20px;
position: relative;
padding-left: 40px;
font-size: 16px;
font-weight: 500;
color: #fff;
}
.card-left-title::after {
content: "";
position: absolute;
top: 5%;
left: 20px;
width: 12px;
height: 12px;
box-sizing: border-box;
background: #2865fa;
border-radius: 50%;
}
.card-echart {
min-height: 500px;
display: flex;
margin-top: 10px;
height: 100%;
.card-left {
position: relative;
flex-grow:0;
flex-shrink:0;
width:50%;
height: 100%;
.div-chart{
display: flex;
width: 100%;
.echart-wr{
flex-shrink: 0;
height: 420px;
width: 70%;
}
.div-tip{
flex-shrink: 0;
width: 30%;
display: flex;
flex-direction: column;
justify-content: center;
margin-left:20px;
margin-top: -23px;
display: flex;
justify-content: center;
.legend_item {
margin-top: 30px;
.item_name {
margin-left: 5px;
font-size: 10px;
font-family: PingFang SC;
font-weight: 500;
color: #eff0f1;
}
> img {
margin-top: -10px;
width: 80px;
height: 10px;
}
}
}
.div-tip2{
flex-shrink: 0;
width: 30%;
display: flex;
flex-direction: column;
justify-content: center;
margin-left:20px;
margin-top: -23px;
display: flex;
justify-content: center;
.cz-tip{
display: flex;
justify-content: flex-start;
margin-top: 30px;
.cz-tip-dot {
margin-top:2px;
width: 20px;
height: 10px;
background: #ff7800;
border-radius: 4px;
}
>span{
margin-left:10px;
}
}
.ld-tip{
display: flex;
justify-content: flex-start;
margin-top: 30px;
.ld-tip-dot{
margin-top:2px;
width: 20px;
height: 10px;
background: #00E5ED;
border-radius: 4px;
}
>span{
margin-left:10px;
}
}
}
}
.pie-table{
margin-top:0px;
display: flex;
justify-content: center;
align-items:center;
}
.loading-status{
width: 100%;
display: flex;
justify-content: center;
margin-top: 200px;
}
}
}
.card-table{
margin:37px 70px 0;
.table_item{
padding:31px 60px 36px 30px;
.item_name{
font-size: 18px;
font-family: PingFang SC;
font-weight: bold;
color: #FFFFFF;
>img{
width:25px;
height:14px;
padding-right: 10px;
}
}
.item_name:hover{
cursor: pointer;
}
.item_data{
margin-top:31px;
display: flex;
justify-content: space-between;
}
.item_left{
align-items: center;
display: flex;
justify-content: space-around;
flex-grow:0;
flex-shrink:0;
}
.item_right{
align-items: center;
display: flex;
justify-content: space-around;
flex-grow:0;
flex-shrink:0;
// margin-left:250px;
}
}
.item_dark{
background: #082586;
opacity: 0.85;
}
}
.pie-table-total{
margin-left:40px;
.pie-table-total-count{
min-width: 98px;
text-align: center;
font-size: 40px;
font-family: PingFang SC;
font-weight: bold;
color: #FFFFFF;
}
.zz{
font-size: 35px;
font-family: PingFang SC;
font-weight: bold;
color: #FAC126;
}
.cz{
font-size: 35px;
font-family: PingFang SC;
font-weight: bold;
color: #45D97F;
}
.xz{
font-size: 35px;
font-family: PingFang SC;
font-weight: bold;
color: #2865FA;
}
.colorwhite{
font-size: 35px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
}
.pie-table-title{
margin-top:7px;
text-align: center;
font-size:10px;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
min-width:62px;
}
.table-table-title{
margin-top:2px;
}
}
.pie-table-line{
margin-left:40px;
height:30px;
width:1px;
background-color: #1797FF;
opacity: 0.5;
}
.table-table-line{
}

1146
src/assets/scss/modules/visual/people.scss

File diff suppressed because it is too large

68
src/assets/scss/modules/visual/personCategory.scss

@ -8,7 +8,14 @@
color: #fff;
// background: url("../../../img/modules/visual/warning-box.png") no-repeat center;
background-size: 100% 100%;
padding: 45px 21px 35px 24px;
padding: 15px 21px 15px 24px;
/deep/ .el-scrollbar__wrap {
margin-right:-17px !important
}
&-top {
display: flex;
@ -76,10 +83,42 @@
width: 100%;
display: flex;
position: relative;
flex-direction: column;
align-items: space-between;
justify-content: space-between;
align-items: flex-start;
margin-top: 10px;
// border: 1px solid red;
.item_left {
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
}
.item_right {
width: 110px;
display: flex;
flex-direction: column;
align-items: space-between;
font-size: 16px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
.item_right_row {
display: flex;
justify-content: space-between;
.item_right_title {
}
}
.row2 {
margin-top: 10px;
}
}
.num-item {
position: relative;
width: 100%;
@ -90,19 +129,6 @@
justify-content: space-between;
padding: 0 10px 0 9px;
// &::after {
// display: block;
// content: "";
// width: 8px;
// height: 8px;
// background: #f0f3f7;
// border-radius: 50%;
// position: absolute;
// left: 12px;
// top: 50%;
// transform: translate(0, -50%);
// }
div:nth-child(1) {
font-size: 16px;
font-family: PingFang SC;
@ -111,17 +137,15 @@
}
div:nth-child(2) {
display: flex;
align-items: center;
justify-content: space-between;
// width: 70%;
display: flex;
font-size: 20px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
.right-icon {
width: 10px;
height: 14px;
}
}
}
@ -135,7 +159,7 @@
&-bottom {
box-sizing: border-box;
width: 100%;
height: calc(100% - 300px);
height: calc(100vh - 535px);
min-height: 300px;
margin-top: 60px;
}

34
src/assets/scss/modules/visual/searchPerson.scss

@ -1,5 +1,10 @@
.div_people_search{
min-height:100%;
box-sizing: border-box;
}
.div_search_list {
margin: 54px auto;
margin: 44px auto;
text-align: center;
width: 750px;
height: 53px;
@ -38,13 +43,13 @@
}
.list_box {
margin: 96px auto 0;
margin: 76px auto 0;
box-sizing: border-box;
// width: 70%;
width: 1021px;
width: 80%;
// width: 1421px;
// height: calc(88vh - 200px);
height: 349px;
height: 485px;
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
@ -73,8 +78,7 @@
.warning-table {
margin: 21px 24px auto 24px;
box-sizing: border-box;
height: 100%;
// height: 100%;
.table {
width: 100%;
@ -124,6 +128,15 @@
background-size: 100% 100%;
}
}
&-status{
margin-top:20px;
.no-data{
display: flex;
justify-content: center;
}
}
}
}
@ -139,14 +152,17 @@
width: calc(100% / 10);
}
.td2 {
width: calc(100% / 5);
width: calc(100% / 6);
}
.td3 {
width: calc(100% / 4);
}
.pagination {
box-sizing: border-box;
margin-top: 20px;
padding-right:180px;
padding-bottom: 20px;
margin-top: 40px;
width: 100%;
height: 40px;
display: flex;

71
src/assets/scss/modules/visual/warning-people-list.scss

@ -0,0 +1,71 @@
@import "../../c/config";
@import "../../c/function";
@import "./c/common";
.m-pop {
@include shield;
background-color: rgba(#000, 0.9);
overflow-y: auto;
.wrap {
position: relative;
margin: 120px auto;
width: 1180px;
.title {
padding: 10px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
display: flex;
align-items: center;
img {
display: block;
margin-right: 5px;
}
span {
display: block;
}
}
.btn-close {
position: absolute;
top: -15px;
right: -15px;
cursor: pointer;
}
.content {
margin-top: 20px;
min-height: 500px;
}
}
}
.m-pagination {
box-sizing: border-box;
margin-top: 20px;
width: 100%;
height: 40px;
display: flex;
justify-content: flex-end;
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background: #0266d1;
color: #000d3f;
}
/deep/ .el-pagination .el-pager li {
background: #002e74;
}
/deep/ .el-pagination .btn-prev {
background: #002e74;
}
/deep/ .el-pagination .btn-next {
background: #002e74;
}
}

153
src/assets/scss/modules/warning.scss

@ -0,0 +1,153 @@
.warning-box {
box-sizing: border-box;
// width: 1881px;
width: 100%;
// height: 100%;
min-height: 100%;
margin: 0 auto;
color: #999;
// background: url("../../../img/modules/visual/warning-box.png") no-repeat center;
background-size: 100% 100%;
padding: 25px 21px 35px 24px;
&-top {
display: flex;
// justify-content: space-around;
justify-content: flex-start;
flex-wrap: wrap;
min-height: 190px;
.top-item {
box-sizing: border-box;
width: 280px;
height: 190px;
padding: 10px 22px 14px 21px;
border-radius: 8px;
margin-right: 15px;
margin-bottom: 15px;
background-color: #fff;
&-img {
display: flex;
align-items: center;
img {
width: 78px;
height: 78px;
margin-right: 16px;
margin-bottom: 10px;
}
.top-item-left {
display: flex;
flex-direction: column;
span {
display: inline-block;
}
span:nth-child(1) {
font-size: 18px;
font-weight: 400;
color: #333333;
}
span:nth-child(2) {
font-size: 28px;
font-weight: bold;
color: #2194fe;
margin-top: 10px;
}
}
}
&-num {
width: 100%;
display: flex;
position: relative;
flex-direction: column;
align-items: space-between;
// border: 1px solid red;
.num-item {
position: relative;
width: 100%;
height: 35px;
display: flex;
border-radius: 4px;
align-items: center;
justify-content: space-between;
padding: 0 10px 0 29px;
cursor: pointer;
&::after {
display: block;
content: "";
width: 8px;
height: 8px;
background: #f5f502;
border-radius: 50%;
position: absolute;
left: 12px;
top: 50%;
transform: translate(0, -50%);
}
&:nth-of-type(2) {
&::after {
background: #fb500d;
}
}
div:nth-child(1) {
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
color: #333333;
}
div:nth-child(2) {
// width: 70%;
display: flex;
font-size: 20px;
font-family: PingFang SC;
font-weight: 500;
color: #333;
.right-icon {
width: 10px;
height: 14px;
}
}
}
.num-item-active {
background-color: #f0f3f7;
}
.num-item:nth-child(2) {
margin-top: 10px;
}
}
}
}
&-bottom {
box-sizing: border-box;
width: 100%;
height: calc(100% - 300px);
padding: 35px 40px;
min-height: 300px;
margin-top: 30px;
background-color: #fff;
.pagination {
box-sizing: border-box;
margin-top: 20px;
width: 100%;
height: 40px;
display: flex;
justify-content: flex-end;
}
}
}

197
src/assets/scss/modules/wx-mini/index-set.scss

@ -108,7 +108,7 @@
}
.mw-phone {
margin: 50px auto;
margin: 50px auto;
min-height: 540px;
// box-shadow: 0 0 0 8px rgba(#000, 0.1);
.d-cpt-operate {
@ -129,8 +129,8 @@
position: relative;
margin: 0 auto;
width: 375px;
height: 700px;
overflow: auto;
height: 700px;
overflow: auto;
background-color: #ffffff;
// background-color: #f7f6f9;
box-shadow: 0 5px 15px 1px rgba(0, 0, 0, 0.2);
@ -195,6 +195,17 @@
// border-radius: 50px 0 0 50px;
// background-color: #ffffff;
}
.mw-phone-fixed2 {
// @include bs1;
position: absolute;
z-index: 1000;
top: 220px;
right: 0;
width: 141px * 0.5;
height: 164px * 0.5;
// border-radius: 50px 0 0 50px;
// background-color: #ffffff;
}
.mw-phone-top {
position: relative;
height: 40px;
@ -242,7 +253,7 @@
border: 1px solid #bb5;
background-color: #ffffff;
text-align: center;
z-index: 1000;
z-index: 1000;
&.z-small {
height: 71px;
}
@ -301,7 +312,20 @@
}
}
}
.mw-cpt-fangyi {
position: relative;
.d-cpt-wrap {
width: 141px * 0.5;
height: 164px * 0.5;
img {
width: 141px * 0.5;
height: 164px * 0.5;
}
}
}
.mw-cpt-cnt_menus {
position: relative;
margin-top: 10px;
@ -340,80 +364,75 @@
color: rgba(51, 51, 51, 1);
}
}
}
}
}
}
// 更多功能2
.mw-cpt-cnt_function2 {
// 更多功能2
.mw-cpt-cnt_function2 {
position: relative;
margin-top: 10px;
.d-cpt-wrap {
border-radius: 10px;
border-radius: 10px;
// overflow-x: scroll;
overflow: hidden;
margin: 0 13px;
padding:0 0 13px 0;
background-color: white;
.link {
width: 100%;
position: relative;
.link-item{
display: inline;
position: relative;
> img {
width:45%;
// width: 308px;
margin: 8px;
// height: 160px;
border-radius: 10px;
}
span {
position: absolute;
top: -10px;
left: 20px;
color: #fff;
font-size: 15px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
}
}
}
.dots {
position: absolute;
bottom: 10px;
left: 0;
right: 0;
width: 100%;
display: flex;
justify-content: center;
.dot {
margin: 0 5px;
width: 20px;
height: 4px;
border-radius: 6px;
background-color: #ddd;
transition: all ease $ad1;
&.z-on {
background-color: $c1;
}
}
}
}
}
margin: 0 13px;
padding: 0 0 13px 0;
background-color: white;
.link {
width: 100%;
position: relative;
.link-item {
display: inline;
position: relative;
> img {
width: 45%;
// width: 308px;
margin: 8px;
// height: 160px;
border-radius: 10px;
}
span {
position: absolute;
top: -10px;
left: 20px;
color: #fff;
font-size: 15px;
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
}
}
}
.dots {
position: absolute;
bottom: 10px;
left: 0;
right: 0;
width: 100%;
display: flex;
justify-content: center;
.dot {
margin: 0 5px;
width: 20px;
height: 4px;
border-radius: 6px;
background-color: #ddd;
transition: all ease $ad1;
&.z-on {
background-color: $c1;
}
}
}
}
}
}
}
}
@ -473,28 +492,28 @@
.d-operate {
padding: 20px 0;
text-align: right;
}
}
}
}
.d-set-banners {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
.upload-demos {
display: block;
width: 20px;
height: 20px;
color: #ccc;
text-align: center;
line-height: 18px;
border: 1px dashed #ccc;
overflow: hidden;
border-radius: 50%;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
-o-border-radius: 50%;
}
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
.upload-demos {
display: block;
width: 20px;
height: 20px;
color: #ccc;
text-align: center;
line-height: 18px;
border: 1px dashed #ccc;
overflow: hidden;
border-radius: 50%;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
-o-border-radius: 50%;
}
}

141
src/assets/scss/pages/caiji.scss

@ -0,0 +1,141 @@
.bg-caiji {
background-color: rgba(189, 214, 255, 0.89);
height: 100%;
width: 100vw;
padding: 20px;
.title {
text-align: center;
font-size: 20px;
}
.main {
padding-top: 20px;
// font-size: 40px;
.content {
border-radius: 5px;
background-color: rgba(255, 255, 255, 0.787);
.member_title {
padding: 10px;
font-size: 14px;
}
}
.content1 {
margin-top: 20px;
}
.line {
border: 1px solid #e4e4e48e;
}
}
.div-btn {
margin-top: 30px;
padding-bottom: 20px;
display: flex;
justify-content: center;
.btn {
width: 150px;
font-size: 16px;
}
}
}
.picker_content {
color: rgb(59, 59, 59);
}
.bg-caiji-success {
background: url("../../assets/img/caiji-bc.png") no-repeat;
background-size: 100% 100%;
height: 100vh;
width: 100vw;
text-align: center;
.title {
// background-color: rgba(189, 214, 255, 0.89);
padding-top:30px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 800;
color: #333333;
display: flex;
height:25px;
align-items: center;
justify-content: center;
>img{
width:27px;
height:25px;
}
.title_name{
margin-left:5px;
margin-top:5px;
}
}
.div_tip{
text-align: center;
margin-top:35px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 800;
color: #2E78E2;
line-height: 26px;
}
.div_content{
margin:20px 10px 30px 10px;
padding:20px 16px;
background: #FFFFFF;
border-radius: 10px;
font-size: 16px;
font-family: Source Han Serif SC;
font-weight: 400;
color: #333333;
text-align: left;
.content_long{
display: flex;
justify-content: left;
align-items: flex-start;
.content_title{
min-width: 85px;
// flex:0 0 85px;
flex-shrink: 0;
text-align: right;
}
}
.marginT10{
margin-top:10px;
}
}
.main {
margin-top: 100px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.icon-success {
font-size: 40px;
// width: 20px;
// height: 20px;
}
.success-content {
margin-top: 10px;
font-size: 25px;
}
}
}

45
src/assets/scss/pages/loginWork.scss

@ -166,29 +166,30 @@
}
}
.div_row {
height: 50px;
text-align: center;
line-height: 50px;
/* width: 100px; */
/* background-color: rgb(241, 241, 241); */
.m-pop {
height: auto;
.div_row {
height: 50px;
text-align: center;
line-height: 50px;
&:hover {
color: rgb(2, 119, 173);
font-weight: bold;
text-decoration: underline;
}
&:hover {
color: rgb(2, 119, 173);
font-weight: bold;
text-decoration: underline;
}
.i_icon {
width: 15px;
height: 15px;
margin-right: 10px;
float: left;
}
.span_name {
font-size: 18px;
cursor: pointer;
/* color: rgb(37, 156, 235); */
.i_icon {
width: 15px;
height: 15px;
margin-right: 10px;
float: left;
}
.span_name {
font-size: 18px;
cursor: pointer;
/* color: rgb(37, 156, 235); */
}
}
}

33
src/assets/scss/people-info.scss

@ -8,11 +8,20 @@
.wrap {
position: relative;
margin: 120px auto;
padding: 20px;
width: 1000px;
margin: 5vh auto;
height: 90vh;
width: 1180px;
background-color: #fff;
.wrap2 {
box-sizing: border-box;
padding: 20px;
height: 90vh;
width: 1180px;
overflow-y: auto;
overflow-x: hidden;
}
.title {
padding: 10px;
font-size: 22px;
@ -33,6 +42,7 @@
.btn-close {
position: absolute;
z-index: 2;
top: -30px;
right: -30px;
cursor: pointer;
@ -54,7 +64,7 @@
font-weight: 400;
color: #333;
line-height: 24px;
margin: 20px 0;
margin: 15px 0;
&::before {
position: absolute;
@ -84,26 +94,31 @@
padding-left: 20px;
.tab-btn {
margin: 0 5px;
width: 30px;
text-align: center;
cursor: pointer;
padding: 10px 0;
border-radius: 3px;
background-color: rgba(#000, 0.3);
}
.tab {
@include toe;
margin: 0 5px;
min-width: 76px;
padding: 0 5px;
height: 30px;
min-width: 80px;
padding: 0 8px;
height: 36px;
background: #fff;
border: 1px solid #eee;
box-shadow: 0 0 10px 0 inset #ddd;
border-radius: 2px;
text-align: center;
font-size: 14px;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #333;
line-height: 30px;
line-height: 36px;
cursor: pointer;
transition: all ease 0.1s;
&.z-on {

13
src/components/wx-index/cpt-item.vue

@ -22,6 +22,19 @@
</div>
</div>
<!-- 防疫组件 -->
<div class="mw-cpt-fangyi"
v-else-if="item.componentFrontId==='resi-functionList-extend-fangyiFloat'">
<div class="d-cpt-wrap">
<img v-if="item.demoData.ico"
:src="item.demoData.ico"
mode="aspectFill">
<img v-else
src="@/assets/img/modules/wx-mini/index-set/fangyi-btn.png"
mode="aspectFill">
</div>
</div>
<!-- 爱心互助 -->
<heart v-else-if="item.componentFrontId==='resi-functionList-heart-banner'
||item.componentFrontId==='resi-functionList-heart-new'

4
src/i18n/zh-CN.js

@ -3,9 +3,9 @@ const t = {}
t.loading = '加载中...'
t.brand = {}
t.brand.lg = '数字社区工作平台'
t.brand.lg = '数字社区综合服务平台'
t.brand.mini = '数字'
t.brand.work = '数字社区工作平台'
t.brand.work = '数字社区综合服务平台'
t.brand.workMini = '工作端'
t.add = '新增'

472
src/js/ajax.js

@ -1,42 +1,40 @@
/* eslint-disable */
import axios from 'axios'
import Cookies from 'js-cookie'
import router from '@/router'
import qs from 'qs'
import { clearLoginInfo } from '@/utils'
import isPlainObject from 'lodash/isPlainObject'
import Vue from 'vue'
import { Loading } from 'element-ui' //引入Loading服务
import axios from "axios";
import Cookies from "js-cookie";
import router from "@/router";
import qs from "qs";
import { clearLoginInfo } from "@/utils";
import isPlainObject from "lodash/isPlainObject";
import Vue from "vue";
import { Loading } from "element-ui"; //引入Loading服务
// 默认超时时间60s
axios.defaults.timeout = 60000
axios.defaults.timeout = 60000;
let timer
let loading
let timer;
let loading;
//请求时间超过300ms 提示加载
function startLoading () {
if (timer) return
function startLoading() {
if (timer) return;
timer = setTimeout(() => {
loading = Loading.service({
lock: true, //是否锁定
text: '正在加载……', //加载中需要显示的文字
background: 'rgba(0,0,0,.7)', //背景颜色
})
}, 300)
text: "正在加载……", //加载中需要显示的文字
background: "rgba(0,0,0,.7)", //背景颜色
});
}, 300);
}
//结束加载动画
function endLoading () {
function endLoading() {
if (timer) {
clearTimeout(timer)
clearTimeout(timer);
}
if (loading) {
loading.close()
loading.close();
}
}
@ -45,71 +43,65 @@ function endLoading () {
*/
axios.interceptors.request.use(
(config) => {
config.headers['Accept-Language'] = localStorage.getItem('language') || 'zh-CN'
config.headers['token'] = localStorage.getItem('token') || ''
config.headers['Authorization'] = localStorage.getItem('token') || ''
config.headers["Accept-Language"] =
localStorage.getItem("language") || "zh-CN";
config.headers["token"] = localStorage.getItem("token") || "";
config.headers["Authorization"] = localStorage.getItem("token") || "";
// 默认参数
var defaults = {}
var defaults = {};
// 防止缓存,GET请求默认带_t参数
if (config.method === 'get') {
if (config.method === "get") {
config.params = {
...config.params,
...{ _t: new Date().getTime() },
}
};
}
if (isPlainObject(config.params)) {
config.params = {
...defaults,
...config.params,
}
};
}
if (isPlainObject(config.data)) {
config.data = {
...defaults,
...config.data,
}
};
if (
/^application\/x-www-form-urlencoded/.test(
config.headers['content-type']
config.headers["content-type"]
)
) {
config.data = qs.stringify(config.data)
config.data = qs.stringify(config.data);
}
}
return config
return config;
},
(error) => {
return Promise.reject(error)
return Promise.reject(error);
}
)
);
/**
* 响应拦截
*/
axios.interceptors.response.use(
(response) => {
const code = [10007, 401, 10001, 10005]
if (code.includes(response.data.code) ) {
const code = [10007, 401, 10001, 10005];
if (code.includes(response.data.code)) {
// debugger;
clearLoginInfo()
// localStorage.setItem('userType', 'work')
// let userType = localStorage.getItem("userType");
// if (userType === 'work'){
// router.replace({ name: 'loginWork' })
// }else {
// router.replace({ name: 'login' })
// }
router.replace({ name: 'login' })
clearLoginInfo();
router.replace({ name: "login" });
return Promise.reject(response.data.msg)
return Promise.reject(response.data.msg);
}
return response
return response;
},
(error) => {
console.error(error)
return Promise.reject(error)
console.error(error);
return Promise.reject(error);
}
)
);
const post = (url, params, headers) => {
return new Promise((reslove, reject) => {
@ -119,14 +111,14 @@ const post = (url, params, headers) => {
resolve(res);
})
.catch((err) => {
reject(err)
})
})
}
reject(err);
});
});
};
export const requestPost = async (url = '', params = {}, headers = {}) => {
const ret = await post(url, params, headers)
console.log(url, ret)
export const requestPost = async (url = "", params = {}, headers = {}) => {
const ret = await post(url, params, headers);
console.log(url, ret);
// if (ret.status === 200) {
// var data = res.data
// if (data.code == 0) {
@ -141,7 +133,7 @@ export const requestPost = async (url = '', params = {}, headers = {}) => {
// } else {
// if (typeof cb_err === 'function') cb_err(res)
// }
}
};
/*
* 1后台请求成功均返回业务上的异常也属于请求成功 res.status=200的响应码
@ -153,140 +145,137 @@ export const requestPost = async (url = '', params = {}, headers = {}) => {
*/
export default {
// 并发请求
all (gets, cb) {
all(gets, cb) {
if (gets && gets.length > 0) {
let functions = gets.map((get) => {
return axios.get(processUrl(get.url), {
params: get.params,
})
})
});
});
axios.all(functions).then(
axios.spread((..._results) => {
let results = _results.map((_result) => {
return _result.data.data
})
cb(results)
return _result.data.data;
});
cb(results);
})
)
);
}
},
get (url, params, cb_su, cb_err, headers) {
get(url, params, cb_su, cb_err, headers) {
var p = {
params: params,
}
if (headers && JSON.stringify(headers) != '{}') {
};
if (headers && JSON.stringify(headers) != "{}") {
var h = {
headers: headers,
}
};
p = {
...p,
...h,
}
};
}
url = url + '?r=' + new Date().getTime() //时间戳作为随机码,防止IE从缓存获取数据
url = url + "?r=" + new Date().getTime(); //时间戳作为随机码,防止IE从缓存获取数据
axios
.get(processUrl(url), p)
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
var data = res.data;
if (data.code == 0) {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.msg )
if (typeof cb_su === "function") {
cb_su(data.data, data.msg);
}
} else {
//业务失败
if (typeof cb_err === 'function') cb_err(data.msg , data.data)
if (typeof cb_err === "function") cb_err(data.msg, data.data);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
})
.catch((err) => {
if (typeof (cb_err === 'function')) {
cb_err(err)
if (typeof (cb_err === "function")) {
cb_err(err);
}
})
});
},
put (url, data, cb_su, cb_err) {
put(url, data, cb_su, cb_err) {
axios
.put(processUrl(url), data)
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
if (data.sysresultcode === 'success') {
var data = res.data;
if (data.sysresultcode === "success") {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.rspMsg)
if (typeof cb_su === "function") {
cb_su(data.data, data.rspMsg);
}
} else if (data.sysresultcode === 'fail') {
} else if (data.sysresultcode === "fail") {
//业务失败
if (typeof cb_err === 'function') cb_err(data.rspMsg, data.data)
if (typeof cb_err === "function") cb_err(data.rspMsg, data.data);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
})
.catch((err) => {
if (typeof cb_err === 'function') {
cb_err(err)
if (typeof cb_err === "function") {
cb_err(err);
}
})
});
},
post (url, data, cb_su, cb_err, headers) {
var h = {}
if (headers && JSON.stringify(headers) != '{}') {
post(url, data, cb_su, cb_err, headers) {
var h = {};
if (headers && JSON.stringify(headers) != "{}") {
h = {
headers,
}
};
}
//var data = qs.stringify(paramas);
axios
.post(processUrl(url), data, h)
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
var data = res.data;
if (data.code == 0) {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.msg )
if (typeof cb_su === "function") {
cb_su(data.data, data.msg);
}
} else {
//业务失败
if (typeof cb_err === 'function') cb_err(data.msg , data.data)
if (typeof cb_err === "function") cb_err(data.msg, data.data);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
})
.catch((err) => {
if (typeof cb_err === 'function') {
cb_err(err)
if (typeof cb_err === "function") {
cb_err(err);
}
})
});
},
post2 (url, data, cb_su, cb_err, headers) {
var h = {}
if (headers && JSON.stringify(headers) != '{}') {
post2(url, data, cb_su, cb_err, headers) {
var h = {};
if (headers && JSON.stringify(headers) != "{}") {
h = {
headers,
}
};
}
//var data = qs.stringify(paramas);
axios
@ -294,22 +283,22 @@ export default {
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
cb_su(data, data.msg )
var data = res.data;
cb_su(data, data.msg);
} else {
if (typeof cb_err === 'function') cb_err(data.msg , data)
if (typeof cb_err === "function") cb_err(data.msg, data);
}
} else {
if (typeof cb_err === 'function') cb_err(data.msg , data)
if (typeof cb_err === "function") cb_err(data.msg, data);
}
})
.catch((err) => {
if (typeof cb_err === 'function') {
cb_err(err)
if (typeof cb_err === "function") {
cb_err(err);
}
})
});
},
delete (url, params, cb_su, cb_err) {
delete(url, params, cb_su, cb_err) {
axios
.delete(processUrl(url), {
params: params,
@ -317,219 +306,217 @@ export default {
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
if (data.sysresultcode === 'success') {
var data = res.data;
if (data.sysresultcode === "success") {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data.data, data.rspMsg)
if (typeof cb_su === "function") {
cb_su(data.data, data.rspMsg);
}
} else if (data.sysresultcode === 'fail') {
} else if (data.sysresultcode === "fail") {
//业务失败
if (typeof cb_err === 'function') cb_err(data.rspMsg, data.data)
if (typeof cb_err === "function") cb_err(data.rspMsg, data.data);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
})
.catch((err) => {
if (typeof cb_err === 'function') {
cb_err(err)
if (typeof cb_err === "function") {
cb_err(err);
}
})
});
},
//导出文件,包括excel,word等
exportFile (url, params, cb_su, cb_err, headers) {
var h = {}
if (headers && JSON.stringify(headers) != '{}') {
h = headers
exportFile(url, params, cb_su, cb_err, headers) {
var h = {};
if (headers && JSON.stringify(headers) != "{}") {
h = headers;
}
var errorMsg = '操作失败'
url = url + '?r=' + new Date().getTime() //时间戳作为随机码,防止IE从缓存获取数据
var errorMsg = "操作失败";
url = url + "?r=" + new Date().getTime(); //时间戳作为随机码,防止IE从缓存获取数据
axios({
method: 'get',
method: "get",
url: processUrl(url),
params: params,
headers: h, //{ tenantCode: "GDYXB" },
responseType: 'blob',
responseType: "blob",
})
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data //直接返回blob
var data = res.data; //直接返回blob
if (data) {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data, '操作成功')
if (typeof cb_su === "function") {
cb_su(data, "操作成功");
}
} else {
//业务失败
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
})
.catch((err) => {
if (typeof (cb_err === 'function')) {
cb_err(errorMsg)
if (typeof (cb_err === "function")) {
cb_err(errorMsg);
}
})
});
},
//导出文件,包括excel,word等
exportFilePost (url, params, cb_su, cb_err) {
exportFilePost(url, params, cb_su, cb_err) {
//var data = qs.stringify(paramas);
// axios
// .post(processUrl(url), data)
axios({
method: 'post',
method: "post",
url: processUrl(url),
data: params,
responseType: 'blob',
responseType: "blob",
})
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data //直接返回blob
var data = res.data; //直接返回blob
// if (data.code == 0) {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data)
}
else {
//业务成功
if (typeof cb_su === "function") {
cb_su(data);
} else {
//业务失败
if (typeof cb_err === 'function') cb_err(errorMsg)
}
// } else {
if (typeof cb_err === "function") cb_err(errorMsg);
}
// } else {
// if (typeof cb_err === 'function') cb_err(errorMsg)
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
})
.catch((err) => {
if (typeof cb_err === 'function') {
cb_err(err)
if (typeof cb_err === "function") {
cb_err(err);
}
})
});
},
//上传文件
importFilePut (url, fileFormData, cb_su, cb_err) {
var errorMsg = '操作失败'
importFilePut(url, fileFormData, cb_su, cb_err) {
var errorMsg = "操作失败";
let requestConfig = {
headers: {
'Content-Type': 'multipart/form-data',
"Content-Type": "multipart/form-data",
// Authorization: auth.loadTokenType() + ' ' + auth.loadAccessToken(),
},
}
};
Vue.http
.put(processUrl(url), fileFormData, requestConfig)
.then((res) => {
if (res && res.status === 200) {
var data = res.body //直接返回blob
var data = res.body; //直接返回blob
if (data.sysresultcode === 'fail') {
if (data.sysresultcode === "fail") {
//业务失败
if (typeof cb_err === 'function') cb_err(data.rspMsg)
} else if (data.sysresultcode === 'success') {
if (typeof cb_err === "function") cb_err(data.rspMsg);
} else if (data.sysresultcode === "success") {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data, '操作成功')
if (typeof cb_su === "function") {
cb_su(data, "操作成功");
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
})
.catch((err) => {
if (typeof (cb_err === 'function')) {
cb_err(errorMsg)
if (typeof (cb_err === "function")) {
cb_err(errorMsg);
}
})
});
},
//上传文件
importFilePost (url, fileFormData, cb_su, cb_err) {
var errorMsg = '操作失败'
importFilePost(url, fileFormData, cb_su, cb_err) {
var errorMsg = "操作失败";
let requestConfig = {
headers: {
'Content-Type': 'multipart/form-data'
"Content-Type": "multipart/form-data",
// Authorization: auth.loadTokenType() + ' ' + auth.loadAccessToken(),
}
}
},
};
Vue.http
.post(processUrl(url), fileFormData, requestConfig)
.then((res) => {
if (res && res.status === 200) {
var data = res.body //直接返回blob
var data = res.body; //直接返回blob
if (data.sysresultcode === 'fail') {
if (data.sysresultcode === "fail") {
//业务失败
if (typeof cb_err === 'function') cb_err(data.rspMsg)
} else if (data.sysresultcode === 'success') {
if (typeof cb_err === "function") cb_err(data.rspMsg);
} else if (data.sysresultcode === "success") {
//业务成功
if (typeof cb_su === 'function') {
cb_su(data, '操作成功')
if (typeof cb_su === "function") {
cb_su(data, "操作成功");
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
} else {
if (typeof cb_err === 'function') cb_err(errorMsg)
if (typeof cb_err === "function") cb_err(errorMsg);
}
})
.catch((err) => {
if (typeof (cb_err === 'function')) {
cb_err(errorMsg)
if (typeof (cb_err === "function")) {
cb_err(errorMsg);
}
})
});
},
//登录获取token/刷新token
tokenPost (url, paramas, cb_su, cb_err) {
var data = qs.stringify(paramas)
tokenPost(url, paramas, cb_su, cb_err) {
var data = qs.stringify(paramas);
axios
.post(processUrl(url), data)
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
var data = res.data;
if (data) {
if (typeof cb_su === 'function') {
cb_su(data)
if (typeof cb_su === "function") {
cb_su(data);
}
} else {
if (typeof cb_err === 'function') cb_err('登录验证失败')
if (typeof cb_err === "function") cb_err("登录验证失败");
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
} else {
if (typeof cb_err === 'function') cb_err(res)
if (typeof cb_err === "function") cb_err(res);
}
})
.catch((err) => {
var rspMsg = '登录失败,请重试!'
var rspMsg = "登录失败,请重试!";
if (
err &&
err.response &&
err.response.status === 401 &&
err.response.data &&
err.response.data.error === 'unauthorized'
err.response.data.error === "unauthorized"
) {
// 用户名不存在时: 状态码401
// Response Body:
@ -537,92 +524,91 @@ export default {
// "error": "unauthorized",
// "error_description": null
// }
rspMsg = err.response.data.error_description || '用户名不存在'
rspMsg = err.response.data.error_description || "用户名不存在";
} else if (
err &&
err.response &&
err.response.status === 400 &&
err.response.data &&
err.response.data.error === 'invalid_grant'
err.response.data.error === "invalid_grant"
) {
// 用户名存在,密码错误时:状态码400
// {
// "error": "invalid_grant",
// "error_description": "Bad credentials"
// }
rspMsg = '用户名或密码输入错误'
rspMsg = "用户名或密码输入错误";
}
if (typeof cb_err === 'function') {
cb_err(rspMsg)
if (typeof cb_err === "function") {
cb_err(rspMsg);
}
})
});
},
//通过接口传递的token进行验证登录 lyx 20191210
async interfacetokenPost (url, paramas, cb_su, cb_err) {
var data = qs.stringify(paramas)
async interfacetokenPost(url, paramas, cb_su, cb_err) {
var data = qs.stringify(paramas);
await axios
.post(processUrl(url), data)
.then((res) => {
if (res) {
if (res.status === 200) {
var data = res.data
var data = res.data;
if (data) {
if (typeof cb_su === 'function') {
cb_su(data)
return true
if (typeof cb_su === "function") {
cb_su(data);
return true;
}
} else {
if (typeof cb_err === 'function') {
cb_err('接口验证失败')
return false
if (typeof cb_err === "function") {
cb_err("接口验证失败");
return false;
}
}
} else {
if (typeof cb_err === 'function') {
cb_err(res)
return false
if (typeof cb_err === "function") {
cb_err(res);
return false;
}
}
} else {
if (typeof cb_err === 'function') {
cb_err(res)
return false
if (typeof cb_err === "function") {
cb_err(res);
return false;
}
}
})
.catch((err) => {
var rspMsg = '接口验证失败,请重试!'
var rspMsg = "接口验证失败,请重试!";
if (
err &&
err.response &&
err.response.status === 401 &&
err.response.data &&
err.response.data.error === 'unauthorized'
err.response.data.error === "unauthorized"
) {
rspMsg = '用户名不存在'
rspMsg = "用户名不存在";
} else if (
err &&
err.response &&
err.response.status === 400 &&
err.response.data &&
err.response.data.error === 'invalid_grant'
err.response.data.error === "invalid_grant"
) {
rspMsg = '用户名或密码输入错误'
rspMsg = "用户名或密码输入错误";
}
if (typeof cb_err === 'function') {
cb_err(rspMsg)
return false
if (typeof cb_err === "function") {
cb_err(rspMsg);
return false;
}
})
});
},
}
};
// 添加服务器端URL
function processUrl (url) {
if (url.indexOf('http://') > -1 || url.indexOf('https://') > -1) {
return url
function processUrl(url) {
if (url.indexOf("http://") > -1 || url.indexOf("https://") > -1) {
return url;
}
return process.env.VUE_APP_API_SERVER + url
return process.env.VUE_APP_API_SERVER + url;
}

12
src/js/dai/request.js

@ -2,8 +2,8 @@
| 请求接口封装 |
---------------------------------------------------------------*/
import axios from "axios";
import message from "dai-js/modules/message/message";
import curry from "dai-js/tools/curry";
import { Message } from "element-ui";
const request = curry(
(method, url, data = {}, headers = {}, progress = () => {}) => {
@ -36,7 +36,15 @@ const request = curry(
// retData = Vue.$afterRequestHook(retData);
// }
if (res.data.code > 8000 && res.data.code < 10000) {
message.error(res.data.msg);
// Message.error(res.data.msg);
}
if (res.code == 10005 || res.code == 10006 || res.code == 10007) {
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Message.error(res.data.msg);
return next({
name: "login",
});
}
reslove(retData);

98
src/js/dai/request2.js

@ -0,0 +1,98 @@
/*---------------------------------------------------------------
| 请求接口封装 |
---------------------------------------------------------------*/
import axios from "axios";
import curry from "dai-js/tools/curry";
import { Message } from "element-ui";
const request = curry(
(method, url, data = {}, headers = {}, progress = () => {}) => {
return new Promise((reslove) => {
let returnIniData = {
httpCode: "",
data: {},
msg: "",
code: "",
};
// 添加服务器端URL
function processUrl(url) {
if (url.indexOf("http://") > -1 || url.indexOf("https://") > -1) {
return url;
}
return process.env.VUE_APP_API_SERVER + url;
}
url = processUrl(url);
const succFn = (res) => {
// log(`[request成功] ${url}`, data, res);
let retData = {
...returnIniData,
...res.data,
httpCode: res.statusCode,
};
// if(typeof Vue.$afterRequestHook == 'function'){
// retData = Vue.$afterRequestHook(retData);
// }
if (res.data.code > 8000 && res.data.code < 10000) {
Message.error(res.data.msg);
}
if (res.code == 10005 || res.code == 10006 || res.code == 10007) {
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Message.error(res.data.msg);
return next({
name: "login",
});
}
reslove(retData);
};
const failFn = (err) => {
// log(`[request失败] ${url}`, data, err);
reslove(
Object.assign({}, returnIniData, {
httpCode: "9999", //访问出现意外
msg: "网络错误",
})
);
};
if (method.toUpperCase() == "POST") {
axios
.post(url, data, {
headers,
responseType: "json",
// progress,
// credentials: false,
})
.then(succFn)
.catch(failFn);
} else {
axios
.get(url, {
params: data,
headers,
responseType: "json",
// credentials: true,
})
.then(succFn)
.catch(failFn);
}
});
}
);
export const requestGet = request("get");
export const requestPost = request("post");
export default {
install(Vue) {
Vue.prototype.$requestGet = requestGet;
Vue.prototype.$requestPost = requestPost;
},
};

72
src/js/store/index.js

@ -4,9 +4,11 @@ import cloneDeep from "lodash/cloneDeep";
import user from "./modules/user";
import app from "./modules/app";
import tagsView from "./modules/tagsView";
import { requestPost } from "@/js/dai/request";
import { dateFormats } from "@/utils/index";
Vue.use(Vuex);
let interTimer = null
export default new Vuex.Store({
namespaced: true,
state: {
@ -37,7 +39,8 @@ export default new Vuex.Store({
menuList: [],
activeName: "",
},
tipsList: [],
tipsTime: [],
inIframe: window.self !== window.top,
},
modules: {
@ -52,5 +55,70 @@ export default new Vuex.Store({
state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]);
});
},
SET_TIPS_LIST(state, tipsList) {
let _list = state.tipsList
// state.tipsList = _list.concat(tipsList)
state.tipsList = tipsList
},
SET_TIPS_TIME(state, time) {
state.tipsTime = time
}
},
actions: {
clearInter() {
clearInterval(interTimer)
},
setInterval({ commit, dispatch, state }) {
interTimer = setInterval(() => {
const _t = dateFormats('YYYY-mm-dd HH:MM', (new Date(new Date().toLocaleDateString()).getTime()))
const _tt = new Date(_t).getTime()
console.log('230000---', _t)
const t = dateFormats('YYYY-mm-dd HH:MM', (new Date().getTime()))
const nt = new Date(t).getTime()
// 判断当前时间是否为 00:00
if (nt == _tt) {
dispatch('setTipsTime')
return
}
let times = state.tipsTime
console.log('nt---000', nt)
state.tipsTime.forEach((item, index) => {
const _t = new Date(item).getTime()
if (_t == nt) {
clearInterval(interTimer)
dispatch('setTipsList', item)
times.splice(index, 1)
commit('SET_TIPS_TIME', times)
}
})
}, 60000)
},
setTipsList({ commit }, time) {
return new Promise(async (resolve, reject) => {
const url = '/gov/project/memoAttr/memosToRemind'
const params = {
remindTime: time || ''
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
commit('SET_TIPS_LIST', data)
resolve()
} else reject(msg)
})
},
setTipsTime({ commit, dispatch }) {
return new Promise(async (resolve, reject) => {
if (interTimer) clearInterval(interTimer)
const url = '/gov/project/memoAttr/memoTime'
const { data, code, msg } = await requestPost(url)
if (code === 0) {
commit('SET_TIPS_TIME', data)
if (data.length > 0) dispatch('setInterval')
resolve()
} else reject(msg)
})
}
}
});

6
src/js/store/modules/app.js

@ -5,13 +5,15 @@ export default {
clientHeight: document.documentElement.clientHeight,
size: 'medium',
resolution: 'medium',
env: 'dev'
env: 'dev',
iframeHeight:120
},
getters: {
clientHeight: (state) => state.clientHeight,
size: (state) => state.size,
resolution: (state) => state.resolution,
env: (state) => state.env
env: (state) => state.env,
iframeHeight: (state) => state.iframeHeight
},
mutations: {
[type.client_height](state, payload) {

6
src/main.js

@ -1,5 +1,8 @@
import Vue from "vue";
import Element from "element-ui";
import Mint from 'mint-ui';
import 'mint-ui/lib/style.css';
import App from "@/App";
import i18n from "@/i18n";
@ -8,6 +11,8 @@ import router from "@/router";
import "@/icons";
import "@/element-ui/theme/index.css";
import "@/assets/scss/aui.scss";
//按钮
import http from "@/utils/request";
import renRadioGroup from "@/components/ren-radio-group";
import renSelect from "@/components/ren-select";
@ -58,6 +63,7 @@ Vue.use(renProcessStart);
Vue.use(renProcessRunning);
Vue.use(renProcessDetail);
Vue.use(Element);
Vue.use(Mint);
Vue.use(Element, {
size: "default",

456
src/router/index.js

@ -44,6 +44,24 @@ export const pageRoutes = [
name: "index",
},
},
{
path: "/caiji/:id",
props: true,
name: "caiji",
component: () => import("@/views/pages/caiji"),
meta: {
title: "居民信息填报",
},
},
{
path: "/caijisuccess",
props: true,
name: "caijisuccess",
component: () => import("@/views/pages/caijisuccess"),
meta: {
title: "居民信息填报",
},
},
];
// 模块路由(基于主入口布局页面)
@ -67,6 +85,15 @@ export const moduleRoutes = {
isTab: true,
},
},
{
path: "unopen",
component: () => import("@/views/modules/unopen"),
name: "unopen",
meta: {
title: "未开放功能",
isTab: true,
},
},
],
};
@ -88,7 +115,7 @@ export const moduleShujuRoutes = {
name: "home2",
meta: {
title: "主页2",
isTab: true,
isTab: false,
},
},
{
@ -98,7 +125,17 @@ export const moduleShujuRoutes = {
name: "visual-basicinfo-people",
meta: {
title: "个人详情",
isTab: true,
isTab: false,
},
},
{
path: "/main-shuju/visual-basicinfo-people-list",
props: true,
component: () => import("@/views/modules/visual/basicinfo/peopleList"),
name: "visual-basicinfo-people-list",
meta: {
title: "人员列表",
isTab: false,
},
},
],
@ -152,6 +189,9 @@ const router = new Router({
router.beforeEach((to, from, next) => {
// 添加动态(菜单)路由
// 已添加或者当前路由为页面路由, 可直接访问
if (to.name === "caiji") {
return next();
}
if (
window.SITE_CONFIG["dynamicMenuRoutesHasAdded"] ||
fnCurrentRouteIsPageRoute(to, pageRoutes)
@ -161,180 +201,201 @@ router.beforeEach((to, from, next) => {
const customerId = localStorage.getItem("customerId");
console.log("customerId:", customerId);
// if(customerId==='1e68188b8f7e9ab15658c164bd5b3676'){
// // if(customerId==='45687aa479955f9d06204d415238f7cc'){
// const menuList=[
// {
// children: [],
// createdBy: "a76fc711807ac9827d7611b0f94ec220",
// createdTime: "2020-08-26 16:38",
// delFlag: null,
// icon: "icon-database",
// id: "abe812eb350f6b5eda575e268e50ac1c",
// name: "定制功能配置",
// parentName: null,
// permissions: "",
// pid: "0",
// resourceList: null,
// revision: 0,
// showFlag: 1,
// sort: 2,
// type: 0,
// updatedBy: "a76fc711807ac9827d7611b0f94ec220",
// updatedTime: "2020-09-02 14:49",
// url: "customer/customize/ConfigItem",
// },
// {
// children: [],
// createdBy: "a76fc711807ac9827d7611b0f94ec220",
// createdTime: "2020-08-26 16:38",
// delFlag: null,
// icon: "icon-file-text",
// id: "8e55eba74c920c00c44c125e3bc73ddc",
// name: "居民端首页配置",
// parentName: null,
// permissions: "",
// pid: "0",
// resourceList: null,
// revision: 0,
// showFlag: 1,
// sort: 3,
// type: 0,
// updatedBy: "a76fc711807ac9827d7611b0f94ec220",
// updatedTime: "2020-09-02 14:49",
// url: "customer/customize/MiniHome",
// }
// ]
// window.SITE_CONFIG['menuList'] = menuList
// fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList'])
// // next({ ...to, replace: true })
// next({ ...to, replace: true })
// }else{
// http
// .get("/gov/access/menu/nav")
// .then(({ data: res }) => {
// if (res.code !== 0) {
// // Vue.prototype.$message.error(res.msg)
// return next({
// name: "login",
// });
// }
http
.get("/gov/access/menu/nav")
.then(({ data: res }) => {
if (res.code !== 0) {
// Vue.prototype.$message.error(res.msg)
return next({
name: "login",
});
}
window.SITE_CONFIG["menuShujuList"] = [
// next({
// ...to,
// replace: true,
// });
// })
// .catch(() => {
// next({
// name: "login",
// });
// });
window.SITE_CONFIG["menuShujuList"] = [
{
url: "/visual/plugin/power/organization",
name: "动力主轴",
id: "5feawfwaefwa577",
},
{
id: "22213213",
name: "基础信息",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
icon: "icon-setting",
id: "22213213",
name: "基础信息",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/basicinfo/basicInfoMain",
name: "基础信息",
id: "5feawfwaefwa5",
},
{
url: "/visual/basicinfo/personCategory/index",
name: "人员类别分析",
id: "5fwaefwaefawef5",
},
],
url: "/visual/basicinfo/basicInfoMain",
name: "人房信息统计",
id: "5feawfwaefwa5",
},
{
icon: "icon-setting",
id: "3",
name: "人员预警",
url: "visual/warning/index",
url: "/visual/basicinfo/personCategory/index",
name: "人员类别分析",
id: "5fwaefwaefawef5",
},
{
icon: "icon-setting",
id: "6",
name: "社区治理",
children: [
{
url: "visual/communityGovern/processAnalyze",
name: "项目处理分析",
id: "processAnalyze",
},
{
url: "/visual/communityGovern/typeAnalyze",
name: "项目分类分析",
id: "typeAnalyze",
},
{
url: "/visual/communityGovern/resibuzz",
name: "居民热议",
id: "resibuzz",
},
{
url: "/visual/communityGovern/distributionAnalyze",
name: "项目分布分析",
id: "distributionAnalyze",
},
],
url: "/visual/basicinfo/houseStatic/houseStatic",
name: "人房概览统计",
id: "5fwaefwaefawef6",
},
],
},
{
icon: "icon-setting",
id: "2",
name: "人员图谱",
url: "visual/basicinfo/peopleSearch",
},
{
icon: "icon-setting",
id: "3",
name: "人员预警",
url: "visual/warning/index",
},
{
icon: "icon-setting",
id: "2221321001",
name: "社区党建",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
icon: "icon-setting",
id: "2221321001",
name: "社区党建",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/communityParty/party",
name: "党员信息统计",
id: "5feawfwaefwa578",
},
{
url: "/visual/communityParty/community",
name: "区域化党建",
id: "5fwaefwaefawef588",
},
],
url: "/visual/communityParty/party",
name: "党员信息统计",
id: "5feawfwaefwa578",
},
{
icon: "icon-setting",
id: "2221321123",
name: "措施清单",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/measure/service",
name: "服务措施分析",
id: "5feawfwaefwa57",
},
{
url: "/visual/measure/volunteer",
name: "志愿者服务分析",
id: "5fwaefwaefawef58",
},
],
url: "/visual/communityParty/community",
name: "联建单位分析",
id: "5fwaefwaefawef588",
},
{
icon: "icon-setting",
id: "2221321fefefaewfa123",
name: "初心互助",
url: "visual/heart/index",
children: [],
url: "/visual/communityParty/elegant",
name: "党员风采榜",
id: "5fwaefwaefawef589",
},
];
fnAddDynamicMenuRoutes2(window.SITE_CONFIG["menuShujuList"]);
// next({ ...to, replace: true })
next({
...to,
replace: true,
});
})
.catch(() => {
next({
name: "login",
});
});
],
},
{
icon: "icon-setting",
id: "2221321123",
name: "社区服务",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "/visual/measure/service",
name: "需求服务分析",
id: "5feawfwaefwa57",
},
{
url: "/visual/measure/volunteer",
name: "志愿服务分析",
id: "5fwaefwaefawef58",
},
],
},
{
icon: "icon-setting",
id: "6",
name: "社区治理",
children: [
{
url: "visual/communityGovern/processAnalyze",
name: "事件处置分析",
id: "processAnalyze",
},
{
url: "/visual/communityGovern/typeAnalyze",
name: "事件分类分析",
id: "typeAnalyze",
},
{
url: "/visual/communityGovern/resibuzz",
name: "居民热议分析",
id: "resibuzz",
},
{
url: "/visual/communityGovern/distributionAnalyze",
name: "事件分布分析",
id: "distributionAnalyze",
},
],
},
{
icon: "icon-setting",
id: "2221321fefefaewfa123",
name: "初心互助",
url: "visual/heart/index",
children: [],
},
{
icon: "icon-setting",
id: "2221321fefefaewfa122223",
name: "疫情防控",
url: "",
children: [],
},
{
icon: "icon-setting",
id: "44rq22222q2222",
name: "智慧安防",
// url: "visual/basicinfo/basicInfoMain",
children: [
{
url: "https://test-rxs-job.elinkservice.cn/haiqin-ai/aisecurity.html#/monitor-panel",
// url: "/visual/ai/index",
name: "视频监控",
id: "5feawfwa111111efwa57",
},
/*{
url: "/visual/ai/renliu",
name: "人流数据",
id: "5fwaefwae222112fawef58",
},
{
url: "/visual/ai/cheliu",
name: "车流数据",
id: "erawerwecsxefwaw",
},
{
url: "/visual/ai/shebei",
name: "设备数据",
id: "zfzffewaf",
},
{
url: "/visual/ai/gongdan",
name: "工单数据",
id: "fewafwafewaefddd",
},*/
{
// url: "/visual/ai/yujing",
url: "https://test-rxs-job.elinkservice.cn/haiqin-ai/aisecurity.html#/data-analysis",
name: "预警分析",
id: "545345fdsfs",
},
],
},
];
fnAddDynamicMenuRoutes2(window.SITE_CONFIG["menuShujuList"]);
http
.get("/gov/access/menu/nav")
.then(({ data: res }) => {
if (res.code !== 0) {
// Vue.prototype.$message.error(res.msg)
if (res.code == 10005 || res.code == 10006 || res.code == 10007) {
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Vue.prototype.$message.error(res.msg);
return next({
name: "login",
});
@ -348,9 +409,9 @@ router.beforeEach((to, from, next) => {
});
})
.catch(() => {
next({
name: "login",
});
// next({
// name: "login",
// });
});
});
@ -382,7 +443,7 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
for (var i = 0; i < menuList.length; i++) {
if (menuList[i].children && menuList[i].children.length >= 1) {
temp = temp.concat(menuList[i].children);
continue;
// continue;
}
// 组装路由
var route = {
@ -400,18 +461,40 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
eval(s2)
); // URL支持{{ window.xxx }}占位符变量
if (isURL(URL)) {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
if (menuList[i].children && menuList[i].children.length >= 1) {
let item = menuList[i].children.find(
(subMenu) => subMenu.url == menuList[i].url
);
if (item) {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["redirect"] = `i-${item.id}`;
} else {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
}
} else {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
}
} else {
URL = URL.replace(/^\//, "").replace(/_/g, "-");
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/${URL}`);
if (URL.startsWith("unopen")) {
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/unopen`);
} else if (menuList[i].children && menuList[i].children.length >= 1) {
route["path"] = route["name"] = URL;
route["redirect"] = URL.replace(/\//g, "-");
} else {
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/${URL}`);
}
}
routes.push(route);
}
if (temp.length >= 1) {
return fnAddDynamicMenuRoutes(temp, routes);
}
// routers.reverse();
// 添加路由
router.addRoutes([
{
@ -421,9 +504,9 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
},
{
path: "*",
redirect: {
name: "404",
},
// redirect: {
// name: "404",
// },
},
]);
window.SITE_CONFIG["dynamicMenuRoutes"] = routes;
@ -453,12 +536,33 @@ function fnAddDynamicMenuRoutes2(menuList = [], routes = []) {
eval(s2)
); // URL支持{{ window.xxx }}占位符变量
if (isURL(URL)) {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
if (menuList[i].children && menuList[i].children.length >= 1) {
let item = menuList[i].children.find(
(subMenu) => subMenu.url == menuList[i].url
);
if (item) {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["redirect"] = `i-${item.id}`;
} else {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
}
} else {
route["path"] = route["name"] = `i-${menuList[i].id}`;
route["meta"]["iframeURL"] = URL;
}
} else {
URL = URL.replace(/^\//, "").replace(/_/g, "-");
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/${URL}`);
if (URL.startsWith("unopen")) {
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/unopen`);
} else if (menuList[i].children && menuList[i].children.length >= 1) {
route["path"] = route["name"] = URL;
route["redirect"] = URL.replace(/\//g, "-");
} else {
route["path"] = route["name"] = URL.replace(/\//g, "-");
route["component"] = () => import(`@/views/modules/${URL}`);
}
}
routes.push(route);
}
@ -474,9 +578,9 @@ function fnAddDynamicMenuRoutes2(menuList = [], routes = []) {
},
{
path: "*",
redirect: {
name: "404",
},
// redirect: {
// name: "404",
// },
},
]);
window.SITE_CONFIG["dynamicMenuRoutesShuju"] = routes;

52
src/utils/index.js

@ -93,3 +93,55 @@ export function treeDataTranslate(data, id = 'id', pid = 'pid') {
}
return res
}
// 时间格式化
export function dateFormats(fmt, date) {
let ret
const _date = new Date(date)
const opt = {
'Y+': _date.getFullYear().toString(), // 年
'm+': (_date.getMonth() + 1).toString(), // 月
'd+': _date.getDate().toString(), // 日
'H+': _date.getHours().toString(), // 时
'M+': _date.getMinutes().toString(), // 分
'S+': _date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
}
for (const k in opt) {
ret = new RegExp('(' + k + ')').exec(fmt)
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
}
}
return fmt
}
// 根据身份证计算出生日期,性别,年龄
export function computedCard(idCard) {
let sex = null;
let birth = null;
let myDate = new Date();
let month = myDate.getMonth() + 1;
let day = myDate.getDate();
let age = 0;
if(idCard.length===18){
age = myDate.getFullYear() - idCard.substring(6, 10) - 1;
sex = idCard.substring(16,17);
birth = idCard.substring(6,10)+"-"+idCard.substring(10,12)+"-"+idCard.substring(12,14);
if (idCard.substring(10, 12) < month || idCard.substring(10, 12) === month && idCard.substring(12, 14) <= day) age++;
}
if(idCard.length===15){
age = myDate.getFullYear() - idCard.substring(6, 8) - 1901;
sex = idCard.substring(13,14);
birth = "19"+idCard.substring(6,8)+"-"+idCard.substring(8,10)+"-"+idCard.substring(10,12);
if (idCard.substring(8, 10) < month || idCard.substring(8, 10) === month && idCard.substring(10, 12) <= day) age++;
}
if(sex%2 === 0)
sex = '0'; // 性别代码 1代表男,0代表女,暂时不涉及其他类型性别
else
sex = '1';
return {age , sex, birth}
}

2
src/utils/request.js

@ -7,7 +7,7 @@ import isPlainObject from 'lodash/isPlainObject'
const http = axios.create({
baseURL: window.SITE_CONFIG['apiURL'],
timeout: 1000 * 180,
timeout: 1000 * 900,
withCredentials: true
})

50
src/utils/treeSelect.js

@ -0,0 +1,50 @@
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
}

43
src/views/components/CTable.vue

@ -4,7 +4,6 @@
ref="table"
class="tableLimit"
:height="table.height"
:header-cell-style="{color:'#000'}"
:data="tableData"
:style="{width: '100%'}"
border
@ -18,7 +17,7 @@
@row-click="handleRowClick">
<!--设置index索引-->
<div v-if="columnType==='index'">
<el-table-column :type="columnType"></el-table-column>
<el-table-column label="序号" :type="columnType" width="50"></el-table-column>
</div>
<!--设置checkbox-->
<div v-if="columnType==='selection'">
@ -87,28 +86,28 @@
fixed="right"
:min-width="operationWidth"
header-align="center"
align="buttonAlign"
:align="buttonAlign"
class="operate">
<template slot-scope="scope">
<!--传入的操作按钮属性 lyx 20190411 -->
<el-button v-for="item in operations"
v-show="item.isShow(scope.row)"
:key="item.lable"
:style=item.style
:type=item.type
:size=item.size
:plain=item.plain
:type="item.type"
:style="item.style"
:size="item.size"
:class="item.class"
@click.stop="handleMethod(scope.$index, scope.row,item.methodName)">{{item.lable}}</el-button>
</template>
</el-table-column>
</el-table>
<!--分页-->
<el-row class="page "
<!-- <el-row class="page "
v-if="pageVisible">
<el-col :span="8"
style="text-align: leftline-height: 32px">
<slot style="text-align: left"></slot>
<span></span>
<div></div>
</el-col>
<el-col :span="16">
<el-pagination @size-change="handleSizeChange"
@ -121,7 +120,23 @@
layout="jumper, prev, pager, next,sizes, total"
:total="total"></el-pagination>
</el-col>
</el-row>
</el-row> -->
<div v-if="pageVisible" class="pagination-diy">
<div class="pagination-left">
<slot></slot>
</div>
<div class="pagination-left">
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
@prev-click="handlePrevClick"
@next-click="handleNextClick"
:current-page="pageNo"
:page-sizes="tablePageSizes"
:page-size="pageSize"
layout="jumper, prev, pager, next,sizes, total"
:total="total"></el-pagination>
</div>
</div>
</div>
</template>
@ -211,7 +226,7 @@ export default {
//
buttonAlign: {
type: String,
default: ""
default: "center"
}
},
@ -421,4 +436,10 @@ export default {
.el-table .cell {
white-space: pre-line; /*保留换行符*/
}
.pagination-diy {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
</style>

87
src/views/components/checkBox.vue

@ -0,0 +1,87 @@
<template>
<div v-loading="loading">
<el-checkbox
:indeterminate="isIndeterminate"
v-model="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 15px 0;"></div>
<el-checkbox-group v-if="boxList.length > 0" v-model="checkedList" @change="handleChange">
<div v-for="n in boxList" :key="n.itemId" class="mb10">
<el-checkbox :label="n.itemId">{{n.label}}</el-checkbox>
</div>
</el-checkbox-group>
<div v-else class="no-data">暂无数据</div>
</div>
</template>
<script>
export default {
name: 'checkBox',
model: {
prop: 'value',
event: 'change'
},
props: {
value: {
type: Array,
default: () => []
},
list: {
type: Array,
default: () => []
}
},
data() {
return {
boxList: [],
checkAll: false,
checkedList: [],
isIndeterminate: false,
pid: '',
loading: false
}
},
created() {
this.boxList = this.list.filter(item => item.itemType != 'inputRange')
console.log('cehck-bo----', this.list)
this.pid = this.list[0].itemGroupId
},
methods: {
handleCheckAllChange(val) {
this.checkedList = val ? this.boxList.map(item => item.itemId) : [];
this.isIndeterminate = false;
this.$emit('change', { list: this.filterArr(this.checkedList), pid: this.pid })
},
handleChange(value) {
console.log('value----', value)
let checkedCount = value.length;
this.checkAll = checkedCount === this.boxList.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.boxList.length;
this.$emit('change', { list: this.filterArr(this.checkedList), pid: this.pid })
},
filterArr(arr) {
let list = []
arr.forEach(item => {
this.boxList.forEach(n => {
if (item === n.itemId) list.push(n)
})
})
return list
}
}
}
</script>
<style lang="scss" scoped>
.mb10 {
margin-bottom: 10px;
}
.no-data {
padding-top: 30px;
font-size: 14px;
text-align: center;
color: #999;
}
</style>

94
src/views/components/dragItem.vue

@ -0,0 +1,94 @@
<template>
<div class="right-wr scroll-h" :id="'wrItems' + id">
<div v-for="(n, i) in list" :key="n.itemId" class="right-item">
<div class="item-label">{{ n.label }}</div>
<div class="item-btn">
<el-tag type="danger" class="mr10" @click="handleDelItem(n, i)">
<i class="el-icon-delete"></i>
</el-tag>
<el-tag type="primary">
<i class="el-icon-rank"></i>
</el-tag>
</div>
</div>
</div>
</template>
<script>
import Sortable from 'sortablejs'
export default {
name: 'DragItems',
props: {
list: {
type: Array,
default: () => []
},
id: {
type: String,
default: ''
}
},
data() {
return {
dragList: []
}
},
mounted() {
// this.dragSort()
},
watch: {
list: {
handler(val) {
this.dragList = val.filter(item => item.itemType != 'inputRange')
},
deep: true
}
},
methods: {
handleDelItem(item, i) {
this.$emit('del', { item, index: i})
},
dragSort () {
const el = document.getElementById(`wrItems${this.id}`)
this.sortTable = Sortable.create(el, {
group: 'right-item',
ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
chosenClass: 'sortable-choose',
animation: 500,
delay: 0,
onEnd: evt => {
console.log('evt----', evt)
const targetRow = this.list.splice(evt.oldIndex, 1)[0]
this.list.splice(evt.newIndex, 0, targetRow)
this.$emit('drag', this.list)
}
})
},
}
}
</script>
<style lang="scss" scoped>
.right-wr {
max-height: calc(80vh - 270px);
overflow: auto;
.right-item {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
padding: 10px 30px;
}
}
.sortable-choose {
background: #eee;
}
.mr10 {
margin-right: 10px;
}
.mb10 {
margin-bottom: 10px;
}
</style>

31
src/views/components/editResi.vue

@ -33,12 +33,12 @@
</el-form-item>
</el-col>
<el-col :span="18">
<el-form-item label="所属家庭" required>
<el-form-item label="所属房屋" required>
<div class="resi-cell-value">
<div class="resi-cell-col">
<el-form-item prop="VILLAGE_ID">
<el-select v-model.trim="form.VILLAGE_ID" placeholder="请选择小区" size="small"
clearable class="resi-cell-select" @change="handleChangeV"
clearable class="resi-cell-select" :disabled="disabled" @change="handleChangeV"
>
<el-option
v-for="item in optionsV"
@ -50,7 +50,7 @@
</el-form-item>
<el-form-item prop="BUILD_ID">
<el-select v-model.trim="form.BUILD_ID" placeholder="请选择楼号" size="small"
clearable class="resi-cell-select resi-cell-select-middle" @change="handleChangeB"
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle" @change="handleChangeB"
>
<el-option
v-for="item in optionsB"
@ -62,7 +62,7 @@
</el-form-item>
<el-form-item prop="UNIT_ID">
<el-select v-model.trim="form.UNIT_ID" placeholder="请选择单元" size="small"
clearable class="resi-cell-select resi-cell-select-middle" @change="handleChangeD"
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle" @change="handleChangeD"
>
<el-option
v-for="item in optionsD"
@ -74,7 +74,8 @@
</el-form-item>
<el-form-item prop="HOME_ID">
<el-select v-model.trim="form.HOME_ID" placeholder="请选择房号" size="small"
clearable class="resi-cell-select resi-cell-select-middle"
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle"
@change="handleChangeH"
>
<el-option
v-for="item in optionsH"
@ -137,7 +138,7 @@
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> -->
<el-col v-for="n in item" :key="n.itemId" :span="item.length === 1 ? 24 : (24/columns)"
:style="n.itemType === 'divider' && 'display: none;'">
<el-form-item :prop="n.columnName" :label="n.label" :required="Boolean(n.required)">
<el-form-item :prop="n.columnName" :label="n.label">
<!-- <div class="resi-cell"> -->
<!-- <div class="resi-cell-label">{{n.label}}</div> -->
<div class="resi-cell-value">
@ -363,11 +364,11 @@ export default {
if (item.required) {
if (item.validType === 'mobile') {
rules[item.columnName] = [
{ validator: checkMObile, trigger: 'blur' }
{ required: true, validator: checkMObile, trigger: 'blur' }
]
} else if (item.validType === 'id_card') {
rules[item.columnName] = [
{ validator: checkIdCard, trigger: 'blur' }
{ required: true, validator: checkIdCard, trigger: 'blur' }
]
} else {
rules[item.columnName] = [
@ -501,7 +502,7 @@ export default {
},
created () {
this.initForm()
// console.log('formInfo---ggg', this.form)
console.log('formInfo---gggreg', this.rulesForm)
if (this.supportAdd) {
this.addList = [...this.mutiList]
// console.log('addList----111', this.addList)
@ -611,6 +612,14 @@ export default {
this.form.HOME_ID = ''
this.getHouseList()
},
//
handleChangeH(val){
let item = this.optionsH.find(item => item.value === val);
if(item && item.type == '1'){
this.form.IS_TENANT = '1'
console.log('item-----', item)
} else this.form.IS_TENANT = '0'
},
handlerMuscForm () {
let arr = []
this.addList.forEach(item => {
@ -803,7 +812,7 @@ export default {
}
}
.resi-cell-value .resi-cell-input {
max-width: 180px;
width: 190px;
}
</style>
@ -841,7 +850,7 @@ export default {
}
}
.resi-cell-select {
width: 180px;
width: 190px;
box-sizing: border-box;
margin-right: 10px;
&-middle {

10
src/views/components/editResi.vue.rej

@ -0,0 +1,10 @@
diff a/src/views/components/editResi.vue b/src/views/components/editResi.vue (rejected hunks)
@@ -235,7 +235,7 @@
v-else-if="n.itemType === 'cascader'"
v-model.trim="form[n.columnName]"
:options="n.options"
- :props="{ checkStrictly: true }"
+ :props="{ checkStrictly: false }"
:disabled="disabled"
clearable
size="small"

126
src/views/components/rangeInput.vue

@ -0,0 +1,126 @@
<template>
<el-form :model="inputForm" :rules="rules" class="demo-form-inline">
<div class="flex-div">
<el-form-item prop="start">
<el-input
v-model="inputForm.start"
class="wd50"
size="small"
:type="inputType"
clearable
placeholder="请输入"
@change="handleChange"
/>
</el-form-item>
<div>-</div>
<el-form-item prop="end">
<el-input
v-model="inputForm.end"
class="wd50"
size="small"
:type="inputType"
clearable
placeholder="请输入"
@change="handleChange"
@blur="handleBlur"
/>
</el-form-item>
</div>
</el-form>
</template>
<script>
export default {
name: 'inputRange',
model: {
prop: 'value',
event: 'change'
},
props: {
value: {
type: Object,
default: () => {
return {
start: '',
end: ''
}
}
},
type: {
type: String,
default: ''
}
},
data() {
let checkAge = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入内容'))
} else {
if (value < this.inputForm.start) {
callback(new Error('结束值不能小于开始值'))
}
callback()
}
}
return {
inputForm: {...this.value},
rules: {
end: [
{ validator: checkAge, trigger: 'blur' }
],
}
}
},
computed: {
inputType() {
if (this.type == 'num') return 'number'
}
},
watch: {
'value.start'(val) {
this.inputForm.start = val
},
'value.end'(val) {
this.inputForm.end = val
},
},
methods: {
handleChange(val) {
// if ()
this.$emit('change', { ...this.inputForm})
},
handleBlur() {
}
}
}
</script>
<style lang="scss" scoped>
.flex-div {
display: flex;
align-items: center;
max-width: 200px;
}
// .wd50 {
// // width: 45%;
// }
.demo-form-inline {
::v-deep {
.el-form-item {
flex: 1;
width: 40%;
margin: 0;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type='number']{
-moz-appearance: textfield;
}
}
}
</style>

86
src/views/components/resiForm.vue

@ -32,7 +32,7 @@
</el-form-item>
</el-col>
<el-col :span="18">
<el-form-item label="所属家庭" required>
<el-form-item label="所属房屋" required>
<div class="resi-cell-value">
<div class="resi-cell-col">
<el-form-item prop="VILLAGE_ID">
@ -74,6 +74,7 @@
<el-form-item prop="HOME_ID">
<el-select v-model.trim="form.HOME_ID" placeholder="请选择房号" size="small"
clearable class="resi-cell-select resi-cell-select-middle"
@change="handleChangeH"
>
<el-option
v-for="item in optionsH"
@ -99,54 +100,13 @@
</div>
</el-form-item>
</el-col>
<!-- <el-col :span="6">
<el-form-item :prop="form.BUILD_ID" label="所属楼宇">
<div class="resi-cell-value">
<el-select v-model.trim="form.BUILD_ID" placeholder="请选择楼号" size="small"
clearable class="resi-cell-select" @change="handleChangeB"
>
<el-option
v-for="item in optionsB"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :prop="form.HOME_ID" label="所属家庭">
<div class="resi-cell-value">
<el-select v-model.trim="form.HOME_ID" placeholder="请选择" size="small"
clearable class="resi-cell-select resi-cell-select-small"
>
<el-option
v-for="item in optionsH"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-model.trim="form.HOME_ID" placeholder="请选择" size="small"
clearable class="resi-cell-select-small"
>
<el-option
v-for="item in optionsH"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
</el-col> -->
</el-row>
<el-row v-for="(item, index) in sliceList(formList, columns)" :key="index" class="resi-row">
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> -->
<el-col v-for="n in item" :key="n.itemId" :span="item.length === 1 ? 24 : (24/columns)"
:style="n.itemType === 'divider' && 'display: none;'">
<el-form-item :prop="n.columnName" :label="n.label" :required="Boolean(n.required)">
<el-form-item :prop="n.columnName" :label="n.label">
<!-- <div class="resi-cell"> -->
<!-- <div class="resi-cell-label">{{n.label}}</div> -->
<div class="resi-cell-value">
@ -158,6 +118,7 @@
size="small"
clearable
placeholder="请输入内容"
@blur="handleValidBlur(n)"
>
</el-input>
<el-input
@ -237,7 +198,7 @@
v-else-if="n.itemType === 'cascader'"
v-model.trim="form[n.columnName]"
:options="n.options"
:props="{ checkStrictly: true }"
:props="{ checkStrictly: false }"
clearable
size="small"
class="resi-cell-select">
@ -267,6 +228,7 @@
<script>
import { isCard, isMobile } from '@/utils/validate'
import { computedCard } from '@/utils/index'
export default {
name: 'resiForm',
@ -355,11 +317,11 @@ export default {
if (item.required) {
if (item.validType === 'mobile') {
rules[item.columnName] = [
{ validator: checkMObile, trigger: 'blur' }
{ required: true, validator: checkMObile, trigger: 'blur' }
]
} else if (item.validType === 'id_card') {
rules[item.columnName] = [
{ validator: checkIdCard, trigger: 'blur' }
{ required: true, validator: checkIdCard, trigger: 'blur' }
]
} else {
rules[item.columnName] = [
@ -525,6 +487,24 @@ export default {
// }
})
},
handleValidBlur(n) {
console.log('n---', n)
if (n.columnName !== 'ID_CARD') return
if (!isCard(this.form.ID_CARD)) return
const { user } = this.$store.state
let huji = '', i = 0
if (user.areaCodePath && user.areaCodePath.length > 0) {
i = user.areaCodePath.length - 1
huji = user.areaCodePath[i].length > 6 ? user.areaCodePath[i].substr(0, 6) : user.areaCodePath[i]
}
const _id = this.form.ID_CARD.substr(0, 6)
const { sex, birth, age } = computedCard(this.form.ID_CARD)
this.form.BIRTHDAY = birth
this.form.GENDER = sex == 1 ? '1' : '2'
this.form.IS_OLD_PEOPLE = age >= 60 ? '1' : '0'
this.form.IS_BDHJ = huji == _id ? '1' : ''
console.log('age-----', age, _id)
},
handleOpenSearch () {
this.openSearch = !this.openSearch
},
@ -582,6 +562,14 @@ export default {
this.form.HOME_ID = ''
this.getHouseList()
},
//
handleChangeH(val){
let item = this.optionsH.find(item => item.value === val);
if(item && item.type == '1'){
this.form.IS_TENANT = '1'
console.log('item-----', item)
} else this.form.IS_TENANT = '0'
},
// form
handleChangeForm (val) {
if (this.fixed) {
@ -782,7 +770,7 @@ export default {
}
}
.resi-cell-value .resi-cell-input {
max-width: 180px;
width: 190px;
}
.resi-cell-value {
:deep .el-col {
@ -810,7 +798,7 @@ export default {
}
}
.resi-cell-select {
width: 180px;
width: 190px;
box-sizing: border-box;
margin-right: 10px;
&-middle {

168
src/views/components/resiSearch.vue

@ -1,8 +1,8 @@
<template>
<div class="resi-container">
<el-card class="resi-card">
<el-row class="resi-row-box" :class="openSearch && 'resi-row-more'">
<el-row class="resi-row">
<!-- <el-card class="resi-card"> -->
<el-row class="resi-row-box" :class="!isArrow && 'resi-row-more'">
<el-row v-if="showGrid" class="resi-row">
<el-col :span="6">
<div class="resi-cell">
<div class="resi-cell-label">所属网格</div>
@ -28,7 +28,7 @@
</el-col>
<el-col :span="18">
<div class="resi-cell">
<div class="resi-cell-label">所属小区</div>
<div class="resi-cell-label">所属房屋</div>
<div class="resi-cell-value">
<el-select
v-model.trim="form.VILLAGE_ID"
@ -52,6 +52,7 @@
placeholder="楼号"
size="small"
clearable
style="width: 120px;"
class="resi-cell-select"
:disabled="changeVDisabled"
@clear="handleClearBuild"
@ -65,12 +66,13 @@
>
</el-option>
</el-select>
<!-- <el-select
<el-select
v-model.trim="form.UNIT_ID"
:disabled="changeBDisabled"
placeholder="单元"
size="small"
clearable
style="width: 120px;"
class="resi-cell-select"
@click="handleClearDan"
@change="handleChangeD"
@ -86,9 +88,10 @@
<el-select
v-model.trim="form.HOME_ID"
:disabled="changeDDisabled"
placeholder="号"
placeholder="号"
size="small"
clearable
style="width: 120px;"
class="resi-cell-select"
>
<el-option
@ -98,19 +101,19 @@
:value="item.value"
>
</el-option>
</el-select> -->
</el-select>
</div>
</div>
</el-col>
</el-row>
<el-row
v-for="(item, index) in sliceList(formList, 4)"
v-for="(item, index) in sliceList(itemList, 4)"
:key="index"
class="resi-row"
>
<el-col v-for="n in item" :key="n.id" :span="6">
<el-col v-for="n in item" :key="n.id" :span="computdSpan(item.length)">
<div class="resi-cell">
<div class="resi-cell-label">{{ n.label }}</div>
<div class="resi-cell-label" :class="item.length != 4 && 'resi-cell-label1'">{{ n.label }}</div>
<div
class="resi-cell-value"
:class="n.itemType === 'radio' && 'resi-cell-value-radio'"
@ -124,6 +127,16 @@
placeholder="请输入内容"
>
</el-input>
<template v-else-if="n.itemType == 'inputRange'">
<!-- <el-input
v-model.trim="form[n.columnName]"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容"
/> -->
<inputRange v-model="form[n.columnName]" :type="n.validType" @change="handleAgeChange" />
</template>
<template v-else-if="n.itemType === 'datepicker'">
<el-date-picker
v-if="n.queryType === 'daterange'"
@ -179,30 +192,41 @@
class="resi-cell-select"
>
</el-cascader>
<template v-else-if="n.itemType === 'checkbox'">
<el-checkbox-group v-model="form[n.columnName]">
<el-checkbox v-for="ns in n.options" :key="ns.value" :label="ns.value">{{ns.label}}</el-checkbox>
<!-- <el-checkbox label="n.la"></el-checkbox> -->
</el-checkbox-group>
</template>
</div>
</div>
</el-col>
</el-row>
</el-row>
<el-row class="resi-search">
<el-row v-if="isArrow" class="resi-search">
<!-- <el-col :span="20">
<el-button type="primary" size="mini">查询</el-button>
</el-col> -->
<el-col :span="24">
<el-button type="primary" size="mini" @click="handleSearch">查询</el-button>
<el-button type="primary" size="small" @click="handleSearch">查询</el-button>
<el-button class="diy-button--reset" size="small" @click="resetForm">重置</el-button>
</el-col>
</el-row>
<div class="resi-down" @click="handleOpenSearch">
<!-- <div v-if="isArrow" class="resi-down" @click="handleOpenSearch">
<img v-if="openSearch" src="../../assets/img/arrow-up.png" />
<img v-else src="../../assets/img/arrow-down.png" />
</div>
</el-card>
</div> -->
<!-- </el-card> -->
</div>
</template>
<script>
import inputRange from './rangeInput.vue'
export default {
name: 'ResiSearch',
components: {
inputRange
},
props: {
formList: {
type: Array,
@ -211,6 +235,14 @@ export default {
columnName: {
type: String,
default: ''
},
showGrid: {
type: Boolean,
default: false
},
isArrow: {
type: Boolean,
default: false
}
},
data() {
@ -222,13 +254,23 @@ export default {
// return _form
// }
arr.forEach((item) => {
if (columnName && columnName === item.columnName) _form[item.columnName] = '1'
if (item.itemType == 'checkbox') _form[item.columnName] = []
else if (columnName && columnName === item.columnName) _form[item.columnName] = '1'
else if (item.itemType == 'inputRange') _form[item.columnName] = { start: '', end: ''}
else _form[item.columnName] = ''
})
return _form
}
let form = initForm(this.formList, this.columnName)
let tempFormList = this.formList.map(item => {
let itemList = this.formList.map(item => {
if (item.itemType == 'inputRange' && item.funType == 'agetoyear') {
item.columnName = 'age'
}
return {
...item
}
})
let form = initForm(itemList, this.columnName)
let tempFormList = itemList.map(item => {
return {
...item,
@ -252,6 +294,7 @@ export default {
optionsD: [],
optionsG: [],
value: '',
itemList,
fixedList: [],
fixedForm: {
GRID_ID: '',
@ -328,7 +371,7 @@ export default {
},
changeDDisabled() {
return !this.form.UNIT_ID
}
},
},
watch: {
form: {
@ -348,6 +391,7 @@ export default {
created() {
// this.initForm()
// console.log('formcccc---', this.form)
this.getGridList()
this.getValiheList()
if (this.columnName) this.handleChangeForm(this.columnName)
@ -359,6 +403,9 @@ export default {
})
console.log('formcccc---', this.form)
},
computdSpan(len) {
return len == 1 ? 24 : 6
},
handleClearVillage() {
this.form.BUILD_ID = ''
this.form.HOME_ID = ''
@ -372,24 +419,39 @@ export default {
this.form.UNIT_ID = ''
this.form.HOME_ID = ''
},
resetForm(formName) {
for(const n in this.form) {
if (n == 'age') {
this.form.age = {
start: '',
end: ''
}
} else if (typeof this.form[n] == 'object') this.form[n] = []
else this.form[n] = ''
}
// let arr3 = [...arr1, ...arr]
this.$emit('search', [])
// this.handleSearch()
},
handleSearch() {
// console.log('formmmmm---', this.form)
const itemTypes = ['daterange', 'timerange']
let arr = this.tempFormList
.filter((n) => n.isChange)
.map((item) => {
const itemTypes = ['daterange', 'timerange', 'checkbox']
let a = this.tempFormList.filter(item => item.itemType != 'inputRange')
let arr = a.filter((n) => n.isChange).map((item) => {
return {
queryType: item.queryType,
tableName: item.tableName,
columnName: item.columnName,
// columnValue: []
columnValue:
itemTypes.includes(item.queryType) ||
columnValue: this.form[item.columnName] &&
(itemTypes.includes(item.queryType) ||
itemTypes.includes(item.itemType)
? this.form[item.columnName]
: [this.form[item.columnName].toString()]
: [this.form[item.columnName].toString()])
}
})
const arr2 = arr.filter(item => item.columnValue.length > 0)
let arr1 = this.fixedList
.filter((n) => n.columnValue.length > 0)
.map((item) => {
@ -397,12 +459,21 @@ export default {
...item
}
})
let arr3 = [...arr1, ...arr]
let arr3 = [...arr1, ...arr2]
this.$emit('search', arr3)
return arr3
},
handleOpenSearch() {
this.openSearch = !this.openSearch
},
handleAgeChange(val) {
console.log('val----age---', val)
if (val.end) {
const s = this.computedBirth(val.end)
const e = this.computedBirth(val.start)
this.form.BIRTHDAY = [s, e]
}
},
handleChangeGrid(val) {
console.log('val', val)
this.form.VILLAGE_ID = ''
@ -435,9 +506,13 @@ export default {
if (n === val) {
if (this.fixedList.length > 0) {
let _item = {}
let hasVal = false
this.fixedList.forEach((item, index) => {
if (item.columnName === val) {
if (item.columnName == val) {
hasVal = true
item.columnValue[0] = this.form[val]
if (!this.form[val]) this.fixedList.splice(index, 1)
console.log('fixedList----val', this.fixedList)
} else {
_item = {
queryType: 'equal',
@ -445,10 +520,11 @@ export default {
columnName: val,
columnValue: [this.form[val]]
}
console.log('fixedList----else', _item)
// this.$set(this.fixedList, index, _item)
}
})
if (Object.keys(_item).length > 0) this.fixedList.push(_item)
if (Object.keys(_item).length > 0 && !hasVal) this.fixedList.push(_item)
} else {
this.$set(this.fixedList, 0, {
queryType: 'equal',
@ -548,16 +624,35 @@ export default {
.catch(() => {
return this.$message.error('网络错误')
})
},
computedBirth(age) {
let now = new Date();
let nowYear = now.getFullYear();
let nowMonth = now.getMonth()+1;
let nowDay = now.getDate(); // daymonthmonthyearyear
let subYear = nowYear - age
if(nowMonth < 10){
nowMonth = '0'+ nowMonth
}
if(nowDay < 10){
nowDay = '0' + nowDay
}
console.log(subYear+'-'+nowMonth+'-'+nowDay);
return subYear + '-' + nowMonth + '-' + nowDay
}
}
}
</script>
<style lang="scss" scope>
.resi-container .resi-card {
position: relative;
overflow: visible;
}
// .resi-container {
// position: relative;
// overflow: visible;
// }
// .resi-container .resi-card {
// position: relative;
// overflow: visible;
// }
.resi-down {
position: absolute;
left: 50%;
@ -599,12 +694,15 @@ export default {
align-items: center;
.resi-cell-label {
flex-shrink: 0;
width: 70px;
min-width: 70px;
box-sizing: border-box;
margin-right: 15px;
text-align: right;
// line-height: 32;
}
.resi-cell-label1 {
width: max-content;
}
.resi-cell-value-radio {
display: flex;
align-items: center;
@ -614,7 +712,7 @@ export default {
width: 200px;
}
.resi-cell--daterange {
width: 200px;
max-width: 260px;
}
.resi-cell-select {
width: 200px;

14
src/views/components/resiTransfer.vue

@ -1,6 +1,6 @@
<template>
<div>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
:inline="false"
:model="dataForm"
@ -112,11 +112,19 @@
</el-form>
</div>
<div class="div_btn">
<!-- <div class="div_btn">
<el-button @click="handleCancle"> </el-button>
<el-button type="primary"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
</div> -->
<div class="resi-btns">
<el-button size="small"
@click="handleCancle">取消</el-button>
<el-button type="primary"
size="small"
:loading="btnDisable"
@click="handleComfirm">提交</el-button>
</div>
</div>
</template>
@ -360,7 +368,7 @@ export default {
if (!this.dataForm.newBuildingId) {
this.$message.warning('请选择楼宇')
this.$message.warning('楼栋')
return false
}
if (!this.dataForm.newBuildingUnitId) {

7
src/views/components/scoreRecord.vue

@ -54,12 +54,13 @@
header-align="center"
align="center"
label="需求人"
width="100">
width="120">
</el-table-column>
<el-table-column prop="content"
header-align="center"
align="center"
label="需求内容"
:show-overflow-tooltip="true"
min-width="230">
</el-table-column>
@ -74,14 +75,14 @@
header-align="center"
align="center"
label="评价"
width="80">
width="120">
</el-table-column>
<el-table-column prop="point"
header-align="center"
align="center"
label="积分"
width="80">
width="100">
</el-table-column>
</el-table>

179
src/views/components/tinymce/index.vue

@ -1,154 +1,157 @@
/* eslint-disable */
<template>
<textarea :id="tinymceId"
style="visibility: hidden;" />
<textarea :id="tinymceId" style="visibility: hidden" />
</template>
<script>
import loadTinymce from '@/utils/loadTinymce'
import { plugins, toolbar } from './config'
import { debounce } from 'throttle-debounce'
import Cookie from 'js-cookie'
import loadTinymce from "@/utils/loadTinymce";
import { plugins, toolbar } from "./config";
import { debounce } from "throttle-debounce";
import Cookie from "js-cookie";
// import constants from '@/utils/constants'
import nextTick from "dai-js/tools/nextTick";
let num = 1
let num = 1;
export default {
name: 'Tinymce',
name: "Tinymce",
props: {
id: {
type: String,
default: () => {
num === 10000 && (num = 1)
return `tinymce${+new Date()}${num++}`
}
num === 10000 && (num = 1);
return `tinymce${+new Date()}${num++}`;
},
},
value: {
default: ''
default: "",
},
customerId: {
type: String,
default: ''
}
default: "",
},
},
data () {
data() {
return {
tinymceId: this.id
}
tinymceId: this.id,
};
},
mounted () {
loadTinymce(tinymce => {
let token = this.getUserToken()
mounted() {
loadTinymce((tinymce) => {
let token = this.getUserToken();
// let uploadUrl = '1111'
let uploadUrl = window.SITE_CONFIG['apiURL'] + '/oss/file/function/upload'
let uploadUrl =
window.SITE_CONFIG["apiURL"] + "/oss/file/function/upload";
// :data="{customerId:customerId}"
// let uploadUrl = constants.userUploadUrl
// eslint-disable-next-line global-require
require('./zh_CN')
require("./zh_CN");
let conf = {
selector: `#${this.tinymceId}`,
language: 'zh_CN',
menubar: 'false',
skin_url: '/' + process.env.VUE_APP_PUBLIC_PATH + '/tinymce/skins/ui/tduck',
content_style: 'p {margin:3px 0; border:0px; padding:0px}',
content_css: '/' + process.env.VUE_APP_PUBLIC_PATH + '/tinymce/skins/content/tduck',
cache_suffix: '?v=0.0.1',
language: "zh_CN",
menubar: "false",
skin_url:
"/" + process.env.VUE_APP_PUBLIC_PATH + "/tinymce/skins/ui/tduck",
content_style: "p {margin:3px 0; border:0px; padding:0px}",
content_css:
"/" +
process.env.VUE_APP_PUBLIC_PATH +
"/tinymce/skins/content/tduck",
cache_suffix: "?v=0.0.1",
plugins,
toolbar,
toolbar_drawer: 'sliding',
toolbar_mode: 'sliding',
toolbar_drawer: "sliding",
toolbar_mode: "sliding",
height: 400,
// fontsize_formats: "8pt 10pt 12pt 14pt 18pt 24pt 36pt",
branding: false,
object_resizing: false,
end_container_on_empty_block: true,
powerpaste_word_import: 'clean',
powerpaste_word_import: "clean",
// code_dialog_height: 450,
// code_dialog_width: 1000,
// autoresize_max_height: 450, //
// autoresize_min_height: 350, //
advlist_bullet_styles: 'square',
advlist_number_styles: 'default',
default_link_target: '_blank',
advlist_bullet_styles: "square",
advlist_number_styles: "default",
default_link_target: "_blank",
link_title: false,
statusbar: false,
nonbreaking_force_tab: true,
// images_upload_url: uploadUrl,
images_upload_handler: function (blobInfo, succFun, failFun) {
var xhr, formData
var file = blobInfo.blob()// file
xhr = new XMLHttpRequest()
xhr.withCredentials = false
xhr.open('POST', uploadUrl)
xhr.setRequestHeader('token', token)
var xhr, formData;
var file = blobInfo.blob(); // file
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open("POST", uploadUrl);
xhr.setRequestHeader("token", token);
xhr.onload = function () {
var json
var json;
if (xhr.status != 200) {
failFun('HTTP Error: ' + xhr.status)
return
failFun("HTTP Error: " + xhr.status);
return;
}
json = JSON.parse(xhr.responseText)
if (!json || typeof json.data.url != 'string') {
failFun('Invalid JSON: ' + xhr.responseText)
return
json = JSON.parse(xhr.responseText);
if (!json || typeof json.data.url != "string") {
failFun("Invalid JSON: " + xhr.responseText);
return;
}
succFun(json.data.url)
}
formData = new FormData()
succFun(json.data.url);
};
formData = new FormData();
formData.append('file', file, file.name)//
formData.append("file", file, file.name); //
// formData.append('customerId', '111')
xhr.send(formData)
}
}
conf = Object.assign(conf, this.$attrs)
conf.init_instance_callback = editor => {
if (this.value) editor.setContent(this.value)
this.vModel(editor)
}
xhr.send(formData);
},
};
conf = Object.assign(conf, this.$attrs);
conf.init_instance_callback = (editor) => {
if (this.value) editor.setContent(this.value);
this.vModel(editor);
};
tinymce.init(conf)
})
tinymce.init(conf);
});
},
destroyed () {
this.destroyTinymce()
destroyed() {
this.destroyTinymce();
},
methods: {
vModel (editor) {
vModel(editor) {
// setContent
const debounceSetContent = debounce(250, editor.setContent)
this.$watch('value', (val, prevVal) => {
const debounceSetContent = debounce(250, editor.setContent);
this.$watch("value", (val, prevVal) => {
if (editor && val !== prevVal && val !== editor.getContent()) {
if (typeof val !== 'string') val = val.toString()
debounceSetContent.call(editor, val)
if (typeof val !== "string") val = val.toString();
debounceSetContent.call(editor, val);
}
})
});
editor.on('change keyup undo redo', () => {
this.$emit('input', editor.getContent())
})
editor.on('blur', () => {
this.$emit('blur')
})
editor.on("change keyup undo redo", () => {
this.$emit("input", editor.getContent());
});
editor.on("blur", () => {
this.$emit("blur");
});
console.log('init_instance_callback1111111111')
},
getUserToken () {
let token = localStorage.getItem('token')
getUserToken() {
let token = localStorage.getItem("token");
// console.log('token', token)
// return this.$store.getters['user/isLogin']
return token
return token;
},
destroyTinymce () {
if (!window.tinymce) return
const tinymce = window.tinymce.get(this.tinymceId)
destroyTinymce() {
if (!window.tinymce) return;
const tinymce = window.tinymce.get(this.tinymceId);
if (tinymce) {
tinymce.destroy()
tinymce.destroy();
}
}
}
}
},
},
};
</script>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save