duanliangtao 1 year ago
parent
commit
1f2c79f118
  1. 4
      .env.development
  2. 2
      .env.production.sit
  3. 2
      README.md
  4. 1
      package.json
  5. BIN
      src/assets/images/index/father.png
  6. BIN
      src/assets/images/index/girl.png
  7. BIN
      src/assets/images/index/grandma.png
  8. BIN
      src/assets/images/index/grandpa.png
  9. BIN
      src/assets/images/index/home.png
  10. BIN
      src/assets/images/index/loading.png
  11. BIN
      src/assets/images/index/mother.png
  12. BIN
      src/assets/images/index/son.png
  13. BIN
      src/assets/images/shuju/renfang/index/zhiding.png
  14. 434
      src/assets/scss/modules/index.scss
  15. 11
      src/assets/scss/modules/management/form-main.scss
  16. 4
      src/assets/scss/modules/management/list-main.scss
  17. 73
      src/assets/scss/pages/resiAdd.scss
  18. 151
      src/assets/scss/pages/resiInfo.scss
  19. 110
      src/assets/scss/pages/smartImport.scss
  20. 27
      src/components/GridTree/nodeWrap.vue
  21. 73
      src/components/JwTree/nodeWrap.vue
  22. 2
      src/components/NameSplit/index.vue
  23. 4
      src/components/ren-dept-tree/src/ren-dept-tree.vue
  24. 2
      src/components/ren-process-running/src/ren-task-back.vue
  25. 2
      src/components/ren-process-running/src/ren-task-entrust.vue
  26. 2
      src/components/ren-process-running/src/ren-task-handle.vue
  27. 2
      src/components/ren-process-running/src/select-user.vue
  28. 4
      src/components/ren-region-tree/src/ren-region-tree.vue
  29. 16
      src/js/columns/constants/index.js
  30. 8
      src/main.js
  31. 52
      src/router/index.js
  32. 40
      src/views/components/CForm.vue
  33. 2
      src/views/components/CTable.vue
  34. 2
      src/views/components/CTableNoPage.vue
  35. 2
      src/views/components/CTree.vue
  36. 2
      src/views/components/CTreeDialogSingle.vue
  37. 1413
      src/views/components/addResi.vue
  38. 4
      src/views/components/checkBox.vue
  39. 3058
      src/views/components/editResi.vue
  40. 950
      src/views/components/editResiCopy.vue
  41. 4
      src/views/components/rangeInput.vue
  42. 12
      src/views/components/resiChangeTransfer.vue
  43. 403
      src/views/components/resiExpand/editExpand.vue
  44. 359
      src/views/components/resiExpand/index.vue
  45. 36
      src/views/components/resiForm.vue
  46. 2
      src/views/components/resiInfo.vue
  47. 20
      src/views/components/resiInfo/ensureHouseDto/index.vue
  48. 20
      src/views/components/resiInfo/oldPeopleDto/index.vue
  49. 20
      src/views/components/resiInfo/parymemberInfoDto/index.vue
  50. 20
      src/views/components/resiInfo/postDto/index.vue
  51. 20
      src/views/components/resiInfo/specialSupportDto/index.vue
  52. 20
      src/views/components/resiInfo/unitedFrontDto/index.vue
  53. 20
      src/views/components/resiInfo/veteranDto/index.vue
  54. 20
      src/views/components/resiInfo/volunteerDto/index.vue
  55. 677
      src/views/components/resiSearch.vue
  56. 6
      src/views/components/resiTransfer.vue
  57. 2
      src/views/components/scoreRecord.vue
  58. 30
      src/views/components/smartSearchRule.vue
  59. 2
      src/views/components/tinymce/example/Index.vue
  60. 4
      src/views/components/tinymce2/index.vue
  61. 2
      src/views/dataBoard/cpts/details/jmxq.vue
  62. 2
      src/views/dataBoard/cpts/details/smyd.vue
  63. 2
      src/views/dataBoard/cpts/details/xqwmz.vue
  64. 26
      src/views/dataBoard/cpts/details/yxwxfw.vue
  65. 9
      src/views/dataBoard/cpts/event-details.vue
  66. 2
      src/views/dataBoard/cpts/family/modules/BusinessRecords.vue
  67. 2
      src/views/dataBoard/cpts/family/modules/businessTables/reporting-events.vue
  68. 6
      src/views/dataBoard/cpts/homeDetails/index.vue
  69. 4
      src/views/dataBoard/cpts/map/popup.vue
  70. 373
      src/views/dataBoard/cpts/old-event-details.vue
  71. 2
      src/views/dataBoard/cpts/personnel/modules/BusinessRecords.vue
  72. 2
      src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue
  73. 3
      src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue
  74. 2
      src/views/dataBoard/cpts/resi-details.vue
  75. 2
      src/views/dataBoard/fifteen/components/index.vue
  76. 2
      src/views/dataBoard/organizational/dangTree/index.vue
  77. 417
      src/views/dataBoard/organizational/index.vue
  78. 19
      src/views/dataBoard/organizational/jwTree/index.vue
  79. 272
      src/views/dataBoard/organizational/microgrid/components/reportAnOldEvent.vue
  80. 2
      src/views/dataBoard/organizational/microgrid/index.vue
  81. 11
      src/views/dataBoard/overview/components/Bmysxxq.vue
  82. 2
      src/views/dataBoard/overview/components/DemandCharts.vue
  83. 2
      src/views/dataBoard/overview/components/DemandCharts2.vue
  84. 2
      src/views/dataBoard/overview/components/EventAndFollowUp.vue
  85. 3
      src/views/dataBoard/overview/components/EventDetail.vue
  86. 8
      src/views/dataBoard/overview/components/EventDispatchOrder/Assign.vue
  87. 20
      src/views/dataBoard/overview/components/EventDispatchOrder/TransferService.vue
  88. 2
      src/views/dataBoard/overview/components/EventDispatchOrder/index.vue
  89. 4
      src/views/dataBoard/overview/components/MapDialog/DemandList.vue
  90. 2
      src/views/dataBoard/overview/components/MapDialog/DisputeDispatch.vue
  91. 2
      src/views/dataBoard/overview/components/MapDialog/ResourceDispatch.vue
  92. 4
      src/views/dataBoard/overview/components/MapResourceInfoMore.vue
  93. 14
      src/views/dataBoard/overview/components/ResourceInfo.vue
  94. 42
      src/views/dataBoard/overview/components/ResourceScheduling.vue
  95. 6
      src/views/dataBoard/overview/components/ServiceDetails.vue
  96. 2
      src/views/dataBoard/overview/components/Supervision.vue
  97. 2
      src/views/dataBoard/overview/components/jdjs.vue
  98. 4
      src/views/dataBoard/overview/components/map-top.vue
  99. 4
      src/views/dataBoard/overview/potentialPeople/index.vue
  100. 2
      src/views/dataBoard/renfang/cpts/rkfx.vue

4
.env.development

@ -1,9 +1,9 @@
NODE_ENV=development
# VUE_APP_API_SERVER = https://epmet-preview.elinkservice.cn/api
# VUE_APP_API_SERVER = http://localhost:8080/api
# VUE_APP_API_SERVER = http://192.168.1.60:8080/api
VUE_APP_API_SERVER = http://219.146.91.110:30801/api
# VUE_APP_API_SERVER = http://219.146.91.110:30801/api
# VUE_APP_API_SERVER = http://219.146.91.110:30801/api219.146.91.110:30801
# VUE_APP_API_SERVER = https://epmet-yantai.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api

2
.env.production.sit

@ -1,7 +1,7 @@
NODE_ENV=production
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
# VUE_APP_API_SERVER = http://192.168.1.140/api
VUE_APP_API_SERVER = http://219.146.91.110:30801/api
# VUE_APP_API_SERVER = http://192.168.1.60:8080/api
VUE_APP_BIPASS_API_SERVER = http://dcommunity-dev.elinkservice.cn:30801/linkdata/linkdata-gateway/route
VUE_APP_NODE_ENV=prod:sit
VUE_APP_PUBLIC_PATH=epmet-oper

2
README.md

@ -19,3 +19,5 @@ npm run build
```
npm run lint
```
export NODE_OPTIONS=--max-old-space-size=4096

1
package.json

@ -48,6 +48,7 @@
"proj4": "^2.8.0",
"qs": "^6.7.0",
"quill": "^1.3.6",
"relation-graph": "^2.1.31",
"screenfull": "^4.2.1",
"sortablejs": "^1.12.0",
"svg-sprite-loader": "^4.1.6",

BIN
src/assets/images/index/father.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
src/assets/images/index/girl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
src/assets/images/index/grandma.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
src/assets/images/index/grandpa.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
src/assets/images/index/home.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
src/assets/images/index/loading.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/assets/images/index/mother.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
src/assets/images/index/son.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
src/assets/images/shuju/renfang/index/zhiding.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

434
src/assets/scss/modules/index.scss

@ -1,39 +1,123 @@
@import "../c/config";
@import "../c/function";
// .g-row {
// padding: 5px 6px;
// display: flex;
// height: 100%;
// .g-row-left {
// margin-right: auto;
// width: calc(66%);
// flex-direction: column;
// // justify-content: space-around;
// }
// .g-row-right {
// display: flex;
// margin-left: auto;
// width: calc(34% - 16px);
// flex-direction: column;
// justify-content: space-around;
// }
// }
.white-box {
background-color: white;
margin-top: 10px;
box-shadow: 0px 6px 16px 0px rgba(0, 0, 0, 0.08), 0px 3px 6px -4px rgba(0, 0, 0, 0.12);
flex-grow: 1;
max-height: calc(50% - 10px);
overflow: hidden scroll;
position: relative;
}
// .echart{
// position: absolute;
// // left: -20px;
// top: 10px;
// width: 1004px;
// user-select: none;
// -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
// padding: 0px;
// margin: 0px;
// border-width: 0px;
// height: 260px;
// }
.noe-text {
position: relative;
// position: fixed;
padding-left: 14px;
height: 16px;
margin-right: 10px;
font-size: 15px;
z-index: 1;
display: flex;
justify-content: space-between;
background: white;
// max-width: calc(100% - 20px);
width: 100%;
// overflow-x: auto;
}
.noe-text::before {
content: "";
position: absolute;
top: 5px;
left: 0;
height: 70%;
width: 4px;
background-color: #2683DB;
}
.g-row {
padding: 5px 6px;
display: flex;
height: 100%;
align-items: stretch;
.g-row-left {
margin-right: auto;
width: calc(66%);
display: flex;
// margin-right: auto;
margin-right: 10px;
width: calc(60% - 25px);
flex-direction: column;
justify-content: space-around;
// justify-content: space-around;
}
.g-row-right {
display: flex;
margin-left: auto;
width: calc(34% - 16px);
margin-right: 5px;
flex-grow: 0.5;
width: calc(40% - 25px);
flex-direction: column;
justify-content: space-around;
}
}
.m-box {
flex-grow: 1;
position: relative;
padding: 16px;
// padding: 16px;
margin-top: 10px;
margin-left: 10px;
background: #ffffff;
box-shadow: 0px 6px 16px 0px rgba(0, 0, 0, 0.08), 0px 3px 6px -4px rgba(0, 0, 0, 0.12);
border-radius: 2px;
.merw {
background: #000;
margin-top: 10px;
}
.header {
padding: 4px 0;
font-size: 15px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
line-height: 17px;
margin-top: 16px;
margin-left: 10px;
> img {
>img {
vertical-align: bottom;
margin-right: 5px;
width: 17px;
@ -41,6 +125,14 @@
}
}
.newqsa {
border-left: 4px solid #2683DB;
height: 100%;
// width: 4px;
margin-left: -10px;
padding-left: 8px;
}
.more {
position: absolute;
top: 14px;
@ -62,11 +154,38 @@
.m-search {
box-sizing: border-box;
padding: 40px 80px;
margin-bottom: 16px;
height: 280px;
background-image: url("../../images/index/chaxun-bg.png");
padding: 0px 16px;
margin-bottom: 10px;
height: 220px;
display: flex;
flex-direction: column;
// background-image: url("../../images/index/chaxun-bg.png");
background-size: cover;
position: relative;
.wrap {
width: 100%;
}
.mewq {
// background-color: #333;
margin-top: 24px;
width: inherit;
height: 64px;
box-sizing: border-box;
display: grid;
grid-template-columns: repeat(7, 1fr);
gap: 5px;
text-align: center;
}
.boxss {
background-color: #F8F8F8;
border-radius: 10px;
}
.title {
height: 47px;
@ -80,7 +199,8 @@
margin-top: 24px;
display: flex;
align-items: center;
> div {
>div {
position: relative;
margin-right: 30px;
width: 56px;
@ -95,13 +215,16 @@
&:hover {
color: $c1_on;
}
&.z-on {
color: #ffffff;
background: $c1;
margin-left: 10px;
&:hover {
color: #ffffff;
}
&::after {
content: "";
display: block;
@ -126,7 +249,9 @@
.search-input {
position: relative;
width: 60%;
left: 0;
right: 0;
width: 100%;
height: 48px;
background: #ffffff;
border-radius: 4px;
@ -182,6 +307,7 @@
font-weight: 500;
color: #ffffff;
cursor: pointer;
&:hover {
background: $c1_on;
}
@ -200,6 +326,7 @@
font-weight: 500;
color: $c1;
cursor: pointer;
img {
width: 20px;
height: 20px;
@ -216,134 +343,148 @@
.m-pan {
position: relative;
box-sizing: border-box;
width: 100%;
height:calc( 100vh - 420px);
// width: 100%;
// height:calc( 82vh - 420px);
height: calc(82vh - 460px);
overflow: hidden;
.flex_box{
height:calc(100% - 30px);
width: 100%;
overflow: hidden;
.cnt {
margin-top: 20px;
display: flex;
overflow: hidden;
.flex_box {
height: 100%;
.cnt-left {
box-sizing: border-box;
padding: 16px;
width: 240px;
height: 402px;
background: #f5f7fa;
border-radius: 2px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
line-height: 24px;
width: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
.cnt {
margin-top: 20px;
display: flex;
overflow: hidden;
height: 100%;
.subtitle {
padding: 4px 0;
font-size: 15px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
flex: 1;
.cnt-left {
box-sizing: border-box;
padding: 16px;
width: 240px;
height: 402px;
background: #f5f7fa;
border-radius: 2px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
line-height: 17px;
&:last-of-type {
margin-top: 40px;
}
line-height: 24px;
height: 100%;
> img {
vertical-align: bottom;
margin-right: 5px;
width: 17px;
height: 17px;
}
}
}
.cnt-right {
.list {
margin-bottom: 71px;
.item {
margin-bottom: 30px;
display: flex;
align-items: center;
font-size: 14px;
.subtitle {
padding: 4px 0;
font-size: 15px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(44, 53, 66, 0.85);
line-height: 24px;
cursor: pointer;
color: rgba(0, 0, 0, 0.85);
line-height: 17px;
&:hover {
color: $c1;
&:last-of-type {
margin-top: 40px;
}
.item-name {
margin-left: 5px;
width: 80px;
flex-shrink: 0;
>img {
vertical-align: bottom;
margin-right: 5px;
width: 17px;
height: 17px;
}
}
}
.item-div {
width: 1px;
height: 12px;
background: #d8d8d8;
border-radius: 1px;
}
.cnt-right {
.list {
margin-bottom: 71px;
margin-left: 10px;
.item {
margin-bottom: 30px;
display: flex;
align-items: center;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(44, 53, 66, 0.85);
line-height: 24px;
cursor: pointer;
.item-count {
margin-left: 20px;
width: 90px;
flex-shrink: 0;
}
&:hover {
color: $c1;
}
.item-per {
min-width: 70px;
}
.item-name {
margin-left: 5px;
width: 80px;
flex-shrink: 0;
}
.item-progress {
margin-right: 15px;
width: 100%;
height: 24px;
background: #e6f0ff;
border-radius: 1px;
overflow: hidden;
b {
display: block;
.item-div {
width: 1px;
height: 12px;
background: #d8d8d8;
border-radius: 1px;
}
.item-count {
margin-left: 20px;
width: 90px;
flex-shrink: 0;
}
.item-per {
min-width: 70px;
}
.item-progress {
margin-right: 15px;
width: 100%;
height: 24px;
background: #7ba6e6;
background: #e6f0ff;
border-radius: 1px;
overflow: hidden;
b {
display: block;
height: 24px;
background: #7ba6e6;
}
}
}
}
}
}
::v-deep .el-tabs__content {
overflow: scroll !important;
height: 100% !important;
::v-deep .el-tabs__content {
overflow: scroll !important;
height: 100% !important;
}
}
}
}
}
.m-tx {
margin-bottom: 13px;
width: 100%;
height:calc( 100vh - 430px);
// margin-bottom: 13px;
// width: 100%;
height: 200px;
overflow: hidden;
padding-right: 5px;
box-sizing: border-box;
// padding-right: 5px;
// box-sizing: border-box;
// flex-grow: 1;
// overflow: hidden scroll;
.cnt {
box-sizing: border-box;
margin-top: 12px;
border-radius: 2px;
overflow:hidden scroll ;
overflow: hidden scroll;
height: calc(100% - 50px);
.empty {
text-align: center;
color: #999;
img {
display: block;
width: 120px;
@ -354,13 +495,17 @@
.item {
padding: 16px 0 7px;
border-bottom: 1px dashed #f0f5fa;
&:last-child {
border-bottom: none;
}
display: flex;
align-items: center;
.item_right{
.item_right {
flex: 1;
.item-title {
@include toe;
height: 22px;
@ -369,23 +514,29 @@
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
line-height: 22px;
margin-left: 10px;
&:hover {
color: $c1;
cursor: pointer;
}
}
.item-date {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.45);
line-height: 17px;
margin-left: 10px;
}
}
.item_left{
.item_left {
width: 40px;
margin-right:15px;
.i-tag{
margin-right: 15px;
.i-tag {
display: block;
margin-right: 15px;
width: 40px;
@ -401,13 +552,15 @@
font-weight: 600;
}
}
}
}
}
.m-tb {
height: 302px;
.m-tb {
height: 238px;
display: flex;
flex-direction: column;
.cnt {
box-sizing: border-box;
margin-top: 20px;
@ -437,9 +590,11 @@
color: #333333;
line-height: 24px;
}
.item-btns {
margin-left: auto;
display: flex;
.item-btn {
display: flex;
align-items: center;
@ -449,19 +604,23 @@
font-weight: 400;
color: $c1;
text-align: center;
&:hover {
color: $c1_on;
cursor: pointer;
}
&:last-child {
margin-right: 2px;
}
img {
display: block;
width: 15px;
height: 15px;
margin-right: 2px;
}
span {
display: block;
}
@ -470,3 +629,48 @@
}
}
}
.table-container {
// max-height: 300px;
overflow-y: auto;
}
.table {
border-collapse: collapse;
width: 90%;
margin: 0 auto;
// height: auto;
margin-top: 45px;
}
.table th,
.table td {
border: 1px solid rgb(230, 230, 230);
padding: 8px;
text-align: center;
}
.table th {
background-color: #F5F7FB;
padding: 8px;
text-align: center;
width: 100px;
}
.row {
display: flex;
}
.cell {
border: 1px solid #F5F7FB;
padding: 8px;
}
.special-header {
background-color: #FFFCF1;
/* 设置特定表头的背景颜色为 #FFFCF1 */
}
.update-settings {
margin-right: 25px;
display: flex;
align-items: center;
}

11
src/assets/scss/modules/management/form-main.scss

@ -29,8 +29,15 @@
.list_item_width_3 {
width: 185px;
}
.u-item-width-communitycascader{
width: 141px;
}
.u-item-width-buildcascader{
width: 96px;
}
.u-item-width-agency {
width: 200px;
}
.item_width_5{
width: 320px;
}

4
src/assets/scss/modules/management/list-main.scss

@ -28,7 +28,7 @@
}
//查询栏---分开的日期时间范围的宽度
.u-item-width-daterange{
width: 206px;
width: 209px;
}
//查询栏---后方带一个文字长度
.u-item-width-normal-text{
@ -62,7 +62,7 @@
height: auto;
}
.u-item-width-service{
width: 218px;
width: 220px;
}
}

73
src/assets/scss/pages/resiAdd.scss

@ -0,0 +1,73 @@
.div_form {
height: 100%;
padding:16px;
.item_width_1{
width: 498px;
}
.form{
background-color: #fff;
padding:16px;
.flex_box{
display: flex;
flex-wrap: wrap;
.flex_item_width1{
width: 332px;
}
.flex_item_width2{
width: 700px;
}
.flex_item_width3{
width: 120px;
}
.flex_item_width4{
width: 300px;
}
}
}
}
h5 {
position: relative;
font-size: 16px;
margin: 22px 0;
&::after {
content: "";
position: absolute;
display: inline-block;
left: -15px;
top: -0px;
width: 5px;
height: 16px;
background-color: #0056d6;
}
}
.basicInfo, .house, .expand {
::v-deep .el-form-item{
margin-bottom: 24px;
}
}
.font-color-orange{
::v-deep .el-form-item__label{
color:#ff5107 ;
}
}
.font-color-blue{
::v-deep .el-form-item__label{
color:#3876f2;
position: relative;
&::before{
content: '*';
position: absolute;
top: 0px;
left: 16px;
}
}
}
.font-color-blue2{
::v-deep .el-form-item__label{
&::before{
left: 2px;
}
}
}

151
src/assets/scss/pages/resiInfo.scss

@ -0,0 +1,151 @@
.g-main{
display: flex;
box-sizing: border-box;
height:auto;
padding: 24px 16px 0;
.left{
min-width: 184px;
margin-right: 16px;
background: #ffffff;
.user{
display: flex;
flex-direction: column;
height: 120px;
justify-content: center;
align-items: center;
position: relative;
font-weight: bold;
color: #000000;
&::after{
content: '';
position: absolute;
bottom: 0;
left: 16px;
width: 152px;
height: 1px;
background: #EBEDF0;
}
img{
width: 50px;
height: 56px;
margin-bottom: 10px;
}
}
.menu{
.progress{
padding: 0 16px;
box-sizing: border-box;
.text{
display: flex;
justify-content: space-between;
align-items: center;
margin:9px 0px 11px 0px;
font-size: 12px;
>:nth-child(2){
color: #0056D6;
font-size: 14px;
font-weight: bold;
}
}
}
.list{
margin-top:14px ;
.item{
margin-bottom: 8px;
height: 38px;
color: #333333;
padding-left: 16px;
cursor: pointer;
line-height: 38px;
.full{
color: #0056d6;
}
.incomplete{
color: #ff5107;
}
}
.active{
background: #F7FAFF;
color: #0056D6 !important;
position: relative;
&::after{
content: '';
position: absolute;
right: 0;
width: 4px;
height: 37px;
background: #0056D6;
}
}
}
}
}
.right{
flex: 1;
width: 100%;
height: 100%;
background: #ffffff;
position: relative;
padding-bottom: 16px;
.editBtn{
z-index: 10;
position: absolute;
right: 16px;
top: 16px;
}
.title-small{
font-size: 16px;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
position: relative;
padding-left: 11px;
margin-left: 0px;
margin-top: 22px;
}
.flex_box{
display: flex;
flex-wrap: wrap;
.f-flex{
margin-top: 23px;
width: 332px;
align-items: center;
.f-label {
width: 100px;
text-align: right;
color: rgba(51, 51, 51, .85) ;
>b{
font-weight: 400;
position: relative;
color: rgba(51, 51, 51, .85) ;
&::after{
content: '*';
position: absolute;
top: 0px;
color: #ff5107;
left: -7px;
}
}
}
}
}
.f-labels{
width: 155px;
text-align: right;
}
.f-m-top23{
margin-top: 23px;
}
}
}
::v-deep .el-button--text{
padding: 0;
}

110
src/assets/scss/pages/smartImport.scss

@ -0,0 +1,110 @@
.m-detail-main {
padding: 20px 20px 0;
.title-small{
position: relative;
&::after{
content: '';
width: 4px;
height: 16px;
background-color: #0056d6;
position: absolute;
left: -20px;
top: 0px;
}
}
}
.font_color_red{
color: red;
}
.content_box{
display: flex;
.left{
width: 50%;
.rotate{
animation: rotate 5s infinite linear;
}
.u-item-width-normal{
width: 240px;
}
.text-center{
width: calc( 100% - 20px);
height: 175px;
display: flex;
justify-content: center;
align-items: center;
.el-upload__text{
color: #c5c9d1;
width: 100%;
}
/deep/ .el-upload {
width: 100%;
.el-upload-dragger{
width: 100%;
}
}
}
}
.right{
padding: 15px;
width: 50%;
background: #f5f7fa;
border-radius: 3px;
h4{
margin-top: 0;
line-height: 19px;
}
.textBtn{
padding: 0px;
margin: 0 5px;
}
}
}
.steps {
width: 80%;
/deep/ .el-step__main {
position: absolute;
left: 24px;
top: -5px;
z-index: 10;
background: #fff;
width: 100px;
padding-left: 10px;
}
/deep/ .is-finish {
.el-step__icon {
background: #0056d6;
color: #fff;
}
}
/deep/ .is-process {
color: #000;
font-weight: 400;
.el-step__icon {
background: #cbcbcb;
color: #fff;
border-color: #cbcbcb;
}
}
/deep/ .is-wait {
color: #000;
.el-step__icon {
background: #cbcbcb;
color: #fff;
border-color: #cbcbcb;
}
}
/deep/ .el-step__description{
width: 300px;
color: #666666;
}
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(-360deg);
}
}

27
src/components/GridTree/nodeWrap.vue

@ -62,6 +62,7 @@
</div>
</template>
<script>
import { requestGet } from "@/js/dai/request";
export default {
props: ["nodeConfig"],
data() {
@ -108,8 +109,29 @@ export default {
}
}
},
getChildrenData(item, idx, arr) {
arr.forEach((element, index) => {
async getChildrenData(item, idx, arr) {
if(item.level === "building_chief"){
let url = '/gov/org/organizational/neighborhood/getUnitGridOrgTreeList'
let parm = {
bulidingId:item.id
}
const {data,code,msg} = await requestGet(url,parm)
if(code === 0){
arr.forEach((element, index) => {
if (index === idx) {
if (element.children) {
element._children = data;
element.children = null;
} else {
element.children = data;
}
} else {
element.children = null;
}
});
}
}else{
arr.forEach((element, index) => {
if (index === idx) {
if (element.children) {
element._children = element.children;
@ -121,6 +143,7 @@ export default {
element.children = null;
}
});
}
},
gotoPersonnel(item) {
const grandPid = this.findParentParentId(this.nodeConfig, item.pid);

73
src/components/JwTree/nodeWrap.vue

@ -18,28 +18,29 @@
<div class="auto-judge">
<div v-if="getOnerSixLevelFlag(item)">
<div :class="[item.children && item.children.length > 0 ? 'wgdzbHover' : 'wgdzb']">
<nameSplit :item="item" areaName="organizationName" peopleName="name" pageName="居委组织架构" />
<nameSplit :item="item" areaName="organizationName" peopleName="name" />
</div>
<div v-if="item._children" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if="item.children && item.children.length > 0" :src="require('@/assets/images/home/sh.png')" alt="" />
<div v-if="item.childCount>0" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if=" item.zkFlag" :src="require('@/assets/images/home/sh.png')" alt="" />
<img v-else :src="require('@/assets/images/home/zk.png')" alt="" />
</div>
</div>
<div v-if="item.level === 'building_chief'">
<div :class="[item.children && item.children.length > 0 ? 'lydxzHover' : 'lydxz']">
<nameSplit :item="item" areaName="organizationName" peopleName="name" pageName="居委组织架构" />
<nameSplit :item="item" areaName="organizationName" peopleName="name" />
</div>
<div v-if="item._children" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if="item.children && item.children.length > 0" :src="require('@/assets/images/home/sh.png')" alt="" />
<div v-if="item.childCount>0" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if=" item.zkFlag " :src="require('@/assets/images/home/sh.png')" alt="" />
<img v-else :src="require('@/assets/images/home/zk.png')" alt="" />
</div>
</div>
<div v-if="item.level === 'unit_chief' || item.level === 'public_welfare_post'">
<div @click="gotoPersonnel(item.resiId, '居委组织架构')" :class="[item.children && item.children.length > 0 ? 'dyzxhHover' : 'dyzxh', 'gotoDesc']" :title="item.organizationName">
{{ spliceNameFun(item.organizationName, 3) }}
<div v-if="item.level === 'unit_chief'|| item.level === 'public_welfare_post'">
<div @click="gotoPersonnel(item.resiId, '居委组织架构')" :class="[item.categoryWarn === 'red' ? 'dyzxhRed' : item.categoryWarn === 'yellow' ? 'dyzxhYellow' : item.categoryWarn === 'green' ? 'dyzxhGreen' : '', item.children && item.children.length > 0 ? 'dyzxhHover' : 'dyzxh']" :title="item.organizationName">
<!-- {{ spliceNameFun(item.organizationName, 3) }} -->
{{ item.organizationName }}
</div>
<div v-if="item._children" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if="item.children && item.children.length > 0" :src="require('@/assets/images/home/sh.png')" alt="" />
<div v-if="item.childCount>0" style="text-align: center; cursor: pointer" @click="getChildrenData(item, index, nodeConfig.children)">
<img v-if=" item.zkFlag" :src="require('@/assets/images/home/sh.png')" alt="" />
<img v-else :src="require('@/assets/images/home/zk.png')" alt="" />
</div>
</div>
@ -61,6 +62,7 @@
</div>
</template>
<script>
import { requestGet } from "@/js/dai/request";
export default {
props: ["nodeConfig"],
data() {
@ -69,7 +71,9 @@ export default {
sixLevelArr: ["province", "city", "district", "street", "community", "grid_manager"],
};
},
mounted() {},
mounted() {
},
computed: {},
watch: {},
methods: {
@ -84,24 +88,59 @@ export default {
return this.sixLevelArr.includes(item.level);
},
getChildrenData(item, idx, arr) {
arr.forEach((element, index) => {
async getChildrenData(item, idx, arr) {
if(item.level != "street"){
let url = '/gov/org/organizational/neighborhood/getNeighborhoodCommitteeOrgTreeListByLevel'
let parm = {
orgId:item.id,
level:item.level
}
const {data,code,msg} = await requestGet(url,parm)
if(code === 0){
this.$EventBus.$emit('handelClickJWNode',data)
data.forEach(item=>{
item.zkFlag = !item.childCount>0
item.children = null
})
arr.forEach((element, index) => {
if (index === idx) {
if (element.children) {
console.log(item);
element.zkFlag = false;
element.children = null;
} else {
element.zkFlag = true;
element.children = data;
}
} else {
element.children = null;
element.zkFlag = false;
}
});
}
}else{
arr.forEach((element, index) => {
if (index === idx) {
if (element.children) {
element._children = element.children;
element.zkFlag = false;
element._children = element.children
element.children = null;
} else {
element.zkFlag = true;
element.children = element._children;
}
} else {
element.children = null;
element.zkFlag = false;
}
});
}
},
gotoPersonnel(id, name) {
if (id) {
this.$router.push(`/organizational/orgPersonnel/${name}`);
this.$router.push({ path: `/organizational/orgPersonnel/${name}`, query: { user_id: id } });
} else {
this.$message({
message: "无法跳转",

2
src/components/NameSplit/index.vue

@ -1,6 +1,6 @@
<template>
<div class="node-com">
<div v-if="!flag" class="nodeTitle" :title="getAllName(item[areaName])">{{ spliceNameFun(item[areaName], 7) }}</div>
<div v-if="!flag" class="nodeTitle" >{{ getAllName(item[areaName]) }}</div>
<div class="name_more peoName" v-if="item[peopleName] && !item[peopleName].includes(',')" @click="gotoPersonnel(item.resiId)" :title="getAllName(item[peopleName])">{{ spliceNameFun(item[peopleName], 12) }}</div>
<div class="name_more" v-if="item[peopleName] && item[peopleName].includes(',')">
<span v-for="(i, k) in getItemNameArr(item[peopleName])" :key="i" @click="gotoPersonnel(item.resiId.split(',')[k])" :title="getAllName(i)">{{ spliceNameFun(i, 12) }}{{ k === getItemNameArr(item[peopleName]).length - 1 ? "" : "," }}</span>

4
src/components/ren-dept-tree/src/ren-dept-tree.vue

@ -1,13 +1,13 @@
<template>
<div>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-input v-model.trim="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
<el-input v-model.trim="filterText"></el-input>
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>

2
src/components/ren-process-running/src/ren-task-back.vue

@ -2,7 +2,7 @@
<el-dialog :visible.sync="visible" :title="$t('process.doBackRollback')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.comment')" prop="comment">
<el-input type="textarea" v-model="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
<el-input type="textarea" v-model.trim="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
</el-form-item>
</el-form>
<template slot="footer">

2
src/components/ren-process-running/src/ren-task-entrust.vue

@ -2,7 +2,7 @@
<el-dialog :visible.sync="visible" :title="$t('process.entrustTask')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.assignee')">
<el-input v-model="dataForm.entrustUserName" class="input-with-select">
<el-input v-model.trim="dataForm.entrustUserName" class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="selectUserInfo()"></el-button>
</el-input>
</el-form-item>

2
src/components/ren-process-running/src/ren-task-handle.vue

@ -2,7 +2,7 @@
<el-dialog :visible.sync="visible" :title="handleTitle" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.comment')" prop="comment">
<el-input type="textarea" v-model="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
<el-input type="textarea" v-model.trim="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
</el-form-item>
</el-form>
<template slot="footer">

2
src/components/ren-process-running/src/select-user.vue

@ -3,7 +3,7 @@
<div class="mod-sys__user">
<el-form :inline="true" size="mini" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.username" :placeholder="$t('user.username')" clearable></el-input>
<el-input v-model.trim="dataForm.username" :placeholder="$t('user.username')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>

4
src/components/ren-region-tree/src/ren-region-tree.vue

@ -1,6 +1,6 @@
<template>
<div class="ren-region">
<el-input v-model="showName"
<el-input v-model.trim="showName"
:placeholder="placeholder"
@focus="treeDialog">
<el-button slot="append"
@ -18,7 +18,7 @@
<el-form size="mini"
:inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
<el-input v-model.trim="filterText"></el-input>
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>

16
src/js/columns/constants/index.js

@ -2,13 +2,17 @@
* @Author: mk 2403457699@qq.com
* @Date: 2023-08-01 10:13:40
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2023-08-04 18:02:54
* @LastEditTime: 2024-02-27 19:04:44
* @Description: 此文件针对于本地字典,常用的男女或者是否一类需要在前端写的可以在此文件中添加
*
*
*/
// constants.js
export const genderList = [
{
label: '未知',
value: '0'
},
{
label: '男',
value: '1'
@ -49,6 +53,16 @@ export const disabilityFlagList = [
value: 0
}
]
export const hasOptions = [
{
label: '有',
value: 1
},
{
label: '无',
value: 0
}
]
export const dormitoryTypeList = [
{
label: '楼长',

8
src/main.js

@ -2,7 +2,7 @@
* @Author: mk 2403457699@qq.com
* @Date: 2022-12-16 09:05:10
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2023-08-10 16:49:19
* @LastEditTime: 2024-05-07 15:54:09
* @Description: 全局挂载提示信息,避免同时出现多条信息
*
*
@ -38,12 +38,17 @@ import util from "@js/util";
import Moment from "moment";
import getQueryPara from "dai-js/modules/getQueryPara";
import NodeWrap from "@/components/Tree/nodeWrap.vue";
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
// import AddNode from "@/components/Tree/addNode.vue";
import NodeWrapJw from "@/components/JwTree/nodeWrap.vue";
import NodeWrapGrid from "@/components/GridTree/nodeWrap.vue";
import PopTips from "@/components/PopTips/index.vue";
import PopHomeTip from "@/components/PopHomeTip/index.vue";
import NameSplit from "@/components/NameSplit/index.vue";
import RelationGraph from "relation-graph";
// import AddNodeJw from "@/components/JwTree/addNode.vue";
//按钮
Vue.component("nodeWrap", NodeWrap);
@ -76,6 +81,7 @@ Vue.use(Element, {
size: "default",
i18n: (key, value) => i18n.t(key, value),
});
Vue.use(RelationGraph);
Vue.prototype.$message = message;
Vue.prototype.$moment = Moment;

52
src/router/index.js

@ -98,6 +98,26 @@ export const moduleRoutes = {
],
},
},
{
path: "notice-version",
props: true,
name: "notice-version",
component: () => import("@/views/modules/home/cpts/notice_version_update"),
meta: {
isTab: true,
title: "版本更新",
},
},
{
path: "base-nonIntResi",
props: true,
name: "base-nonIntResi",
component: () => import("@/views/modules/base/nonIntResi/nonIntResi"),
meta: {
isTab: true,
title: "信息不完整",
},
},
{
path: "shequ-chaxun",
props: true,
@ -119,10 +139,10 @@ export const moduleRoutes = {
},
},
{
path: "fangwu-huaxiang",
path: "house-huaxiang",
props: true,
name: "fangwu-huaxiang",
component: () => import("@/views/modules/portrayal/fangwu/index"),
name: "house-huaxiang",
component: () => import("@/views/modules/portrayal/house/index"),
meta: {
isTab: true,
title: "",
@ -137,7 +157,27 @@ export const moduleRoutes = {
isTab: true,
title: "",
},
}
},
{
path: "add-resi",
props: true,
name: "add-resi",
component: () => import("@/views/components/addResi"),
meta: {
isTab: true,
title: "新增居民",
},
},
{
path: "edit-resi",
props: true,
name: "edit-resi",
component: () => import("@/views/components/editResi"),
meta: {
isTab: true,
title: "编辑居民",
},
}
],
};
// pc端菜单的 如果没有配置 默认的 或者配置了默认的 但没有权限 默认选中第一
@ -912,6 +952,10 @@ router.beforeEach((to, from, next) => {
to.meta.title = store.state.huaXiang.userInfo.name
return next();
}
if (to.name === 'house-huaxiang') {
to.meta.title = store.state.huaXiang.houseInfo.houseName
return next();
}
if (to.name === 'fangwu-huaxiang') {
to.meta.title = store.state.huaXiang.houseInfo.doorName
return next();

40
src/views/components/CForm.vue

@ -19,7 +19,7 @@
:style="{width:column.itemWidth?column.itemWidth:itemWidth}">{{column.format?column.format(model[column.key]):model[column.key]}}</span>
<el-input v-else-if="column.type === 'input'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:readonly="column.readonly?column.readonly:false"
:disabled="column.disabled?column.disabled:false"
:placeholder="column.placeholder?column.placeholder:column.title"
@ -32,7 +32,7 @@
<el-input v-if="column.type === 'password'"
type="password"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:readonly="column.readonly?column.readonly:false"
:disabled="column.disabled?column.disabled:false"
:placeholder="column.placeholder?column.placeholder:column.title"
@ -106,7 +106,7 @@
<!--计数器-->
<el-input-number v-else-if="column.type === 'counter'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:step="column.option&&column.option.step?column.option.step:1"
:min="column.option&&column.option.min?column.option.min:0"
:max="column.option&&column.option.max?column.option.max:100"
@ -117,7 +117,7 @@
<!--单选按钮组-->
<el-radio-group v-else-if="column.type === 'radio'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:disabled="column.disabled?column.disabled:false"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}">
<el-radio v-for="item in optionData[column.key]"
@ -129,7 +129,7 @@
<!--多选按钮组-->
<el-checkbox-group v-else-if="column.type === 'checkbox'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:min="0"
:max="8"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}">
@ -142,7 +142,7 @@
<!--下拉列表-->
<el-select v-else-if="column.type === 'select'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
clearable
:disabled="column.disabled?column.disabled:false"
:filterable="column.filterable?column.filterable:false"
@ -158,7 +158,7 @@
<!-- 终端管理特殊下拉列表 -->
<el-select v-else-if="column.type === 'select1'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
clearable
:filterable="column.filterable?column.filterable:false"
:placeholder="column.placeholder?column.placeholder:column.title"
@ -173,7 +173,7 @@
<!--布控级别下拉列表-->
<!-- <el-select v-else-if="column.type === 'select1'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
clearable
:filterable="column.filterable?column.filterable:false"
:placeholder="column.placeholder?column.placeholder:column.title"
@ -190,7 +190,7 @@
<!--多选下拉列表-->
<el-select v-else-if="column.type === 'multselect'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
multiple
:placeholder="column.placeholder?column.placeholder:column.title"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}">
@ -208,7 +208,7 @@
placement="bottom"
style="padding:0px"
:width="column.itemWidth?column.itemWidth:itemWidth"
v-model="imgPopVisible"
v-model.trim="imgPopVisible"
trigger="click">
<div v-for="item in optionData[column.key]"
@ -235,7 +235,7 @@
<!--switch开关-->
<el-switch v-else-if="column.type === 'switch'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
active-color="#13ce66"
inactive-color="#ff4949"
:disabled="column.disabled?column.disabled:false">
@ -251,12 +251,12 @@
resize="none"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}"
:placeholder="column.placeholder?column.placeholder:column.title"
v-model="model[column.key]">
v-model.trim="model[column.key]">
</el-input>
<!--日期选择器-->
<el-date-picker v-else-if="column.type === 'date'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@ -268,7 +268,7 @@
<!--月份选择器-->
<el-date-picker v-else-if="column.type === 'month'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="month"
format="yyyy-MM"
value-format="yyyy-MM"
@ -280,7 +280,7 @@
<!--日期时间选择器-->
<el-date-picker v-else-if="column.type === 'datetime'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="datetime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
@ -292,7 +292,7 @@
<!--时间选择器-->
<el-time-picker v-else-if="column.type === 'time'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="time"
format="HH:mm:ss"
value-format="HH:mm:ss"
@ -303,7 +303,7 @@
<!--日期区域选择器-->
<el-date-picker v-else-if="column.type === 'daterange'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
@ -316,7 +316,7 @@
<!--日期时间区域选择器-->
<el-date-picker v-else-if="column.type === 'datetimerange'"
v-show="column.showFlag==='1' ? column.show : true"
v-model="model[column.key]"
v-model.trim="model[column.key]"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
@ -340,14 +340,14 @@
id="file"
@change="getFile($event)" />
<!-- <el-input type=file
:v-model="model[column.key]"></el-input> -->
:v-model.trim="model[column.key]"></el-input> -->
</template>
<!-- 级联选择器-->
<el-cascader v-else-if="column.type === 'cascader'"
clearable
filterable
size="medium"
v-model="model[column.key]"
v-model.trim="model[column.key]"
:placeholder="column.placeholder?column.placeholder:column.title"
:style="{width:column.itemWidth?column.itemWidth:itemWidth}"
:options="optionData[column.key]"

2
src/views/components/CTable.vue

@ -29,7 +29,7 @@
center>
<template slot-scope="scope">
<el-radio :label="scope.row.id"
v-model="templateRadio"
v-model.trim="templateRadio"
@change.native="getRadioRow(scope.$index,scope.row)">&nbsp;</el-radio>
</template>
</el-table-column>

2
src/views/components/CTableNoPage.vue

@ -29,7 +29,7 @@
center>
<template slot-scope="scope">
<el-radio :label="scope.row.id"
v-model="templateRadio"
v-model.trim="templateRadio"
@change.native="getRadioRow(scope.$index,scope.row)">&nbsp;</el-radio>
</template>
</el-table-column>

2
src/views/components/CTree.vue

@ -3,7 +3,7 @@
<div class="el-tree-node">
<div class="filter-input">
<el-input placeholder="输入关键字进行过滤"
v-model="filterText"
v-model.trim="filterText"
clearable>
</el-input>
</div>

2
src/views/components/CTreeDialogSingle.vue

@ -6,7 +6,7 @@
<el-input readonly
style="width:100%"
v-model="inputValue"
v-model.trim="inputValue"
:placeholder="placeholder">
<el-button slot="append"

1413
src/views/components/addResi.vue

File diff suppressed because it is too large

4
src/views/components/checkBox.vue

@ -2,10 +2,10 @@
<div v-loading="loading">
<el-checkbox
:indeterminate="isIndeterminate"
v-model="checkAll"
v-model.trim="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 15px 0;"></div>
<el-checkbox-group v-if="boxList.length > 0" v-model="checkedList" @change="handleChange">
<el-checkbox-group v-if="boxList.length > 0" v-model.trim="checkedList" @change="handleChange">
<div v-for="n in boxList" :key="n.itemId" class="mb10">
<el-checkbox :label="n.itemId">{{n.label}}</el-checkbox>
</div>

3058
src/views/components/editResi.vue

File diff suppressed because it is too large

950
src/views/components/editResiCopy.vue

@ -0,0 +1,950 @@
<template>
<div :id="formId"
class="resi-container">
<el-form :ref="formId"
class="resi-form"
:model="form"
:rules="rulesForm"
:label-width="labelWidth">
<template v-if="supportAdd">
<el-row style="margin-bottom: 10px;">
<el-col :span="24">
<el-button icon="el-icon-plus"
size="small"
@click="handleAddRow"></el-button>
</el-col>
</el-row>
<edit-form v-for="(item, index) in addList"
:key="index"
:ref="'baseForms' + index"
:columns="3"
:form-list="item.itemList || formList"
:form-id="'baseForms' + item.row" />
</template>
<template v-else>
<el-row v-if="fixed"
class="resi-row">
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> -->
<el-col :span="6">
<el-form-item prop="GRID_ID"
label="所属网格">
<!-- <div class="resi-cell"> -->
<!-- <div class="resi-cell-label">{{n.label}}</div> -->
<div class="resi-cell-value">
<el-select v-model.trim="form.GRID_ID"
:disabled="disabled"
placeholder="请选择网格"
size="small"
clearable
class="resi-cell-select"
@change="handleChangeGrid">
<el-option v-for="item in optionsG"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<!-- </div> -->
</el-form-item>
</el-col>
<el-col :span="18">
<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"
:disabled="disabled"
@change="handleChangeV">
<el-option v-for="item in optionsV"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="BUILD_ID">
<el-select v-model.trim="form.BUILD_ID"
placeholder="请选择楼号"
size="small"
clearable
:disabled="disabled"
class="resi-cell-select resi-cell-select-middle"
@change="handleChangeB">
<el-option v-for="item in optionsB"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="UNIT_ID">
<el-select v-model.trim="form.UNIT_ID"
placeholder="请选择单元"
size="small"
clearable
:disabled="disabled"
class="resi-cell-select resi-cell-select-middle"
@change="handleChangeD">
<el-option v-for="item in optionsD"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="HOME_ID">
<el-select v-model.trim="form.HOME_ID"
placeholder="请选择房号"
size="small"
clearable
:disabled="disabled"
class="resi-cell-select resi-cell-select-middle"
@change="handleChangeH">
<el-option v-for="item in optionsH"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<!-- <el-col :span="6">
</el-col>
<el-col :span="6">
</el-col>
<el-col :span="6">
</el-col>
<el-col :span="6">
</el-col> -->
</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" :disabled="disabled" placeholder="请选择楼号" size="small"
clearable class="resi-cell-select"
>
<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" :disabled="disabled" placeholder="请选择" size="small"
clearable class="resi-cell-select"
>
<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" :class="{'width-40':index==3||index==2||index==4||index==5}">
<!-- <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.itemType != 'radio'?n.label:''">
<!-- <div class="resi-cell"> -->
<!-- <div class="resi-cell-label">{{n.label}}</div> -->
<div class="resi-cell-value">
<template v-if="n.itemType === 'input' || n.itemType === 'textarea'">
<!-- <span v-if="n.columnName==='MOBILE'||n.columnName==='ID_CARD'">{{ form[n.columnName]||'--'}}</span> -->
<el-input v-if="n.columnName==='MOBILE'||n.columnName==='ID_CARD'"
v-model.trim="form[n.columnName]"
:disabled="disabled"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
<el-input v-else-if="n.validType"
v-model.trim="form[n.columnName]"
:disabled="disabled"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
<el-input v-else
v-model.trim="form[n.columnName]"
:disabled="disabled"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入内容">
</el-input>
</template>
<!-- <template v-if="n.itemType === 'textarea'">
<el-input
v-model.trim="form[n.columnName]"
class="resi-cell-textarea"
size="small"
type="textarea"
clearable
placeholder="请输入内容"
>
</el-input>
</template> -->
<el-date-picker v-else-if="n.itemType === 'datepicker'"
v-model.trim="form[n.columnName]"
:disabled="disabled"
class="resi-cell-input"
type="date"
size="small"
clearable
placeholder="选择日期"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker>
<el-date-picker v-else-if="n.itemType === 'daterange'"
v-model.trim="form[n.columnName]"
:disabled="disabled"
type="daterange"
align="right"
unlink-panels
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
<el-time-picker v-else-if="n.itemType === 'timepicker'"
v-model.trim="form[n.columnName]"
:disabled="disabled"
placeholder="任意时间点">
</el-time-picker>
<el-time-picker v-else-if="n.itemType === 'timerange'"
v-model.trim="form[n.columnName]"
:disabled="disabled"
is-range
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围">
</el-time-picker>
<el-select v-else-if="n.itemType === 'select'"
v-model.trim="form[n.columnName]"
:multiple="n.multiSelect"
:disabled="disabled"
placeholder="请选择"
size="small"
clearable
class="resi-cell-select">
<el-option v-for="item in n.options || options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<!-- <el-cascader
:options="options"
:props="{ checkStrictly: true }"
clearable></el-cascader> -->
<el-cascader v-else-if="n.itemType === 'cascader'"
v-model.trim="form[n.columnName]"
:options="n.options"
:disabled="disabled"
:props="{ emitPath: false }"
clearable
size="small"
class="resi-cell-select">
</el-cascader>
<template v-else-if="n.itemType === 'radio'">
<!-- <el-radio v-for="ns in n.options"
:key="ns.value"
v-model.trim="form[n.columnName]"
:disabled="disabled"
:label="ns.value">
{{ ns.label }}
</el-radio> -->
<el-checkbox-group v-model.trim="form[n.columnName]">
<el-checkbox
:key="n.value"
:label="n.value"
:disabled="disabled">{{n.label}}</el-checkbox>
<!-- <el-checkbox label="n.la"></el-checkbox> -->
</el-checkbox-group>
<!-- <el-radio v-model.trim="form[n.columnName]" label="1">备选项</el-radio> -->
</template>
<template v-else-if="n.itemType === 'checkbox'">
<el-checkbox-group v-model.trim="form[n.columnName]">
<el-checkbox v-for="ns in n.options"
:key="ns.value"
:label="ns.value"
:disabled="disabled">{{ns.label}}</el-checkbox>
<!-- <el-checkbox label="n.la"></el-checkbox> -->
</el-checkbox-group>
</template>
</div>
<!-- </div> -->
</el-form-item>
</el-col>
</el-row>
</template>
</el-form>
</div>
</template>
<script>
import { isCard, isMobile, isPhone } from '@/utils/validate'
import { requestPost } from "@/js/dai/request";
export default {
name: 'editForm',
props: {
editUserId: {
type: String,
default: ''
},
fixed: {
type: Boolean,
default: false
},
labelWidth: {
type: String,
default: '100px'
},
formId: {
type: String,
default: 'resiForm'
},
agencyId: {
type: String,
default: ''
},
formList: {
type: Array,
default: function () {
return []
}
},
formInfo: {
type: Object,
default: function () {
return {}
}
},
mutiList: {
type: Array,
default: function () {
return []
}
},
//
columns: {
type: Number,
default: 3
},
supportAdd: { //
type: Boolean,
default: false
},
disabled: { //
type: Boolean,
default: false
}
},
data () {
// let form = {}
// let rules = {}
let checkMObile = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入联系电话'))
} else {
if (!isMobile(value) && !isPhone(value)) {
callback(new Error('联系电话格式不正确'))
}
callback()
}
}
let checkIdCard = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入证件号'))
} else {
if (!isCard(value)) {
callback(new Error('请输入正确的证件号或护照号'))
}
callback()
}
}
let initForm = (obj, arr) => {
let _form = {}
// console.log('formInfo', obj)
if (Object.keys(obj).length > 0) {
_form = { ...obj }
// return _form
}
const itemTypes = ['daterange', 'timerange']
arr.forEach(item => {
if (item.multiSelect || itemTypes.includes(item.itemType)) {
if (item.columnValue && item.columnValue.indexOf(',') > -1) _form[item.columnName] = item.columnValue.split(',')
else _form[item.columnName] = (item.columnValue && [item.columnValue]) || []
} else _form[item.columnName] = item.columnValue || ''
})
// console.log('_from0000---', arr)
return _form
}
let initRules = (arr) => {
let rules = {}
arr.forEach(item => {
if (item.required) {
if (item.validType === 'mobile') {
rules[item.columnName] = [
{ required: true, validator: checkMObile, trigger: 'blur' }
]
} else if (item.validType === 'id_card') {
rules[item.columnName] = [
{ required: true, validator: checkIdCard, trigger: 'blur' }
]
} else {
rules[item.columnName] = [
{ required: true, message: `请输入${item.label}`, trigger: 'blur' }
]
}
}
})
return rules
}
let form = initForm(this.formInfo, this.formList)
let rules = initRules(this.formList)
let tempFormList = [...this.formList]
let constForm = {
...form
}
console.log('-----------------哈哈哈哈哈哈rules', rules)
return {
openSearch: false,
fixedForm: {
GRID_ID: '',
VILLAGE_ID: '',
BUILD_ID: '',
UNIT_ID: '',
HOME_ID: ''
},
fixedList: {},
form: {
...form
},
constForm,
tempFormList,
addCount: 0,
addList: [],
rulesForm: {
...rules,
VILLAGE_ID: [{ required: true, message: `请选择小区`, trigger: 'blur' }],
GRID_ID: [{ required: true, message: `请选择网格`, trigger: 'blur' }],
BUILD_ID: [{ required: true, message: `请选择楼号`, trigger: 'blur' }],
UNIT_ID: [{ required: true, message: `请选择单元`, trigger: 'blur' }],
HOME_ID: [{ required: true, message: `请选择房号`, trigger: 'blur' }]
},
// rules,
value: '',
optionsV: [],
optionsB: [],
optionsH: [],
optionsG: [],
optionsD: [],
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', [start, end])
}
}, {
text: '最近一个月',
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
picker.$emit('pick', [start, end])
}
}, {
text: '最近三个月',
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
picker.$emit('pick', [start, end])
}
}]
}
}
},
computed: {
sliceList () {
return function (data, count) {
if (data !== undefined) {
let index = 0
let arrTemp = []
let arrTemp1 = []
let arr1 = []
let arr2 = []
let _i = 0
let _index = 0
for (let i = 0; i < data.length; i++) {
if (data[i].itemType === 'divider' || data[i].itemType === 'checkbox') {
_i = i + 1
}
}
arr1 = data.slice(0, _i)
arr2 = data.slice(_i, data.length)
for (let i = 0; i < arr1.length; i++) {
index = parseInt(i / count)
if (arrTemp.length <= index) {
arrTemp.push([])
}
arrTemp[index].push(arr1[i])
}
for (let i = 0; i < arr2.length; i++) {
_index = parseInt(i / count)
if (arrTemp1.length <= _index) {
arrTemp1.push([])
}
arrTemp1[_index].push(arr2[i])
}
arrTemp = arrTemp.concat(arrTemp1)
return arrTemp
}
}
}
},
watch: {
form: {
handler (val, val2) {
console.log('valpppp----', val, val2)
for (let n in val) {
if (this.constForm[n] !== val[n]) {
this.handleChangeForm(n)
console.log('nnnnnn', n)
this.handleChangeGroup(n, val[n])
}
}
this.constForm = { ...val }
},
deep: true
}
},
created () {
this.initForm()
console.log('formInfo---gggreg', this.rulesForm)
console.log('formList', this.formList)
if (this.supportAdd) {
this.addList = [...this.mutiList]
// console.log('addList----111', this.addList)
}
if (this.fixed) {
this.getGridList()
this.getValiheList()
this.getBuildList()
this.getUniList()
this.getHouseList()
}
},
mounted () {
console.log('this.editUserId', this.editUserId)
if (this.editUserId) {
this.handleTuomin()
}
},
methods: {
async handleTuomin () {
const url = "/data/aggregator/epmetuser/detailByType";
const { data, code, msg } = await requestPost(url, {
id: this.editUserId,
type: "checkIcResiUser",
});
if (code === 0) {
this.$set(this.form, 'MOBILE', data.mobile)
this.$set(this.form, 'ID_CARD', data.idCard)
} else {
this.$message.error(msg);
}
},
initForm () {
this.formList.forEach(async item => {
if (item.optionSourceType === 'remote') {
await this.getOptionsLists(item.optionSourceValue).then(res => {
item.options = this.getTreeData(res)
})
}
})
},
getTreeData (data) {
if (!Array.isArray(data)) return []
let arr = data.map(item => {
let _item = {}
if (item.children) {
if (item.children.length === 0) _item = { ...item, children: undefined }
else _item = { ...item, children: this.getTreeData(item.children) }
} else {
_item = { ...item }
}
return _item
})
return arr
},
handleOpenSearch () {
this.openSearch = !this.openSearch
},
handleAddRow () {
this.addList.push({
row: this.addList.length,
itemList: this.formList
})
},
//
handleFiexedForm (val) {
let item = {
[val]: this.fixedForm[val]
}
this.fixedList.push(item)
this.$set(this.fixedList, val, this.fixedForm[val])
},
//
handleChangeGroup (columnName, value) {
this.tempFormList.forEach(item => {
if (item.columnName === columnName && item.itemType === 'radio' && item.childGroup) {
console.log('columnName', item.columnName, columnName)
this.$emit('changegroup', { value, childGroup: item.childGroup })
}
})
},
// form
handleChangeForm (val) {
if (this.fixed) {
for (let n in this.fixedForm) {
if (n === val) {
this.$set(this.fixedList, val, this.form[val])
}
}
}
this.tempFormList.forEach(item => {
if (item.columnName === val) item.isChange = true
})
},
handleChange () {
// this.handleForm()
},
handleChangeGrid (val) {
console.log('val', val)
this.form.VILLAGE_ID = ''
this.form.BUILD_ID = ''
this.form.UNIT_ID = ''
this.form.HOME_ID = ''
this.getValiheList()
this.getBuildList()
this.getUniList()
this.getHouseList()
},
handleChangeV (val) {
console.log('val', val)
this.form.BUILD_ID = ''
this.form.UNIT_ID = ''
this.form.HOME_ID = ''
this.getBuildList()
this.getUniList()
this.getHouseList()
},
handleChangeB (val) {
console.log('val', val)
this.form.UNIT_ID = ''
this.form.HOME_ID = ''
this.getUniList()
this.getHouseList()
},
handleChangeD () {
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 => {
// console.log('handlerMuscForm----000', this.$refs['baseForms' + item.row || item][0].handleForm())
arr.push([...this.$refs['baseForms' + item.row][0].handleForm()])
})
if (arr.length === 0) return arr
let arr2 = arr.reduce(function (a, b) { return a.concat(b) })
let hash = {}
let i = 0
let res = []
// let finalArr = []
arr2.forEach((item) => {
let name = item.tableName
if (hash[name]) {
res[hash[name] - 1].list.push(...item.list)
} else {
hash[name] = ++i
res.push({
list: [...item.list],
supportAdd: this.supportAdd,
tableName: name
})
}
})
return res
},
resetForm () {
this.$refs[this.formId].resetFields()
},
handleForm () {
let newForm = []
this.$refs[this.formId].validate((valid) => {
if (valid) {
var hash = {}
var i = 0
var res = []
let ID = this.tempFormList[0].ID
this.tempFormList.forEach(function (item) {
var name = item.tableName
hash[name] ? res[hash[name] - 1].list.push(item) : hash[name] = ++i && res.push({
list: [item],
ID: item.ID,
tableName: name
})
})
// console.log('resssssss', res)
const itemTypes = ['cascader', 'daterange', 'timerange']
res.forEach(item => {
let _form = {}
item.list.filter(n => n.isChange).forEach(r => {
_form[r.columnName] = r.multiSelect || itemTypes.includes(r.itemType) ? this.form[r.columnName].toString() : this.form[r.columnName]
if (r.ID) {
_form.ID = r.ID
}
// return _form
})
if (this.fixed) {
for (let n in this.fixedList) {
_form[n] = this.fixedList[n]
}
if (Object.keys(_form).length > 0) {
if (!_form.AGENCY_ID) _form.AGENCY_ID = this.agencyId
}
if (!_form.ID) _form.ID = ID
}
console.log('objeckeyssss', Object.keys(_form), _form)
newForm.push({
tableName: item.tableName,
supportAdd: this.supportAdd,
ID: item.ID,
list: Object.keys(_form).length > 0 ? [{ ..._form }] : []
})
})
console.log('newFormhhhhh', newForm)
return newForm
} else {
console.log('error submit!!')
return false
}
})
if (this.supportAdd) newForm = this.handlerMuscForm()
return newForm
},
async getOptionsLists (url) {
let options = []
// console.log('getOptionsList----', url)
await this.$http
.post(url, { formCode: 'resi_base_info' })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
options = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
return options
},
getGridList () {
const { user } = this.$store.state
let purpose = 'query'
if (this.disabled) purpose = 'query'
else purpose = 'addorupdate'
this.$http
.post('/gov/org/customergrid/gridoption', { agencyId: this.agencyId, purpose })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsG = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getValiheList () {
const { user } = this.$store.state
this.$http
.post('/actual/base/communityQuarters/listQuartersOptions', { gridId: this.form.GRID_ID, agencyId: this.agencyId })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsV = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getBuildList () {
this.$http
.post('/actual/base/communityBuilding/buildingoption', { quartersId: this.form.VILLAGE_ID })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsB = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getUniList () {
this.$http
.post('/actual/base/communityBuildingUnit/unitoption', { buildingId: this.form.BUILD_ID })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsD = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
getHouseList () {
this.$http
.post('/actual/base/communityHouse/houseoption', { unitId: this.form.UNIT_ID })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsH = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
}
}
}
</script>
<style lang="scss" scoped>
.resi-form {
:deep .el-date-editor.el-input,
.el-date-editor.el-input__inner {
width: 100% !important;
}
}
.resi-cell-value .resi-cell-input {
width: 168px;
}
</style>
<style lang="scss" scoped>
.resi-form .resi-row {
margin-bottom: 0;
}
// .resi-form .resi-cell {
// display: flex;
// align-items: center;
// .resi-cell-label {
// width: 70px;
// box-sizing: border-box;
// margin-right: 15px;
// text-align: right;
// }
// .resi-cell-value-radio {
// display: flex;
// align-items: center;
// min-height: 36px;
// }
// .resi-cell-value .resi-cell-input {
// width: 180px;
// }
.resi-cell-value .resi-cell-textarea {
width: 300px;
}
.resi-cell-col {
display: flex;
.el-form-item {
margin-right: 10px;
}
}
.resi-cell-select {
width: 190px;
box-sizing: border-box;
margin-right: 10px;
&-middle {
width: 130px;
}
&-small {
width: 88px;
}
}
.resi-cell-select:last-child {
margin-right: 0;
}
// }
</style>

4
src/views/components/rangeInput.vue

@ -3,7 +3,7 @@
class="demo-form-inline">
<div class="flex-div">
<el-form-item prop="start">
<el-input v-model="inputForm.start"
<el-input v-model.trim="inputForm.start"
class="u-item-width-normal"
size="small"
:type="inputType"
@ -12,7 +12,7 @@
@change="handleChange" />
</el-form-item>
<!-- <el-form-item prop="end">
<el-input v-model="inputForm.end"
<el-input v-model.trim="inputForm.end"
class="wd50"
size="small"
:type="inputType"

12
src/views/components/resiChangeTransfer.vue

@ -19,7 +19,7 @@
<el-form-item label="迁出时间" prop="outOfTime">
<el-date-picker
v-model="dataForm.outOfTime"
v-model.trim="dataForm.outOfTime"
:picker-options="startPickerOptions"
type="date"
value-format="yyyy-MM-dd"
@ -32,7 +32,7 @@
</el-form-item>
<el-form-item label="迁出类型" prop="type" style="display: block">
<el-radio-group v-model="dataForm.type">
<el-radio-group v-model.trim="dataForm.type">
<el-radio :label="'in'">{{
"迁往" + rootAgency.organizationName + "内其他区域"
}}</el-radio>
@ -44,7 +44,7 @@
<el-form-item label="迁出至" prop="agencyId">
<el-cascader
ref="myCascader"
v-model="agencyIdArray"
v-model.trim="agencyIdArray"
class="u-edit-width-normal"
:key="iscascaderShow"
:options="casOptions"
@ -134,7 +134,7 @@
resize="none"
class="u-edit-width-normal"
placeholder="请输入外迁详细地址"
v-model="dataForm.address"
v-model.trim="dataForm.address"
>
</el-input>
</el-form-item>
@ -147,13 +147,13 @@
resize="none"
class="u-edit-width-normal"
placeholder="请输入迁出原因"
v-model="dataForm.reason"
v-model.trim="dataForm.reason"
>
</el-input>
</el-form-item>
<!-- <el-form-item label=""
prop="welfareFlag">
<el-checkbox v-model="dataForm.welfareFlag">享受福利</el-checkbox>
<el-checkbox v-model.trim="dataForm.welfareFlag">享受福利</el-checkbox>
</el-form-item> -->
</el-form>
</div>

403
src/views/components/resiExpand/editExpand.vue

@ -0,0 +1,403 @@
<template>
<div class='g-main'>
<el-form :model="form">
<div v-for="itemH in formList">
<h5>{{ itemH.title }}</h5>
<template v-for="itemj in itemH.form">
<section class="f-flex" style="flex-wrap: wrap;">
<el-form-item v-for="(itemk, index) in itemj.children" :key="index" label-width="160px"
:label="itemk.label" :class="[itemk.itemType == 'textarea' ? 'textareaDidth' : '' ,itemk.check?itemk.check:'']">
<template v-if="itemk.itemType == 'radio1'">
<section class="list_item_width_1">
<el-radio v-for="ns in itemk.opction" :key="ns.value" size="small"
v-model.trim="form[itemj.id][itemk.formName]" :label="ns.value"
@click.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
{{ ns.label }}
</el-radio>
</section>
</template>
<template v-else-if="itemk.itemType == 'select1' && itemk.showFlag !== '0'">
<el-select v-model.trim="form[itemj.id][itemk.formName]" :placeholder="`请选择${itemk.label}`"
size="small" :multiple="itemk.multiple" :collapse-tags="itemk.collapseTags"
clearable
:style="{ 'width': itemk.formName == 'specialCategoryCode' ? '183px' : '' }"
class="list_item_width_1">
<el-option v-for="items in itemk.opction" :key="items.value" :label="items.label"
:value="items.value" @click.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
</el-option>
</el-select>
</template>
<template v-else-if="itemk.itemType == 'textarea1'">
<el-input type="textarea" :placeholder="`请输入${itemk.label}`" class="item-width-textarea"
maxlength="120" size="small" show-word-limit resize="none" rows="3"
v-model.trim="form[itemj.id][itemk.formName]" @change.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
</el-input>
</template>
<template v-else-if="itemk.itemType == 'input1'">
<el-input :placeholder="`请输入${itemk.label}`" class="list_item_width_1" size="small"
:style="{ 'margin-right': itemk.label == '备注' ? '50px' : '' }"
v-model.trim="form[itemj.id][itemk.formName]" clearable @change.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
</el-input>
</template>
<template v-else-if="itemk.itemType == 'inputNum'">
<el-input :placeholder="`请输入${itemk.label}`" size="small" class="list_item_width_1-text"
:style="{ 'margin-right': itemk.label == '备注' ? '50px' : '' }"
v-model.trim="form[itemj.id][itemk.formName]" clearable
@blur="checkNumberInput(itemj.id, itemk.formName)" @change.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
</el-input><span class="u-data-tag"></span>
</template>
<template v-else-if="itemk.itemType == 'checkbox'">
<el-checkbox-group size="small" v-model.trim="form[itemj.id][itemk.formName]">
<el-checkbox v-for="items in itemk.opction" :label="items.value"
:style="{ 'margin-right': items.label != itemk.label ? '' : '19px' }"
:key="items.value" :value="items.value" @click.native="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">{{ items.label }}</el-checkbox>
</el-checkbox-group>
</template>
<template v-else-if="itemk.itemType == 'datepicker1' && itemk.showFlag !== '0'">
<el-date-picker v-model.trim="form[itemj.id][itemk.formName]" class="list_item_width_1"
type="date" size="small" clearable placeholder="选择日期" format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd" @change="handleFormChange(itemj.id,itemk.formName,itemk.itemType)">
</el-date-picker>
</template>
<template v-else-if="itemk.itemType == 'cascader1'">
<el-cascader v-model.trim="form[itemj.id].partyOrgId" :props="casProps"
:options="itemk.opction" class="list_item_width_1" clearable size="small"
@change="handlePartyOrgCascadarChange" ></el-cascader>
<!-- {{form[itemj.id].partyOrgId}} -->
</template>
<template v-else-if="itemk.itemType == 'number'">
<el-input-number class="list_item_width_1" size="small" :min="1" :max="10"
v-model.trim="form[itemj.id][itemk.formName]"></el-input-number>
</template>
</el-form-item>
</section>
</template>
</div>
</el-form>
</div>
</template>
<script>
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
export default {
data() {
return {
formType: null,
formList: [],
treeCheckKeyList:[],
form: {
//
parymemberInfoDto: {
joinTime: null,
positiveTime: null,
partyOrgId: null,
flowFlag: null,
flowActNum: null,
partyJob: null,
duty: null,
retiredFlag: null,
centerFlag: null,
studyNotNeed: null,
joinBranchName: null,
joinCommunityTime: null
},
//
healthDto: {
disabilityCategoryCode: null,
disabilityLevel: null,
disabilityNum: null,
disabilityDesc: null,
guardianFlag: null,
guardianName: null,
guardianMobile:null,
specialSkillFlag: null,
workCapacityFlag: null
},
//
seriousIllnessDto: {
illnessCodes: []
},
//
chronicDiseaseDto: {
chronicDiseaseCodes: []
},
//
deathDto: {
deathTime: null
},
//
oldPeopleDto: {
oldPeopleCategories: [],
resideSituation: null,
oldSubsidy: null
},
//
subsistenceAllowanceDto: {
reasons: [],
category:null ,
},
// 退
veteranDto: {
joinArmyTime: null,
leaveArmyTime: null,
serviceUnit: null,
receiveUnit: null,
settlementAmount: null,
trainDesc: null,
employmentSituation: null,
pubWelfareJobFlag: null
},
//
ensureHouseDto: {
liveCommunity: null,
housingNature: null
},
//
unitedFrontDto: {
unitedFrontType: null
},
//
specialSupportDto: {
specialSupportType: null,//
childName: null,//
childGender: null,//
childDeathDate: null,//
childDisabilityCategoryCode: null,//
childDisabilityLevel: null,//
},
//
volunteerDto: {
volunteerCategory: []
},
},
casProps: {
value: 'id',
label: 'partyOrgName',
lazy: true,
lazyLoad: (node, resolve) => {
this.handleNextOrgTreeClick(node, resolve)
},
checkStrictly: true,
multiple: false,
},
changId:null,
changPid:null,
changType:null,
};
},
props: {
},
created() { },
activated() {
},
mounted() {
},
methods: {
handleFormChange(pid,id,type){
this.changPid = pid;
this.changId = id;
this.changType = type;
nextTick(1000)
this.$emit('submitExpand', this.form,{changId:this.changId,changPid:this.changPid,changType:this.changType})
},
checkNumberInput(itemj, itemk) {
if (this.form[itemj][itemk]) {
if (isNaN(this.form[itemj][itemk])) {
this.$message.error("请输入数字");
this.form[itemj][itemk] = "";
} else {
this.form[itemj][itemk] = parseFloat(
this.form[itemj][itemk]
);
}
}
},
showForm() {
this.$nextTick(() => {
// console.log(this.form,'form');
const promises = this.formList.forEach((item) => {
item.form.map(async (group) => {
return group.children.reduce(async (accPromise, item) => {
const acc = await accPromise;
acc[item.formName] = null;
this.form[item.pformName].id = item.id
if (item.itemType == 'checkbox') {
this.form[item.pformName][item.formName] = item.value || []
} else if (item.itemType == 'cascader1' && item.orgPath) {
await this.getOrgTree()
this.form[item.pformName][item.formName] = item.orgPath.split(':') || null
} else{
this.form[item.pformName][item.formName] = item.value != null?item.value:null;
}
if (item.opctionUrl) {
try {
item.opction = await this.getDictDataForm(item.opctionUrl, item.opctionParams);
} catch (error) {
console.error('Error fetching options:', error);
}
}
return acc;
}, Promise.resolve({}));
})
})
Promise.all(promises).then((results) => {
}).catch((error) => {
console.error('Error fetching options:', error);
});
})
},
async getDictDataForm(url, params) {
try {
const { data } = await this.$http.post(url, params);
return data.data;
} catch (error) {
console.log(error, `获取 ${opctionParams.dictType} 字典`);
}
},
handlePartyOrgCascadarChange(selectedNode) {
this.form.parymemberInfoDto.partyOrgId = selectedNode[selectedNode.length - 1];
this.handleFormChange('parymemberInfoDto','partyOrgId','cascader1')
},
async handleNextOrgTreeClick(node, resolve) {
if(node.children.length>0){
resolve(null)
return
}
await this.getTreeChildenList(node, resolve)
},
async getTreeChildenList(node, resolve) {
if (node.data.partyOrgLevel == 7) {
resolve(null);
return;
}
const url = "/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid"
let params = {
partyOrgPid: node.data.id
}
const { data, code, msg } = await requestGet(url, params)
if (code === 0) {
data.forEach(item => {
item.children = null;
item.leaf = item.partyOrgLevel === 7 || item.childrenQty === 0
});
resolve(data)
} else {
this.$message.error(msg)
}
},
async getOrgTree() {
try {
const { data } = await requestGet('/actual/base/party/org/listPartyOrgTreeRoot4Select',{depth: 8})
this.formList.forEach(c => {
if (c.formId == "parymemberInfoDto") {
for (let i of c.form[0].children) {
if (i.formName == 'partyOrgId') {
i.opction = [data];
}
}
}
})
} catch (error) {
console.log(error);
}
},
},
components: {},
computed: {},
watch: {
'form': {
handler(newVal, oldVal) {
this.$emit('submitExpand', this.form,{changId:this.changId,changPid:this.changPid,changType:this.changType})
},
deep: true,
immediate: true
}
},
}
</script>
<style lang='scss' scoped>
@import "@/assets/scss/modules/management/list-main.scss";
h5 {
position: relative;
font-size: 16px;
margin: 22px 0;
&::after {
content: "";
position: absolute;
display: inline-block;
left: -15px;
top: -0px;
width: 5px;
height: 16px;
background-color: #0056d6;
}
}
.fourFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 73px;
top: 7px;
}
}
.fiveFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 62px;
top: 7px;
}
}
.sixFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 49px;
top: 7px;
}
}
.nineFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 6px;
top: 7px;
}
}
</style>

359
src/views/components/resiExpand/index.vue

@ -0,0 +1,359 @@
<template>
<div class='g-main'>
<el-form :model="form">
<template v-for="itemj in formList">
<section class="f-flex" style="flex-wrap: wrap;">
<el-form-item v-for="(itemk, index) in itemj.children" :key="index" label-width="160px"
:label="itemk.label" :class="[itemk.itemType == 'textarea' ? 'textareaDidth' : '' ,itemk.check?itemk.check:'']">
<template v-if="itemk.itemType == 'radio1'">
<section class="list_item_width_1">
<el-radio v-for="ns in itemk.opction" :key="ns.value" size="small"
v-model.trim="form[itemj.id][itemk.formName]" :label="ns.value">
{{ ns.label }}
</el-radio>
</section>
</template>
<template v-else-if="itemk.itemType == 'select1' && itemk.showFlag !== '0'">
<el-select v-model.trim="form[itemj.id][itemk.formName]" :placeholder="`请选择${itemk.label}`"
size="small" :multiple="itemk.multiple" :collapse-tags="itemk.collapseTags" clearable
:style="{ 'width': itemk.formName == 'specialCategoryCode' ? '183px' : '' }"
class="list_item_width_1">
<el-option v-for="items in itemk.opction" :key="items.value" :label="items.label"
:value="items.value">
</el-option>
</el-select>
</template>
<template v-else-if="itemk.itemType == 'textarea1'">
<el-input type="textarea" :placeholder="`请输入${itemk.label}`" class="item-width-textarea"
maxlength="120" size="small" show-word-limit resize="none" rows="3"
v-model.trim="form[itemj.id][itemk.formName]">
</el-input>
</template>
<template v-else-if="itemk.itemType == 'input1'">
<el-input :placeholder="`请输入${itemk.label}`" class="list_item_width_1" size="small"
:style="{ 'margin-right': itemk.label == '备注' ? '50px' : '' }"
v-model.trim="form[itemj.id][itemk.formName]" clearable>
</el-input>
</template>
<template v-else-if="itemk.itemType == 'inputNum'">
<el-input :placeholder="`请输入${itemk.label}`" size="small" class="list_item_width_1-text"
:style="{ 'margin-right': itemk.label == '备注' ? '50px' : '' }"
v-model.trim="form[itemj.id][itemk.formName]" clearable
@blur="checkNumberInput(itemj.id, itemk.formName)">
</el-input><span class="u-data-tag"></span>
</template>
<template v-else-if="itemk.itemType == 'checkbox'">
<el-checkbox-group size="small" v-model.trim="form[itemj.id][itemk.formName]">
<el-checkbox v-for="items in itemk.opction" :label="items.value"
:style="{ 'margin-right': items.label != itemk.label ? '' : '19px' }" :key="items.value"
:value="items.value">{{ items.label }}</el-checkbox>
</el-checkbox-group>
</template>
<template v-else-if="itemk.itemType == 'datepicker1' && itemk.showFlag !== '0'">
<el-date-picker v-model.trim="form[itemj.id][itemk.formName]" class="list_item_width_1"
type="date" size="small" clearable placeholder="选择日期" format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker>
</template>
<template v-else-if="itemk.itemType == 'cascader1'">
<el-cascader v-model.trim="form[itemj.id].partyOrgId" :props="casProps" :options="itemk.opction"
class="list_item_width_1" clearable size="small"
@change="handlePartyOrgCascadarChange"></el-cascader>
</template>
<template v-else-if="itemk.itemType == 'number'">
<el-input-number class="list_item_width_1" size="small" :min="1" :max="10"
v-model.trim="form[itemj.id][itemk.formName]"></el-input-number>
</template>
</el-form-item>
</section>
</template>
</el-form>
<el-row style="margin:24px" v-if="operationType == 'add'">
<el-col :span="24" align="center">
<el-button size="small" class="diy-button--white" @click="handlerCancle" plain>取消</el-button>
<el-button type="primary" size="small" @click="handleClickSUbmitExpand">保存</el-button>
</el-col>
</el-row>
</div>
</template>
<script>
import { requestPost, requestGet } from "@/js/dai/request";
export default {
data() {
return {
formType: null,
formList: [],
form: {
//
parymemberInfoDto: {
joinTime: null,
positiveTime: null,
partyOrgId: null,
flowFlag: null,
flowActNum: null,
partyJob: null,
duty: null,
retiredFlag: null,
centerFlag: null,
studyNotNeed: null,
joinBranchName: null,
joinCommunityTime: null
},
//
healthDto: {
disabilityCategoryCode: null,
disabilityLevel: null,
disabilityNum: null,
disabilityDesc: null,
guardianFlag: null,
guardianName: null,
specialSkillFlag: null,
workCapacityFlag: null
},
//
seriousIllnessDto: {
illnessCodes: []
},
//
chronicDiseaseDto: {
chronicDiseaseCodes: []
},
//
deathDto: {
deathTime: null
},
//
oldPeopleDto: {
oldPeopleCategories:[],
resideSituation: null,
oldSubsidy:null
},
//
subsistenceAllowanceDto: {
reasons: [],
category: null
},
// 退
veteranDto: {
joinArmyTime: null,
leaveArmyTime: null,
serviceUnit: null,
receiveUnit: null,
settlementAmount: null,
trainDesc: null,
employmentSituation: null,
pubWelfareJobFlag: null
},
//
ensureHouseDto: {
liveCommunity: null,
housingNature: null
},
//
unitedFrontDto: {
unitedFrontType: null
},
//
specialSupportDto: {
specialSupportType: null,//
childName: null,//
childGender: null,//
childDeathDate: null,//
childDisabilityCategoryCode: null,//
childDisabilityLevel: null,//
},
//
volunteerDto: {
volunteerCategory: []
},
},
casProps: {
value: 'id',
label: 'partyOrgName',
lazy: true,
lazyLoad: (node, resolve) => {
this.handleNextOrgTreeClick(node, resolve)
},
isLeaf: (data, node) => {
console.log(data);
//
//el-tree
if (data.partyOrgLevel == 7 || data.childrenQty == 0) {
return true
}
},
checkStrictly: true,
multiple: false,
},
};
},
props: {
operationType:{
type:String,
default:''
}
},
created() {
},
activated() {
this.getOrgTree()
},
mounted() {
},
methods: {
checkNumberInput(itemj, itemk) {
if (this.form[itemj][itemk]) {
if (isNaN(this.form[itemj][itemk])) {
this.$message.error("请输入数字");
this.form[itemj][itemk] = "";
} else {
this.form[itemj][itemk] = parseFloat(
this.form[itemj][itemk]
);
}
}
},
showForm() {
this.$nextTick(() => {
const promises = this.formList.map(async (group) => {
return group.children.reduce(async (accPromise, item) => {
const acc = await accPromise;
acc[item.formName] = null;
if (item.opctionUrl) {
try {
item.opction = await this.getDictDataForm(item.opctionUrl, item.opctionParams);
} catch (error) {
console.error('Error fetching options:', error);
}
}
return acc;
}, Promise.resolve({}));
});
Promise.all(promises).then((results) => {
}).catch((error) => {
console.error('Error fetching options:', error);
});
this.getOrgTree()
console.log(this.form, '子组件form');
console.log(this.formList, '子组件formList');
})
},
async getDictDataForm(url, params) {
try {
const { data } = await this.$http.post(url, params);
return data.data;
} catch (error) {
console.log(error, `获取 ${opctionParams.dictType} 字典`);
}
},
handlerCancle() {
this.$emit('hideExpand', this.formType)
},
handleClickSUbmitExpand() {
this.$emit('submitExpand', this.form, this.formType)
},
handlePartyOrgCascadarChange(selectedNode) {
this.form.parymemberInfoDto.partyOrgId = selectedNode[selectedNode.length - 1];
},
async handleNextOrgTreeClick(node, resolve) {
await this.getTreeChildenList(node, resolve)
},
async getTreeChildenList(node, resolve) {
if (node.data.partyOrgLevel === 7) {
resolve(null);
return;
}
const url = "/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid"
let params = {
partyOrgPid: node.data.id
}
const { data, code, msg } = await requestGet(url, params)
if (code === 0) {
data.forEach(item => {
item.children = null;
item.leaf = item.partyOrgLevel === 7 || item.childrenQty === 0
});
resolve(data)
} else {
this.$message.error(msg)
}
},
async getOrgTree() {
try {
const { data } = await requestGet('/actual/base/party/org/listPartyOrgTreeRoot4Select', { depth: 8 })
this.formList.forEach(c => {
for (let i of c.children) {
if (i.formName == 'partyOrgId') {
i.opction = [data];
}
}
})
} catch (error) {
console.log(error);
}
},
},
components: {},
computed: {},
watch: {},
}
</script>
<style lang='scss' scoped>
@import "@/assets/scss/modules/management/list-main.scss";
.fourFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 73px;
top: 7px;
}
}
.fiveFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 62px;
top: 7px;
}
}
.sixFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 49px;
top: 7px;
}
}
.nineFont{
position: relative;
&::after{
content: '*';
width: 10px;
height: 10px;
color: #ff5107;
position: absolute;
left: 6px;
top: 7px;
}
}
</style>

36
src/views/components/resiForm.vue

@ -14,7 +14,7 @@
ref="myCascader"
clearable
size="small"
v-model=" selGridId"
v-model.trim=" selGridId"
:options="orgOptions"
:props="orgOptionProps"
@change="handleChangeAgency"></el-cascader>
@ -124,7 +124,7 @@
</el-input>
</template>
<template v-else-if="item.itemType == 'select'">
<el-select v-model="form[item.formName]"
<el-select v-model.trim="form[item.formName]"
:placeholder="`请选择${item.label}`"
size="small"
clearable
@ -158,7 +158,7 @@
:true-label="'1'"
:false-label="'0'"
size="small"
v-model="form[items.formName]"
v-model.trim="form[items.formName]"
@change="val => handleChangeCheckbox(items,val)">
</el-checkbox>
</template>
@ -177,8 +177,8 @@
</el-form-item>
</div>
<!-- 这里开始就是底部的input------------------------------------------------------------------->
<el-tabs v-model="activeName"
<!-- 这里开始就是底部的表单------------------------------------------------------------------->
<el-tabs v-model.trim="activeName"
@tab-click="handleClickTab">
<el-tab-pane v-for="item in tabsList"
:key="item.groupId"
@ -193,7 +193,7 @@
<el-form-item label-width="160px"
label="特扶类别">
<el-select v-model="form[itemj.id].specialSupportType"
<el-select v-model.trim="form[itemj.id].specialSupportType"
:placeholder="`请选择特扶类别`"
size="small"
clearable
@ -218,7 +218,7 @@
</el-form-item>
<el-form-item label-width="160px"
label="子女性别">
<el-select v-model="form[itemj.id].childGender"
<el-select v-model.trim="form[itemj.id].childGender"
:placeholder="`请选择子女性别`"
size="small"
clearable
@ -246,7 +246,7 @@
<el-form-item v-if="form[itemj.id].specialSupportType==='2'"
label-width="160px"
label="伤残类别">
<el-select v-model="form[itemj.id].childDisabilityCategoryCode"
<el-select v-model.trim="form[itemj.id].childDisabilityCategoryCode"
:placeholder="`请选择伤残类别`"
size="small"
clearable
@ -261,7 +261,7 @@
<el-form-item v-if="form[itemj.id].specialSupportType==='2'"
label-width="146px"
label="伤残等级">
<el-select v-model="form[itemj.id].childDisabilityLevel"
<el-select v-model.trim="form[itemj.id].childDisabilityLevel"
:placeholder="`请选择伤残等级`"
size="small"
clearable
@ -307,7 +307,7 @@
</section>
</template>
<template v-else-if="itemk.itemType=='select1' &&itemk.showFlag!=='0' ">
<el-select v-model="form[itemj.id][itemk.formName]"
<el-select v-model.trim="form[itemj.id][itemk.formName]"
:placeholder="`请选择${itemk.label}`"
size="small"
:multiple="itemk.multiple"
@ -355,7 +355,7 @@
</template>
<template v-else-if="itemk.itemType=='checkbox'">
<el-checkbox-group size="small"
v-model="form[itemj.id][itemk.formName]">
v-model.trim="form[itemj.id][itemk.formName]">
<el-checkbox v-for="items in itemk.opction"
:label="items.value"
:style="{'margin-right':items.label != itemk.label? '' :'19px'}"
@ -375,7 +375,7 @@
</el-date-picker>
</template>
<template v-else-if="itemk.itemType == 'cascader1'">
<el-cascader v-model="form.parymemberInfoDto.partyOrgId"
<el-cascader v-model.trim="form.parymemberInfoDto.partyOrgId"
:props="casProps"
:options="itemk.opction"
class="u-item-width-normal"
@ -1714,7 +1714,6 @@ export default {
}
},
getValiheList () {
const { user } = this.$store.state
this.$http.post('/actual/base/communityQuarters/listQuartersOptions', { gridId: this.form.gridId, agencyId: user.agencyId }).then(({ data: res }) => {
@ -2299,7 +2298,7 @@ export default {
this.form.remark = data.remark ? data.remark : ''
if (data.categoryInfo) {
this.form.categoryId = data.categoryInfo.id,//
this.form.partyFlag = data.categoryInfo.partyFlag.toString()
this.form.partyFlag = data.categoryInfo.partyFlag.toString()
this.form.subsistenceAllowanceFlag = data.categoryInfo.subsistenceAllowanceFlag.toString()
this.form.ensureHouseFlag = data.categoryInfo.ensureHouseFlag.toString()
this.form.unemployedFlag = data.categoryInfo.unemployedFlag.toString()
@ -2446,9 +2445,10 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg);
} else {
if (res.data && res.data.chronicDiseaseCode) {
res.data.chronicDiseaseCode = res.data.chronicDiseaseCode.split(',')
}else{
res.data.chronicDiseaseCode = []
}
this.form.healthDto = res.data ? res.data : { //
@ -2478,7 +2478,7 @@ export default {
},
//
residentWorkInfo (id) {
if (this.newForm.healthDto) return
if (this.newForm.workInfoDto) return
this.$http.get(`/actual/base/residentWorkInfo/detail/${id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
@ -2932,7 +2932,6 @@ export default {
}
if (this.newForm.volunteerDto) {
this.newForm.volunteerDto = this.form.volunteerDto
}
@ -2946,12 +2945,9 @@ export default {
this.newForm.postDto = this.form.postDto
}
if (this.newForm.tenantDto) {
this.newForm.tenantDto = this.form.tenantDto
}
if (this.newForm.specialSupportDto) {
this.newForm.specialSupportDto = this.form.specialSupportDto
}
},

2
src/views/components/resiInfo.vue

@ -183,7 +183,7 @@
</el-col>
</el-row>
<div class="title-small title_postion f-top40 f-bot24">其他信息</div>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tabs v-model.trim="activeName" @tab-click="handleClick">
<el-tab-pane label="教育">
<div class="f-flex f-bto16 f-top24">
<div class="f-labels">文化程度:</div>

20
src/views/components/resiInfo/ensureHouseDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>保障房</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/oldPeopleDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>老年人</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/parymemberInfoDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>党员</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/postDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>公益岗</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/specialSupportDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>特扶人员</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/unitedFrontDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>统战人员</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/veteranDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>退役军人</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

20
src/views/components/resiInfo/volunteerDto/index.vue

@ -0,0 +1,20 @@
<template>
<div class=''>志愿者</div>
</template>
<script>
export default {
data() {
return {};
},
created() {},
methods: {},
components:{},
computed:{},
watch: {},
}
</script>
<style lang='scss'>
</style>

677
src/views/components/resiSearch.vue

File diff suppressed because it is too large

6
src/views/components/resiTransfer.vue

@ -17,7 +17,7 @@
prop="type"
label-width="150px"
style="display: block">
<el-radio-group v-model="dataForm.type">
<el-radio-group v-model.trim="dataForm.type">
<el-radio :label="'in'">{{'迁往'+rootAgency.organizationName+'内其他区域'}}</el-radio>
<el-radio :label="'out'">其他</el-radio>
@ -30,7 +30,7 @@
prop='newAgencyId'
label-width="150px">
<el-cascader ref="myCascader"
v-model="agencyIdArray"
v-model.trim="agencyIdArray"
style="width:480px"
:key="iscascaderShow"
:options="casOptions"
@ -106,7 +106,7 @@
resize="none"
style="width:600px"
placeholder='请输入备注'
v-model="dataForm.remark">
v-model.trim="dataForm.remark">
</el-input>
</el-form-item>
</el-form>

2
src/views/components/scoreRecord.vue

@ -8,7 +8,7 @@
<el-form-item label="查询时间"
prop="startTime">
<el-date-picker v-model="timeRange"
<el-date-picker v-model.trim="timeRange"
type="daterange"
:clearable="false"
:picker-options="pickerOptions"

30
src/views/components/smartSearchRule.vue

@ -6,7 +6,7 @@
:key="ruleIndex">
<div class="row-item">
<el-select class="item_width_1"
v-model="ruleItem.selSmartType"
v-model.trim="ruleItem.selSmartType"
size="small"
placeholder="请选择">
<el-option v-for="item in smartList"
@ -21,7 +21,7 @@
class="row-item-one">
<el-select class="item_width_1"
v-model="ruleItem.houseRule.colKey"
v-model.trim="ruleItem.houseRule.colKey"
size="small"
placeholder="请选择">
<el-option v-for="item in houseItemList"
@ -32,7 +32,7 @@
</el-option>
</el-select>
<el-select class="item_width_1"
v-model="ruleItem.houseRule.queryType"
v-model.trim="ruleItem.houseRule.queryType"
size="small"
placeholder="请选择">
<el-option v-for="item in queryList"
@ -46,7 +46,7 @@
<el-select v-if="ruleItem.houseRule.colType==='select'||ruleItem.houseRule.colType==='radio'||ruleItem.houseRule.colType==='checkbox'"
class="item_width_2"
v-model="ruleItem.houseRule.colVal"
v-model.trim="ruleItem.houseRule.colVal"
size="small"
placeholder="请选择">
<el-option v-for="item in ruleItem.houseRule.colOption"
@ -58,12 +58,12 @@
</el-select>
<el-input-number v-else-if="ruleItem.houseRule.colType==='inputNum'"
class="item_width_2"
v-model="ruleItem.houseRule.colVal"
v-model.trim="ruleItem.houseRule.colVal"
:min="0"
size="small"
label="请输入"></el-input-number>
<el-date-picker v-else-if="ruleItem.houseRule.colType==='datepicker'||ruleItem.houseRule.colType==='date'"
v-model="ruleItem.houseRule.colVal"
v-model.trim="ruleItem.houseRule.colVal"
class="item_width_2"
type="datetime"
size="small"
@ -75,7 +75,7 @@
class="item_width_2"
size="small"
placeholder="请输入"
v-model="ruleItem.houseRule.colVal">
v-model.trim="ruleItem.houseRule.colVal">
</el-input>
</div>
@ -85,7 +85,7 @@
class="row-item-one">
<el-select class="item_width_1"
v-model="ruleItem.personRule.itemGroupId"
v-model.trim="ruleItem.personRule.itemGroupId"
size="small"
placeholder="请选择">
<el-option v-for="item in groupList"
@ -96,7 +96,7 @@
</el-option>
</el-select>
<el-select class="item_width_1"
v-model="ruleItem.personRule.itemId"
v-model.trim="ruleItem.personRule.itemId"
size="small"
placeholder="请选择">
<el-option v-for="item in ruleItem.personRule.itemList"
@ -107,7 +107,7 @@
</el-option>
</el-select>
<el-select class="item_width_1"
v-model="ruleItem.personRule.queryType"
v-model.trim="ruleItem.personRule.queryType"
size="small"
placeholder="请选择">
<el-option v-for="item in queryList"
@ -121,7 +121,7 @@
<el-select v-if="ruleItem.personRule.colType==='select'||ruleItem.personRule.colType==='radio'||ruleItem.personRule.colType==='checkbox'"
class="item_width_2"
v-model="ruleItem.personRule.colVal"
v-model.trim="ruleItem.personRule.colVal"
size="small"
placeholder="请选择">
<el-option v-for="item in ruleItem.personRule.colOption"
@ -133,13 +133,13 @@
</el-select>
<el-input-number v-else-if="ruleItem.personRule.colType==='inputNum'"
class="item_width_2"
v-model="ruleItem.personRule.colVal"
v-model.trim="ruleItem.personRule.colVal"
:min="0"
size="small"
label="请输入"></el-input-number>
<el-date-picker v-else-if="ruleItem.personRule.colType==='datepicker'||ruleItem.personRule.colType==='date'"
v-model="ruleItem.personRule.colVal"
v-model.trim="ruleItem.personRule.colVal"
class="item_width_2"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
@ -150,7 +150,7 @@
class="item_width_2"
size="small"
placeholder="请输入"
v-model="ruleItem.personRule.colVal">
v-model.trim="ruleItem.personRule.colVal">
</el-input>
</div>
@ -159,7 +159,7 @@
<el-select v-if="ruleIndex<(smartRuleList.length-1)"
class="item_width_1"
v-model="ruleItem.nextLogicalRel"
v-model.trim="ruleItem.nextLogicalRel"
size="small"
placeholder="请选择">
<el-option v-for="item in logicalList"

2
src/views/components/tinymce/example/Index.vue

@ -1,6 +1,6 @@
<template>
<div>
<Tinymce v-model="defaultValue" :height="300" placeholder="在这里输入文字" />
<Tinymce v-model.trim="defaultValue" :height="300" placeholder="在这里输入文字" />
</div>
</template>

4
src/views/components/tinymce2/index.vue

@ -1,6 +1,6 @@
<template>
<editor :id="id" v-model="content" tag-name="div" :init="init" />
<!-- <textarea id="editors" v-model="content" /> -->
<editor :id="id" v-model.trim="content" tag-name="div" :init="init" />
<!-- <textarea id="editors" v-model.trim="content" /> -->
</template>
<script>

2
src/views/dataBoard/cpts/details/jmxq.vue

@ -190,7 +190,7 @@ export default {
}
.eventWrap {
width: 1094px;
// width: 1094px;
height: 798px;
overflow-y: auto;
overflow-x: hidden;

2
src/views/dataBoard/cpts/details/smyd.vue

@ -207,7 +207,7 @@ export default {
}
.eventWrap {
width: 1094px;
// width: 1094px;
max-height: 798px;
overflow-y: auto;
overflow-x: hidden;

2
src/views/dataBoard/cpts/details/xqwmz.vue

@ -291,7 +291,7 @@ export default {
}
.eventWrap {
width: 1094px;
// width: 1094px;
max-height: 798px;
overflow-y: auto;
overflow-x: hidden;

26
src/views/dataBoard/cpts/details/yxwxfw.vue

@ -30,7 +30,8 @@
</div>
<div class="eventItem">
<span>所属组织</span>
<span>{{ formData.principalName }}</span>
<span v-if="formData.gridIdList &&formData.gridIdList.length!=0 ">{{ formData.gridIdList[0].objectName }}</span>
<span v-else> -- </span>
</div>
<div class="eventItem">
<span>服务类型</span>
@ -99,7 +100,7 @@ export default {
item: {},
loading: false,
loading1: false,
activities: [],
// activities: [],
zuziTypes: {
community_org: "社区自组织",
ic_user_volunteer: "志愿者",
@ -180,16 +181,16 @@ export default {
this.$message.error(msg);
}
});
this.$http
.post("/governance/icEvent/process", { icEventId: id })
.then((res) => {
const { code, data, msg } = res.data;
if (code === 0) {
this.activities = data;
} else {
this.$message.error(msg);
}
});
// this.$http
// .post("/governance/icEvent/process", { icEventId: id })
// .then((res) => {
// const { code, data, msg } = res.data;
// if (code === 0) {
// this.activities = data;
// } else {
// this.$message.error(msg);
// }
// });
},
},
};
@ -225,7 +226,6 @@ export default {
font-size: 14px !important;
}
.eventWrap {
width: 1094px;
max-height: 798px;
overflow-y: auto;
overflow-x: hidden;

9
src/views/dataBoard/cpts/event-details.vue

@ -221,6 +221,10 @@ export default {
type: Boolean,
default: false,
},
formType: {
type: String,
default: false,
},
},
data() {
@ -267,7 +271,7 @@ export default {
getDetailsData(id) {
this.loading = true;
this.$http
.post("/governance/icEvent/detail", {icEventId: id})
.post(`/governance/${this.formType == '12345'?'icEvent':'icEventOld'}/detail`, {icEventId: id})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {
@ -279,10 +283,9 @@ export default {
}
});
},
getProcessData(id) {
this.$http
.post("/governance/icEvent/process", {icEventId: id})
.post(`/governance/${this.formType == '12345'?'icEvent':'icEventOld'}/process`, {icEventId: id})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {

2
src/views/dataBoard/cpts/family/modules/BusinessRecords.vue

@ -1,6 +1,6 @@
<template>
<div class="business-records">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange" />
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange" />
<complaint @changeTotal="changeTotal" :juminArr="juminArr" v-show="type == 1" />
<economize @changeTotal="changeTotal" :juminArr="juminArr" v-show="type == 2" />
<community @changeTotal="changeTotal" :juminArr="juminArr" v-show="type == 3" />

2
src/views/dataBoard/cpts/family/modules/businessTables/reporting-events.vue

@ -22,7 +22,7 @@
</template>
<script>
import eventDetails from "../../../event-details.vue";
import eventDetails from "../../../old-event-details.vue";
export default {
name: "reporting-events",
components: {

6
src/views/dataBoard/cpts/homeDetails/index.vue

@ -16,7 +16,7 @@
<el-select
popper-class="selectPopClass"
clearable
v-model="buildingId"
v-model.trim="buildingId"
size="small"
placeholder="请选择楼栋"
@change="getList"
@ -202,7 +202,7 @@
<el-select
popper-class="selectPopClass"
clearable
v-model="queryParams.residentTag"
v-model.trim="queryParams.residentTag"
size="small"
placeholder="居民类型"
>
@ -217,7 +217,7 @@
<el-select
popper-class="selectPopClass"
clearable
v-model="queryParams.riskyFlag"
v-model.trim="queryParams.riskyFlag"
size="small"
placeholder="满意度风险家庭"
>

4
src/views/dataBoard/cpts/map/popup.vue

@ -17,7 +17,7 @@
<div class="item">
<span class="field">姓名</span>
<span>{{ info.user_name || "--" }}</span>
<span>{{ info.name || "--" }}</span>
</div>
<div class="item">
<span class="field">所属网格</span>
@ -34,7 +34,7 @@
</div>
<div class="item">
<span class="field">性别</span>
<span>{{ info.genderShow || "--" }}</span>
<span>{{ info.gender === null?'--' : info.gender === 1 ? '男' : info.gender === 2 ? '女' : '位置' }}</span>
</div>
<div class="item">

373
src/views/dataBoard/cpts/old-event-details.vue

@ -0,0 +1,373 @@
<template>
<el-dialog
width="1118px"
:modal="true"
:modal-append-to-body="false"
:destroy-on-close="true"
:visible="showDialog"
@close="handleClose"
>
<div class="eventWrap"
v-loading="loading"
element-loading-text="加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.5)"
>
<el-row :gutter="32">
<el-col :span="24" style="padding-left: 40px">
<title-box text="事件详情"/>
</el-col>
<el-col
:span="13"
style="padding-left: 40px"
>
<div class="leftEvent">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<div class="eventItem">
<span>所属组织</span>
<span>{{ item.gridName }}</span>
</div>
<div class="eventItem">
<span>上报渠道</span>
<span>{{ item.sourceTypeName }}</span>
</div>
<div class="eventItem">
<span>事件类型</span>
<span>{{ item.categoryName }}</span>
</div>
<div class="eventItem">
<span>接受时间</span>
<span>{{ item.happenTime }}</span>
</div>
<!-- <div class="eventItem">
<span>工单号</span>
<span>{{ item.workOrderNum }}</span>
</div>-->
<div class="eventItem">
<div>问题描述</div>
<div style="margin-top: 20px">{{ item.eventContent }}</div>
</div>
<!-- <div class="eventItem">
<div>图片</div>
<div style="margin-top: 20px; display: flex">
<img
style="width: 100px; height: 100px; margin-right: 5px"
v-for="src in item.imageList"
:key="src"
:src="src"
alt="/"
@click="openImg(src)"
/>
</div>
</div>-->
<div class="eventItem">
<span>联系人</span>
<span>{{ item.name }}</span>
</div>
<div class="eventItem">
<span>联系电话</span>
<span>{{ item.mobile }}</span>
</div>
<div class="eventItem">
<span>详细地址</span>
<span>{{ item.address }}</span>
</div>
<div class="eventItem">
<span>办结时限</span>
<span>{{ item.latestOperatedTime }}</span>
</div>
<div class="eventItem">
<span>满意度评价</span>
<span>{{ item.satisfactionName }}</span>
</div>
</div>
</el-col>
<el-col
:span="11"
>
<div class="rightEvent m-info">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<!-- <el-timeline class="timeline" :reverse="true">
<el-timeline-item v-for="(item, index) in activities" :key="index" :class="index == activities.length - 1 ? 'sucess' : ''">
<div class="status-box">
<div class="status1" v-if="index == activities.length - 1">回复</div>
<div class="status2" v-else>完成并回复</div>
<div class="timestamp">{{ item.timeLimit ? $moment(item.timeLimit).format("YYYY-MM-DD hh:mm:ss") : "" }}</div>
</div>
<div class="content">
<div class="field">回复人</div>
<div class="value">{{ item.departmentName }}</div>
</div>
<div class="content">
<div class="field">回复内容</div>
<div class="value">{{ item.publicReply }}</div>
</div>
</el-timeline-item>
</el-timeline> -->
<div v-if="activities.length > 0">
<!-- <el-card :class="{ 'box-card': source === 'visiual' }" style="min-height: calc(88vh - 50px); overflow: auto"> -->
<div class="m-process">
<div class="list">
<div
class="item"
:class="[index === 0 ? 'z-on' : '']"
:key="item.processId"
v-for="(item, index) in activities"
>
<div class="item-row">
<template v-if="item.agencyId">
<div class="name">指派</div>
</template>
<template v-if="!item.timeLimit">
<div class="name">完成并回复</div>
</template>
<template v-if="!item.agencyId && item.timeLimit">
<div class="name">{{ item.processName }}</div>
</template>
<div class="date">
{{
item.processTime ? getTrueTime(item.processTime) : ""
}}
</div>
</div>
<div v-if="item.type === 'event'">
<template v-if="item.agencyId">
<div class="detail">
<div class="detail-field">指派人</div>
<div class="detail-value">
{{ item.departmentName }}
</div>
</div>
<div class="detail">
<div class="detail-field">指派部门</div>
<div class="detail-value">
{{ item.agencyName }}
</div>
</div>
<div class="detail">
<div class="detail-field">转办意见</div>
<div class="detail-value">
{{ item.publicReply }}
</div>
</div>
<div class="detail">
<div class="detail-field">办结时限</div>
<div class="detail-value">
{{ item.timeLimit }}
</div>
</div>
</template>
<template v-else>
<div class="detail">
<div class="detail-field">回复人</div>
<div class="detail-value">
{{ item.departmentName }}
</div>
</div>
<div class="detail">
<div class="detail-field">回复内容</div>
<div class="detail-value">
{{ item.publicReply }}
</div>
</div>
<div class="detail" v-if="item.timeLimit">
<div class="detail-field">办结时限</div>
<div class="detail-value">
{{ getTrueTime(item.timeLimit) }}
</div>
</div>
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
</template>
<script>
import titleBox from "./Title";
export default {
name: "ReportAnEvent",
components: {
titleBox,
},
props: {
id: {
type: String,
default: "",
},
showDialog: {
type: Boolean,
default: false,
},
},
data() {
return {
item: {},
loading: false,
loading1: false,
activities: [],
};
},
computed: {},
watch: {
showDialog: {
handler(val) {
if (val) {
this.getDetailsData(this.id);
this.getProcessData(this.id);
} else {
this.item = {}
this.activities = []
}
},
immediate: true,
},
},
mounted() {
},
methods: {
handleClose() {
this.$emit("close", false);
this.item = {};
},
openImg(src) {
window.open(src);
},
getTrueTime(time) {
return this.$moment(time * 1000).format("YYYY-MM-DD hh:mm");
},
getDetailsData(id) {
this.loading = true;
this.$http
.post("/governance/icEventOLd/detail", {icEventId: id})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {
this.item = data;
this.loading = false;
} else {
this.loading = false;
this.$message.error(msg);
}
});
},
getProcessData(id) {
this.$http
.post("/governance/icEventOLd/process", {icEventId: id})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {
this.activities = data;
this.loading1 = false;
} else {
this.loading1 = false;
this.$message.error(msg);
}
});
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/popup-info.scss" scoped></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
@import "@/assets/scss/dataBoard/dialog.scss";
@mixin fontStyle {
color: #fff !important;
font-size: 14px !important;
}
.eventWrap {
width: 1094px;
//height: 798px;
overflow-y: auto;
overflow-x: hidden;
padding: 24px;
.eventDetails {
font-size: 18px;
margin: 48px 24px 48px 0;
color: #ffffff;
img {
margin-top: -4px;
margin-right: 8px;
}
}
.m-info {
padding: 0px !important;
.m-process {
margin: 0 !important;
.name {
@include fontStyle;
}
.date {
@include fontStyle;
}
.detail {
@include fontStyle;
.detail-field {
flex: none !important;
}
}
}
}
.leftEvent {
color: #fff;
.eventItem {
font-size: 14px;
margin-bottom: 24px;
span:first-child {
}
span:last-child {
}
}
}
.rightEvent {
color: #fff;
}
}
</style>

2
src/views/dataBoard/cpts/personnel/modules/BusinessRecords.vue

@ -1,6 +1,6 @@
<template>
<div class="business-records">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange" />
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange" />
<complaint @changeTotal="changeTotal" v-show="type == 1" />
<economize @changeTotal="changeTotal" v-show="type == 2" />
<community @changeTotal="changeTotal" v-show="type == 3" />

2
src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue

@ -17,7 +17,7 @@
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
<eventDetails :showDialog="showDialog" :id="rowId" @close="close" />
<eventDetails :showDialog="showDialog" :id="rowId" @close="close" :formType="'12345'" />
<Pagination
v-show="total > 0"
:total="total"

3
src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue

@ -23,7 +23,7 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<eventDetails :showDialog="showDialog" :id="this.rowId" @close="close" />
<eventDetails :showDialog="showDialog" :formType="'event'" :id="this.rowId" @close="close" />
</div>
</template>
@ -45,6 +45,7 @@ export default {
total: 0,
rowId: null,
showDialog: false,
};
},
created() {},

2
src/views/dataBoard/cpts/resi-details.vue

@ -230,7 +230,7 @@
<img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div>
</div>-->
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tabs v-model.trim="activeName" @tab-click="handleClick">
<el-tab-pane label="教育">
<div class="f-flex f-bto16 f-top24">
<div class="f-labels">文化程度:</div>

2
src/views/dataBoard/fifteen/components/index.vue

@ -2,7 +2,7 @@
<div id="map">
<div class="search">
<el-input placeholder="请输入内容"
v-model="input"
v-model.trim="input"
clearable
size="medium">
<template slot="append">

2
src/views/dataBoard/organizational/dangTree/index.vue

@ -124,7 +124,7 @@ export default {
[5, "党委"],
[6, "党总支"],
[7, "党支部"],
[8, "楼院党小组"],
[8, "党小组"],
[9, "党员中心户"],
[10, "联系家庭"],
]);

417
src/views/dataBoard/organizational/index.vue

@ -32,7 +32,7 @@ export default {
levelArr: [1, 2, 3, 4],
navList: [
{
name: "动力主轴",
name: "党委架构",
key: "1",
path: "/organizational/dangTree",
},
@ -42,424 +42,15 @@ export default {
path: "/organizational/jwTree",
},
{
name: "微网格治理",
name: "网格架构",
key: "3",
path: "/organizational/gridTree",
},
],
cardList: [
{
title: "社区党委",
key: "1",
name: "南昌路社区党委 (党委书记:解书记)",
children: [
{
title: "网格党支部",
name: "第一网格党支部(支部书记:王艺发)",
key: "1",
children: [
{
title: "楼院党小组",
name: "第一楼院党小组 (组长:韩文国)",
key: "1",
},
{
title: "楼院党小组",
name: "第二楼院党小组 (组长:褚丽兰)",
key: "2",
},
],
},
{
title: "网格党支部",
name: "第二网格党支部 (支部书记:尤芬紫)",
key: "2",
children: [
{
title: "楼院党小组",
name: "第一楼院党小组 (组长:韩文国)",
key: "1",
},
{
title: "楼院党小组",
name: "第二楼院党小组 (组长:褚丽兰)",
key: "2",
},
],
},
{
title: "网格党支部",
name: "第三网格党支部 (支部书记:凤桥强)",
key: "3",
children: [
{
title: "楼院党小组",
name: "第一楼院党小组 (组长:韩文国)",
key: "1",
},
{
title: "楼院党小组",
name: "第二楼院党小组 (组长:褚丽兰)",
key: "2",
},
{
title: "楼院党小组",
name: "第三楼院党小组 (组长:王丽丽)",
key: "3",
},
],
},
],
},
],
cardList: [],
nowVal: 100,
nodeConfig: {
partyOrgName: "市北区委",
partyOrgLevel: 1,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 1,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 2,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 2,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 3,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 3,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 4,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 4,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 5,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 5,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 6,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 6,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 7,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 7,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 8,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 8,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 9,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 9,
children: [
{
partyOrgName: "市北区委",
partyOrgLevel: 10,
partyOrgPid: "0",
principalName: "栾秀杰",
laneLevel: 10,
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
// title: "",
// name: "()",
// key: "1",
// children: [
// {
// title: "",
// name: " ",
// type: 2,
// children: [
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// ],
// },
// {
// title: "",
// name: " ",
// type: 3,
// children: [
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// children: [
// {
// title: "",
// type: 5,
// name: "",
// },
// {
// title: "",
// type: 5,
// name: "",
// },
// {
// title: "",
// type: 5,
// name: "",
// },
// {
// title: "",
// type: 5,
// name: "",
// },
// ],
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// ],
// },
// {
// title: "",
// name: " ",
// type: 3,
// children: [
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// {
// title: "",
// type: 3,
// name: " ",
// children: [
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// {
// title: "",
// type: 4,
// name: "",
// },
// ],
// },
// ],
// },
// ],
},
nodeConfig: {},
};
},
computed: {},

19
src/views/dataBoard/organizational/jwTree/index.vue

@ -1,3 +1,4 @@
<!-- 调用树组件 -->
<template>
<div class="wrap">
<!-- v-on:wheel="zoomSize" :style="'transform: scale(' + nowVal / 100 + ');'" -->
@ -10,8 +11,8 @@
<div class="contentList"></div>
</el-col>
<el-col :span="21">
<div class="dingflow-design" :style="{ height: treeHeight + 'px' }" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<nodeWrapJw :nodeConfig.sync="nodeConfig"></nodeWrapJw>
<div class="dingflow-design overflow-hidden" :style="{ height: treeHeight + 'px' }" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<nodeWrapJw :nodeConfig.sync="nodeConfig" ></nodeWrapJw>
</div>
</el-col>
</el-row>
@ -46,6 +47,12 @@ export default {
// if (orgId) {
// this.getTreeData();
// }
this.$EventBus.$on('handelClickJWNode', (val) => {
this.levelArr.push(val[0].level)
const myArray = [...new Set(this.levelArr)];
this.treeHeight = myArray.length * 180 + 220;
this.levelArr = this.getLevelArrNum(myArray);
})
this.getTreeData();
},
methods: {
@ -73,7 +80,6 @@ export default {
}
return arr;
},
//
getDataPLevel(data) {
data.forEach((item) => {
@ -82,7 +88,7 @@ export default {
this.getDataPLevel(item.children);
}
});
const myArray = [...new Set(this.levelArr)];
const myArray = [...new Set(this.levelArr)].filter(item=>item!='village');
this.treeHeight = myArray.length * 180 + 220;
this.levelArr = this.getLevelArrNum(myArray);
},
@ -280,7 +286,7 @@ export default {
.flowLevel-5 {
top: 775px;
height: 180px !important;
line-height: 130px;
line-height: 180px;
div {
padding-left: 80px;
@ -401,4 +407,7 @@ export default {
}
}
}
.overflow-hidden{
overflow-y: hidden;
}
</style>

272
src/views/dataBoard/organizational/microgrid/components/reportAnOldEvent.vue

@ -0,0 +1,272 @@
<template>
<Dialog title="事件详情" @close="handleClose">
<template>
<div class="eventWrap">
<el-row :gutter="32">
<el-col :span="13" style="padding-left: 40px" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<div class="leftEvent">
<div class="eventDetails">事件详情</div>
<div class="eventItem">
<span>所属组织</span>
<span>{{ item.gridName }}</span>
</div>
<div class="eventItem">
<span>上报渠道</span>
<span>{{ item.sourceTypeName }}</span>
</div>
<div class="eventItem">
<span>接受时间</span>
<span>{{ item.happenTime }}</span>
</div>
<div class="eventItem">
<span>工单号</span>
<span>{{ item.workOrderNum }}</span>
</div>
<div class="eventItem">
<div>问题描述</div>
<div style="margin-top: 20px">{{ item.eventContent }}</div>
</div>
<div class="eventItem">
<div>图片</div>
<div style="margin-top: 20px; display: flex">
<img style="width: 100px; height: 100px; margin-right: 5px" v-for="src in item.imageList" :key="src" :src="src" alt="/" @click="openImg(src)" />
</div>
</div>
<div class="eventItem">
<span>联系人</span>
<span>{{ item.name }}</span>
</div>
<div class="eventItem">
<span>联系电话</span>
<span>{{ $sensitive(item.mobile, 3, 7) }}</span>
</div>
<div class="eventItem">
<span>详细地址</span>
<span>{{ item.address }}</span>
</div>
<div class="eventItem">
<span>办结时限</span>
<span>{{ item.gridName }}</span>
</div>
<div class="eventItem">
<span>满意度评价</span>
<span>{{ item.satisfactionName }}</span>
</div>
</div>
</el-col>
<el-col :span="11" v-loading="loading1" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<div class="rightEvent m-info">
<div class="eventDetails">办理进展</div>
<!-- <el-timeline class="timeline" :reverse="true">
<el-timeline-item v-for="(item, index) in activities" :key="index" :class="index == activities.length - 1 ? 'sucess' : ''">
<div class="status-box">
<div class="status1" v-if="index == activities.length - 1">回复</div>
<div class="status2" v-else>完成并回复</div>
<div class="timestamp">{{ item.timeLimit ? $moment(item.timeLimit).format("YYYY-MM-DD hh:mm:ss") : "" }}</div>
</div>
<div class="content">
<div class="field">回复人</div>
<div class="value">{{ item.departmentName }}</div>
</div>
<div class="content">
<div class="field">回复内容</div>
<div class="value">{{ item.publicReply }}</div>
</div>
</el-timeline-item>
</el-timeline> -->
<div v-if="activities.length > 0">
<!-- <el-card :class="{ 'box-card': source === 'visiual' }" style="min-height: calc(88vh - 50px); overflow: auto"> -->
<div class="m-process">
<div class="list">
<div class="item" :class="[index === 0 ? 'z-on' : '']" :key="item.processId" v-for="(item, index) in activities">
<div class="item-row">
<template v-if="item.agencyId">
<div class="name">指派</div>
</template>
<template v-if="!item.timeLimit">
<div class="name">完成并回复</div>
</template>
<template v-if="!item.agencyId && item.timeLimit">
<div class="name">{{ item.processName }}</div>
</template>
<div class="date">
{{ item.processTime ? getTrueTime(item.processTime) : "" }}
</div>
</div>
<div v-if="item.type === 'event'">
<template v-if="item.agencyId">
<div class="detail">
<div class="detail-field">指派人</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
<div class="detail-field">指派部门</div>
<div class="detail-value">{{ item.agencyName }}</div>
</div>
<div class="detail">
<div class="detail-field">转办意见</div>
<div class="detail-value">{{ item.publicReply }}</div>
</div>
<div class="detail">
<div class="detail-field">办结时限</div>
<div class="detail-value">{{ formTimeLimit(item.timeLimit) }}</div>
</div>
</template>
<template v-else>
<div class="detail">
<div class="detail-field">回复人</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
<div class="detail-field">回复内容</div>
<div class="detail-value">{{ item.publicReply }}</div>
</div>
<div class="detail" v-if="item.timeLimit">
<div class="detail-field">办结时限</div>
<div class="detail-value">{{ getTrueTime(item.timeLimit) }}</div>
</div>
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</template>
</Dialog>
</template>
<script>
import Dialog from "@/components/Dialog/index.vue";
export default {
name: "ReportAnEvent",
components: { Dialog },
props: {
id: {
type: String,
default: "",
},
},
data() {
return {
item: {},
loading: false,
loading1: false,
activities: [],
};
},
computed: {},
watch: {
id: {
handler(val) {
if (val) {
this.getDetailsData(val);
this.getProcessData(val);
}
},
immediate: true,
},
},
mounted() {},
methods: {
handleClose() {
this.$emit("close", false);
this.item = {};
},
openImg(src) {
window.open(src);
},
getTrueTime(time) {
return this.$moment(time * 1000).format("YYYY-MM-DD hh:mm");
},
getDetailsData(id) {
this.loading = true;
this.$http.post("/governance/icEventOld/detail", { icEventId: id }).then((res) => {
const { code, data, msg } = res.data;
if (code === 0) {
this.item = data;
this.loading = false;
} else {
this.loading = false;
this.$message.error(msg);
}
});
},
getProcessData(id) {
this.$http.post("/governance/icEventOld/process", { icEventId: id }).then((res) => {
const { code, data, msg } = res.data;
if (code === 0) {
this.activities = data;
this.loading1 = false;
} else {
this.loading1 = false;
this.$message.error(msg);
}
});
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/popup-info.scss" scoped></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
@mixin fontStyle {
color: #fff !important;
font-size: 14px !important;
}
.eventWrap {
height: 500px;
overflow-y: auto;
overflow-x: hidden;
.eventDetails {
font-size: 16px;
margin: 24px 0;
}
.m-info {
padding: 0px !important;
.m-process {
margin: 0 !important;
.name {
@include fontStyle;
}
.date {
@include fontStyle;
}
.detail {
@include fontStyle;
.detail-field {
flex: none !important;
}
}
}
}
.leftEvent {
color: #fff;
.eventItem {
font-size: 14px;
margin-bottom: 24px;
span:first-child {
}
span:last-child {
}
}
}
.rightEvent {
color: #fff;
}
}
</style>

2
src/views/dataBoard/organizational/microgrid/index.vue

@ -79,7 +79,7 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import SameDialog from "./components/popDetails.vue";
import ReportAnEvent from "./components/reportAnEvent.vue";
import ReportAnEvent from "./components/reportAnOldEvent.vue";
import Safetyhazard from "./components/safetyhazard.vue";
import { get } from "sortablejs";
export default {

11
src/views/dataBoard/overview/components/Bmysxxq.vue

@ -87,7 +87,7 @@
<div class="items">
<div class="label">服务方</div>
<el-select
v-model="form.serverOrgType"
v-model.trim="form.serverOrgType"
class="select"
clearable
popper-class="selectPopClass"
@ -100,7 +100,7 @@
:value="item.value"
/>
</el-select>
<el-select v-model="form.serverOrgId" class="select" popper-class="selectPopClass">
<el-select v-model.trim="form.serverOrgId" class="select" popper-class="selectPopClass">
<el-option
v-for="item in serviceOptiondList"
:key="item.id"
@ -116,7 +116,7 @@
<div class="items">
<div class="label">自动通知服务方</div>
<el-checkbox-group
v-model="form.noticeApproches"
v-model.trim="form.noticeApproches"
class="select"
popper-class="selectPopClass"
text-color="#fff"
@ -132,7 +132,7 @@
<el-cascader
:key="iscascaderShow"
ref="myCascader"
v-model="form.serviceScopeList"
v-model.trim="form.serviceScopeList"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@ -146,7 +146,7 @@
<div class="items">
<div class="label">服务时间</div>
<el-date-picker
v-model="form.date"
v-model.trim="form.date"
:append-to-body="false"
class="select"
end-placeholder="结束日期"
@ -177,6 +177,7 @@
<ResourceScheduling
ref="ResourceScheduling"
:currentLevelData="currentLevelData"
:demandRecDetail="detail"
@handle="dispatchOrder"
/>

2
src/views/dataBoard/overview/components/DemandCharts.vue

@ -1,6 +1,6 @@
<template>
<div class="charts">
<el-select v-model="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange">
<el-select v-model.trim="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange">
<el-option v-for="item in dateList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<div id="DemandCharts"></div>

2
src/views/dataBoard/overview/components/DemandCharts2.vue

@ -1,6 +1,6 @@
<template>
<div class="charts">
<el-select v-model="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange">
<el-select v-model.trim="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange">
<el-option v-for="item in dateList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<div id="DemandCharts2"></div>

2
src/views/dataBoard/overview/components/EventAndFollowUp.vue

@ -1,7 +1,7 @@
<template>
<div class="event">
<!-- <div class="tabs">
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange"/>
</div>-->
<div class="content">
<div class="total">

3
src/views/dataBoard/overview/components/EventDetail.vue

@ -198,8 +198,7 @@
</el-col>
</el-row>
<div class="btn-group" v-if="(item.status === 'processing' && item.operationId) || (item.status === 'closed_case' &&
(item.satisfactionName || (!item.satisfactionName && user.id != item.createdUserId)))">
<div class="btn-group" v-if="(item.status === 'processing')">
<el-button class="green" plain round type="success" @click="handleDispatch">资源调度</el-button>
<el-button class="orange" plain round type="warning" @click="handleSupervision">催办督办</el-button>
</div>

8
src/views/dataBoard/overview/components/EventDispatchOrder/Assign.vue

@ -6,7 +6,7 @@
<el-cascader
:key="iscascaderShow"
ref="myCascader"
v-model="selCategoryArray"
v-model.trim="selCategoryArray"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@ -22,7 +22,7 @@
<div class="label required">处理部门</div>
<el-cascader
ref="agencyIdArray"
v-model="agencyIdArray"
v-model.trim="agencyIdArray"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@ -42,7 +42,7 @@
<el-col :span="24">
<div class="items">
<el-input
v-model="form.content"
v-model.trim="form.content"
:autosize="{ minRows: 5, maxRows: 10}"
class="input"
maxlength="500"
@ -78,7 +78,7 @@
<div class="items">
<div class="label required">办结时限</div>
<el-date-picker
v-model="form.timeLimit"
v-model.trim="form.timeLimit"
:append-to-body="false"
format="yyyy-MM-dd"
placeholder="请选择办结时限"

20
src/views/dataBoard/overview/components/EventDispatchOrder/TransferService.vue

@ -6,7 +6,7 @@
<div class="label required">服务内容</div>
<div class="value">
<el-input
v-model="formData.content"
v-model.trim="formData.content"
:autosize="{ minRows: 2, maxRows: 10 }"
class="cell-width-area"
clearable
@ -22,7 +22,7 @@
<div class="label required">服务类型</div>
<div class="value">
<el-cascader
v-model="formData.categoryCode"
v-model.trim="formData.categoryCode"
:options="demandOptions"
class="cell-width-1"
clearable
@ -39,7 +39,7 @@
<div class="label required">服务时间</div>
<div class="value">
<el-date-picker
v-model="formData.wantServiceTime"
v-model.trim="formData.wantServiceTime"
class="cell-width-1"
clearable placeholder="选择日期时间"
type="datetime"
@ -54,7 +54,7 @@
<div class="items">
<div class="label required">需求人</div>
<div class="value">
<el-input v-model="formData.demandUserName" class="cell-width-1"/>
<el-input v-model.trim="formData.demandUserName" class="cell-width-1"/>
</div>
</div>
</el-form-item>
@ -64,7 +64,7 @@
<div class="items">
<div class="label required">联系电话</div>
<div class="value">
<el-input v-model="formData.demandUserMobile" class="cell-width-1"/>
<el-input v-model.trim="formData.demandUserMobile" class="cell-width-1"/>
</div>
</div>
</el-form-item>
@ -74,7 +74,7 @@
<div class="items">
<div class="label required">服务地点</div>
<div class="value">
<el-input v-model="formData.serviceLocation" class="cell-width-1"/>
<el-input v-model.trim="formData.serviceLocation" class="cell-width-1"/>
</div>
</div>
</el-form-item>
@ -86,7 +86,7 @@
<div class="value">
<!-- <div class="div_searchmap">
<el-input
v-model="keyWords"
v-model.trim="keyWords"
class="cell-width-map"
maxlength="50"
placeholder="请输入关键字"
@ -107,7 +107,7 @@
<div class="items">
<div class="label">门牌号</div>
<div class="value">
<el-input v-model="formData.locationDetail" class="cell-width-1"/>
<el-input v-model.trim="formData.locationDetail" class="cell-width-1"/>
</div>
</div>
</el-form-item>
@ -118,7 +118,7 @@
<div class="label required">服务组织</div>
<div class="value serviceOrg">
<el-select
v-model="formData.serviceType"
v-model.trim="formData.serviceType"
class="cell-width-1"
clearable placeholder="请选择"
@change="handleServiceChange('add', $event)"
@ -132,7 +132,7 @@
</el-select>
<div class="line">-</div>
<el-select
v-model="formData.serverId"
v-model.trim="formData.serverId"
class="cell-width-1"
clearable
filterable

2
src/views/dataBoard/overview/components/EventDispatchOrder/index.vue

@ -46,7 +46,7 @@
<div class="items" style="align-items: center">
<div class="label required">处理方式</div>
<el-radio-group
v-model="form.operationType"
v-model.trim="form.operationType"
class="select"
popper-class="selectPopClass"
text-color="#fff">

4
src/views/dataBoard/overview/components/MapDialog/DemandList.vue

@ -1,6 +1,6 @@
<template>
<div>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange"/>
<div v-if="type === '1'" class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
@ -130,6 +130,8 @@ export default {
categoryCode: this.categoryCode,
level: 1,
undoneStauts: 'undone',
orgId: this.currentLevelData.orgId,
orgLevel: this.currentLevelData.orgLevel,
pageNo: this.queryParams.pageNo
}).then(res => {
this.loading = false

2
src/views/dataBoard/overview/components/MapDialog/DisputeDispatch.vue

@ -1,6 +1,6 @@
<template>
<div>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange"/>
<div v-if="type === '4'" class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="280px">

2
src/views/dataBoard/overview/components/MapDialog/ResourceDispatch.vue

@ -1,6 +1,6 @@
<template>
<div>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange"/>
<div class="table" v-if="type === '4'">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="250px">

4
src/views/dataBoard/overview/components/MapResourceInfoMore.vue

@ -22,7 +22,7 @@
<div class="value">{{ typesList[types] }}</div>
</div>
</el-col>
<template v-if="types === 2 || types === 3">
<template v-if="types === 2">
<el-col :span="12">
<div class="items">
@ -189,7 +189,7 @@
</el-col>
</template>
</el-row>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<Tabs v-model.trim="type" :list="typeList" @changeVal="typeChange"/>
<div class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="250px">

14
src/views/dataBoard/overview/components/ResourceInfo.vue

@ -109,37 +109,37 @@
<div class="items">
<div class="label">姓名</div>
<div class="value">{{ detail.name }}</div>
<div class="value">{{ rowData.name }}</div>
</div>
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.mobile }}</div>
<div class="value">{{ rowData.mobile }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
<div class="items">
<div class="label">年龄</div>
<div class="value">{{ detail.birthday?getAgeByDateOfBirth(detail.birthday):'未知' }}</div>
<div class="value">{{ rowData.longitude||'--' }}</div>
</div>
<div class="items">
<!-- <div class="items">
<div class="label">学历</div>
<div class="value">{{ education?education.cultureLevelName:'' }}</div>
</div>
</div> -->
<!-- <div class="items">
<div class="label">状态</div>
<div class="value">巡查中</div>
</div>-->
<div class="items">
<!-- <div class="items">
<div class="label">所在位置</div>
<div class="value">{{ detail.houseInfo?detail.houseInfo.homeName: '' }}</div>
</div>
<div class="items">
<div class="label">兴趣爱好</div>
<div class="value">{{ hobby?hobby.hobbyRemark:'' }}</div>
</div>
</div> -->
</template>
<div class="btn-group">
<el-button class="sure" plain round type="warning" @click="handleSure">派单</el-button>

42
src/views/dataBoard/overview/components/ResourceScheduling.vue

@ -41,11 +41,11 @@
}}
</template>
</el-table-column>
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'" label="所属组织" min-width="180"
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'&& peopleType !== 'volunteer'&& peopleType !== 'publicWelfareNum'" label="所属组织" min-width="180"
prop="orgName"/>
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'" label="姓名/名称" min-width="120"
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'&& peopleType !== 'volunteer'&& peopleType !== 'publicWelfareNum'" label="姓名/名称" min-width="120"
prop="name"/>
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'" label="联系电话" min-width="120"
<el-table-column v-if="peopleType !== '4' && peopleType !== '5'&& peopleType !== 'volunteer'&& peopleType !== 'publicWelfareNum'" label="联系电话" min-width="120"
prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
@ -62,11 +62,15 @@
</template>
</el-table-column>
<el-table-column v-if="peopleType === '5'" label="所属组织" min-width="180" prop="agencyName"/>
<el-table-column v-if="peopleType === '5'" label="联系人" min-width="120" prop="contact"/>
<el-table-column v-if="peopleType === '5'" label="联系电话" min-width="120" prop="contactMobile">
<el-table-column v-if="peopleType === 'publicWelfareNum' || peopleType=== 'volunteer'" label="所属组织" min-width="180" prop="agencyName">
<template scope-row="row">
{{this.$store.state.user.agencyName}}
</template>
</el-table-column>
<el-table-column v-if="peopleType === 'publicWelfareNum' || peopleType=== 'volunteer'" label="联系人" min-width="120" prop="name"/>
<el-table-column v-if="peopleType === 'publicWelfareNum' || peopleType=== 'volunteer'" label="联系电话" min-width="120" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.contactMobile, 3, 7) }}
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
@ -110,7 +114,12 @@ export default {
type: Object,
default: () => {
},
}
},
demandRecDetail: {
type: Object,
default: () => {
},
},
},
data() {
return {
@ -240,13 +249,28 @@ export default {
console.log(data);
if (this.peopleType === '4') {
this.getZzzList();
} else if (this.peopleType === '5') {
} else if (this.peopleType === '5' ) {
this.getLjdwList();
} else if (this.peopleType === 'publicWelfareNum' || this.peopleType === 'volunteer') {
this.getServerOrgNewTask();
} else {
this.getList()
}
}
},
getServerOrgNewTask() {
let {parentCategoryCode,categoryCode} = this.demandRecDetail;
this.loading = true;
this.$http.post('/actual/base/serviceitem/listServerOrgNewTask', {
serverOrgType: this.peopleType == 'publicWelfareNum'?'publicWelfare':'ic_user_volunteer',
serverParentOrgCategoryCode:parentCategoryCode,
serverOrgCategoryCode:categoryCode
}).then(res => {
this.loading = false;
this.list = res.data.data;
})
},
handleHandle(data) {
this.handleClose()
this.$emit('handle', data);

6
src/views/dataBoard/overview/components/ServiceDetails.vue

@ -126,7 +126,7 @@
<div class="items">
<div class="label">服务方</div>
<el-select
v-model="form.serviceType"
v-model.trim="form.serviceType"
class="select"
popper-class="selectPopClass"
@change="getServiceuserList($event, 'add_demand')"
@ -140,7 +140,7 @@
</el-option>
</el-select>
<el-select
v-model="form.serverId"
v-model.trim="form.serverId"
class="select"
filterable
popper-class="selectPopClass"
@ -172,7 +172,7 @@
</div>
</div>
</el-dialog>
<ResourceScheduling ref="ResourceScheduling" :currentLevelData="currentLevelData" @handle="dispatchOrder"/>
<ResourceScheduling ref="ResourceScheduling" :demandRecDetail="detail" :currentLevelData="currentLevelData" @handle="dispatchOrder"/>
<Supervision ref="supervision" :currentLevelData="currentLevelData"/>
</div>
</template>

2
src/views/dataBoard/overview/components/Supervision.vue

@ -45,7 +45,7 @@
</div>
<div class="items">
<el-input
v-model="content"
v-model.trim="content"
:autosize="{ minRows: 5, maxRows: 10}"
class="input"
maxlength="500"

2
src/views/dataBoard/overview/components/jdjs.vue

@ -21,7 +21,7 @@
</div>
<title-small text="不满意风险人员">
<template v-slot:time>
<el-select v-model="typeCondition" popper-class="selectPopClass" placeholder="请选择" class="select" @change="timeChange">
<el-select v-model.trim="typeCondition" popper-class="selectPopClass" placeholder="请选择" class="select" @change="timeChange">
<el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</template>

4
src/views/dataBoard/overview/components/map-top.vue

@ -1,7 +1,7 @@
<template>
<div class="m-per m-l77">
<el-autocomplete
v-model="keyWord"
v-model.trim="keyWord"
:fetch-suggestions="querySearch"
:placeholder="searchPlaceholder"
:value-key="'value'"
@ -9,7 +9,7 @@
popper-class="selectPopClass"
@select="handleSelect"
>
<el-select slot="prepend" v-model="searchSelect" @change="keyWord = ''" placeholder="请选择" popper-class="selectPopClass">
<el-select slot="prepend" v-model.trim="searchSelect" @change="keyWord = ''" placeholder="请选择" popper-class="selectPopClass">
<el-option label="需求" value="1"></el-option>
<el-option label="问题" value="2"></el-option>
<el-option label="资源" value="3"></el-option>

4
src/views/dataBoard/overview/potentialPeople/index.vue

@ -5,7 +5,7 @@
<el-form :model="queryParams" inline>
<el-select
popper-class="selectPopClass"
v-model="queryParams.agencyId"
v-model.trim="queryParams.agencyId"
clearable
size="small"
placeholder="按组织"
@ -19,7 +19,7 @@
</el-select>
<el-select
popper-class="selectPopClass"
v-model="queryParams.satisfactionSource"
v-model.trim="queryParams.satisfactionSource"
clearable
size="small"
placeholder="按类型"

2
src/views/dataBoard/renfang/cpts/rkfx.vue

@ -397,7 +397,7 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
margin-left: 25px;
margin-left: 15px;
.legend {
// flex: 0 0 140px;

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

Loading…
Cancel
Save