Browse Source

合并分支代码

V1.0
PLUTO 2 years ago
parent
commit
2876c9be58
  1. BIN
      src/assets/images/index/house.png
  2. BIN
      src/assets/images/index/i-more.png
  3. BIN
      src/assets/images/index/nan.png
  4. BIN
      src/assets/images/index/nv.png
  5. BIN
      src/assets/images/index/resi.png
  6. BIN
      src/assets/images/index/title-icon-jfjl.png
  7. BIN
      src/assets/images/index/title-icon-jtgx.png
  8. BIN
      src/assets/images/index/title-icon-xsfw.png
  9. BIN
      src/assets/images/index/title-icon-ywjl.png
  10. 4
      src/assets/scss/modules/management/list-main.scss
  11. 86
      src/assets/scss/pages/huaxiang.scss
  12. 2
      src/js/store/index.js
  13. 20
      src/js/store/modules/huaXiang.js
  14. 14
      src/router/index.js
  15. 21
      src/utils/validate.js
  16. 97
      src/views/components/resiForm.vue
  17. 32
      src/views/components/resiSearch.vue
  18. 2
      src/views/dataBoard/cpts/family/modules/EnjoyService.vue
  19. 2
      src/views/dataBoard/cpts/family/modules/businessTables/community.vue
  20. 2
      src/views/dataBoard/cpts/family/modules/businessTables/complaint.vue
  21. 2
      src/views/dataBoard/cpts/family/modules/businessTables/economize.vue
  22. 2
      src/views/dataBoard/cpts/family/modules/businessTables/give-service.vue
  23. 2
      src/views/dataBoard/cpts/family/modules/businessTables/reporting-events.vue
  24. 2
      src/views/dataBoard/cpts/family/modules/businessTables/resident.vue
  25. 12
      src/views/dataBoard/cpts/map/index.vue
  26. 1
      src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue
  27. 1144
      src/views/modules/base/community/communityForm.vue
  28. 1969
      src/views/modules/base/community/communityTable.vue
  29. 1345
      src/views/modules/base/huji/immigration/edit.vue
  30. 2
      src/views/modules/base/resi.vue
  31. 86
      src/views/modules/base/residentManagement/housingNature/housingNature.vue
  32. 22
      src/views/modules/base/residentManagement/louzhang/addForm.vue
  33. 43
      src/views/modules/base/residentManagement/louzhang/louzhangList.vue
  34. 42
      src/views/modules/base/residentManagement/oldPeople/addForm.vue
  35. 17
      src/views/modules/base/residentManagement/oldPeople/oldPeople.vue
  36. 18
      src/views/modules/base/residentManagement/publicWelfarePost/addForm.vue
  37. 4
      src/views/modules/base/residentManagement/publicWelfarePost/publicWelfarePost.vue
  38. 30
      src/views/modules/base/residentManagement/resiDisability/resiDisability.vue
  39. 9
      src/views/modules/base/residentManagement/subsistenceAllowance/addForm.vue
  40. 3
      src/views/modules/base/residentManagement/subsistenceAllowance/subsistenceAllowance.vue
  41. 2
      src/views/modules/base/residentManagement/tefu/addForm.vue
  42. 13
      src/views/modules/base/residentManagement/tefu/tefuList.vue
  43. 2
      src/views/modules/base/residentManagement/unemployment/addForm.vue
  44. 32
      src/views/modules/base/residentManagement/unemployment/unemployment.vue
  45. 2
      src/views/modules/base/residentManagement/volunteer/volunteer.vue
  46. 1
      src/views/modules/base/smartImport.vue
  47. 1441
      src/views/modules/base/virtualResi.vue
  48. 116
      src/views/modules/communityParty/members/memberList.vue
  49. 22
      src/views/modules/communityParty/members/points.vue
  50. 3
      src/views/modules/communityParty/partyOrg/create.vue
  51. 10
      src/views/modules/communityParty/regionalParty/activitys.vue
  52. 7
      src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue
  53. 2
      src/views/modules/communityService/fuwuzuzhi/index.vue
  54. 4
      src/views/modules/communityService/labelConfig/addForm.vue
  55. 4
      src/views/modules/communityService/measure/index.vue
  56. 2
      src/views/modules/home/index.vue
  57. 99
      src/views/modules/jumin/cpts/leftBto.vue
  58. 79
      src/views/modules/jumin/cpts/leftTop.vue
  59. 104
      src/views/modules/jumin/cpts/pointsRecord.vue
  60. 26
      src/views/modules/jumin/cpts/rightBto.vue
  61. 286
      src/views/modules/jumin/cpts/rightTop.vue
  62. 154
      src/views/modules/jumin/cpts/table/complain.vue
  63. 64
      src/views/modules/jumin/cpts/table/fuwu.vue
  64. 62
      src/views/modules/jumin/cpts/table/sheng.vue
  65. 60
      src/views/modules/jumin/cpts/table/shequ.vue
  66. 106
      src/views/modules/jumin/cpts/table/shijian.vue
  67. 103
      src/views/modules/jumin/cpts/table/xuqiu.vue
  68. 139
      src/views/modules/jumin/cpts/xiangshoufuwu.vue
  69. 122
      src/views/modules/jumin/huaxiang.vue
  70. 9
      src/views/modules/plugins/change/changedeath.vue
  71. 13
      src/views/modules/satisfaction/satisfactionProvince/followDetail.vue
  72. 72
      src/views/modules/satisfaction/satisfactionProvince/formList.vue
  73. 15
      src/views/modules/satisfaction/satisfactionProvince/index.vue
  74. 29
      src/views/modules/shequ/chaxun.vue
  75. 2
      src/views/modules/shequzhili/event/cpts/add.vue
  76. 2
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  77. 13
      src/views/modules/shequzhili/event/cpts/event-info.vue
  78. 4
      src/views/modules/shequzhili/event/cpts/myCascader.vue
  79. 36
      src/views/modules/shequzhili/event/cpts/process-form-designate.vue
  80. 32
      src/views/modules/shequzhili/event/cpts/process-form-replay-end.vue
  81. 41
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  82. 59
      src/views/modules/shequzhili/event/eventList.vue
  83. 1210
      src/views/modules/shequzhili/eventOld/cpts/add.vue
  84. 711
      src/views/modules/shequzhili/eventOld/cpts/event-detail.vue
  85. 1198
      src/views/modules/shequzhili/eventOld/cpts/event-info.vue
  86. 126
      src/views/modules/shequzhili/eventOld/cpts/process-form-designate.vue
  87. 579
      src/views/modules/shequzhili/eventOld/cpts/process-form-project.vue
  88. 436
      src/views/modules/shequzhili/eventOld/cpts/process-form-replay.vue
  89. 175
      src/views/modules/shequzhili/eventOld/cpts/process-form-urban.vue
  90. 406
      src/views/modules/shequzhili/eventOld/cpts/process-form.vue
  91. 1627
      src/views/modules/shequzhili/eventOld/eventList.vue
  92. 202
      src/views/modules/workSys/hobbyItem.vue
  93. 312
      src/views/modules/workSys/hobbyItemsComponents/addForm.vue
  94. 9
      vue.config.js

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/images/index/i-more.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
src/assets/images/index/title-icon-jfjl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/images/index/title-icon-jtgx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/images/index/title-icon-xsfw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
src/assets/images/index/title-icon-ywjl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

@ -130,7 +130,9 @@
flex-flow: column;
overflow: hidden;
}
.f-w50 {
width: 50% !important;
}
.f-flex1 {
flex: 1;
}

86
src/assets/scss/pages/huaxiang.scss

@ -0,0 +1,86 @@
.g-main{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
padding:25px 16px;
box-sizing: border-box;
.top{
display: flex;
height: calc(50vh - 104px);
.left{
width: 320px;
height: 100%;
margin-right:16px;
overflow-y: scroll;
}
.right{
flex: 1;
overflow-y: scroll;
}
}
.bottom{
height: calc(50vh - 104px);
margin-top: 16px;
display: flex;
.left{
width: 320px;
height: 100%;
margin-right:16px;
overflow-y: scroll;
}
.right{
flex: 1;
overflow-y: scroll;
display: flex;
justify-content: space-between;
}
}
}
.card{
background-color: #fff;
padding: 10px 16px 16px;
overflow: hidden;
height: 100%;
display: flex;
flex-direction: column;
.title{
font-family: PingFang SC;
font-weight: bold;
color: #333333;
display: flex;
align-items: center;
justify-content: space-between;
img{
width: 24px;
height: 24px;
}
}
.bgC{
flex: 1;
background-color: #f5f7fa;
border-radius: 2px;
overflow-y: scroll;
display: flex;
flex-direction: column;
padding: 0 16px;
.item{
margin-top: 19px;
.value{
color: #333333;
font-family: PingFang SC;
font-weight: 400;
}
}
}
}
.gray{
color: #000000;
opacity: 0.65;
}
.bgf{
background-color: #fff ;
margin-top: 0 !important;
}

2
src/js/store/index.js

@ -5,6 +5,7 @@ import user from "./modules/user";
import app from "./modules/app";
import tagsView from "./modules/tagsView";
import chooseArea from "./modules/chooseArea";
import huaXiang from "./modules/huaXiang";
import categoryStr from "./modules/categoryStr";
import { requestPost } from "@/js/dai/request";
import { dateFormats } from "@/utils/index";
@ -49,6 +50,7 @@ export default new Vuex.Store({
tagsView,
categoryStr,
chooseArea,
huaXiang
},
mutations: {
// 重置vuex本地储存状态

20
src/js/store/modules/huaXiang.js

@ -0,0 +1,20 @@
const huaXiang ={
state: {
userInfo:null || JSON.parse(localStorage.getItem('huaX'))
},
mutations: {
setData(state, payload) {
state.userInfo = payload;
}
},
actions: {
saveData({ commit }, payload) {
console.log(payload,'vueX接参');
commit('setData', payload);
localStorage.setItem('huaX', JSON.stringify(payload));
}
}
};
export default huaXiang;

14
src/router/index.js

@ -108,6 +108,16 @@ export const moduleRoutes = {
title: "社区查询",
},
},
{
path: "jumin-huaxiang",
props: true,
name: "jumin-huaxiang",
component: () => import("@/views/modules/jumin/huaxiang"),
meta: {
isTab: true,
title: "",
},
}
],
};
// pc端菜单的 如果没有配置 默认的 或者配置了默认的 但没有权限 默认选中第一
@ -696,6 +706,10 @@ router.beforeEach((to, from, next) => {
if (to.name === "caiji") {
return next();
}
if(to.name === 'jumin-huaxiang'){
to.meta.title = store.state.huaXiang.userInfo.name
return next();
}
if (window.SITE_CONFIG["dynamicMenuRoutesHasAdded"] || fnCurrentRouteIsPageRoute(to, pageRoutes)) {
return next();
}

21
src/utils/validate.js

@ -49,3 +49,24 @@ export function isPassport(s) {
return reg.test(s);
}
/**
* 港澳身份证
* @param {*} s
*/
export function isHKPassport(s) {
return /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(s);;
}
/**
* 台湾身份证
* @param {*} s
*/
export function isTwPassport(s) {
return /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(s);;
}
/**
* 军官证
* @param {*} s
*/
export function isSoldier(s) {
return /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(s);;
}

97
src/views/components/resiForm.vue

@ -128,8 +128,10 @@
:placeholder="`请选择${item.label}`"
size="small"
clearable
class="u-item-width-normal">
<el-option v-for="items in item.opction "
class="u-item-width-normal"
@change="handleChangSelect(item.formName)"
>
<el-option v-for="items in item.opction"
:key="items.value"
:label="items.label"
:value="items.value">
@ -401,7 +403,7 @@
</template>
<script>
import { isCard, isPassport, isMobile, isPhone } from '@/utils/validate'
import { isCard, isPassport, isMobile, isPhone,isHKPassport,isTwPassport,isSoldier } from '@/utils/validate'
import { computedCard } from '@/utils/index'
import { idTypeList } from "@/js/columns/constants";
import {requestGet} from "@/js/dai/request";
@ -495,17 +497,7 @@ export default {
label: "证件号",
itemType: "input",
formName: "idNum",
rules: [{ required: true, message: '证件号不能为空' },
{
validator: (rule, value, callback) => {
if (!/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/.test(value)) {
return callback(new Error('证件格式不符合'));
}
callback()
}, trigger: 'change' | blur
}
],
rules: [{ required: true, message: '证件号不能为空' },],
opction: [],
},
{
@ -1583,6 +1575,7 @@ export default {
}
},
computed: {
},
watch: {
form: {
@ -1951,7 +1944,7 @@ export default {
},
//
handleValidBlur (item) {
console.log(item);
if (item.formName !== 'idNum') return
if (!isCard(this.form.idNum) && !isPassport(this.form.idNum)) return
const { user } = this.$store.state
@ -2130,6 +2123,80 @@ export default {
if (this.supportAdd) newForm = this.handlerMuscForm()
return newForm
},
//
handleChangSelect(formName){
if(formName != 'idType') return
this.basicInformation.forEach(item=>{
if(item.formName == 'idNum'){
item.rules.length = 1
if(this.form.idType == 4){
let obj = {
validator: (rule, value, callback) => {
if (!/^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(value)) {
return callback(new Error('军人证格式不符合'));
}
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
} else if(this.form.idType == 3){
let obj = {
validator: (rule, value, callback) => {
if (!/^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(value)) {
return callback(new Error('港澳通行证格式不符合'));
}
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
}else if(this.form.idType == 5){
let obj = {
validator: (rule, value, callback) => {
if (!/^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(value)) {
return callback(new Error('台胞证不符合'));
}
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
}else if(this.form.idType == 1 ){
let obj = {
validator: (rule, value, callback) => {
if (!/^(\d{15}$)|(^\d{17}([0-9]|X)$)|^[a-zA-Z0-9]{8,9}$/.test(value)) {
return callback(new Error('身份证不符合'));
}
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
}else if(this.form.idType == 2 ){
let obj = {
validator: (rule, value, callback) => {
if (!/(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/.test(value)) {
return callback(new Error('护照不符合'));
}
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
}else if(this.form.idType == 0 ){
let obj = {
validator: (rule, value, callback) => {
callback()
}, trigger: 'change' | blur
}
item.rules.push(obj)
}
}
})
},
//
handleChangeH (val) {
let item = this.optionsH.find(item => item.value === val);

32
src/views/components/resiSearch.vue

@ -156,7 +156,9 @@
clearable
class="u-item-width-communitycascader"
@clear="handleClearVillage"
@change="handleChangeV">
@change="handleChangeV"
v-el-select-loadmore="loadmore"
>
<el-option v-for="item in optionsV"
:key="item.value"
:label="item.label"
@ -516,7 +518,7 @@ export default {
}
}
},
optionsVPageNo:1
}
},
computed: {
@ -570,6 +572,23 @@ export default {
immediate: true
}
},
directives: {
//data mounted
"el-select-loadmore": {
bind(el, binding) {
const SELECTWRAP_DOM = el.querySelector(
".el-select-dropdown .el-select-dropdown__wrap"
);
SELECTWRAP_DOM.addEventListener("scroll", function () {
const condition =
this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) {
binding.value();
}
});
},
},
},
created () {
// this.initForm()
// console.log('formcccc---', this.form)
@ -824,7 +843,10 @@ export default {
return this.$message.error('网络错误')
})
},
loadmore() {
this.optionsVPageNo++;
this.getValiheList();
},
getValiheList () {
const { user } = this.$store.state
var agencyIdTemp = ''
@ -844,6 +866,8 @@ export default {
.post('/actual/base/communityQuarters/listQuartersOptions', {
gridId: gridIdQuery,
agencyId: agencyIdQuery,
pageNo: this.optionsVPageNo,
pageSize:20
// agencyId: user.agencyId
})
.then(({ data: res }) => {
@ -851,7 +875,7 @@ export default {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsV = res.data
this.optionsV = [...this.optionsV, ...res.data];
}
})
.catch(() => {

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

@ -10,7 +10,7 @@
<el-table-column label="调整时间" prop="changeTime" width="190" />
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/family/modules/businessTables/community.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -13,7 +13,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/family/modules/businessTables/economize.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/family/modules/businessTables/give-service.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

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

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

2
src/views/dataBoard/cpts/family/modules/businessTables/resident.vue

@ -12,7 +12,7 @@
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 20px">
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>

12
src/views/dataBoard/cpts/map/index.vue

@ -186,7 +186,7 @@ export default {
// level: item.level,
center: [item.longitude, item.latitude],
...item,
parentName: srcGridData.name,
parentName: srcGridData.name || "",
},
geometry: {
type: "Polygon",
@ -475,7 +475,6 @@ export default {
}
// console.log("", polygonData);
//
polygonLayer = new PolygonLayer({
autoFit: true,
@ -566,7 +565,7 @@ export default {
} else {
posLayer.hide()
}*/
textLayer = new PolygonLayer({
textLayer = new PolygonLayer({
zIndex: 20,
})
.source(polygonData)
@ -673,7 +672,6 @@ export default {
scene.addLayer(dotLayer);
dotBgLayer.on("click", (e) => {
console.log(e.feature.properties);
this.$emit("clickDot", e.feature.properties);
});
@ -712,7 +710,6 @@ export default {
scene.addLayer(dotLayer2);
dotLayer2.on("click", (e) => {
console.log(e.feature.properties);
this.$emit("clickDot", e.feature.properties);
});
@ -755,7 +752,7 @@ export default {
if (polygonLayer) {
polygonLayer.setData(polygonData);
lineLayer.setData(polygonData);
textLayer.setData(polygonDotData);
textLayer.setData(polygonData);
/* posLayer.setData(polygonDotData);
// let gridPoint = scene.getLayerByName('gridPoint')
if (this.level === 'grid') {
@ -770,7 +767,6 @@ export default {
updateDot() {
const { dotData } = this;
if (dotLayer) {
console.log(dotData);
dotLayer.setData(dotData);
dotBgLayer.setData(dotData);
}
@ -779,7 +775,6 @@ export default {
updateDot2() {
const { dotData2: dotData } = this;
if (dotLayer2) {
console.log(dotData);
dotLayer2.setData(dotData);
}
},
@ -998,7 +993,6 @@ export default {
},
async handleClickDot(item, posArr) {
console.log("handleClickDot", item, posArr);
const res = await this.$refs.popup.show(item);
if (res) {
const popup = new Popup({

1
src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue

@ -1,3 +1,4 @@
<template>
<div class="matter-details">
<div class="user-img">

1144
src/views/modules/base/community/communityForm.vue

File diff suppressed because it is too large

1969
src/views/modules/base/community/communityTable.vue

File diff suppressed because it is too large

1345
src/views/modules/base/huji/immigration/edit.vue

File diff suppressed because it is too large

2
src/views/modules/base/resi.vue

@ -866,7 +866,7 @@ export default {
//
residentBaseInfo() {
this.$http
.post(`/actual/base/residentBaseInfo/detail/${this.editUserId}`)
.post(`/actual/base/residentBaseInfo/detail/clear/${this.editUserId}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);

86
src/views/modules/base/residentManagement/housingNature/housingNature.vue

@ -150,7 +150,7 @@
</el-dialog>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
@ -174,7 +174,7 @@ function iniFmData() {
subsidyAmount: '',//
certificateDateStart: '',//
certificateDateEnd: '',//
remark: '', //
remark: '', //
};
}
@ -289,34 +289,56 @@ export default {
},
async uploadHttpRequest(file) {
this.$message({
showClose: true,
dangerouslyUseHTMLString: true,
message:
"导入中,请到系统管理-<a id='clickA' style='cursor: pointer;'>导入记录</a>中查看进度",
duration: 3000,
});
let than = this;
document.getElementById("clickA").addEventListener("click", function () {
than.$router.replace("/main/importRecord-index");
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
await this.$http
.post("/actual/base/resiHousingNature/import", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.$message.success("导入成功");
this.getTableData();
this.$refs.upload.clearFiles();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
this.$message({
showClose: true,
dangerouslyUseHTMLString: true,
message:
"导入中,请到系统管理-<a id='clickA' style='cursor: pointer;'>导入记录</a>中查看进度",
duration: 3000,
});
let than = this;
document.getElementById("clickA").addEventListener("click", function () {
than.$router.replace("/main/importRecord-index");
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode",'ENSUREHOUSE');
await this.$http
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { metaListData, fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","户籍地址":"户籍所在地","现居地址":"现居住地址","房东姓名":"房东姓名","房东身份证号":"房东身份证号","住房性质":"住房性质","领取通知书日期":"领取通知书日期","保障类型":"保障类型","发证日期":"发证日期","补贴编号":"补贴编号","补贴金额":"补贴金额"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});//
},
async handleComfirmUpload () {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
const formData = new FormData();
formData.append("columnMateJson", JSON.stringify(dataList));
formData.append("fileCode", importCode);
await this.$http
.post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.getTableData();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
});
this.importLoading = false;
this.importBtnTitle = "导入";
},
//
handleSearch(val) {
@ -356,6 +378,7 @@ export default {
this.showAdd = false;
this.showEdit = false;
},
//
handleComfirm(type) {
this.handleClose();
@ -419,7 +442,7 @@ export default {
},
//
async handleExport() {
const url = "/actual/base/resiHousingNature/export";
const url = "/actual/base/resiCategorized/ensureHouse/export";
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,
@ -549,5 +572,4 @@ export default {
margin-right: 10px;
}
</style>

22
src/views/modules/base/residentManagement/louzhang/addForm.vue

@ -5,7 +5,8 @@
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span class="info-title-2">所属组织:</span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else label="所属组织" label-width="100px" prop="agencyId">
@ -56,7 +57,7 @@
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">类型: </span>
<span>{{ formData.dormitoryName || "--" }}</span>
<span>{{ formData.idTypeName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="类型" prop="dormitoryTypeArray" v-else>
<el-select v-model="formData.dormitoryTypeArray" multiple clearable>
@ -71,7 +72,7 @@
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">管理范围: </span>
<span>{{ formData.rangeName || "--" }}</span>
<span>{{ formData.rangeString =='null;'?'--':formData.rangeString}}</span>
</div>
<el-form-item label-width="100px" label="管理范围" prop="rangeList" v-else>
@ -104,10 +105,7 @@ let loading; // 加载动画
export default {
props: {
formType: {
type: String,
default: "add",
},
source: {
//manage visiual
type: String,
@ -142,8 +140,8 @@ export default {
},
dormitoryTypeList,
categorizedResiId: ''
categorizedResiId: '',
formType: ''
};
},
@ -159,6 +157,7 @@ export default {
methods: {
async initForm(type, row) {
console.log(type);
this.formType = type;
if (this.formType === 'add') {
@ -321,8 +320,8 @@ export default {
const url =
this.formType === "edit"
? "/actual/base/resiCategorized/buildingUnitChief/update"
: this.formData == 'add' ? "/actual/base/resiCategorized/buildingUnitChief/create" : '';
: this.formType == 'add' ? "/actual/base/resiCategorized/buildingUnitChief/create" : '';
console.log(url,'+++++++++++++++++++++++++++++++++++++++');
if (url) {
const { data, code, msg } = await requestPost(url, this.formData);
if (code === 0) {
@ -356,7 +355,6 @@ export default {
item.disabled = false; //
} else if (item.level === "unit") {
item.disabled = false; //
//
if (item.subAgencyList) {
item.subAgencyList.forEach(fourthLevel => {

43
src/views/modules/base/residentManagement/louzhang/louzhangList.vue

@ -27,8 +27,10 @@
<div class="resi-cell">
<div class="resi-cell-value">
<span style="width:100px;text-align: right;padding-right:14px;display: inline-block; ">所属房屋:</span>
<el-select v-model.trim="formData.villageId" placeholder="请选择小区" size="small" filterable clearable
class="u-item-width-communitycascader" @clear="handleClearVillage" @change="handleChangeV">
<el-select v-model.trim="formData.villageId" placeholder="请选择小区" size="small" remote filterable clearable
class="u-item-width-communitycascader" @clear="handleClearVillage" @change="handleChangeV" :remote-method="getValiheList"
v-el-select-loadmore="loadmore"
>
<el-option v-for="item in optionsV" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
@ -151,7 +153,7 @@
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { dormitoryTypeList } from "@/js/columns/constants";
@ -193,6 +195,7 @@ export default {
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
optionsVPageNo:1,
showAdd: false,
showEdit: false,
// showDetail: false,
@ -232,8 +235,29 @@ export default {
this.getTableData();
},
methods: {
directives: {
//data mounted
"el-select-loadmore": {
bind(el, binding) {
const SELECTWRAP_DOM = el.querySelector(
".el-select-dropdown .el-select-dropdown__wrap"
);
SELECTWRAP_DOM.addEventListener("scroll", function () {
const condition =
this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) {
binding.value();
}
});
},
},
},
methods: {
loadmore() {
this.optionsVPageNo++;
this.getValiheList();
},
handleChangeV(val) {
console.log('小区val', val)
this.formData.buildId = ''
@ -250,14 +274,14 @@ export default {
console.log('单元val', val)
},
getValiheList() {
getValiheList(quarterName) {
this.$http
.post('/actual/base/communityQuarters/listQuartersOptions', {
gridId: '',
agencyId: '',
neighborHoodName: quarterName,
pageNo: this.optionsVPageNo,
pageSize:20
// agencyId: user.agencyId
})
.then(({ data: res }) => {
@ -265,7 +289,7 @@ export default {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsV = res.data
this.optionsV = [...this.optionsV, ...res.data];
}
})
.catch(() => {
@ -611,4 +635,3 @@ export default {
margin-right: 10px;
}
</style>

42
src/views/modules/base/residentManagement/oldPeople/addForm.vue

@ -13,9 +13,7 @@
v-model="selGridId" :options="optionsA" @change="handleChangeAngency"
:props="{ checkStrictly: true, emitPath: false, children: 'subAgencyList', label: 'agencyName', value: 'agencyId' }"
clearable />
<span v-else>{{ formData.agencyName || "--" }}</span>
</el-form-item>
</el-col>
@ -181,7 +179,7 @@
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">与户主关系: </span>
<span>{{ formData.disabilityCategoryName || "--" }}</span>
<span>{{ formData.houseHolderRelName || "--" }}</span>
</div>
<el-form-item label-width="104px" label="与户主关系" v-else>
<el-select v-model="formData.houseHolderRel" clearable>
@ -205,7 +203,18 @@
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="" >
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">月收入: </span>
<span>{{ formData.monthIncome || "--" }}</span>
</div>
<el-form-item label-width="104px" label="月收入" v-else>
<el-input v-model="formData.monthIncome" placeholder="请输入" clearable
@blur="monthIncomeNumberInput"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" justify="" >
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
@ -243,7 +252,7 @@
</div>
<el-form-item label-width="104px" label="退休金额" v-else>
<el-input v-model="formData.retirementAmount" placeholder="请输入" clearable
@blur="checkNumberInput"></el-input>
@blur="checkRetirementAmountNumberInput"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@ -253,7 +262,7 @@
</div>
<el-form-item label-width="104px" label="高龄补助" v-else>
<el-input v-model="formData.oldSubsidy" placeholder="请输入" clearable
></el-input>
@blur="checkOldSubsidyInput" ></el-input>
</el-form-item>
</el-col>
</el-row>
@ -364,8 +373,9 @@ export default {
marriage: "",//
disabilityNum:"",
spouseSituation: "",//
retirementAmount: "",
oldSubsidy: "",//
retirementAmount: null,
oldSubsidy: null,//
monthIncome:null,
elderlyFlag: "",//
elderlyRelation: "",//
dependantMobile: "",//
@ -436,16 +446,26 @@ export default {
this.$message.error(msg);
}
},
checkNumberInput() {
checkRetirementAmountNumberInput() {
if (isNaN(this.formData.retirementAmount)) {
this.$message.error("请输入数字");
this.formData.retirementAmount = "";
this.formData.retirementAmount = null;
} else {
this.formData.retirementAmount = parseFloat(
this.formData.retirementAmount
);
}
},
checkOldSubsidyInput() {
if (isNaN(this.formData.oldSubsidy)) {
this.$message.error("请输入数字");
this.formData.oldSubsidy = null;
} else {
this.formData.oldSubsidy = parseFloat(
this.formData.oldSubsidy
);
}
},
monthIncomeNumberInput() {
if (isNaN(this.formData.monthIncome)) {
this.$message.error("请输入数字");
@ -576,9 +596,7 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
let { agencyList, subAgencyList } = res.data
const _arr = [{ ...agencyList, subAgencyList: [...subAgencyList] }]
this.optionsA = this.deepTree(_arr)
}

17
src/views/modules/base/residentManagement/oldPeople/oldPeople.vue

@ -585,9 +585,8 @@
await this.$http
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { metaListData, fileCode, msg } = res.data.data;
this.dataList = metaListData;
// forfilter, O(1) itemGroupId
const { fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","退休金额":"退休金额","月收入":"月收入","残疾类别":"残疾类别","残疾等级":"残疾等级","残疾证号":"残疾证号","残疾说明":"残疾说明","监护人":"监护人","技能特长":"技能特长","劳动能力":"劳动能力","非义务教育阶段助学":"非义务教育阶段助学","所患大病":"所患大病","大病患病时间":"大病患病时间","所患慢性病":"所患慢性病","慢病患病时间":"慢病患病时间","是否参保":"是否参保","自付金额":"自付金额","救助金额":"救助金额","救助时间":"救助时间","享受救助明细序号":"享受救助明细序号","与户主关系":"与户主关系","居住情况":"居住情况","婚姻状况":"婚姻状况","配偶情况":"配偶情况","该居民有无赡养人":"该居民有无赡养人","该居民与赡养人关系":"该居民与赡养人关系","赡养人联系电话":"赡养人联系电话","高龄补助":"高龄补助"};
this.importCode = fileCode;
this.handleComfirmUpload()
})
@ -595,7 +594,7 @@
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});//
});
},
async handleComfirmUpload () {
this.importLoading = true;
@ -615,10 +614,10 @@
.catch((err) => {
console.log("失败", err);
file.onError(); //
});
});
this.importLoading = false;
this.importBtnTitle = "导入";
},
},
//
handleSearch(val) {
console.log(this.formData);
@ -629,8 +628,10 @@
//
async handleAdd() {
this.addDiaTitle = "新增";
this.formType = "add";
this.showAdd = true;
this.$nextTick(() => {
this.$refs.ref_add_form.initForm("add");
});
},
//
async handleDetail(row) {
@ -717,7 +718,7 @@
//
async handleExport() {
const url = "/actual/base/resiCategorized/oldpeople/export";
const url = "/actual/base/resiCategorized/oldPeople/export";
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,

18
src/views/modules/base/residentManagement/publicWelfarePost/addForm.vue

@ -104,8 +104,8 @@
</div>
<el-form-item label-width="100px" label="证件类型" prop="idType" v-else>
<el-select v-model="formData.idType" clearable>
<el-option v-for="item in dicts.idCard_type" :key="item.value" :label="item.label"
:A="item.value">
<el-option v-for="item in idTypeList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
@ -165,10 +165,10 @@
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">入职时间: </span>
<span>{{ formData.hireDate || '--' }}</span>
<span>{{ formData.hireData || '--' }}</span>
</div>
<el-form-item label-width="100px" label="入职时间" v-else>
<el-date-picker v-model="formData.hireDate" type="date" value-format="yyyy-MM-dd HH:mm:ss"
<el-date-picker v-model="formData.hireData" type="date" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期" style="width: 202px" clearable>
</el-date-picker>
</el-form-item>
@ -235,7 +235,7 @@
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">管理范围: </span>
<span>{{ formData.manageScopesName || "--" }}</span>
<span>{{ manageScopesName || "--" }}</span>
</div>
<el-form-item label="管理范围" prop="agencyId" label-width="100px" v-else>
<el-cascader class="u-item-width-normal" ref="myCascader" v-model="formData.manageScopes"
@ -257,7 +257,7 @@
import { Loading } from "element-ui"; // Loading
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { genderList, binaryOptionList } from "@/js/columns/constants";
import { genderList, binaryOptionList,idTypeList } from "@/js/columns/constants";
let loading; //
@ -279,6 +279,7 @@ export default {
checkStrictly: true
}
return {
idTypeList,
formType: '',
btnDisable: false,
//
@ -289,7 +290,6 @@ export default {
mobile: "",
gender: "",
idType: "",
idType: '',
idNum: "",
birthday: "",
nation: "",
@ -300,7 +300,7 @@ export default {
remark: "",
postTypes: [],
manageScopes: [],
hireDate: '',
hireData: '',
isParty: null
},
agencyIdTemp: [],
@ -349,7 +349,6 @@ export default {
this.startLoading();
await this.endLoading();
},
methods: {
async initForm(type, row) {
this.formType = type;
@ -361,6 +360,7 @@ export default {
const { data, code, msg } = await requestGet(url);
if (code === 0) {
this.formData = { ...data };
this.manageScopesName = data.manageScopes.map(item => item.scopeName).join(', ');
this.formData.manageScopes = data.manageScopes[0].scopeId
await this.setAgencyIdFromLastLayerId(data.agencyId)
console.log(this.agencyIdTemp);

4
src/views/modules/base/residentManagement/publicWelfarePost/publicWelfarePost.vue

@ -525,12 +525,12 @@
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode",'SUBSISTENCE_ALLOWANCE');
formData.append("fileMode",'PUBLICWELFAREPOST');
await this.$http
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { metaListData, fileCode, msg } = res.data.data;
this.dataList = metaListData;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","入职时间":"入职时间","岗位类型":"岗位类型","管理网格":"管理网格","管理小区":"管理小区","管理楼栋":"管理楼栋","管理单元":"管理单元","管理房屋":"管理房屋"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()

30
src/views/modules/base/residentManagement/resiDisability/resiDisability.vue

@ -542,21 +542,43 @@ export default {
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode", 'DISABILITY');
await this.$http
.post("/actual/base/resiCategorized/disability/import", formData)
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","残疾类别":"残疾类别","残疾等级":"残疾等级","残疾证号":"残疾证号","退休金额":"退休金额","月收入":"月收入","赡养人联系电话":"赡养人联系电话"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});//
},
async handleComfirmUpload() {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
const formData = new FormData();
formData.append("columnMateJson", JSON.stringify(dataList));
formData.append("fileCode", importCode);
await this.$http
.post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.$message.success("导入成功");
this.getTableData();
this.$refs.upload.clearFiles();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});
this.importLoading = false;
this.importBtnTitle = "导入";
},
//
handleSizeChange(val) {

9
src/views/modules/base/residentManagement/subsistenceAllowance/addForm.vue

@ -118,7 +118,7 @@
formData.localResidenceFlag != null
? formData.localResidenceFlag == 1
? "是"
: formData.gender == 2
: formData.localResidenceFlag == 0
? "否"
: "--"
: "--"
@ -220,7 +220,7 @@
<span>{{ formData.retireTime || '--' }}</span>
</div>
<el-form-item label-width="100px" label="离退休时间" v-else>
<el-date-picker v-model="formData.retireTime" type="date" value-format="yyyy-MM-dd HH:mm:ss"
<el-date-picker v-model="formData.retireTime" type="date" value-format="yyyy-MM-dd"
placeholder="选择日期" style="width: 202px" clearable>
</el-date-picker>
</el-form-item>
@ -262,10 +262,6 @@ export default {
type: String,
default: "manage",
},
formType: {
type: Object,
default: "add"
}
},
data() {
@ -310,7 +306,6 @@ export default {
dataRule: {
name: [{ required: true, message: "姓名不能为空", trigger: "bulr" }],
idNum: [{ required: true, message: "证件号不能为空", trigger: "bulr" }],
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],

3
src/views/modules/base/residentManagement/subsistenceAllowance/subsistenceAllowance.vue

@ -357,6 +357,9 @@ export default {
this.addDiaTitle = "新增";
this.formType = "add";
this.showAdd = true;
this.$nextTick(() => {
this.$refs.ref_add_form.initForm("add");
});
},
//
async handleDetail(row) {

2
src/views/modules/base/residentManagement/tefu/addForm.vue

@ -180,7 +180,7 @@
formData.localResidenceFlag != null
? formData.localResidenceFlag == 1
? "是"
: formData.gender == 0
: formData.localResidenceFlag == 0
? "否"
: "--"
: "--"

13
src/views/modules/base/residentManagement/tefu/tefuList.vue

@ -259,10 +259,10 @@
label="本地户籍"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{scope.row.localResidenceFlag
?scope.row.localResidenceFlag == 1
<span>{{scope.row.localResidenceFlag != null
?scope.row.localResidenceFlag === 1
? "是"
:scope.row. formData.localResidenceFlag == 2
:scope.row.localResidenceFlag === 0
? "否"
: "--"
: "--" }}</span>
@ -364,7 +364,7 @@
</el-dialog>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
@ -792,7 +792,7 @@ export default {
},
//
async handleExport () {
const url = "/actual/base/resiHousingNature/export";
const url = "/actual/base/resiCategorized/specialSupport/export";
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,
@ -921,5 +921,4 @@ export default {
margin-right: 10px;
}
</style>

2
src/views/modules/base/residentManagement/unemployment/addForm.vue

@ -315,7 +315,7 @@
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">是否就业困难对象: </span>
<span>{{
formData.employmentHardFlag
formData.employmentHardFlag!=null
? formData.employmentHardFlag == 1
? "是"
: formData.employmentHardFlag == 0

32
src/views/modules/base/residentManagement/unemployment/unemployment.vue

@ -429,21 +429,43 @@ export default {
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode", 'UNEMPLOYED');
await this.$http
.post("/actual/base/resiUnemployment/import", formData)
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","文化程度":"文化程度","残疾类别":"残疾类别","残疾等级":"残疾等级","户籍地址":"户籍所在地","居住地址":"现居住地址","健康状况":"健康状况","原工作单位":"原工作单位","解除合同日期":"解除合同日期","失业时间":"失业时间","失业证号":"失业证号","失业原因":"失业原因","再就业优惠证号":"再就业优惠证号","技术特长":"技能特长","是否领取失业金":"是否领取失业金","是否就业困难对象":"是否就业困难对象","劳动能力就业愿望":"劳动就业愿望"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});//
},
async handleComfirmUpload() {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
const formData = new FormData();
formData.append("columnMateJson", JSON.stringify(dataList));
formData.append("fileCode", importCode);
await this.$http
.post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.$message.success("导入成功");
this.getTableData();
this.$refs.upload.clearFiles();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});
this.importLoading = false;
this.importBtnTitle = "导入";
},
//
handleSearch(val) {
@ -542,7 +564,7 @@ export default {
},
//
async handleExport() {
const url = "/actual/base/resiUnemployment/export";
const url = "/actual/base/resiCategorized/unemployed/export";
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,

2
src/views/modules/base/residentManagement/volunteer/volunteer.vue

@ -358,7 +358,7 @@ export default {
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { metaListData, fileCode, msg } = res.data.data;
this.dataList = metaListData;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","文化程度":"文化程度","治安巡逻":"治安巡逻","人民调解":"人民调解","民情采集":"民情采集","文体辅导":"文体辅导","结对帮扶":"结对帮扶","应急处理":"应急处理","义务理发":"义务理发","家电维修":"家电维修","其他":"其他","兴趣":"兴趣爱好","工作单位":"工作单位","职业":"职业","户籍地址":"户籍所在地","居住地址":"现居住地址","文化队伍":"文化队伍","楼委会":"楼委会","能人达人":"能人达人","老友俱乐部":"老友俱乐部","代办员":"代办员","调解员":"调解员","采集员":"采集员","治安巡逻员":"治安巡逻员"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()

1
src/views/modules/base/smartImport.vue

@ -203,7 +203,6 @@ export default {
//
async handleSelGroup (index, item, change) {
console.log(index, item, change);
console.log("让我看看返回的什么");
const url = "/oper/customize/icformitem/getItemListV2";
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'
let params = {

1441
src/views/modules/base/virtualResi.vue

File diff suppressed because it is too large

116
src/views/modules/communityParty/members/memberList.vue

@ -165,7 +165,7 @@
:http-request="uploadHttpRequest"
style="display: inline-block;margin:0px 10px"
>
<el-button type="primary" :loading="importLoading"
<el-button type="primary"
size="small"
class="diy-button--white el-button--default">导入</el-button>
</el-upload>
@ -577,35 +577,26 @@ export default {
})
},
/**
* 更新按钮点击
* @param row
*/
handleExcelSuccess(res) {
this.epmetResultResolver.success((data) => {
this.$message.success('上传完成,正在导入,请到导入记录中查看导入情况。');
}).fail(() => {
this.$message.error('导入失败');
}).parse(res);
},
/**
* 文件上传前的处理
* @param file
* @returns {boolean}
*/
beforeExcelUpload(file) {
// console.log('file', file);
const isXlsx = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isXlsx) {
this.$message.error('上传文件只能是xlsx格式!');
}
if (!isLt1M) {
this.$message.error('上传文件大小不能超过 10MB!');
}
return isXlsx && isLt1M;
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
file.type ===
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
const fileType = isType || isTypeComputer;
const isLt1M = file.size / 1024 / 1024 < 10;
if (!fileType) {
this.$message.error("上传文件只能是xls/xlsx格式!");
}
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return fileType && isLt1M;
},
/**
@ -613,39 +604,58 @@ export default {
* @param file
* @returns {Promise<void>}
*/
async uploadHttpRequest(file) {
this.importLoading = true;
this.importBtnTitle = '正在上传中...';
// this.$message({
// showClose: true,
// dangerouslyUseHTMLString: true,
// message: "-<a id='clickA' style='cursor: pointer;'></a>",
// duration: 3000
// });
// let than = this;
// document.getElementById('clickA').addEventListener('click', function() {
// than.$router.replace('/main/importRecord-index');
// });
const formData = new FormData(); //FormDataappend('key', value)
formData.append('file', file.file); //
// formData.append('code', ''); //
await this.$http
.post('/actual/base/party/member/import', formData)
.then(res => {
debugger
this.epmetResultResolver.success((data) => {
this.$message.success('上传成功,正在导入,请到"系统管理-导入记录"中查看导入情况。');
}).parse(res.data);
async uploadHttpRequest(file) {
this.$message({
showClose: true,
dangerouslyUseHTMLString: true,
message:
"导入中,请到系统管理-<a id='clickA' style='cursor: pointer;'>导入记录</a>中查看进度",
duration: 3000,
});
let than = this;
document.getElementById("clickA").addEventListener("click", function () {
than.$router.replace("/main/importRecord-index");
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode",'PARTYINFO');
await this.$http
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","文化程度":"文化程度","户籍地址":"户籍所在地","居住地址":"现居住地址","所属支部":"所属支部","入党时间":"入党时间","转正时间":"转正时间","流动党员":"流动党员","流动党员活动证号":"流动党员活动证号","党组织职务":"党组织职务","是否退休":"是否退休","党员中心户":"党员中心户","入党时所在党支部":"入党时所在党支部","组织关系转入社区时间":"组织关系转入社区时间","免学习":"免学习","工作职责":"职责"};
this.importCode = fileCode;
this.handleComfirmUpload()
})
.catch(err => {
console.log('失败', err);
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});
this.importLoading = false;
this.importBtnTitle = '导入';
this.$refs.upload.clearFiles();
},
},
async handleComfirmUpload () {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
const formData = new FormData();
formData.append("columnMateJson", JSON.stringify(dataList));
formData.append("fileCode", importCode);
await this.$http
.post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.getTableData();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
});
this.importLoading = false;
this.importBtnTitle = "导入";
},
/**
* 单个删除

22
src/views/modules/communityParty/members/points.vue

@ -61,14 +61,6 @@
</el-select>
</el-form-item>
</div>
<div>
<el-button
type="primary"
size="small"
@click="hadnleSubmitbase"
>保存
</el-button>
</div>
</div>
</el-form-item>
</div>
@ -119,6 +111,16 @@
</el-checkbox-group>
</el-form-item>
</div>
<el-row class="position">
<el-col :span="24" align="right">
<el-button
type="primary"
size="small"
@click="hadnleSubmitbase"
>保存
</el-button>
</el-col>
</el-row>
</el-form>
</el-dialog>
</template>
@ -453,4 +455,8 @@ export default {
.input-width {
width: 160px;
}
.position{
position: relative;
top: 15px;
}
</style>

3
src/views/modules/communityParty/partyOrg/create.vue

@ -463,7 +463,8 @@ export default {
map.setMarker(lat, lng);
this.dataForm.latitude = lat;
this.dataForm.longitude = lng;
this.dataForm.address = selPosition.address + selPosition.name
console.log(selPosition);
this.dataForm.address = selPosition.label
},
/**

10
src/views/modules/communityParty/regionalParty/activitys.vue

@ -365,29 +365,21 @@ export default {
},
async loadUnit () {
const url = "/heart/icpartyunit/option"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/option"
const url = "/actual/base/icpartyunit/option"
let params = {
agencyId: this.agencyId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.unitList = data
} else {
this.$message.error(msg)
}
},
//
async loadService () {
const url = "/actual/base/serviceitem/dict-list"
let params = {
// parentCategoryCode: '1010'
}

7
src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue

@ -232,16 +232,15 @@ export default {
watch: {},
async mounted () {
this.getCategoryOpitons();
this.initForm();
},
methods: {
async initForm () {
let { latitude, longitude } = this.$store.state.user;
this.initMap();
this.getCategoryOpitons();
if (this.formId && this.formType != "add") {
await this.getInfo();
} else {
@ -249,6 +248,7 @@ export default {
this.fmData.longitude = longitude
}
this.$nextTick(() => {
if (!map) {
this.initMap(this.fmData.latitude, this.fmData.longitude);
@ -271,7 +271,6 @@ export default {
rotation: 45, //
}
);
//
map.on("dragend", (e) => {
this.handleMoveCenter(e);

2
src/views/modules/communityService/fuwuzuzhi/index.vue

@ -261,6 +261,7 @@ export default {
this.agencyId = this.user.agencyId;
this.getCategoryOpitons();
this.getTableData();
},
methods: {
@ -268,7 +269,6 @@ export default {
console.log(this.searchData);
this.pageNo = 1;
this.getCategoryOpitons();
this.getTableData();
},

4
src/views/modules/communityService/labelConfig/addForm.vue

@ -355,8 +355,7 @@ export default {
if (row.dataSource == "resi") {
let url = "/oper/customize/icformitemgroup/list";
let params = {
formCode: "resi_base_info",
policyFlag: "1",
formCode: "resident_base_info",
};
let { data, code, msg } = await requestPost(url, params);
if (code == 0) {
@ -432,7 +431,6 @@ export default {
const url = "/oper/customize/icformitem/getItemListV2";
let params = {
groupId: row.itemGroupId,
policyFlag: "1",
};
this.hadeleClearForm(this.tableData[index], index);
if (!type) {

4
src/views/modules/communityService/measure/index.vue

@ -154,7 +154,7 @@
@click="resetForm('searchForm')"
>重置</el-button
>
<el-button
<!-- <el-button
style="margin:0 6px 0 10px"
size="small"
class="div-table-button--blue"
@ -164,7 +164,7 @@
}}<i
:class="boxHeight ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
></i
></el-button>
></el-button> -->
</el-col>
</el-row>
</div>

2
src/views/modules/home/index.vue

@ -370,7 +370,7 @@ export default {
async getApiData() {
await this.getOrgData();
this.getWarningList();
this.getZnycList();
// this.getZnycList();
this.getPandectData();
this.getNoticeData();
},

99
src/views/modules/jumin/cpts/leftBto.vue

@ -0,0 +1,99 @@
<template>
<div class="">
<div v-for="(item, index) in familyList" :key="index" class="familylist">
<div :class="['item', {'bgf':index== 0 }] ">
<div>
<img v-if="index == 0 && userInfo.gender == '1'" src="../../../../assets/images/index/nan.png" alt=""
width="56px">
<img v-if="index == 0 && userInfo.gender == '2'" src="../../../../assets/images/index/nv.png" alt=""
width="56px">
<span class="name">{{ item.name }}</span>{{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel ? item.houseHolderRel : '--'
}}
</div>
<div>
<span>人户状况</span>{{item.householdSituation||'--'}}
</div>
<div>
<span>居民分类</span>{{item.resiCategory||'--'}}
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost, requestGet } from '@/js/dai/request'
export default {
//
data() {
return {
familyList: []
};
},
//
created() {
},
mounted() {
console.log(this.userInfo);
this.getFamilyRelationshipList()
},
props: {
userInfo: {
type: Object,
default: () => { }
}
},
//
methods: {
async getFamilyRelationshipList() {
let url = `/actual/base/peopleRoomOverview/getFamilyRelationshipList?type=0&resid=` + this.userInfo.resiId
let { code, data, msg } = await requestPost(url)
if (code == 0) {
//
const index = data.findIndex(item => item.name == this.userInfo.name);
//
if (index !== -1) {
//
const [item] = data.splice(index, 1);
data.unshift(item);
}
for(let i in data){
if(data[i].classificationOfInhabitantsList){
data[i].resiCategory = data[i].classificationOfInhabitantsList.join(',')
}
}
this.familyList = data
} else {
this.$message.error(msg)
}
}
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/pages/huaxiang";
@import "@/assets/scss/modules/management/list-main.scss";
.item{
padding: 0 15px;
&>div{
margin-top: 18px;
.name{
font-family: PingFang SC;
font-weight: bold;
color: #000000;
}
}
}
.bgf>:nth-child(1){
margin: 0!important;
padding-top: 16px;
box-sizing: border-box;
}
</style>

79
src/views/modules/jumin/cpts/leftTop.vue

@ -0,0 +1,79 @@
<template>
<div class=''>
<div class="item f-font14">
<span class="label gray">居住地址</span><span class="value">{{ resiInfo.fullName||"--" }}</span>
</div>
<div class="item f-font14">
<span class="label gray">联系电话</span><span class="value">{{ resiInfo.mobile||"--" }}</span>
</div>
<div class="item f-font14">
<span class="label gray">所属网格</span><span class="value">{{ resiInfo.gridName||"--" }}</span>
</div>
<div class="item f-font14">
<span class="label gray">入户状况</span><span class="value">{{ resiInfo.householdSituation||"--" }}</span>
</div>
<div class="item f-font14">
<!-- 居住类型,与子女同住,空巢,独居,其他 字段没有返回-->
<span class="label gray">居住类型</span><span class="value">{{ resiInfo.resideSituation || "--" }}</span>
</div>
<div class="item f-font14">
<span class="label gray">家庭预警</span>
<span class="value">{{resiInfo.riskyFlag === '1' ? '满意度风险家庭' : '--'}}</span>
</div>
</div>
</template>
<script>
import { requestPost, requestGet } from '@/js/dai/request'
export default {
//
data() {
return {
resiInfo: {}
};
},
//
created() {
},
mounted() {
this.getPersonalFile()
},
props: {
resiId: {
type: String,
default: ''
},
},
watch: {
resiId: {
handler(newVal, oldVal) {
this.getPersonalFile()
}
}
},
//
methods: {
async getPersonalFile() {
let url = `/actual/base/peopleRoomOverview/getPersonalFile?resid=` + this.resiId
let { code, data, msg } = await requestPost(url)
if (code == 0) {
this.resiInfo = data
console.log(this.resiInfo);
} else {
this.$message.error(msg)
}
}
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/pages/huaxiang";
@import "@/assets/scss/modules/management/list-main.scss";
</style>

104
src/views/modules/jumin/cpts/pointsRecord.vue

@ -0,0 +1,104 @@
<template>
<div class="enjoy-service">
<div class="enjoy-service-item" v-for="(item, index) in data">
<div class="num">+{{ item.classificationNum }}</div>
<div class="info">
<div class="title">{{ item.classification }}</div>
<div class="time">{{ item.recordTime }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
data() {
return {
data: [],
};
},
//
created() {
this.getData();
},
props: {
resiId: {
type: String,
default: ''
}
},
//
methods: {
getData() {
this.data = [];
this.$http
.get("/actual/base/peopleRoomOverview/recorHistory")
.then(({ data: res }) => {
if (res.code == 0) {
this.data = res.data;
}
});
},
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
.enjoy-service {
padding-left: 26px;
margin-top: 12px;
height: 100%;
overflow-y: scroll;
}
.enjoy-service-item {
color: #333333;
display: flex;
padding: 14px 16px 14px;
margin-bottom: 8px;
background: #fff;
&:hover {
background: #f5f7fa !important;
color: #0056D6 !important;
*,
*::before,
*::after {
//
color: #0056D6 !important;
}
}
.num {
font-size: 24px;
font-weight: 500;
line-height: 22px;
color: #000000;
display: flex;
align-items: center;
}
.info {
font-size: 14px;
margin-left: 40px;
.title {
font-weight: 500;
margin-bottom: 10px;
}
.time {
font-weight: 400;
color: #000000;
opacity: 0.65;
}
}
}
</style>

26
src/views/modules/jumin/cpts/rightBto.vue

@ -0,0 +1,26 @@
<!-- 房屋模块用 -->
<template>
<div class=''>
</div>
</template>
<!-- -->
<script>
export default{
data(){
return{};
},
//
created(){},
//
methods:{},
//
components:{},
//
computed:{},
//
watch:{},
}
</script>
<style lang="less" scoped>
</style>

286
src/views/modules/jumin/cpts/rightTop.vue

@ -0,0 +1,286 @@
<template>
<div class=''>
<el-tabs v-model="topTabs" @tab-click="tabClick">
<el-tab-pane :label="complainLabel" name="12345">
<complain :tableData="complainList" />
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ complainTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="complainTotal">
</el-pagination></el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="shengLabel" name="sheng">
<sheng :tableData="shengList" />
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ shengTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="shengTotal">
</el-pagination></el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="shequLabel" name="shequ">
<shequ :tableData="shequList" />
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ shequTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="shequTotal">
</el-pagination></el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="shijianLabel" name="shijian">
<shijian :tableData="shijianList" />
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ shijianTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="shijianTotal">
</el-pagination></el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="xuqiuLabel" name="xuqiu">
<xuqiu :tableData="xuqiuList" />
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ xuqiuTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="xuqiuTotal">
</el-pagination></el-col>
</el-row>
</el-tab-pane>
<el-tab-pane :label="fuwuLabel" name="fuwu">
<div style="display: flex; flex-direction: column; height: 100%;">
<!-- 你的表格组件将填充所有可用空间 -->
<fuwu :tableData="fuwuList" style="flex: 1; overflow: auto;" />
<!-- 你的页码部分保持恒定的高度 -->
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px;">{{ fuwuTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-size="pageSize" layout="prev, pager, next, jumper"
:total="fuwuTotal">
</el-pagination>
</el-col>
</el-row>
</div>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import complain from "./table/complain";
import sheng from "./table/sheng";
import shequ from "./table/shequ";
import shijian from "./table/shijian";
import xuqiu from "./table/xuqiu";
import fuwu from "./table/fuwu";
export default {
//
data() {
return {
topTabs: '12345',
complainTotal: 0,
complainList: [],
complainLabel: '',
shengLabel: '',
shengList: [],
shengTotal: 0,
shequLabel: '',
shequList: [],
shequTotal: 0,
shijianLabel: '',
shijianList: [],
shijianTotal: 0,
xuqiuLabel: '',
xuqiuList: [],
xuqiuTotal: 0,
fuwuLabel: '',
fuwuList: [],
fuwuTotal: 0,
pageNo: 1,
pageSize: 20
};
},
//
created() { },
mounted() {
this.getComplainList()
this.getShengList()
this.getShequList()
this.getshijianList()
this.getxuqiuList()
this.getfuwuList()
},
props: {
userInfo: {
type: Object,
default: {
resiId: ''
}
}
},
//
methods: {
tabClick(index) {
},
handleSizeChange() {
},
handleCurrentChange() {
},
getComplainList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
const statusArr = {
processing: "处理中",
closed_case: "已办结",
};
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
//
this.$http.post("/actual/base/peopleRoomOverview/eventPageList", parm).then(({ data: res }) => {
this.complainList = res.data.list.map((item) => {
return {
...item,
status: item.status ? statusArr[item.status] : null,
marktype: marktypes[item.marktype],
};
});
this.complainTotal = res.data.total;
this.complainLabel = `12345投诉(${this.complainTotal}`
});
},
getShengList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
//
this.$http.post("/actual/base/peopleRoomOverview/provincialSatisfactionPageList", parm).then(({ data: res }) => {
this.shengList = res.data;
this.shengTotal = res.data.length;
this.shengLabel = `省满意度调查(${this.shengTotal}`
});
},
getShequList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", parm).then(({ data: res }) => {
this.shequList = res.data.map((item) => {
return {
...item,
completeFlag: completeFlags[item.completeFlag],
};
});
this.shequTotal = this.shequList.length;
this.shequLabel = `社区满意度自查(${this.shequTotal}`
});
},
getshijianList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
this.$http.post("/actual/base/peopleRoomOverview/eventPageList", parm).then(({ data: res }) => {
this.shijianList = res.data.list.map((item) => {
return {
...item,
status: item.status ? statusArr[item.status] : null,
marktype: marktypes[item.marktype],
};
});
this.shijianTotal = this.shijianList.length;
this.shijianLabel = `上报事件(${this.shijianTotal}`
});
},
getxuqiuList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
//
this.$http.post("/actual/base/peopleRoomOverview/demandOfResidentsPageList", parm).then(({ data: res }) => {
this.xuqiuList = res.data.map((item) => {
return {
...item,
};
});
this.xuqiuTotal = this.xuqiuList.length;
this.xuqiuLabel = `居民需求(${this.xuqiuTotal}`
});
},
getfuwuList() {
let parm = {
residList: [this.userInfo.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
this.$http.post("/actual/base/peopleRoomOverview/communityServicePageList", parm).then(({ data: res }) => {
this.fuwuList = res.data.map((item) => {
return {
...item,
};
});
this.fuwuTotal = this.fuwuList.length;
this.fuwuLabel = `社区服务(${this.fuwuTotal}`
});
},
},
//
components: { complain, sheng, fuwu, shijian, xuqiu, shequ },
//
computed: {},
//
watch: {},
}
</script>
<style lang="less" scoped></style>

154
src/views/modules/jumin/cpts/table/complain.vue

@ -0,0 +1,154 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="事件类型" prop="categorycode" width="" />
<el-table-column label="事件描述" prop="eventcontent" width="" />
<el-table-column label="办理状态" prop="status" width="" />
<el-table-column label="接收时间" prop="happentime" width="180" />
<el-table-column label="标记" prop="marktype" width="" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 363px; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
pageNo: 1,
pageSize: 20
};
},
activated() {
},
watch: {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
}
},
methods: {
getList() {
let parm = {
residList: [this.resiId],
pageNo: this.pageNo,
pageSize: this.pageSize
}
this.list = [];
this.total = 0;
// this.$emit("changeTotal", { name: 2, total: 0 });
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", parm).then(({ data: res }) => {
this.list = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}, {
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
this.total = this.list.length;
this.$emit("changeTotal", { name: 2, total: this.total });
});
},
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
handleSizeChange(val) {
this.pageSize = val;
this.pageNo = 1;
this.getList();
},
handleCurrentChange(val) {
this.pageNo = val;
this.getList();
},
},
};
</script>
<style scoped lang="scss"></style>

64
src/views/modules/jumin/cpts/table/fuwu.vue

@ -0,0 +1,64 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="需求类型" prop="serviceCategoryKey" width="" />
<el-table-column label="事件描述" prop="serviceName" width="" />
<el-table-column label="服务情况" prop="state" width="" />
<el-table-column label="创建时间" prop="serviceTimeStart" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
activated() {
},
watch: {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
}
},
methods: {
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss"></style>

62
src/views/modules/jumin/cpts/table/sheng.vue

@ -0,0 +1,62 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" />
<el-table-column label="办理状态" prop="completeFlag" width="120" />
<el-table-column label="是否回访" prop="isReturn" width="120" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
activated() {
},
watch: {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
}
},
methods: {
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss"></style>

60
src/views/modules/jumin/cpts/table/shequ.vue

@ -0,0 +1,60 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" />
<el-table-column label="办理状态" prop="completeFlag" width="120" />
<el-table-column label="是否回访" prop="isReturn" width="120" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
activated() {
},
watch: {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
}
},
methods: {
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss"></style>

106
src/views/modules/jumin/cpts/table/shijian.vue

@ -0,0 +1,106 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="事件类型" prop="categorycode" width="" />
<el-table-column label="事件描述" prop="eventcontent" width="" />
<el-table-column label="办理状态" prop="status" width="" />
<el-table-column label="接收时间" prop="happentime" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
activated() {
},
mounted() { },
props: {
resiId: {
type: String,
default: ''
},
tableData: {
type: Array,
default: []
}
},
methods: {
getList() {
let residList = [this.resiId]
this.list = [];
this.total = 0;
// this.$emit("changeTotal", { name: 2, total: 0 });
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", { residList }).then(({ data: res }) => {
this.list = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}]
this.total = res.data.length;
// this.$emit("changeTotal", { name: 2, total: this.total });
});
},
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss"></style>

103
src/views/modules/jumin/cpts/table/xuqiu.vue

@ -0,0 +1,103 @@
<template>
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" max-height="214px" height="214px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="需求类型" prop="categoryName" width="" />
<el-table-column label="需求描述" prop="content" width="" />
<el-table-column label="办理情况" prop="status" width="" />
<el-table-column label="上报时间" prop="reportTime" width="180" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div v-else style="width: 100%; height: 100%; text-align: center; padding-top: 120px">
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
<script>
export default {
name: "community",
components: {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
activated() {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
}
},
methods: {
getList() {
let residList = [this.resiId]
this.list = [];
this.total = 0;
// this.$emit("changeTotal", { name: 2, total: 0 });
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", { residList }).then(({ data: res }) => {
this.list = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}]
this.total = res.data.length;
// this.$emit("changeTotal", { name: 2, total: this.total });
});
},
handleView(item) {
this.rowId = item.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
},
};
</script>
<style scoped lang="scss"></style>

139
src/views/modules/jumin/cpts/xiangshoufuwu.vue

@ -0,0 +1,139 @@
<template>
<div class="cnt-right">
<div class="list">
<div class="item f-hflex" :key="index" v-for="(item, index) in list">
<el-row type="flex" class="row">
<el-col :span="12" align="left">{{item.classification}}</el-col>
<el-col :span="12" align="right">{{item.classificationNum || 0}}</el-col>
</el-row>
<div class="item-progress">
<b :style="{
width: item.per + '%',
}"></b>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
data() {
return {
list: [],
};
},
//
created() {
this.getData();
},
props: {
resiId: {
type: String,
default: ''
}
},
//
methods: {
getData() {
this.$http
.get("/actual/base/peopleRoomOverview/serviceNumber?resid=" + this.resiId)
.then(({ data: res }) => {
// res.data = [
// {
// "classification": "",
// "classificationNum": '12'
// },
// {
// "classification": "",
// "classificationNum": '15'
// },
// {
// "classification": "",
// "classificationNum": '20'
// },
// {
// "classification": "",
// "classificationNum": '40'
// }
// ]
let total = res.data.reduce((sum, item) => sum + Number(item.classificationNum), 0);
res.data = res.data.map(item => ({
...item,
per: (Number(item.classificationNum) / total * 100).toFixed(2) //
}));
this.list = res.data
console.log( res.data);
});
},
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/list-main.scss";
.cnt-right {
.list {
.item {
margin-top: 20px;
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;
.row{
width: 100%;
margin: 0 0 10px;
padding: 0 10px 0 0;
}
.item-name {
margin-left: 5px;
width: 80px;
flex-shrink: 0;
}
.item-div {
width: 1px;
height: 12px;
background: #d8d8d8;
border-radius: 1px;
}
.item-count {
width: 90px;
flex-shrink: 0;
}
.item-per {
min-width: 70px;
}
.item-progress {
margin-right: 15px;
width: 100%;
height: 24px;
background: #e6f0ff;
border-radius: 1px;
overflow: hidden;
b {
display: block;
height: 24px;
background: #7ba6e6;
}
}
}
}
}
</style>

122
src/views/modules/jumin/huaxiang.vue

@ -0,0 +1,122 @@
<template>
<div class='g-main'>
<div class="top">
<div class="left">
<div class="card">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-sqzl.png" alt="">居民档案</div>
<span class="title f-font14 gray" style="cursor: pointer;" @click="handlerUserInfo">详情 ></span>
</div>
<div class="f-top12">
<img src="../../../assets/images/index/resi.png" alt="" width="56px"> {{ userInfo.name }}
</div>
<section class="bgC">
<left-top :resiId="userInfo.resiId" :key="userInfo.resiId"></left-top>
</section>
</div>
</div>
<div class="right">
<div class="card">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-ywjl.png" alt="">各项业务记录</div>
</div>
<right-top :userInfo="userInfo" :key="userInfo.resiId"></right-top>
</div>
</div>
</div>
<div class="bottom">
<div class="left">
<div class="card">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-jtgx.png" alt="">家庭关系</div>
</div>
<section class="bgC" style="padding: 0;">
<left-bto :userInfo="userInfo" :key="userInfo.resiId"></left-bto>
</section>
</div>
</div>
<div class="right">
<div class="card f-w50 right16">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-xsfw.png" alt="">享受服务次数统计</div>
</div>
<div>
<xiangshoufuwu :key="userInfo.resiId"/>
</div>
</div>
<div class="card" style="width: calc(50% - 16px);">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-jfjl.png" alt="">积分记录</div>
</div>
<div class="card">
<pointsRecord :resiId="userInfo.resiId" :key="userInfo.resiId" />
</div>
</div>
</div>
</div>
<resi-info v-if="showedResiInfo && userInfo.resiId" :resi-id="userInfo.resiId" @close="showedResiInfo = false" />
</div>
</template>
<script>
import { requestPost, requestGet } from '@/js/dai/request'
import leftTop from "./cpts/leftTop";
import leftBto from "./cpts/leftBto";
import rightTop from "./cpts/rightTop";
import rightBto from "./cpts/rightBto";
import resiInfo from "@/views/modules/cpts/resi/info";
import nextTick from "dai-js/tools/nextTick";
import pointsRecord from "./cpts/pointsRecord";
import xiangshoufuwu from "./cpts/xiangshoufuwu";
export default {
//
data() {
return {
userInfo: {},
showedResiInfo: false,
};
},
//
async created() {
this.userInfo = this.$store.state.huaXiang.userInfo
await this.getFamilyRelationshipList()
},
mounted() {
},
activated() {
this.userInfo = this.$store.state.huaXiang.userInfo
},
//
methods: {
async getFamilyRelationshipList() {
let url = `/actual/base/peopleRoomOverview/getFamilyRelationshipList?type=0&resid=` + this.userInfo.resiId
let { code, data, msg } = await requestPost(url)
if (code == 0) {
this.familyList = data
} else {
this.$message.error(msg)
}
},
async handlerUserInfo() {
await nextTick();
this.showedResiInfo = true;
},
changeTotal(val) {
this.total = val.total
},
},
//
components: { leftTop, leftBto, resiInfo, rightTop, pointsRecord, rightBto, xiangshoufuwu },
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/pages/huaxiang";
@import "@/assets/scss/modules/management/list-main.scss";
</style>

9
src/views/modules/plugins/change/changedeath.vue

@ -72,15 +72,14 @@
</el-form>
<el-row>
<el-button
<el-row type="flex" justify="right">
<el-col :span="24" align="right">
<el-button
style="margin-left: 10px"
size="small"
class="diy-button--blue"
@click="getDataList"
>查询</el-button
>
<el-col :span="24" align="right">
>查询</el-button>
<el-button class="diy-button--white" size="small" @click="resetForm"
>重置</el-button
>

13
src/views/modules/satisfaction/satisfactionProvince/followDetail.vue

@ -40,6 +40,15 @@
</div>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-top24">
<el-col :span="24" class="f-flex f-align_item"><span class="label">组织类型</span>
<div class="f-flex1">
<el-radio v-model="formData.orgCategoryCode" label="province" :disabled="disabled"></el-radio>
<el-radio v-model="formData.orgCategoryCode" label="city" :disabled="disabled"></el-radio>
<el-radio v-model="formData.orgCategoryCode" label="district" :disabled="disabled"></el-radio>
</div>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-top24">
<el-col :span="24" class="f-flex f-align_item"><span class="label">完成时限</span>
<div class="f-flex1">
@ -83,7 +92,9 @@ export default {
evaCulturalFacility: 'bad',
formData:{
completeTime:'',
remark:''
remark:'',
orgCategoryCode:'',
completeFlag:""
},
disabled:false
};

72
src/views/modules/satisfaction/satisfactionProvince/formList.vue

@ -1,6 +1,13 @@
<template>
<div style="margin-top:10px">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<el-form-item prop="gridId" label="所属组织">
<div class="resi-cell-value">
<el-cascader class="customer_cascader" ref="myCascader" clearable v-model="agencyIdArray"
:options="orgOptions" :props="orgOptionProps" :show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
</el-form-item>
<el-form-item label="不满意类目" prop="startTime" >
<el-select v-model="formData.scopeId" placeholder="请输入" size="small" class="u-item-width-normal" @change="getTableData" clearable>
<el-option v-for="item in dicts.satisfaction_category" :key="item.value" :label="item.label"
@ -61,6 +68,10 @@ export default {
formData: {
periodStart: '',
scopeId: '',
agencyId: "",
orgIdPath: "",
gridId: "",
orgCategoryCode:""
},
pageNo: 0,
pageSize: 20,
@ -71,6 +82,15 @@ export default {
satisfaction_level: []
},
completeList,
orgOptions: [],
orgOptionProps: {
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
agencyIdArray: [],
};
},
//
@ -78,8 +98,10 @@ export default {
async mounted() {
if (this.satisfactionCategoryStr) {
this.formData.scopeId = this.satisfactionCategoryStr
this.formData.periodStart = this.periodStart
this.formData.periodStart = this.formObj.periodStart
this.formData.orgCategoryCode = this.formObj.orgCategoryCode
}
await this.loadAgency();
await this.getDicts()
await this.getTableData()
},
@ -110,6 +132,48 @@ export default {
}
},
//
async loadAgency() {
const { user } = this.$store.state
this.$http.post('/gov/org/customeragency/agencygridtree', {}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.orgOptions = []
this.orgOptions.push(res.data)
}
}).catch(() => {
return this.$message.error('网络错误')
})
},
handleChangeAgency(val) {
let obj = this.$refs["myCascader"].getCheckedNodes()[0].data
if (obj) {
if (obj.level === 'grid') {
this.formData.gridId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.formData.agencyId = ''
} else {
this.formData.agencyId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.formData.gridId = ''
}
this.formData.orgIdPath = this.agencyIdArray.toString();
} else {
this.formData.agencyId = ''
this.formData.gridId = ''
}
this.getTableData();
},
handleChangeGrid(val) {
this.formData.villageId = "";
this.formData.buildId = "";
this.formData.unitId = "";
this.formData.homeId = "";
this.getValiheList();
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.pageSize = val;
@ -155,9 +219,9 @@ export default {
type: String,
default: ''
},
periodStart: {
type: String,
default: ''
formObj: {
type: Object,
default: () => {}
}
},
//

15
src/views/modules/satisfaction/satisfactionProvince/index.vue

@ -29,6 +29,11 @@
<el-button type="primary" style="margin-left:10px" size="small"
class="diy-button--white el-button--default" @click="handleExportModule">下载模板</el-button>
</div>
<el-radio-group v-model="formData.orgCategoryCode" @change="handelChangeCategory" style="margin: 20px 0 0;">
<el-radio-button label="province">省满意度调查</el-radio-button>
<el-radio-button label="city">市满意度调查</el-radio-button>
<el-radio-button label="district">区满意度调查</el-radio-button>
</el-radio-group>
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div id="myCharts"></div>
</div>
@ -38,7 +43,7 @@
:close-on-press-escape="false" title="省满意度调查列表" :modal-append-to-body="false" width="820px" top="5vh"
class="dialog-h" @closed="showFormList = false">
<form-list ref="ref_form_list" @handleClose="handleClose" :satisfactionCategoryStr="satisfactionCategoryStr"
:periodStart="formData.periodStart" @handelClickDetail="handelClickDetail"
:formObj="formData" @handelClickDetail="handelClickDetail"
@handelClickEdit="handelClickEdit"></form-list>
<el-dialog width="820px" class="dialog-h" title="省满意度调查详情" :close-on-click-modal="false"
v-if="showProvinceFollowUpDetail" :visible.sync="showProvinceFollowUpDetail" append-to-body>
@ -66,6 +71,7 @@ export default {
showFormList: false,
formData: {
periodStart: "",
orgCategoryCode:"province"
},
multiSelection: [], //
@ -192,9 +198,6 @@ export default {
this.myChart.setOption(this.option)
let than = this
this.myChart.on('click', function (params) {
// console.log(params.name); //
// console.log(params.data); //
// console.log(params.seriesName); //
than.handelClickChart(params.name)
});
@ -223,6 +226,9 @@ export default {
this.showProvinceFollowUpDetail = true
this.detailObj = row || {}
},
handelChangeCategory(){
this.getTableData()
},
handleComfirm(form) {
this.showProvinceFollowUpDetail = false
this.save(form)
@ -337,6 +343,7 @@ export default {
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("orgCategory",than.formData.orgCategoryCode); //
await this.$http
.post(`/governance/provinceEvaluationRecord/importDataByExcel`, formData)
.then((res) => {

29
src/views/modules/shequ/chaxun.vue

@ -339,6 +339,8 @@ import resiInfo from "@/views/modules/cpts/resi/info";
import houseInfo from "@/views/modules/cpts/house/info";
import smatrRules from "./cpts/smatr-rules.vue";
import { requestGet } from "../../../js/dai/request";
import { addDynamicRoute } from '@/router'
export default {
components: {
resiInfo,
@ -572,10 +574,20 @@ export default {
this.getSearchJumin();
},
async handleWatchSearchJumin(rowIndex) {
let item = this.searchJumin.list[rowIndex];
this.currentResiId = item.resiId;
await nextTick();
this.showedResiInfo = true;
// let item = this.searchJumin.list[rowIndex];
// this.currentResiId = item.resiId;
// await nextTick();
// this.showedResiInfo = true;
let { agencyId, gridId, gridName, gender, homeId, homeName, name, resiId } = this.searchJumin.list[rowIndex]
console.log(this.searchJumin.list[rowIndex]);
this.$store.dispatch('saveData', { agencyId, gridId, gridName, gender, homeId, homeName, name, resiId });
this.$router.push({ name: 'jumin-huaxiang' });
this.$store.state.contentTabs = this.$store.state.contentTabs.map(item => {
if (item.name === "jumin-huaxiang") {
return {...item, title: name };
}
return item;
});
},
handleSizeChangeSearchFangwu(val) {
@ -591,10 +603,11 @@ export default {
},
async handleWatchSearchFangwu(rowIndex) {
let item = this.searchFangwu.list[rowIndex];
this.currentHouseId = item.id;
await nextTick();
this.showedHouseInfo = true;
// let item = this.searchFangwu.list[rowIndex];
// this.currentHouseId = item.id;
// await nextTick();
// this.showedHouseInfo = true;
console.log(this.searchFangwu.list[rowIndex]);
},
getApiData() {},

2
src/views/modules/shequzhili/event/cpts/add.vue

@ -18,7 +18,7 @@
</el-select>
</el-form-item>
<el-form-item label="工单号" prop="workOrderNum" label-width="150px" style="display: block">
<el-input class="cell-width-1" maxlength="10" placeholder="请输入工单号" v-model="formData.workOrderNum" />
<el-input class="cell-width-1" maxlength="30" placeholder="请输入工单号" v-model="formData.workOrderNum" />
</el-form-item>
<el-form-item label="接收时间" prop="happenTime" label-width="150px" style="display: block">
<el-date-picker v-model="formData.happenTime" class="cell-width-1" type="datetime"

2
src/views/modules/shequzhili/event/cpts/event-detail.vue

@ -85,7 +85,7 @@
<el-radio-group :class="{ 'form-item': source === 'visiual' }" v-model="satisfyLevel"
@change="clickSatisfy">
<el-radio label="good">满意</el-radio>
<el-radio label="perfect">基本满意</el-radio>
<el-radio label="perfect">非常满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>

13
src/views/modules/shequzhili/event/cpts/event-info.vue

@ -372,37 +372,32 @@ export default {
} else {
return false;
}
this.project = {};
this.demand = {};
this.$refs.ref_processinfo_add.getProcessInfo();
this.formData.operationType = this.$refs.ref_processinfo_add.operationType;
this.eventInfoData.operationType = this.$refs.ref_processinfo_add.operationType;
if (this.formData.operationType === '0' || this.formData.operationType === '6') {
this.project = {};
this.demand = {};
this.replayInfo = this.$refs.ref_processinfo_add.replayInfo;
console.log(this.replayInfo);
//
this.eventInfoData.content = this.replayInfo.content;
this.eventInfoData.status = this.replayInfo.status;
this.eventInfoData.timeLimit = this.replayInfo.timeLimit;
if (this.replayInfo.categoryId) {
this.eventInfoData.categoryList = [];
this.eventInfoData.categoryList.push(this.replayInfo.categoryId);
}
} else if (this.formData.operationType === '5') {
this.project = {};
this.demand = {};
console.log(this.$refs.ref_process_form_designate.replayInfo);
this.replayInfo = this.$refs.ref_process_form_designate.replayInfo;
console.log(this.replayInfo);
//
this.eventInfoData.content = this.replayInfo.content;
this.eventInfoData.status = this.replayInfo.status;
this.eventInfoData.timeLimit = this.replayInfo.timeLimit;
if (this.replayInfo.categoryId) {
this.eventInfoData.categoryList = [];
this.eventInfoData.categoryList.push(this.replayInfo.categoryId);
}
} else if (this.formData.operationType === '4') {
this.project = {};
this.demand = {};
this.replayInfo = {};
}
this.formData = {

4
src/views/modules/shequzhili/event/cpts/myCascader.vue

@ -18,8 +18,9 @@ export default {
selCategoryArray: {}
},
selCateObj: {},
iscascaderShow: 0
iscascaderShow: 0,
};
},
props: {
casOptions: {
@ -39,7 +40,6 @@ export default {
} else {
this.selCateObj = {}
}
this.$emit('handleChangeCate', this.selCateObj)
}
},

36
src/views/modules/shequzhili/event/cpts/process-form-designate.vue

@ -102,6 +102,9 @@ export default {
],
timeLimit: [
{ required: true, message: "办结时限不能为空", trigger: "blur" },
],
categoryList: [
{ required: true, message: '事件分类不能为空', trigger: 'blur' },
]
},
selCateObj: {
@ -140,9 +143,9 @@ export default {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
// eventDetailCopy
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCateObj.id = this.eventDetailCopy.categoryId
this.formData.categoryId = this.eventDetailCopy.categoryId
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId, this.eventDetailCopy.categoryId)
this.selCategoryArray = this.eventDetailCopy.parentCategoryId.split(",");
this.selCategoryArray.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(this.selCategoryArray)
}
}
},
@ -174,6 +177,29 @@ export default {
} else {
this.$message.error(msg);
}
if (this.eventDetailCopy.parentCategoryId) {
const pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId);
let nodes = this.casOptions;
for (let i = 0; i < pids.length; i++) {
nodes = this.buildNode(nodes, pids[i])
}
if (nodes) {
this.formData.categoryList.push(nodes)
this.selCateObj = nodes
}
}
},
buildNode(nodes, treeId) {
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].id === treeId) {
if (nodes[i].children) {
return nodes[i].children
} else {
return nodes[i]
}
}
}
},
handleChangeAgency(val) {
let obj = this.$refs["agencyIdArray"].getCheckedNodes()[0].data
@ -189,8 +215,8 @@ export default {
handleChangeCate() {
if (this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0]) {
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.formData.categoryList = this.selCateObj
this.formData.categoryId = this.selCateObj.id
console.log(this.formData.categoryId, 'this.formData.categoryId');
} else {
this.selCateObj = {}
}
@ -220,7 +246,7 @@ export default {
this.$message.error("请选择事件分类");
return false;
}
if(this.fileList){
if (this.fileList) {
this.formData.files = this.fileList
}
this.formData.status = "processing";

32
src/views/modules/shequzhili/event/cpts/process-form-replay-end.vue

@ -73,7 +73,7 @@ export default {
{ required: true, message: '回复内容不能为空', trigger: 'blur' },
],
categoryList: [
// { required: true, message: '', trigger: 'blur' },
{ required: true, message: '事件分类不能为空', trigger: 'blur' },
]
}
};
@ -107,8 +107,9 @@ export default {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
// eventDetailCopy
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.formData.categoryId = this.eventDetailCopy.categoryId
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId, this.eventDetailCopy.categoryId)
this.selCategoryArray = this.eventDetailCopy.parentCategoryId.split(",");
this.selCategoryArray.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(this.selCategoryArray)
}
}
},
@ -127,10 +128,33 @@ export default {
} else {
this.$message.error(msg);
}
if (this.eventDetailCopy.parentCategoryId) {
const pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId);
let nodes = this.casOptions;
for (let i = 0; i < pids.length; i++) {
nodes = this.buildNode(nodes, pids[i])
}
if (nodes) {
this.formData.categoryList.push(nodes)
}
}
},
buildNode(nodes, treeId) {
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].id === treeId) {
if (nodes[i].children) {
return nodes[i].children
} else {
return nodes[i]
}
}
}
},
handleChangeCate() {
if (this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0]) {
this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0].data
this.formData.categoryList = this.selCateObj
} else {
this.selCateObj = {}
}
@ -165,7 +189,7 @@ export default {
if (!this.formData.categoryId) {
this.formData.categoryId = this.selCateObj.id;
}
if(this.fileList){
if (this.fileList) {
this.formData.files = this.fileList
}
this.formData.categoryList = [];

41
src/views/modules/shequzhili/event/cpts/process-form-replay.vue

@ -62,7 +62,7 @@ export default {
{ required: true, message: '回复内容不能为空', trigger: 'blur' },
],
categoryList: [
// { required: true, message: '', trigger: 'blur' },
{ required: true, message: '事件分类不能为空', trigger: 'blur' },
],
timeLimit: [
{ required: true, message: "办结时限不能为空", trigger: "blur" },
@ -101,7 +101,6 @@ export default {
this.getCategoryList();
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
console.log('this.eventDetailCopy', this.eventDetailCopy);
let value = this.eventDetailCopy.parentCategoryId.split(",");
value.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(value)
@ -123,33 +122,36 @@ export default {
this.$message.error(msg);
}
if (this.eventDetailCopy.parentCategoryId) {
let pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId)
pids.forEach(id => {
let node = this.buildTree(this.casOptions, toString(id));
this.selCategoryArray.push(node)
});
let node = this.buildTree(this.casOptions, this.eventDetailCopy.categoryId);
this.selCategoryArray.push(node);
console.log(this.selCategoryArray);
const pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId);
let nodes = this.casOptions;
for (let i = 0; i < pids.length; i++) {
nodes = this.buildNode(nodes,pids[i])
}
if(nodes){
this.formData.categoryList.push(nodes)
}
}
},
buildTree(nodes, treeId) {
nodes.forEach(item => {
if (treeId === item.id) {
return item;
} else {
this.buildTree(item.children, treeId)
buildNode(nodes, treeId) {
for(let i = 0; i < nodes.length; i++){
if (nodes[i].id === treeId) {
if(nodes[i].children){
return nodes[i].children
}else {
return nodes[i]
}
}
})
}
},
handleChangeCate(value) {
if (this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0]) {
this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0].data
this.formData.categoryList = this.selCateObj
} else {
this.selCateObj = {}
}
if(!value) return
if (!value) return
this.selCategoryArray = value
},
//
@ -181,6 +183,7 @@ export default {
}
this.formData.categoryList = [];
this.formData.categoryList.push(this.selCateObj);
this.formData.categoryId = this.selCateObj.id
this.okflag = true;
}
});

59
src/views/modules/shequzhili/event/eventList.vue

@ -86,6 +86,23 @@
placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="标记" prop="type">
<el-select
class="u-item-width-normal"
v-model="formData.type"
placeholder="全部"
size="small"
clearable
>
<el-option
v-for="item in typeArray"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="24" align="right">
<el-button style="margin-left: 30px" size="small" type="primary "
@ -117,6 +134,7 @@
<el-dropdown-item command="1">标记为难点痛点</el-dropdown-item>
<el-dropdown-item command="2">标记为矛盾纠纷</el-dropdown-item>
<el-dropdown-item command="3">标记为自身问题</el-dropdown-item>
<el-dropdown-item command="4">标记为超出服务范围</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button @click="handleCancalDiffcult" class="diy-button--red" size="small">取消标记</el-button>
@ -269,27 +287,29 @@ export default {
label: "已完成",
},
],
typeArray: [
{
value: "1",
label: "难点痛点",
},
{
value: "2",
label: "矛盾纠纷",
},
{
value: "3",
label: "自身问题",
},
{
value: "4",
label: "超出服务范围",
},
],
qudaoArray: [
// {
// value: "0",
// label: "/",
// },
// {
// value: "1",
// label: "",
// },
// {
// value: "2",
// label: "",
// },
{
value: "3",
label: "12345",
},
// {
// value: "4",
// label: "",
// },
}
],
formData: {
@ -538,7 +558,7 @@ export default {
}
},
handleProgress(event, file, fileList) {
},
beforeExcelUpload(file) {
const isType = file.type === 'application/vnd.ms-excel';
@ -654,6 +674,9 @@ export default {
},
async getTableData() {
const url = "/governance/icEvent/list";
if (this.eventTypeCheck) {
this.formData.secondIdList = this.eventTypeCheck
}
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,

1210
src/views/modules/shequzhili/eventOld/cpts/add.vue

File diff suppressed because it is too large

711
src/views/modules/shequzhili/eventOld/cpts/event-detail.vue

@ -1,283 +1,496 @@
<template>
<div class="">
<el-card :style="containerStyle" :class="{ 'box-card': source === 'visiual' }" v-if="showType == ''">
<h3 v-if="source === 'manage'" class="h3-title">
<img src="../../../../../assets/images/index/title-icon-sqzl.png" width="30px" height="30px" alt="" />
事件详情
</h3>
<div class="m-detail-main">
<div class="m-info">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">所属组织</span>
<span>{{ info.gridName }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">接收时间</span>
<span>{{ info.happenTime }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">工单号</span>
<span>{{ info.workOrderNum }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">事件内容</span>
<span>{{ info.eventContent }}</span>
</div>
<div v-if="info.imageList && info.imageList.length > 0"
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">图片</span>
<img :src="src" :key="src" style="width: 150px; height: 150px; padding-right: 10px"
v-for="src in info.imageList" @click="watchImg(src)" />
</div>
<div v-if="info.voiceList && info.voiceList.length > 0"
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="item.url" type="" :key="item.url" v-for="item in info.voiceList" />
</audio>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">上报渠道</span>
<span>{{ info.sourceTypeName }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">详细地址</span>
<span>{{ info.address }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">联系人</span>
<span>{{ info.name }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">联系电话</span>
<span>{{ info.mobile }}</span>
</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">标记</span>
<span>{{ info.markTypeName || "--" }}</span>
</div>
<div v-if="info.satisfactionName"
:class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">满意度</span>
<div>{{ info.satisfactionName }}</div>
</div>
</div>
</div>
<!--
显示关闭
1状态=完成 (已评价)||(没评价&&不是本人)
2状态=未完成 有操作id
-->
<div v-if="(info.status === 'processing' && info.operationId) || (info.status === 'closed_case' &&
(info.satisfactionName || (!info.satisfactionName && user.id != info.createdUserId)))"
class="div-btn-info">
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
<div class="">
<el-card
:style="containerStyle"
:class="{ 'box-card': source === 'visiual' }"
v-if="showType == ''"
>
<h3 v-if="source === 'manage'" class="h3-title">
<img
src="../../../../../assets/images/index/title-icon-sqzl.png"
width="30px"
height="30px"
alt=""
/>
事件详情
</h3>
<div class="m-detail-main">
<div class="m-info">
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">所属网格</span>
<span>{{ info.gridName }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">上报时间</span>
<span>{{ info.happenTime }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">事件内容</span>
<span>{{ info.eventContent }}</span>
</div>
<div
v-if="info.imageList && info.imageList.length > 0"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">图片</span>
<img
:src="src"
:key="src"
style="width: 150px; height: 150px; padding-right: 10px"
v-for="src in info.imageList"
@click="watchImg(src)"
/>
</div>
<div
v-if="info.voiceList && info.voiceList.length > 0"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">语音</span>
<audio controls>
<source
:src="item.url"
type=""
:key="item.url"
v-for="item in info.voiceList"
/>
</audio>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">反映渠道</span>
<span>{{ info.sourceTypeName }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">地址</span>
<span>{{ info.address }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">上报人</span>
<span>{{ info.name }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">联系电话</span>
<span>{{ info.mobile }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">证件号</span>
<span>{{ info.idCard ? info.idCard : "--" }}</span>
</div>
<div
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">标记</span>
<span>{{ info.markTypeName || "--" }}</span>
</div>
<div
v-if="info.operationType === '1'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已立项</span>
<div class="line" @click="handleToProject"><i class="el-icon-view"></i> 查看项目</div>
</div>
<div
v-if="info.operationType === '2'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已转需求</span>
<div class="line" @click="handleToDemand"><i class="el-icon-view"></i>查看需求</div>
</div>
<div
v-if="info.operationType === '3'"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">已转议题</span>
<div class="line" @click="handleToIssue">
<i class="el-icon-view"></i> 查看议题
</div>
</el-card>
<el-card :class="{ 'box-card': source === 'visiual' }" v-if="info.status === 'closed_case' && !info.satisfactionName
&& user.id === info.createdUserId" style="width: 184%;">
<h3>满意度评价</h3>
<div class="m-detail-main">
<div class="m-info">
<div class="div-satisfy">
<el-radio-group :class="{ 'form-item': source === 'visiual' }" v-model="satisfyLevel"
@change="clickSatisfy">
<el-radio label="good">满意</el-radio>
<el-radio label="perfect">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
</div>
</div>
<div
v-if="info.satisfactionName"
:class="[
'm-info-prop',
{ 'm-info-prop-vis': source === 'visiual' },
]"
>
<span class="u-info-title-2">满意度</span>
<div>{{ info.satisfactionName }}</div>
</div>
</div>
</div>
<!--
显示关闭
1状态=完成 (已评价)||(没评价&&不是本人)
2状态=未完成 有操作id -->
<div
v-if="
(info.status === 'processing' && info.operationId) ||
(info.status === 'closed_case' &&
(info.satisfactionName ||
(!info.satisfactionName && user.id != info.createdUserId)))
"
class="div-btn-info"
>
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
</div>
</el-card>
<el-card
:class="{ 'box-card': source === 'visiual' }"
v-if="
info.status === 'closed_case' &&
!info.satisfactionName &&
user.id === info.createdUserId
"
>
<h3>满意度评价</h3>
<div class="m-detail-main">
<div class="m-info">
<div class="div-satisfy">
<div>
<img
:src="selBad ? badurl_light : badurl"
@click="clickSatisfy('bad')"
/>
<div class="tip-satisfy">不满意</div>
</div>
<div class="div-btn">
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
<el-button style="margin-left: 20px" type="primary" size="small"
@click="handleComfirmSatisfy">确定</el-button>
<div>
<img
:src="selGood ? goodurl_light : goodurl"
@click="clickSatisfy('good')"
/>
<div class="tip-satisfy">满意</div>
</div>
</el-card>
<el-dialog :visible.sync="showSatisfy" :close-on-click-modal="false" :close-on-press-escape="false" title="满意度评价"
width="550px" top="15vh" class="dialog-h" @closed="showSatisfy = false">
<div class="div-btn">
<el-button size="small" @click="showSatisfy = false">关闭</el-button>
<el-button style="margin-left: 20px" type="primary" size="small"
@click="handleComfirmSatisfy">确定</el-button>
<div>
<img
:src="selPerfect ? perfecturl_light : perfecturl"
@click="clickSatisfy('perfect')"
/>
<div class="tip-satisfy">非常满意</div>
</div>
</el-dialog>
</div>
</div>
</div>
</div>
<div class="div-btn">
<el-button size="small" @click="handleCloseEvent">关闭</el-button>
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSatisfy"
>确定</el-button
>
</div>
</el-card>
<el-dialog
:visible.sync="showSatisfy"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="满意度评价"
width="550px"
top="15vh"
class="dialog-h"
@closed="showSatisfy = false"
>
<div class="div-btn">
<el-button size="small" @click="showSatisfy = false">关闭</el-button>
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSatisfy"
>确定</el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import foldText from "@/views/components/foldText";
import projectInfo from "../../xiangmu/cpts/project-info";
import dateFormat from "dai-js/tools/dateFormat";
function iniData() {
return {
user: {},
projectPageType: "info",
info: {},
eventDetailCopy: {},
showType: "",
projectId: "",
demandForm: {
gridId: "",
categoryCode: "",
parentCode: "",
content: "",
reportType: "",
reportUserName: "",
reportUserMobile: "",
reportTime: "",
wantServiceTime: "",
demandUserId: "",
demandUserName: "",
demandUserMobile: "",
},
satisfyLevel: "",
//
showSatisfy: false,
};
return {
user: {},
projectPageType: "info",
info: {},
eventDetailCopy: {},
showType: "",
projectId: "",
demandForm: {
gridId: "",
categoryCode: "",
parentCode: "",
content: "",
reportType: "",
reportUserName: "",
reportUserMobile: "",
reportTime: "",
wantServiceTime: "",
demandUserId: "",
demandUserName: "",
demandUserMobile: "",
},
//
showSatisfy: false,
selBad: false,
selGood: false,
selPerfect: false,
badurl: require("@/assets/img/satisfy-images/face1.png"),
badurl_light: require("@/assets/img/satisfy-images/face1_light.png"),
goodurl: require("@/assets/img/satisfy-images/face2.png"),
goodurl_light: require("@/assets/img/satisfy-images/face2_light.png"),
perfecturl: require("@/assets/img/satisfy-images/face3.png"),
perfecturl_light: require("@/assets/img/satisfy-images/face3_light.png"),
};
}
export default {
name: "issueInfo",
props: {
eventId: {
type: String,
default: "",
},
type: {
type: String,
default: "info",
},
eventDetailData: {
type: Object,
default() {
return {};
},
},
source: {
//manage visiual
type: String,
default: "manage",
},
name: "issueInfo",
props: {
eventId: {
type: String,
default: "",
},
type: {
type: String,
default: "info",
},
components: {
foldText,
projectInfo,
eventDetailData: {
type: Object,
default() {
return {};
},
},
source: {
//manage visiual
type: String,
default: "manage",
},
},
data: iniData,
watch: {},
created() { },
computed: {
containerStyle() {
if (this.type === 'info') {
return {
minHeight: 'calc(88vh - 50px)',
overflow: 'auto',
position: 'relative'
}
} else {
return {}
}
}
components: {
foldText,
projectInfo,
},
data: iniData,
watch: {},
created() {},
computed: {
containerStyle() {
if (this.type === 'info') {
return {
minHeight: 'calc(88vh - 50px)',
overflow: 'auto',
position: 'relative'
}
} else {
return {}
}
}
},
mounted() {
this.user = this.$store.state.user;
if (this.eventId) {
this.info = JSON.parse(JSON.stringify(this.eventDetailData));
//
// if (this.info.status === 'closed_case' && this.info.satisfactionName) {
// this.changeSatisfyType(this.info.satisfaction)
// }
}
// this.getApiData();
},
methods: {
watchImg(src) {
window.open(src);
},
mounted() {
this.user = this.$store.state.user;
if (this.eventId) {
this.info = JSON.parse(JSON.stringify(this.eventDetailData));
//
// if (this.info.status === 'closed_case' && this.info.satisfactionName) {
// this.changeSatisfyType(this.info.satisfaction)
// }
}
// this.getApiData();
handleClose() {
this.showType = "";
},
handleCloseEvent() {
this.$emit("handleClose");
},
async getApiData() {},
handleToProject() {
this.$emit("handleToProject");
// if (this.info.status === 'processing') {
// this.projectPageType = 'edit'
// } else {
// this.projectPageType = 'info'
// }
// this.showType = 'project'
},
handleToDemand() {
this.$emit("handleToDemand");
},
handleToIssue() {
this.$emit("handleToIssue");
},
//
handleSatisfy() {
this.showSatisfy = true;
},
methods: {
watchImg(src) {
window.open(src);
},
handleClose() {
this.showType = "";
},
handleCloseEvent() {
this.$emit("handleClose");
},
async getApiData() { },
//
handleSatisfy() {
this.showSatisfy = true;
},
clickSatisfy(type) {
if (this.info.satisfactionName) {
return false;
}
this.satisfyLevel = type;
},
async handleComfirmSatisfy() {
if (!this.satisfyLevel) {
this.$message.info("请选择评价级别");
}
const url = "/governance/icEvent/comment";
let params = {
icEventId: this.eventId,
satisfaction: this.satisfyLevel,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("评价成功");
this.info.satisfactionName =
this.satisfyLevel == "bad"
? "不满意"
: this.satisfyLevel == "good"
? "满意"
: "非常满意";
this.showSatisfy = false;
} else {
this.$message.error(msg);
}
},
clickSatisfy(type) {
if (this.info.satisfactionName) {
return false;
}
this.changeSatisfyType(type);
},
changeSatisfyType(type) {
if (type === "bad") {
this.selGood = false;
this.selPerfect = false;
this.selBad = true;
} else if (type === "good") {
this.selGood = true;
this.selPerfect = false;
this.selBad = false;
} else if (type === "perfect") {
this.selGood = false;
this.selPerfect = true;
this.selBad = false;
}
},
async handleComfirmSatisfy() {
let satisfyLevel = "";
if (!this.selBad && !this.selGood && !this.selPerfect) {
this.$message.info("请选择评价级别");
} else {
if (this.selBad) {
satisfyLevel = "bad";
} else if (this.selGood) {
satisfyLevel = "good";
} else if (this.selPerfect) {
satisfyLevel = "perfect";
}
}
const url = "/governance/icEvent/comment";
let params = {
icEventId: this.eventId,
satisfaction: satisfyLevel,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("评价成功");
this.info.satisfactionName =
satisfyLevel == "bad"
? "不满意"
: satisfyLevel == "good"
? "满意"
: "非常满意";
this.showSatisfy = false;
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.m-info {
padding-left: 0px !important;
padding-left: 0px !important;
}
.m-info-prop {
margin: 25px 0 !important;
padding-left: 0px !important;
&::before {
content: "";
display: block;
position: absolute;
top: 9px;
left: 0;
width: 7px;
height: 7px;
background: none !important;
border-radius: 3px;
margin-right: 10px;
}
margin: 25px 0 !important;
padding-left: 0px !important;
&::before {
content: "";
display: block;
position: absolute;
top: 9px;
left: 0;
width: 7px;
height: 7px;
background: none !important;
border-radius: 3px;
margin-right: 10px;
}
}
</style>

1198
src/views/modules/shequzhili/eventOld/cpts/event-info.vue

File diff suppressed because it is too large

126
src/views/modules/shequzhili/eventOld/cpts/process-form-designate.vue

@ -28,15 +28,6 @@
placeholder="请输入转办意见,不超过500字" v-model="formData.content"></el-input>
</div>
</el-form-item>
<el-form-item style="display: block" label="附件" label-width="150px" prop="attach">
<el-upload :headers="$getElUploadHeaders()" class="upload-demo" :action="uploadUlr"
accept=".doc,.pdf,.xls,.docx,.xlsx,.jpg,.png,.jpeg,.bmp,.mp4,.wma,.m4a,.mp3"
:on-success="handleFileSuccess" :on-remove="handleFileRemove" :on-preview="handleFileDownload"
:limit="3" :before-upload="beforeUpload" :file-list="fileList">
<el-button size="small" :disabled="fileList.length === 3" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">支持图片wordpdf</div>
</el-upload>
</el-form-item>
<el-form-item label="办结时限" prop="timeLimit" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
@ -64,8 +55,7 @@ export default {
categoryId: "",//
deptId: "", //
deptName: "",
categoryList: [],
files: [] //
categoryList: []
},
orgOptions: [],
orgOptionProps: {
@ -81,14 +71,12 @@ export default {
eventDetailCopy: {},
selCategoryArray: [],
casOptions: [],
fileList: [],
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
iscascaderShow: 0,
optionProps: {
multiple: false,
value: "id",
label: "categoryName",
children: "children",
label: "name",
children: "subCategory",
},
dataRule: {
content: [
@ -104,8 +92,8 @@ export default {
{ required: true, message: "办结时限不能为空", trigger: "blur" },
]
},
selCateObj: {
id: ""
selCateObj:{
id:""
},
};
},
@ -138,6 +126,7 @@ export default {
this.getCategoryList();
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
console.log(this.eventDetailCopy);
// eventDetailCopy
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCateObj.id = this.eventDetailCopy.categoryId
@ -163,11 +152,12 @@ export default {
}
},
async getCategoryList() {
const url = '/governance/icEvent/getCategoryTree';
const url = "/governance/issueprojectcategorydict/list";
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.deepTree(data, "children");
let treeDataNew = this.filterTree(data);
//
++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
@ -181,6 +171,7 @@ export default {
this.formData.orgType = obj.level === 'grid' ? 'grid' : 'agency'
this.formData.deptId = obj.agencyId
this.formData.deptName = obj.agencyName
} else {
this.form.orgType = ''
this.form.orgId = ''
@ -190,25 +181,24 @@ export default {
if (this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0]) {
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.formData.categoryId = this.selCateObj.id
console.log(this.formData.categoryId, 'this.formData.categoryId');
console.log(this.formData.categoryId,'this.formData.categoryId');
} else {
this.selCateObj = {}
}
},
//
deepTree(arr, children) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map((item) => {
return {
...item,
[children]:
(item[children] &&
item[children].length > 0 &&
this.deepTree(item[children], children)) ||
null,
};
});
filterTree(arr) {
let childs = arr;
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory);
} else {
delete childs[i].subCategory;
}
}
}
return arr;
},
async getReplayInfo() {
this.okflag = false;
@ -216,13 +206,11 @@ export default {
if (!valid) {
app.util.validateRule(messageObj);
} else {
console.log(this.selCateObj);
if (!this.selCateObj || !this.selCateObj.id) {
this.$message.error("请选择事件分类");
return false;
}
if(this.fileList){
this.formData.files = this.fileList
}
this.formData.status = "processing";
this.formData.categoryId = this.selCateObj.id;
this.formData.categoryList = [];
@ -234,74 +222,6 @@ export default {
resetData() {
this.agencyIdArray = []
},
beforeUpload(file) {
const array = file.name.split(".");
const extension = array[array.length - 1];
const formatarray = [
"jpg",
"png",
"jpeg",
"bmp",
"mp4",
"wma",
"m4a",
"mp3",
"doc",
"docx",
"xls",
"xlsx",
"pdf",
];
if (formatarray.indexOf(extension) === -1) {
this.$message.error("只支持图片、word、pdf");
return false;
}
},
handleFileRemove(file) {
if (file && file.status === "success") {
this.fileList.splice(
this.fileList.findIndex((item) => item.uid === file.uid),
1
);
}
},
handleFileSuccess(res, file) {
if (res.code === 0 && res.msg === "success") {
const array = file.name.split(".");
const fileType = array[array.length - 1];
const picArray = ["jpg", "png", "jpeg", "bmp"];
const videoarray = ["mp4", "wma", "m4a"];
const docArray = ["doc", "docx", "xls", "xlsx", "pdf"];
const mp3Array = ["mp3"];
if (picArray.indexOf(fileType) > -1) {
file.attachmentFormat = "image";
} else if (videoarray.indexOf(fileType) > -1) {
file.attachmentFormat = "video";
} else if (docArray.indexOf(fileType) > -1) {
file.attachmentFormat = "doc";
} else if (mp3Array.indexOf(fileType) > -1) {
file.attachmentFormat = "voice";
}
file.url = res.data.url;
file.type = fileType;
file.attachmentName = file.name;
file.attachmentType = file.type;
file.attachmentUrl = file.url;
this.fileList.push(file);
} else this.$message.error(res.msg);
},
//
handleFileDownload(file) {
var a = document.createElement("a");
var event = new MouseEvent("click");
a.download = file.name;
a.href = file.url;
a.dispatchEvent(event);
},
//
startLoading() {
loading = Loading.service({

579
src/views/modules/shequzhili/eventOld/cpts/process-form-project.vue

@ -1,105 +1,76 @@
<template>
<div class="">
<el-form
ref="ref_form"
:inline="false"
:model="formData"
:rules="dataRule"
label-width="100px"
>
<el-form-item
label="事件分类"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="categoryList"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<!-- <el-cascader class="cell-width-2"
<el-form ref="ref_form"
:inline="false"
:model="formData"
:rules="dataRule"
label-width="100px">
<el-form-item label="事件分类"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="categoryList">
<div :class="{'visiual-form':source==='visiual'}">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader> -->
<my-cascader
v-model="formData.categoryList"
:casOptions="casOptions"
:props="optionProps"
:optionProps="optionProps"
@handleChangeCate="handleChangeCate"
></my-cascader>
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item>
<el-form-item
label="项目标题"
prop="title"
:class="{ 'form-item': source === 'visiual' }"
label-width="150px"
style="display: block"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input
class="cell-width-1"
maxlength="50"
placeholder="请输入项目标题"
v-model="formData.title"
>
<el-form-item label="项目标题"
prop="title"
:class="{'form-item':source==='visiual'}"
label-width="150px"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-input class="cell-width-1"
maxlength="50"
placeholder="请输入项目标题"
v-model="formData.title">
</el-input>
</div>
</el-form-item>
<el-form-item
label="所属网格 "
prop="gridId"
:class="{ 'form-item': source === 'visiual' }"
label-width="150px"
style="display: block"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select
v-model.trim="formData.gridId"
placeholder="请选择"
clearable
class="cell-width-1"
>
<el-option
v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-form-item label="所属网格 "
prop="gridId"
:class="{'form-item':source==='visiual'}"
label-width="150px"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-select v-model.trim="formData.gridId"
placeholder="请选择"
clearable
class="cell-width-1">
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
<el-form-item
label="处理部门"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="staffList"
>
<el-popover
placement="bottom"
width="400"
height="400"
v-model="visibleStaffPanel"
>
<el-form-item label="处理部门"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="staffList">
<el-popover placement="bottom"
width="400"
height="400"
v-model="visibleStaffPanel">
<div class="f">
<select-staff
@confirm="(ret) => (formData.staffList = ret)"
@close="visibleStaffPanel = false"
/>
<select-staff @confirm="(ret) => (formData.staffList = ret)"
@close="visibleStaffPanel = false" />
</div>
<div slot="reference">
<a v-if="formData.staffList.length == 0" style="cursor: pointer"
>点击选择</a
>
<a v-else style="cursor: pointer"
>已选 {{ formData.staffList.length }} </a
>
<a v-if="formData.staffList.length == 0"
style="cursor: pointer">点击选择</a>
<a v-else
style="cursor: pointer">已选 {{ formData.staffList.length }} </a>
</div>
</el-popover>
</el-form-item>
@ -121,134 +92,116 @@
</div>
</el-form-item> -->
<el-form-item
label="项目方案"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="publicReply"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input
type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入项目方案"
v-model="formData.publicReply"
>
<el-form-item label="项目方案"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="publicReply">
<div :class="{'visiual-form':source==='visiual'}">
<el-input type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入项目方案"
v-model="formData.publicReply">
</el-input>
</div>
</el-form-item>
<el-form-item
label="内部备注"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="internalRemark"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input
type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入内部备注"
v-model="formData.internalRemark"
>
<el-form-item label="内部备注"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="internalRemark">
<div :class="{'visiual-form':source==='visiual'}">
<el-input type="textarea"
class="cell-width-area"
:rows="2"
placeholder="请输入内部备注"
v-model="formData.internalRemark">
</el-input>
</div>
</el-form-item>
<el-form-item
label="图片/附件"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="internalFile"
>
<el-upload
:headers="$getElUploadHeaders()"
class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="true"
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:before-upload="beforeImgUpload"
>
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img
v-else
style="width: 27px; height: 27px"
src="@/assets/img/file-add.png"
/>
<el-form-item label="图片/附件:"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="internalFile">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="true"
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:before-upload="beforeImgUpload">
<i v-if="source==='manage'"
:class="['el-icon-plus']"></i>
<img v-else
style="width:27px;height:27px"
src="@/assets/img/file-add.png">
</el-upload>
</el-form-item>
<el-form-item
label="标签"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="tagList"
>
<fold-text v-if="tagList.length > 0" style="width: 300px" :row="3">
<div :key="item.name" class="tag-name" v-for="item in tagList">
<el-form-item label="标签"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="tagList">
<fold-text v-if="tagList.length>0"
style="width: 300px"
:row="3">
<div :key="item.name"
class="tag-name"
v-for="item in tagList">
{{ item.name }}
</div>
</fold-text>
<el-popover
placement="top"
width="450"
height="450"
v-model="visibleTagPanel"
>
<div class="f" style="min-height: 120px">
<el-popover placement="top"
width="450"
height="450"
v-model="visibleTagPanel">
<div class="f"
style="min-height: 120px">
<h2>选择标签</h2>
<el-select
style="width: 350px"
v-model="selectedTagData"
multiple
allow-create
filterable
placeholder="请选择"
@change="handleTagChange"
>
<el-select style="width: 350px"
v-model="selectedTagData"
multiple
allow-create
filterable
placeholder="请选择"
@change="handleTagChange">
<el-option-group label="自定义标签">
<el-option
v-for="item in tagOptions.customized"
:key="item.id"
:label="item.name"
:value="item.id"
>
<el-option v-for="item in tagOptions.customized"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-option-group>
<el-option-group label="常用标签">
<el-option
v-for="item in tagOptions.defaulted"
:key="item.id"
:label="item.name"
:value="item.id"
>
<el-option v-for="item in tagOptions.defaulted"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-option-group>
</el-select>
<el-button
style="margin-left: 10px"
size="small"
type="danger"
@click="updateProjectTag"
>关闭</el-button
>
<el-button style="margin-left: 10px"
size="small"
type="danger"
@click="updateProjectTag">关闭</el-button>
</div>
<div slot="reference">
<el-button v-if="source === 'manage'" size="small" type=""
>选择</el-button
>
<div v-else class="one-btn">选择</div>
<el-button v-if="source==='manage'"
size="small"
type="">选择</el-button>
<div v-else
class="one-btn">选择</div>
</div>
</el-popover>
</el-form-item>
</el-form>
</div>
</template>
@ -258,64 +211,64 @@ import { requestPost } from "@/js/dai/request";
import selectStaff from "@/views/components/selectStaff";
import formVltHelper from "dai-js/tools/formVltHelper";
import foldText from "@/views/components/foldText";
import myCascader from "./myCascader.vue";
import { isCard } from "@/utils/validate";
let loading; //
function iniFmData() {
function iniFmData () {
return {
operationType: "1", //[0: 1: 2:]
publicReply: "", // 1000
internalRemark: "", // 1000
gridId: "", //
assistanceUnitIndex: "",
assistanceUnitId: "", // Id
assistanceUnitType: "", // 12
staffList: [], //
categoryList: [], //
tagList: [], //
internalFile: [], //
title: "", //
publicFile: [], //
locateAddress: "", //
locateLongitude: "", //
locateDimension: "", //
eventId: "", //
operationType: '1',//[0: 1: 2:]
publicReply: '',// 1000
internalRemark: '',// 1000
gridId: '',//
assistanceUnitIndex: '',
assistanceUnitId: '',// Id
assistanceUnitType: '',// 12
staffList: [],//
categoryList: [],//
tagList: [],//
internalFile: [],//
title: '',//
publicFile: [],//
locateAddress: '',//
locateLongitude: '',//
locateDimension: '',//
eventId: '',//
};
}
export default {
data() {
data () {
return {
btnDisable: false,
customerId: localStorage.getItem("customerId"),
gridList: [], //list--
myDepartmentList: [], //
gridList: [],//list--
myDepartmentList: [],//
visibleStaffPanel: false,
assistanceUnitList: [], //
tagList: [], //
assistanceUnitList: [],//
tagList: [],//
tagOptions: [],
visibleTagPanel: false,
selectedTagData: [],
casOptions: [],
// iscascaderShow: 0,
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: "id",
label: "name",
children: "subCategory",
value: 'id',
label: 'name',
children: 'subCategory',
},
formData: iniFmData(),
formDataTemp: {
assistanceUnitIndex: 0,
assistanceUnitId: "", // Id
assistanceUnitType: "", // 12
assistanceUnitId: '',// Id
assistanceUnitType: '',// 12
eventId: "",
gridId: "63d5ff92ea981b1c58e4914ac894c610",
@ -327,34 +280,38 @@ export default {
internalFile: [],
staffList: [],
tagList: [
{
id: "46294b3c9f96ee4d0b00e997e06c8f97",
isDisable: "enable",
name: "车行道、人行道、盲道、无障碍通道、路名牌",
},
{
id: "953bafc1191f784841d9b8da61ec7b9b",
isDisable: "enable",
name: "城市广场管理",
},
],
tagList: [{
id: "46294b3c9f96ee4d0b00e997e06c8f97",
isDisable: "enable",
name: "车行道、人行道、盲道、无障碍通道、路名牌",
},
{
id: "953bafc1191f784841d9b8da61ec7b9b",
isDisable: "enable",
name: "城市广场管理",
}],
},
okflag: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
eventDetailCopy: {},
eventDetailCopy: {}
};
},
components: { selectStaff, foldText, myCascader },
components: { selectStaff, foldText },
computed: {
dataRule() {
dataRule () {
return {
categoryList: [
{ required: true, message: "事件分类不能为空", trigger: "blur" },
{ required: true, message: "请填写事件分类", trigger: "blur" },
],
title: [
{ required: true, message: "标题不能为空", trigger: "blur" },
],
title: [{ required: true, message: "标题不能为空", trigger: "blur" }],
gridId: [
{ required: true, message: "所属网格不能为空", trigger: "blur" },
],
@ -364,12 +321,14 @@ export default {
publicReply: [
{ required: true, message: "项目方案不能为空", trigger: "blur" },
],
};
},
},
props: {
gridId: {
//id
gridId: {//id
type: String,
default: "",
},
@ -379,21 +338,23 @@ export default {
},
eventDetailData: {
type: Object,
default() {
return {};
},
default () {
return {}
}
},
source: {
//manage visiual
source: {//manage visiual
type: String,
default: "manage",
},
default: 'manage'
}
},
watch: {
gridId: function (val) {
this.formData.gridId = val;
this.formData.gridId = val
},
"formData.assistanceUnitIndex": function (val) {
if (val === "" || this.assistanceUnitList.length === 0) {
this.formData.assistanceUnitId = "";
this.formData.assistanceUnitType = "";
@ -405,7 +366,7 @@ export default {
}
},
async selectedTagData(val) {
async selectedTagData (val) {
const { tagOptions } = this;
this.tagList = await Promise.all(
val.map(async (id) => {
@ -432,112 +393,115 @@ export default {
);
this.tagList = this.tagList.filter((item) => item.id);
console.log(this.tagList);
console.log(this.tagList)
},
},
created() {},
created () {
async mounted() {
const { user } = this.$store.state;
this.agencyId = user.agencyId;
},
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
this.getCategoryList();
this.loadGrid();
this.getMyDepartmentList();
// this.getAssistanceUnitList();
this.getTagList();
this.getTagList()
// this.formData = { ...this.formDataTemp }
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
this.formData.gridId = this.eventDetailCopy.gridId;
this.formData.gridId = this.eventDetailCopy.gridId
if (
this.eventDetailCopy.parentCategoryId &&
this.eventDetailCopy.categoryId
) {
this.selCategoryArray = [];
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId);
this.selCategoryArray.push(this.eventDetailCopy.categoryId);
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = []
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
this.selCategoryArray.push(this.eventDetailCopy.categoryId)
this.selCateObj = {
name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId,
};
id: this.eventDetailCopy.categoryId
}
this.formData.categoryList = [];
this.formData.categoryList.push(this.selCateObj);
this.formData.categoryList = []
this.formData.categoryList.push(this.selCateObj)
}
} else {
this.formData.gridId = this.gridId;
this.formData.gridId = this.gridId
}
},
methods: {
async getCategoryList() {
const url = "/governance/issueprojectcategorydict/list";
async getCategoryList () {
const url = "/governance/issueprojectcategorydict/list"
let params = {};
let params = {}
const { data, code, msg } = await requestPost(url, params);
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data);
let treeDataNew = this.filterTree(data)
//
// ++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg);
this.$message.error(msg)
}
},
handleChangeCate(obj) {
// console.log(this.$refs["myCascader"].getCheckedNodes()[0].data);
// this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data;
this.selCateObj = obj
this.formData.categoryList = [];
let flag = JSON.stringify(obj) == '{}'
if(flag) this.formData.categoryList = []
else this.formData.categoryList.push(this.selCateObj);
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.formData.categoryList = []
this.formData.categoryList.push(this.selCateObj)
},
//
filterTree(arr) {
let childs = arr;
filterTree (arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory);
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory;
delete childs[i].subCategory
}
}
}
return arr;
return arr
},
async loadGrid() {
const url = "/gov/org/customergrid/gridoption";
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
let params = {
agencyId: this.agencyId,
};
agencyId: this.agencyId
}
const { data, code, msg } = await requestPost(url, params);
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.gridList = data;
this.gridList = data
} else {
this.$message.error(msg);
this.$message.error(msg)
}
},
//
async getMyDepartmentList() {
async getMyDepartmentList () {
const url = "/governance/trace/approvalagencylist";
const { data, code, msg } = await requestPost(url, {
issueId: "",
projectStaffId: "",
issueId: '',
projectStaffId: '',
});
if (code === 0) {
@ -548,7 +512,7 @@ export default {
},
//
async getAssistanceUnitList() {
async getAssistanceUnitList () {
const url = "/heart/icpartyunit/assistanceUnitList";
const { data, code, msg } = await requestPost(url, {
@ -557,14 +521,17 @@ export default {
if (code === 0) {
this.assistanceUnitList = data;
} else {
this.$message.error(msg);
}
},
//
async getTagList() {
async getTagList () {
const url = "/governance/issueprojecttagdict/list";
const { data, code, msg } = await requestPost(url, {});
const { data, code, msg } = await requestPost(url, {
});
if (code === 0) {
this.tagOptions = {
@ -576,26 +543,29 @@ export default {
}
},
handleTagChange(val) {
handleTagChange (val) {
console.log(val);
},
updateProjectTag() {
updateProjectTag () {
this.visibleTagPanel = false;
},
async getProjectInfo() {
this.okflag = false;
async getProjectInfo () {
this.okflag = false
this.$refs["ref_form"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
this.formData.tagList = this.tagList;
this.okflag = true;
this.formData.tagList = this.tagList
this.okflag = true
}
});
},
beforeImgUpload(file) {
beforeImgUpload (file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
@ -603,8 +573,10 @@ export default {
}
return isLt1M;
},
resetData() {},
handleImgSuccess(res, file, fileList) {
resetData () {
},
handleImgSuccess (res, file, fileList) {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
@ -621,7 +593,7 @@ export default {
}
},
handleImgRemove(file) {
handleImgRemove (file) {
let index = this.formData.internalFile.findIndex(
(item) => item.url == file.response.data.url
);
@ -629,8 +601,9 @@ export default {
console.log(this.formData.internalFile);
},
//
startLoading() {
startLoading () {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
@ -638,7 +611,7 @@ export default {
});
},
//
endLoading() {
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close();
@ -660,7 +633,7 @@ export default {
</style>
<style scoped>
<style>
.el-dialog__body {
padding: 0 10px 20px !important;
}

436
src/views/modules/shequzhili/eventOld/cpts/process-form-replay.vue

@ -1,215 +1,263 @@
<!--
* @Author: mk 2403457699@qq.com
* @Date: 2023-07-26 16:23:24
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2023-08-09 10:21:34
* @Description: 事件分类回填
*
*
-->
<template>
<div class="search">
<el-form ref="ref_form1" :inline="false" :model="formData" :rules="dataRule">
<el-form-item label="事件分类" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
prop="categoryList">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-cascader class="cell-width-2" ref="myCascader" v-model="selCategoryArray" :key="iscascaderShow"
:options="casOptions" :props="optionProps" :show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item>
<el-form-item label="回复内容" prop="content" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input class="cell-width-area" type="textarea" maxlength="500" show-word-limit :rows="5"
placeholder="请输入回复内容,不超过500字" v-model="formData.content"></el-input>
</div>
</el-form-item>
<el-form-item label="办结时限" prop="timeLimit" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-date-picker v-model="formData.timeLimit" class="cell-width-1" type="datetime" placeholder="办结时限"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
</el-form-item>
</el-form>
<el-form
ref="ref_form1"
:inline="false"
:model="formData"
:rules="dataRule"
>
<el-form-item
label="事件分类"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
prop="categoryList"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-cascader class="cell-width-2"
ref="myCascader"
v-model="selCategoryArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeCate"></el-cascader>
</div>
</el-form-item>
<el-form-item
label="回复内容"
prop="content"
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
style="display: block"
>
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input
class="cell-width-area"
type="textarea"
maxlength="500"
show-word-limit
:rows="5"
placeholder="请输入回复内容,不超过500字"
v-model="formData.content"
></el-input>
</div>
</el-form-item>
<el-form-item
label=""
label-width="150px"
:class="{ 'form-item': source === 'visiual' }"
style="display: block"
>
<el-checkbox
:class="{ 'form-item': source === 'visiual' }"
v-model="status"
@change="handleChangeStatus"
>已完成</el-checkbox
>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
let loading; //
export default {
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import formVltHelper from "dai-js/tools/formVltHelper";
import { isCard } from "@/utils/validate";
let loading; //
export default {
data() {
return {
btnDisable: false,
formData: {
operationType: '0', //[0: 5 6]
content: '',
status: 'processing',
timeLimit: '',//
categoryList: [],
},
status: false,
okflag: false,
eventDetailCopy: {},
selCategoryArray: [],
casOptions: [],
iscascaderShow: 0,
optionProps: {
multiple: false,
value: "id",
label: "categoryName",
children: "children",
level: 'categoryType'
},
dataRule: {
content: [
{ required: true, message: '回复内容不能为空', trigger: 'blur' },
],
categoryList: [
// { required: true, message: '', trigger: 'blur' },
],
timeLimit: [
{ required: true, message: "办结时限不能为空", trigger: "blur" },
]
}
};
return {
btnDisable: false,
formData: {
operationType: "0", //[0: 1: 2:]
content: "",
status: "",
categoryList: [],
},
status: false,
okflag: false,
eventDetailCopy: {},
selCategoryArray:[],
casOptions: [],
iscascaderShow: 0,
optionProps: {
multiple: false,
value: "id",
label: "name",
children: "subCategory",
},
dataRule:{
content: [
{ required: true, message: "回复内容不能为空", trigger: "blur" },
],
categoryList: [
// { required: true, message: "", trigger: "blur" },
],
}
};
},
components: {},
components: { },
computed: {},
props: {
eventId: {
type: String,
default: '',
},
eventDetailData: {
type: Object,
default() {
return {};
},
},
source: {
//manage visiual
type: String,
default: 'manage',
eventId: {
type: String,
default: "",
},
eventDetailData: {
type: Object,
default() {
return {};
},
},
source: {
//manage visiual
type: String,
default: "manage",
},
},
watch: {
},
watch: {},
created() {
console.log(this.source);
},
async mounted() {
this.getCategoryList();
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
console.log('this.eventDetailCopy', this.eventDetailCopy);
let value = this.eventDetailCopy.parentCategoryId.split(",");
value.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(value)
this.getCategoryList();
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
// eventDetailCopy
if (
this.eventDetailCopy.parentCategoryId &&
this.eventDetailCopy.categoryId
) {
this.selCategoryArray.push( this.eventDetailCopy.parentCategoryId,this.eventDetailCopy.categoryId)
}
}
},
methods: {
async getCategoryList() {
const url = '/governance/icEvent/getCategoryTree';
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.deepTree(data, "children");
//
++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
async getCategoryList() {
const url = "/governance/issueprojectcategorydict/list";
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.filterTree(data);
//
++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
} else {
this.$message.error(msg);
}
},
handleChangeCate() {
if(this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0]){
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
}else{
this.selCateObj = {}
}
console.log(this.selCateObj);
},
//
filterTree(arr) {
let childs = arr;
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory);
} else {
this.$message.error(msg);
}
if (this.eventDetailCopy.parentCategoryId) {
let pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId)
pids.forEach(id => {
let node = this.buildTree(this.casOptions, toString(id));
this.selCategoryArray.push(node)
});
let node = this.buildTree(this.casOptions, this.eventDetailCopy.categoryId);
this.selCategoryArray.push(node);
console.log(this.selCategoryArray);
delete childs[i].subCategory;
}
},
buildTree(nodes, treeId) {
nodes.forEach(item => {
if (treeId === item.id) {
return item;
} else {
this.buildTree(item.children, treeId)
}
})
},
handleChangeCate(value) {
if (this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0]) {
this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0].data
}
}
return arr;
},
async getReplayInfo() {
this.okflag = false;
this.$refs["ref_form1"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
if (this.status) {
console.log(this.selCateObj);
if (!this.selCateObj || !this.selCateObj.id) {
this.$message.error("请选择事件分类");
return false;
}
this.formData.status = "closed_case";
} else {
this.selCateObj = {}
}
if(!value) return
this.selCategoryArray = value
},
//
deepTree(arr, children) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map((item) => {
return {
...item,
[children]:
(item[children] &&
item[children].length > 0 &&
this.deepTree(item[children], children)) ||
null,
};
});
}
},
async getReplayInfo() {
this.okflag = false;
this.$refs['ref_form1'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
if (this.status) {
if (!this.selCateObj || !this.selCateObj.id) {
this.$message.error('请选择事件分类');
return false;
}
}
this.formData.categoryList = [];
this.formData.categoryList.push(this.selCateObj);
this.okflag = true;
}
});
},
resetData() { },
//
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)', //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
this.formData.status = "processing";
}
},
this.formData.categoryId = this.selCateObj.id;
this.formData.categoryList = [];
this.formData.categoryList.push(this.selCateObj);
this.okflag = true;
}
});
},
handleChangeStatus(val){
console.log(val);
if(!val){
this.$set(this.dataRule,'categoryList',[])
}else{
this.$set(this.dataRule,'categoryList',[{ required: true, message: "事件分类不能为空", trigger: "blur" }])
}
console.log(this.dataRule);
},
resetData() {},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
};
</script>
<style lang='scss' scoped>
@import '@/assets/scss/modules/visual/a_customize.scss';
@import '@/assets/scss/modules/shequzhili/event-info.scss';
.el-dialog__body {
};
</script>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>
<style scoped>
.el-dialog__body {
padding: 0 10px 20px !important;
}
</style>
}
</style>

175
src/views/modules/shequzhili/eventOld/cpts/process-form-urban.vue

@ -0,0 +1,175 @@
<template>
<div class="search">
<el-form ref="ref_form1"
:inline="false"
:model="formData"
:rules="dataRule">
<el-form-item label="处理意见"
prop="suggestion"
label-width="150px"
:class="{'form-item':source==='visiual'}"
style="display: block">
<div :class="{'visiual-form':source==='visiual'}">
<el-input class="cell-width-area"
type="textarea"
maxlength="500"
show-word-limit
:rows="5"
placeholder="请输入处理意见,不超过500字"
v-model="formData.suggestion"></el-input>
</div>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import formVltHelper from "dai-js/tools/formVltHelper";
import { isCard } from "@/utils/validate";
let loading; //
export default {
data () {
return {
btnDisable: false,
formData: {
operationType: '4',//[0: 1: 2: 3:,4]
suggestion: '',
},
okflag: false,
eventDetailCopy: {},
casOptions: [],
iscascaderShow: 0,
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
};
},
components: {},
computed: {
dataRule () {
return {
suggestion: [
{ required: true, message: "处理建议不能为空", trigger: "blur" },
],
};
},
},
props: {
eventId: {
type: String,
default: "",
},
eventDetailData: {
type: Object,
default () {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {},
created () {
console.log(this.source)
},
async mounted () {
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCateObj = {
name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId
}
}
}
},
methods: {
handleChangeCate () {
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
},
async getUrbanInfo () {
this.okflag = false
this.$refs["ref_form1"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
this.okflag = true
}
});
},
resetData () {
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
};
</script>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>
<style>
.el-dialog__body {
padding: 0 10px 20px !important;
}
</style>

406
src/views/modules/shequzhili/eventOld/cpts/process-form.vue

@ -1,201 +1,281 @@
<template>
<div class="">
<div>
<el-form ref="ref_form1" :inline="false" :rules="dataRule" class="form">
<el-form-item label="处理方式" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
prop="operationType">
<el-radio-group :class="{ 'form-item': source === 'visiual' }" v-model="operationType"
@change="handleChangeOperationType">
<el-radio v-if="!eventId" label="4">暂不处理</el-radio>
<el-radio label="0">回复</el-radio>
<el-radio label="5">指派</el-radio>
<el-radio label="6">完成并回复</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div v-if="operationType === '0'">
<process-form-replay ref="ref_process_form_replay" :source="source" :eventDetailData="eventDetailData"
:eventId="eventId"></process-form-replay>
</div>
<div v-if="operationType === '6'">
<process-form-replay-end ref="ref_process_form_replay_end" :source="source"
:eventDetailData="eventDetailData" :eventId="eventId"></process-form-replay-end>
</div>
<div v-if="operationType === '5'">
<process-form-designate ref="ref_process_form_designate" :source="source" :eventDetailData="eventDetailData"
:eventId="eventId"></process-form-designate>
</div>
</div>
<div class="">
<div>
<el-form ref="ref_form1"
:inline="false"
:rules="dataRule"
class="form">
<el-form-item label="处理方式"
label-width="150px"
:class="{'form-item':source==='visiual'}"
prop="operationType">
<el-radio-group :class="{'form-item':source==='visiual'}"
v-model="operationType"
@change="handleChangeOperationType">
<el-radio v-if="!eventId"
label="4">暂不处理</el-radio>
<el-radio label="0">回复</el-radio>
<el-radio label="1">立项</el-radio>
<el-radio label="2">转服务</el-radio>
<el-radio label="3">转议题</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div v-if="operationType==='0'">
<process-form-replay ref="ref_process_form_replay"
:source="source"
:eventDetailData="eventDetailData"
:eventId="eventId"></process-form-replay>
</div>
<div v-if="operationType==='1'">
<process-form-project ref="ref_process_form_project"
:source="source"
:eventDetailData="eventDetailData"
:gridId="gridId"
:eventId="eventId"></process-form-project>
</div>
<div v-if="operationType==='2'">
<process-form-demand ref="ref_process_form_demond"
:source="source"
:eventId="eventId"
:transferObj="transferObj"
:demandUserId="demandUserId"
:demandUserName="demandUserName"
:demandUserMobile="demandUserMobile"
:eventDetailData="eventDetailData"></process-form-demand>
</div>
<div v-if="operationType==='3'">
<process-form-issue ref="ref_process_form_issue"
:source="source"
:eventDetailData="eventDetailData"
:eventId="eventId"></process-form-issue>
</div>
</div>
</div>
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import processFormReplay from "./process-form-replay";
import processFormReplayEnd from "./process-form-replay-end";
import processFormProject from "./process-form-project";
import processFormDemand from "./process-form-demand";
import processFormIssue from "./process-form-issue";
import processFormDesignate from "./process-form-designate";
let loading; //
export default {
data() {
return {
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
operationType: '',
replayInfo: {},
demand: {},
project: {},
issueInfo: {},
okflag: false,
eventDetailCopy: {},
transferObj: {
latitude: "",
longitude: ""
}
};
data () {
return {
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
operationType: '',
replayInfo: {},
demand: {},
project: {},
issueInfo: {},
okflag: false,
eventDetailCopy: {},
transferObj:{
latitude :"",
longitude :""
}
};
},
components: {
processFormReplay,
processFormProject,
processFormDemand,
processFormIssue
},
computed: {
dataRule () {
return {
operationType: [
{ required: true, message: "处理方式不能为空", trigger: "blur" },
],
};
},
components: {
processFormReplay,
processFormProject,
processFormDemand,
processFormIssue,
processFormDesignate,
processFormReplayEnd
},
props: {
demandUserId: {
type: String,
default: "",
},
computed: {
dataRule() {
return {
operationType: [
{ required: true, message: "处理方式不能为空", trigger: "blur" },
],
};
},
demandUserName: {
type: String,
default: "",
},
props: {
demandUserId: {
type: String,
default: "",
},
demandUserName: {
type: String,
default: "",
},
demandUserMobile: {
type: String,
default: "",
},
gridId: {
type: String,
default: "",
},
eventId: {
type: String,
default: "",
},
eventDetailData: {
type: Object,
default() {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
demandUserMobile: {
type: String,
default: "",
},
gridId: {
type: String,
default: "",
},
eventId: {
type: String,
default: "",
},
eventDetailData: {
type: Object,
default () {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {
},
created () {
console.log(this.source)
},
async mounted () {
const { user } = this.$store.state
this.agencyId = user.agencyId
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
}
if(this.eventDetailData.operationType){
this.operationType = this.eventDetailCopy.operationType
// this.getProcessInfo()
}
this.$EventBus.$on('map',(val)=>{
this.transferObj.latitude = val.lat
this.transferObj.longitude = val.lng
})
},
methods: {
handleChangeOperationType (val) {
},
async getProcessInfo () {
this.okflag = false
if (this.operationType === '0') {
this.$refs.ref_process_form_replay.getReplayInfo()
if (this.$refs.ref_process_form_replay.okflag) {
this.replayInfo = this.$refs.ref_process_form_replay.formData
this.okflag = true
} else {
return false
}
watch: {},
} else if (this.operationType === '1') {
this.$refs.ref_process_form_project.getProjectInfo()
if (this.$refs.ref_process_form_project.okflag) {
created() { },
this.project = this.$refs.ref_process_form_project.formData
async mounted() {
const { user } = this.$store.state
this.agencyId = user.agencyId
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
//
this.okflag = true
} else {
return false
}
if (this.eventDetailData.operationType) {
this.operationType = this.eventDetailCopy.operationType
} else if (this.operationType === '2') {
this.$refs.ref_process_form_demond.getDemandInfo()
if (this.$refs.ref_process_form_demond.okflag) {
this.demand = this.$refs.ref_process_form_demond.formData
this.okflag = true
} else {
return false
}
this.$EventBus.$on('map', (val) => {
this.transferObj.latitude = val.lat
this.transferObj.longitude = val.lng
})
} else if (this.operationType === '3') {
this.$refs.ref_process_form_issue.getIssueInfo()
if (this.$refs.ref_process_form_issue.okflag) {
this.issueInfo = this.$refs.ref_process_form_issue.formData
this.okflag = true
} else {
return false
}
}
},
methods: {
handleChangeOperationType(val) {
this.operationType = val;
},
async getProcessInfo() {
this.okflag = false
if (this.operationType === '0') {
this.$refs.ref_process_form_replay.getReplayInfo()
if (this.$refs.ref_process_form_replay.okflag) {
this.replayInfo = this.$refs.ref_process_form_replay.formData;
this.okflag = true;
}
} else if (this.operationType === '5') {
this.$refs.ref_process_form_designate.getReplayInfo()
this.replayInfo = this.$refs.ref_process_form_designate.formData
if (this.$refs.ref_process_form_designate.okflag) {
this.replayInfo = this.$refs.ref_process_form_designate.formData
this.okflag = true
}
} else if (this.operationType === '6') {
this.$refs.ref_process_form_replay_end.getReplayInfo()
this.replayInfo = this.$refs.ref_process_form_replay_end.formData
if (this.$refs.ref_process_form_replay_end.okflag) {
this.replayInfo = this.$refs.ref_process_form_replay_end.formData
this.okflag = true
}
}else {
return false
}
},
handleCancle() {
this.resetData();
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
resetData() {
},
//
endLoading() {
if (loading) {
loading.close();
}
},
handleCancle () {
this.resetData();
},
resetData () {
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>
<style scoped>
.el-dialog__body {
padding: 0 10px 20px !important;
padding: 0 10px 20px !important;
}
</style>

1627
src/views/modules/shequzhili/eventOld/eventList.vue

File diff suppressed because it is too large

202
src/views/modules/workSys/hobbyItem.vue

@ -0,0 +1,202 @@
<template>
<div class="g-main">
<div>
<div class="m-table">
<div class="div_btn"><el-button size="small" type="primary " @click="handleAdd({}, 'add')">新增</el-button></div>
<el-table :data="tableData" border class="m-table-item" style="width: 100%" :height="maxTableHeight">
<!-- <el-table-column label="" fixed="left" type="selection" align="center" width="50" /> -->
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="categoryName" align="center" label="分类名称" :show-overflow-tooltip="true"></el-table-column>
<!-- <el-table-column prop="awardPoint" align="center" label="积分" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column prop="usableFlag" label="状态" min-width="140" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.usableFlag == '0'">禁用</span>
<span v-if="scope.row.usableFlag == '1'">启用</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200">
<template slot-scope="scope">
<el-button @click="handleHid(scope.row)" type="text" size="small" v-if="scope.row.usableFlag == '1'" class="">禁用</el-button>
<el-button @click="handleHid(scope.row)" type="text" size="small" v-if="scope.row.usableFlag == '0'" class="">启用</el-button>
<el-button style="margin-right: 10px" @click="handleAdd(scope.row, 'edit')" size="small" type="text">修改</el-button>
<el-button style="margin-right: 10px" @click="handleDel(scope.row)" size="small" type="text">删除</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total"
></el-pagination>
</div>
</div>
</div>
<addForm :detailId="detailId" :pageType="pageType" v-if="dialogVisible" :dialogVisible="dialogVisible" @handleClose="handleClose" />
</div>
</template>
<script>
import { requestPost } from '@/js/dai/request';
import nextTick from 'dai-js/tools/nextTick';
import { mapGetters } from 'vuex';
import addForm from './hobbyItemsComponents/addForm.vue';
import axios from 'axios';
export default {
data() {
return {
dialogVisible: false,
warnFlagList: [{ value: '0', label: '否' }, { value: '1', label: '是' }],
intelligentFlagList: [{ value: '0', label: '不开启' }, { value: '1', label: '开启' }],
disabled: false,
user: '',
agencyId: '',
formData: {},
customerId: '',
pageType: 'list', // list add dispose info
gridList: [], //list--
placeTypeList: [], //
tableData: [],
pageNo: 1,
pageSize: window.localStorage.getItem('pageSize') || 20,
total: 1,
detailId: '',
detailData: {},
multipleSelection: [],
rowObj: {},
importLoading: false
};
},
components: { addForm },
created() {},
computed: {
maxTableHeight() {
return this.$store.state.inIframe ? this.clientHeight - 410 + this.iframeHeigh : this.clientHeight - 410;
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
watch: {},
mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.customerId = this.user.customerId;
console.log('this.customerId ', this.customerId);
this.getTableData();
},
methods: {
async handleDel(rowData) {
let message = '确认删除?';
this.$confirm(message, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.del(rowData.categoryId);
})
.catch(err => {});
},
async del(id) {
const url = `/actual/base/hobbyitem/delete/${id}`;
const { data, code, msg } = await requestPost(url);
if (code === 0) {
this.$message.success('删除成功!');
this.getTableData();
} else {
this.$message.error('操作失败!');
}
},
handleAdd(row, type) {
if (row.categoryId) {
this.detailId = row.categoryId;
}
this.pageType = type;
this.dialogVisible = true;
},
async handleHid(row) {
let usableFlag = '';
if (row.usableFlag == '1') {
usableFlag = false;
} else {
usableFlag = true;
}
const url = '/actual/base/hobbyitem/updatestatus';
const param = {
categoryId: row.categoryId,
usableFlag: usableFlag
};
// const url = 'http://yapi.elinkservice.cn/mock/330/actual/base/enterprise/list';
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.$message.success('操作成功');
this.getTableData();
} else {
this.$message.error(msg);
}
},
handleSearch(val) {
console.log(this.formData);
this.pageNo = 1;
this.getTableData();
},
handleClose() {
this.dialogVisible = false;
this.detailId = '';
this.getTableData();
},
async getTableData() {
const url = '/actual/base/hobbyitem/list';
// const url = 'http://yapi.elinkservice.cn/mock/330/actual/base/enterprise/list';
const { pageSize, pageNo, customerId } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
pageNo,
customerId
});
if (code === 0) {
this.total = data.total || 0;
this.tableData = data.list
? data.list.map(item => {
return item;
})
: [];
} else {
this.$message.error(msg);
}
},
handleSizeChange(val) {
this.pageSize = val;
window.localStorage.setItem('pageSize', val);
this.getTableData();
},
handleCurrentChange(val) {
this.pageNo = val;
this.getTableData();
},
resetSearch() {
this.formData = {
customerId
};
this.pageNo = 1;
this.getTableData();
}
}
};
</script>
<style lang="scss" scoped>
@import '@/assets/scss/modules/management/list-main.scss';
.m-search {
.u-item-width-normal {
width: 200px;
}
}
</style>

312
src/views/modules/workSys/hobbyItemsComponents/addForm.vue

@ -0,0 +1,312 @@
<template>
<el-dialog
:visible.sync="dialogVisible"
width="800px"
:before-close="handleCancle"
>
<span slot="title">
<span v-if="pageType == 'add'">新增</span>
<span v-if="pageType == 'edit'">修改</span>
<span v-if="pageType == 'view'">查看</span>
</span>
<div>
<el-form
:model="formData"
ref="form"
:rules="dataRule"
:label-width="'120px'"
>
<el-form-item label="分类名称" prop="categoryName">
<el-input
v-model="formData.categoryName"
class="u-item-width-normal"
size="small"
clearable
placeholder="请输入"
></el-input>
</el-form-item>
<!-- <el-form-item label="奖励积分" prop="awardPoint">
<el-input-number v-model="formData.awardPoint" class="u-item-width-normal" size="small" clearable placeholder="请输入"></el-input-number>
</el-form-item> -->
<el-form-item label="对应个性需求" prop="demandList">
<el-cascader
ref="cascaderItem1"
:options="demandOptions"
:props="props1"
v-model="formData.demandList1"
@change="handleAreaChange1"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="对应公共服务" prop="commonServiceTypeList">
<el-cascader
ref="cascaderItem2"
:options="commonServiceTypeOptions"
:props="props2"
v-model="formData.commonServiceTypeList1"
@change="handleAreaChange2"
clearable
></el-cascader>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancle"> </el-button>
<el-button type="primary" @click="handleComfirm"> </el-button>
</span>
</el-dialog>
</template>
<script>
import { isMobile } from "@/utils/validate";
import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
import { requestPost, requestGet } from "@/js/dai/request";
import daiMap from "@/utils/dai-map";
import nextTick from "dai-js/tools/nextTick";
let loading; //
let map;
var search;
var markers;
var infoWindowList;
var geocoder; //
export default {
props: {
detailId: {
type: String,
default: "",
},
dialogVisible: {
type: Boolean,
default: "",
},
pageType: {
type: String,
default: "",
},
},
data() {
return {
props1: {
multiple: true,
value: "value",
label: "label",
children: "children",
},
props2: {
value: "id",
label: "name",
children: "childrenList",
multiple: true,
},
categoryCodeArr: {},
demandOptions: [],
commonServiceTypeOptions: [],
index: -1, //arr
arr: [
"育龄妇女",
"老年人",
"空巢老人",
"独居老人",
"租户",
"残疾",
"大病",
"慢病",
],
btnDisable: false,
user: "",
agencyId: "",
marryList: [
{ value: "-1", label: "不限制" },
{ value: "0", label: "未婚" },
{ value: "1", label: "已婚" },
],
list: {},
formData: {
// awardPoint: '',
categoryId: "",
categoryName: "",
demandList1: [],
commonServiceTypeList1: [],
demandList: [],
commonServiceTypeList: [],
},
dataRule: {
categoryName: [
{ required: true, message: "分类名称不能为空", trigger: "bulr" },
],
// awardPoint: [{ required: true, message: '', trigger: 'bulr' }],
// demandList: [{ required: true, message: '', trigger: 'blur' }],
// commonServiceTypeList: [{ required: true, message: '', trigger: 'bulr' }]
},
};
},
watch: {},
created() {},
async mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.startLoading();
if (this.pageType == "edit") {
this.getDetail();
}
this.getDemandOptions();
this.getCommonServiceTypeOptions();
await this.endLoading();
this.endLoading();
},
methods: {
handleAreaChange1(data) {
let that = this;
let demandList = [];
const obj = this.$refs["cascaderItem1"].getCheckedNodes();
// ref
obj.forEach((item) => {
if (item.data.pvalue != "0") {
let obj2 = {
demandCategoryId: item.data.id,
demandCategoryCode: item.data.value,
demandParentCode: item.data.pvalue,
};
demandList.push(obj2);
}
});
that.formData.demandList = [...demandList];
},
handleAreaChange2(data) {
let that = this;
let commonServiceTypeList = [];
const obj = this.$refs["cascaderItem2"].getCheckedNodes();
// ref
obj.forEach((item) => {
let obj2 = {
commonServiceTypeId: item.data.id,
commonServiceTypePid: item.data.pid,
};
commonServiceTypeList.push(obj2);
});
that.formData.commonServiceTypeList = [...commonServiceTypeList];
},
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;
},
async getDemandOptions() {
const url = `/governance/icresidemanddict/demandoption`;
const { data, code, msg } = await requestPost(url);
if (code === 0) {
console.log("this.demandOptions", data);
this.demandOptions = this.getTreeData(data);
// console.log("this.demandOptions",this.demandOptions)
} else {
this.$message.error(msg);
}
},
async getCommonServiceTypeOptions() {
const url = `/governance/commonServiceType/treeList`;
const { data, code, msg } = await requestGet(url);
if (code === 0) {
this.commonServiceTypeOptions = data;
} else {
this.$message.error(msg);
}
},
async getDetail() {
const url = `/actual/base/hobbyitem/detail/${this.detailId}`;
const { data, code, msg } = await requestPost(url);
if (code === 0) {
console.log("详情数据", data);
this.formData = { ...data };
this.fenxiData();
this.index = this.arr.indexOf(this.formData.categoryName);
} else {
this.$message.error(msg);
}
},
fenxiData() {
let that = this;
let commonServiceTypeList1 = [];
let demandList1 = [];
this.formData.commonServiceTypeList.forEach((item) => {
let arr = [item.commonServiceTypePid, item.commonServiceTypeId];
commonServiceTypeList1.push(arr);
});
this.formData.demandList.forEach((item) => {
console.log(item);
let arr2 = [item.demandParentCode, item.demandCategoryCode];
demandList1.push(arr2);
});
this.formData.commonServiceTypeList1 = [...commonServiceTypeList1];
this.formData.demandList1 = [...demandList1];
},
handleComfirm() {
this.save();
},
async save() {
let form = this.formData;
this.handleAreaChange1();
this.handleAreaChange2();
console.log("this.formData", this.formData);
const url = "/actual/base/hobbyitem/saveorupdate";
var params = {};
params = { ...this.formData };
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("操作成功");
this.handleCancle();
} else if (code >= 8000) {
this.$message.error(msg);
}
},
handleCancle() {
// this.resetData();
this.$emit("handleClose");
},
resetData() {
this.$refs.form.resetFields();
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
}, // init
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/form-main.scss";
@import "@/assets/scss/modules/management/form.scss";
@import "@/assets/scss/modules/visual/a_customize.scss";
</style>

9
vue.config.js

@ -1,12 +1,3 @@
/*
* @Author: mk 2403457699@qq.com
* @Date: 2023-09-20 13:46:51
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2023-09-22 15:16:23
* @Description: 介绍一下改动了什么
*
*
*/
/**
* 配置参考: https://cli.vuejs.org/zh/config/
*/

Loading…
Cancel
Save