Browse Source

Merge branch 'jw_feature_dev' into jw_feature_zhangruochen

feature
张若晨 2 years ago
parent
commit
61a68ce824
  1. 4
      src/assets/css/workflow.scss
  2. 7
      src/assets/scss/dataBoardMain.scss
  3. 24
      src/components/GridTree/nodeWrap.vue
  4. 28
      src/components/JwTree/nodeWrap.vue
  5. 78
      src/components/NameSplit/index.vue
  6. 114
      src/components/PopHomeTip/index.vue
  7. 41
      src/components/PopTips/index.vue
  8. 108
      src/components/Tree/nodeWrap.vue
  9. 10
      src/main.js
  10. 2
      src/router/index.js
  11. 5
      src/views/business/resi-category-map.js
  12. 41
      src/views/components/resiForm.vue
  13. 1
      src/views/dataBoard/organizational/jwTree/index.vue
  14. 23
      src/views/dataBoard/organizational/personalPage/index.vue
  15. 73
      src/views/modules/base/organization/organization.vue
  16. 2
      src/views/modules/base/resi.vue
  17. 647
      src/views/modules/base/residentManagement/oldPeople/addForm.vue
  18. 847
      src/views/modules/base/residentManagement/oldPeople/oldPeople.vue
  19. 88
      src/views/modules/base/residentManagement/resiDisability/addForm.vue
  20. 16
      src/views/modules/base/residentManagement/resiDisability/resiDisability.vue
  21. 113
      src/views/modules/base/residentManagement/subsistenceAllowance/addForm.vue
  22. 13
      src/views/modules/base/residentManagement/subsistenceAllowance/subsistenceAllowance.vue
  23. 87
      src/views/modules/base/residentManagement/unemployment/addForm.vue
  24. 15
      src/views/modules/base/residentManagement/unemployment/unemployment.vue
  25. 86
      src/views/modules/base/residentManagement/veteran/addForm.vue
  26. 16
      src/views/modules/base/residentManagement/veteran/veteran.vue
  27. 88
      src/views/modules/base/residentManagement/volunteer/addForm.vue
  28. 9
      src/views/modules/base/residentManagement/volunteer/volunteer.vue
  29. 14
      src/views/modules/communityParty/members/memberList.vue
  30. 39
      src/views/modules/communityParty/partyOrg/create.vue
  31. 10
      src/views/modules/communityParty/partyOrg/orgTree.vue
  32. 4
      src/views/modules/communityParty/partyOrg/update.vue
  33. 27
      src/views/modules/shequzhili/event/cpts/add.vue
  34. 83
      src/views/modules/shequzhili/event/cpts/event-info.vue
  35. 33
      src/views/modules/shequzhili/event/cpts/process-form-designate.vue
  36. 33
      src/views/modules/shequzhili/event/cpts/process-form-replay-end.vue
  37. 79
      src/views/modules/shequzhili/event/cpts/process-form-replay.vue
  38. 18
      src/views/modules/shequzhili/event/eventList.vue
  39. 24
      vue.config.js

4
src/assets/css/workflow.scss

@ -1140,7 +1140,9 @@ html {
.popperClass {
width: 130px !important;
min-height: 136px !important;
height: 136px !important;
overflow-y: auto !important;
overflow-x: hidden !important;
background: #0E3164;
border: 1px solid #4883CD;
border-radius: 4px;

7
src/assets/scss/dataBoardMain.scss

@ -46,7 +46,7 @@
height: 101px;
background-image: url(../images/home/top1.png);
background-repeat: no-repeat;
background-position: top center;
background-position: top center;
background-size: 100%;
.back {
@ -66,8 +66,6 @@
left: 90px;
right: 0;
top: 0;
// margin: 0 auto;
// text-align: center;
line-height: 70px;
font-family: PingFang SC;
font-weight: bold;
@ -76,12 +74,13 @@
// text-shadow: 0px 4px 3px rgba(18, 27, 70, 0.51);
background: linear-gradient(0deg, #8FD4FF 0%, #FFFFFF 64.0380859375%);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.selectArea {
position: absolute;
left: 480px;
left: 680px;
width: 120px;
right: 0;
top: 20px;

24
src/components/GridTree/nodeWrap.vue

@ -4,8 +4,7 @@
<div class="node-wrap-box">
<div class="node-box-after">
<div class="nodeBoxTop">
<div :title="getAllName(nodeConfig.organizationName)">{{ spliceNameFun(nodeConfig.organizationName, 8) }}</div>
<div :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div>
<nameSplit :item="nodeConfig" areaName="organizationName" peopleName="name" />
</div>
</div>
</div>
@ -19,14 +18,12 @@
<div class="auto-judge">
<div v-if="getOnerSixLevelFlag(item)">
<div class="wgdzb">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<nameSplit :item="item" areaName="organizationName" peopleName="name" />
</div>
</div>
<div v-if="item.level === 'building_chief'">
<div class="lydxz">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<nameSplit :item="item" areaName="organizationName" peopleName="name" />
</div>
</div>
<div v-if="item.level === 'unit_chief'">
@ -68,6 +65,10 @@ export default {
return item;
},
getItemNameArr(str) {
return str.split(",").slice(0, 2);
},
spliceNameFun(row, num) {
if (row && row.length > num) {
return row.substring(0, num) + "...";
@ -96,7 +97,7 @@ export default {
},
gotoPersonnel(item) {
const grandPid = this.findParentParentId(this.nodeConfig, item.pid);
const name = item.name ? item.name : "恭喜发财";
const name = item.name ? item.name : "四号楼二单元302";
this.$router.push(`/organizational/microgrid/${item.id}/${grandPid}/${name}`);
},
},
@ -113,6 +114,15 @@ export default {
align-items: center;
justify-content: space-around;
}
.name_more {
span {
&:hover {
font-weight: bold;
cursor: pointer;
}
}
}
.node-box-after {
.nodeBoxTop {
font-size: 14px;

28
src/components/JwTree/nodeWrap.vue

@ -4,8 +4,7 @@
<div class="node-wrap-box">
<div class="node-box-after">
<div class="nodeBoxTop">
<div :title="getAllName(nodeConfig.organizationName)">{{ spliceNameFun(nodeConfig.organizationName, 8) }}</div>
<div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div>
<nameSplit :item="nodeConfig" areaName="organizationName" peopleName="name" pageName="居委组织架构" />
</div>
</div>
</div>
@ -19,18 +18,16 @@
<div class="auto-judge">
<div v-if="getOnerSixLevelFlag(item)">
<div class="wgdzb">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<nameSplit :item="item" areaName="organizationName" peopleName="name" pageName="居委组织架构" />
</div>
</div>
<div v-if="item.level === 'building_chief'">
<div class="lydxz">
<div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div>
<nameSplit :item="item" areaName="organizationName" peopleName="name" pageName="居委组织架构" />
</div>
</div>
<div v-if="item.level === 'unit_chief' || item.level === 'public_welfare_post'">
<div @click="gotoPersonnel(item.resiId)" class="dyzxh gotoDesc" :title="item.name">
<div @click="gotoPersonnel(item.resiId, '居委组织架构')" class="dyzxh gotoDesc" :title="item.name">
{{ spliceNameFun(item.name, 3) }}
</div>
</div>
@ -75,13 +72,17 @@ export default {
return row;
},
getItemNameArr(str) {
return str.split(",").slice(0, 2);
},
getOnerSixLevelFlag(item) {
return this.sixLevelArr.includes(item.level);
},
gotoPersonnel(id) {
gotoPersonnel(id, name) {
if (id) {
this.$router.push("/organizational/orgPersonnel");
this.$router.push(`/organizational/orgPersonnel/${name}`);
} else {
this.$message({
message: "无法跳转",
@ -103,6 +104,15 @@ export default {
align-items: center;
justify-content: space-around;
}
.name_more {
span {
&:hover {
font-weight: bold;
cursor: pointer;
}
}
}
.node-box-after {
.nodeBoxTop {
font-size: 14px;

78
src/components/NameSplit/index.vue

@ -0,0 +1,78 @@
<template>
<div class="node-com">
<div v-if="!flag" :title="getAllName(item[areaName])">{{ spliceNameFun(item[areaName], 8) }}</div>
<div class="name_more" v-if="item[peopleName] && !item[peopleName].includes(',')" @click="gotoPersonnel(item.resiId)" :title="getAllName(item[peopleName])">{{ spliceNameFun(item[peopleName], 12) }}</div>
<div class="name_more" v-if="item[peopleName] && item[peopleName].includes(',')">
<span v-for="(i, k) in getItemNameArr(item[peopleName])" :key="i" @click="gotoPersonnel(item.resiId[k])" :title="getAllName(i)">{{ spliceNameFun(i, 12) }}{{ k === getItemNameArr(item[peopleName]).length - 1 ? "" : "," }}</span>
<popTips :item="item" />
</div>
</div>
</template>
<script>
export default {
name: "NameSplit",
props: {
item: {
type: Object,
default: () => {},
},
areaName: {
type: String,
default: "partyOrgName",
},
peopleName: {
type: String,
default: "principalName",
},
flag: {
type: Boolean,
default: false,
},
pageName: {
type: String,
default: "",
},
},
data() {
return {};
},
methods: {
getAllName(item) {
return item;
},
getItemNameArr(str) {
return str.split(",").slice(0, 2);
},
spliceNameFun(row, num) {
if (row && row.length > num) {
return row.substring(0, num) + "...";
}
return row;
},
gotoPersonnel(id) {
if (id) {
this.$router.push({ path: `/organizational/orgPersonnel/${this.pageName}`, query: { user_id: id } });
} else {
this.$message.error("无法跳转!");
}
},
},
};
</script>
<style scope lang="scss">
.node-com {
.name_more {
cursor: pointer;
span {
&:hover {
font-weight: bold;
cursor: pointer;
}
}
}
}
</style>

114
src/components/PopHomeTip/index.vue

@ -0,0 +1,114 @@
<template>
<el-popover popper-class="popperClass" placement="right" trigger="hover">
<div class="popperList">
<div style="margin-bottom: 13px">家庭类别</div>
<div class="listMsg" v-for="itm in homeTypeArr" :key="itm">
<img :src="require(`@/assets/images/home/${getHomeTypesMap(itm)[1]}.png`)" alt="" />
<span style="margin-left: 3px">{{ getHomeTypesMap(itm)[0] }}</span>
</div>
</div>
<div @click="gotoPersonnel(item.resiId)" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName">
{{ spliceNameFun(item.principalName, 3) }}
<img src="@/assets/images/home/cjr.png" alt="" />
</div>
</el-popover>
</template>
<script>
export default {
name: "principalName",
props: {
item: {
type: Object,
default: () => {},
},
pageName: {
type: String,
default: "",
},
},
data() {
return {
homeTypeArr: [],
};
},
methods: {
// Map
getHomeTypesMap(item) {
const homeTypeMap = new Map([
["partyFlag", { name: "党员", icon: "dy" }],
["subsistenceAllowanceFlag", { name: "低保人员", icon: "dbry" }],
["ensureHouseFlag", { name: "保障房人员", icon: "bzfry" }],
["unemployedFlag", { name: "失业人员", icon: "syry" }],
["fertileWomanFlag", { name: "育龄妇女", icon: "ylfn" }],
["veteranFlag", { name: "退役军人", icon: "tyjr" }],
["unitedFrontFlag", { name: "统战人员", icon: "tzry" }],
["petitionOfficerFlag", { name: "信访人员", icon: "xfry" }],
["volunteerFlag", { name: "志愿者", icon: "zyz" }],
["oldPeopleFlag", { name: "老年人", icon: "lnr" }],
["emptyNesterFlag", { name: "空巢老人", icon: "kclr" }],
["specialSupportFlag", { name: "特扶人员", icon: "tfry" }],
["disabledFlag", { name: "失能人员", icon: "snry" }],
["dementedFlag", { name: "失智人员", icon: "szry" }],
["disabilityFlag", { name: "残疾人", icon: "cjr" }],
["seriousIllnessFlag", { name: "大病人员", icon: "dbry" }],
["chronicDiseaseFlag", { name: "慢性病人员", icon: "mxbry" }],
["specialCrowdFlag", { name: "特殊人群", icon: "tsry" }],
["tenantFlag", { name: "租户", icon: "zh" }],
["floatingFlag", { name: "流动人员", icon: "ldry" }],
["liveAloneFlag", { name: "独居老人", icon: "kclr" }],
["publicWelfareFlag", { name: "公益岗人员", icon: "gyg" }],
]);
return [homeTypeMap.get(item).name, homeTypeMap.get(item).icon];
},
getHomeTypes(id) {
this.$http.get(`/actual/base/organizational/structure/getResidentCategoryByHouseId?houseId=${id}`).then((res) => {
const { code, msg, data } = res.data;
if (code === 0) {
const newItem = data[0];
const itemNumOne = Object.keys(newItem).filter((key) => newItem[key] === 1);
this.homeTypeArr = itemNumOne;
} else {
this.$message.error(msg);
}
});
},
spliceNameFun(row, num) {
if (row && row.length > num) {
return row.substring(0, num) + "...";
}
return row;
},
gotoPersonnel(id) {
if (id) {
this.$router.push({ path: "/organizational/orgPersonnel", query: { user_id: id } });
} else {
this.$message.error("无法跳转!");
}
},
},
};
</script>
<style scoped lang="scss">
@mixin spanLevel {
font-size: 14px;
color: #fff;
word-break: break-all;
}
.lxjt {
@include spanLevel;
display: flex;
align-items: center;
justify-content: space-around;
height: 118px;
width: 30px;
writing-mode: tb-rl;
margin-top: -12px;
background-image: url(~@/assets/images/home/dyzxhTree.png);
background-size: 100%;
}
</style>

41
src/components/PopTips/index.vue

@ -0,0 +1,41 @@
<template>
<el-popover v-if="getItemNameArr(item.name).length > 2" popper-class="popperClass" placement="right" trigger="hover">
<div class="popperList">
<div style="margin-bottom: 13px">所有人员</div>
<div v-for="(itm, idx) in getItemNameArr(item.name)" :key="itm">
<span style="cursor: pointer" @click="gotoPersonnel(item.resiId[idx])">{{ itm }}</span>
</div>
</div>
<i slot="reference" style="margin-left: 2px" class="el-icon-more"></i>
</el-popover>
</template>
<script>
export default {
name: "PopTips",
props: {
item: {
type: Object,
default: () => {},
},
},
data() {
return {};
},
methods: {
gotoPersonnel(id) {
if (id) {
this.$router.push("/organizational/orgPersonnel");
} else {
this.$message({
message: "无法跳转",
type: "error",
});
}
},
getItemNameArr(str) {
return str.split(",");
},
},
};
</script>

108
src/components/Tree/nodeWrap.vue

@ -3,10 +3,8 @@
<div class="node-wrap" v-if="nodeConfig.laneLevel === 1">
<div class="node-wrap-box">
<div class="node-box-after">
<!-- {{ spliceNameFun(nodeConfig, 18) }} -->
<div class="nodeBoxTop">
<div :title="getAllName(nodeConfig.partyOrgName)">{{ spliceNameFun(nodeConfig.partyOrgName, 8) }}</div>
<div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.principalName)">{{ spliceNameFun(nodeConfig.principalName, 12) }}</div>
<nameSplit :item="nodeConfig" areaName="partyOrgName" peopleName="principalName" pageName="党组织架构" />
</div>
</div>
</div>
@ -20,44 +18,21 @@
<div class="auto-judge">
<div v-if="item.laneLevel >= 2 && item.laneLevel <= 7 && item.partyOrgLevel < 8">
<div class="wgdzb">
<div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
<nameSplit :item="item" areaName="partyOrgName" peopleName="principalName" pageName="党组织架构" />
</div>
</div>
<div v-if="item.partyOrgLevel === 8">
<div class="lydxz">
<div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div>
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div>
<nameSplit :item="item" areaName="partyOrgName" peopleName="principalName" pageName="党组织架构" />
</div>
</div>
<div v-if="item.partyOrgLevel === 9">
<div class="dyzxh">
<!-- <div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 3) }}</div> -->
<div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 3) }}</div>
<nameSplit :item="item" :flag="flag" areaName="partyOrgName" peopleName="principalName" pageName="党组织架构" />
</div>
</div>
<div class="lxjtWrap" v-if="item.partyOrgLevel === 10">
<el-popover popper-class="popperClass" placement="right" trigger="hover">
<div class="popperList">
<div style="margin-bottom: 13px">家庭类别</div>
<div class="listMsg" v-for="item in homeTypeArr" :key="item">
<img :src="require(`@/assets/images/home/${getHomeTypesMap(item)[1]}.png`)" alt="" />
<span style="margin-left: 3px">{{ getHomeTypesMap(item)[0] }}</span>
</div>
<!-- <div class="listMsg">
<img src="@/assets/images/home/cjr.png" alt="" />
<span>残疾人</span>
</div>
<div class="listMsg">
<img src="@/assets/images/home/kclr.png" alt="" />
<span>空巢老人</span>
</div> -->
</div>
<div @click="gotoPersonnel(item.resiId)" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName">
{{ spliceNameFun(item.principalName, 3) }}
<img src="@/assets/images/home/cjr.png" alt="" />
</div>
</el-popover>
<popHomeTip :item="item" pageName="党组织架构" />
</div>
</div>
</div>
@ -65,94 +40,29 @@
<nodeWrap v-if="item.children" :nodeConfig.sync="item"></nodeWrap>
<template v-if="index == 0">
<div class="top-left-cover-line"></div>
<!-- <div class="bottom-left-cover-line"></div> -->
</template>
<template v-if="index == nodeConfig.children.length - 1">
<div class="top-right-cover-line"></div>
<!-- <div class="bottom-right-cover-line"></div> -->
</template>
</div>
</div>
<!-- <addNode :childNodeP.sync="nodeConfig.childNode"></addNode> -->
</div>
</div>
<nodeWrap v-if="nodeConfig.childNode" :nodeConfig.sync="nodeConfig.childNode"></nodeWrap>
</div>
</template>
<script>
// import { mapState, mapMutations } from "vuex";
export default {
props: ["nodeConfig"],
data() {
return {
homeTypeArr: [],
flag: true,
};
},
mounted() {},
computed: {},
watch: {},
methods: {
getAllName(item) {
return item;
},
spliceNameFun(row, num) {
if (row && row.length > num) {
return row.substring(0, num) + "...";
}
return row;
},
// Map
getHomeTypesMap(item) {
const homeTypeMap = new Map([
["partyFlag", { name: "党员", icon: "dy" }],
["subsistenceAllowanceFlag", { name: "低保人员", icon: "dbry" }],
["ensureHouseFlag", { name: "保障房人员", icon: "bzfry" }],
["unemployedFlag", { name: "失业人员", icon: "syry" }],
["fertileWomanFlag", { name: "育龄妇女", icon: "ylfn" }],
["veteranFlag", { name: "退役军人", icon: "tyjr" }],
["unitedFrontFlag", { name: "统战人员", icon: "tzry" }],
["petitionOfficerFlag", { name: "信访人员", icon: "xfry" }],
["volunteerFlag", { name: "志愿者", icon: "zyz" }],
["oldPeopleFlag", { name: "老年人", icon: "lnr" }],
["emptyNesterFlag", { name: "空巢老人", icon: "kclr" }],
["specialSupportFlag", { name: "特扶人员", icon: "tfry" }],
["disabledFlag", { name: "失能人员", icon: "snry" }],
["dementedFlag", { name: "失智人员", icon: "szry" }],
["disabilityFlag", { name: "残疾人", icon: "cjr" }],
["seriousIllnessFlag", { name: "大病人员", icon: "dbry" }],
["chronicDiseaseFlag", { name: "慢性病人员", icon: "mxbry" }],
["specialCrowdFlag", { name: "特殊人群", icon: "tsry" }],
["tenantFlag", { name: "租户", icon: "zh" }],
["floatingFlag", { name: "流动人员", icon: "ldry" }],
["liveAloneFlag", { name: "独居老人", icon: "kclr" }],
["publicWelfareFlag", { name: "公益岗人员", icon: "gyg" }],
]);
return [homeTypeMap.get(item).name, homeTypeMap.get(item).icon];
},
getHomeTypes(id) {
this.$http.get(`/actual/base/organizational/structure/getResidentCategoryByHouseId?houseId=${"1495582904602800129"}`).then((res) => {
const { code, msg, data } = res.data;
if (code === 0) {
const newItem = data[0];
const itemNumOne = Object.keys(newItem).filter((key) => newItem[key] === 1);
this.homeTypeArr = itemNumOne;
} else {
this.$message.error(msg);
}
});
},
gotoPersonnel(id) {
if (id) {
this.$router.push({ path: "/organizational/orgPersonnel", query: { user_id: id } });
} else {
this.$message.error("无法跳转!");
}
},
},
methods: {},
};
</script>
<style scoped lang="scss">
@ -166,6 +76,7 @@ export default {
align-items: center;
justify-content: space-around;
}
.node-box-after {
.nodeBoxTop {
font-size: 14px;
@ -178,9 +89,6 @@ export default {
text-align: center;
background-image: url(~@/assets/images/home/firstLevel.png);
background-size: 100%;
div:nth-child(2) {
cursor: pointer;
}
}
}
.auto-judge {

10
src/main.js

@ -23,7 +23,7 @@ import { message } from "@/utils/message.js";
import http from "@/utils/request";
import cloneDeep from "lodash/cloneDeep";
// 引入工具类
import './utils/jwTool'
import "./utils/jwTool";
// axios封装
import ajax from "@/js/ajax";
// service
@ -40,13 +40,18 @@ import NodeWrap from "@/components/Tree/nodeWrap.vue";
// import AddNode from "@/components/Tree/addNode.vue";
import NodeWrapJw from "@/components/JwTree/nodeWrap.vue";
import NodeWrapGrid from "@/components/GridTree/nodeWrap.vue";
import PopTips from "@/components/PopTips/index.vue";
import PopHomeTip from "@/components/PopHomeTip/index.vue";
import NameSplit from "@/components/NameSplit/index.vue";
// import AddNodeJw from "@/components/JwTree/addNode.vue";
//按钮
Vue.component("nodeWrap", NodeWrap);
// Vue.component("addNode", AddNode);
Vue.component("nodeWrapJw", NodeWrapJw);
Vue.component("nodeWrapGrid", NodeWrapGrid);
// Vue.component("addNodeJw", AddNodeJw);
Vue.component("popTips", PopTips);
Vue.component("popHomeTip", PopHomeTip);
Vue.component("nameSplit", NameSplit);
// 兼容token传参登录
if (getQueryPara("token")) {
@ -105,7 +110,6 @@ window.SITE_CONFIG["storeState"] = cloneDeep(store.state);
Vue.prototype.tableHeaderStyle = { background: "linear-gradient(0deg, #005EB3 0%, #0083F0 100%)", color: "#FFFFFF", padding: "6px 0px" };
new Vue({
i18n,
router,

2
src/router/index.js

@ -432,7 +432,7 @@ export const dataBoardRoutes = {
],
},
{
path: "/organizational/orgPersonnel",
path: "/organizational/orgPersonnel/:name",
props: true,
component: () => import("@/views/dataBoard/organizational/personalPage/index"),
name: "OrgPersonnel",

5
src/views/business/resi-category-map.js

@ -19,5 +19,8 @@ export default {
SPECIAL_CROWD_FLAG: '特殊人群',
TENANT_FLAG: '租户',
FLOATING_FLAG: '流动人口',
LIVE_ALONE_FLAG: '独居老人'
LIVE_ALONE_FLAG: '独居老人',
BUILDING_CHIEF_FLAG: '楼长',
UNIT_CHIEF_FLAG: '单元长',
PUBLIC_WELFARE_FLAG: '公益岗人员'
}

41
src/views/components/resiForm.vue

@ -1150,20 +1150,20 @@ export default {
opction: [
]
},
{
label: "参战时间开始日期",
itemType: "datepicker1",
formName: "joinWarStartTime",
opction: [
]
},
{
label: "参战时间截止日期",
itemType: "datepicker1",
formName: "joinWarEndTime",
opction: [
]
},
// {
// label: "",
// itemType: "datepicker1",
// formName: "joinWarStartTime",
// opction: [
// ]
// },
// {
// label: "",
// itemType: "datepicker1",
// formName: "joinWarEndTime",
// opction: [
// ]
// },
{
label: "现就业情况",
itemType: "input1",
@ -1867,6 +1867,7 @@ export default {
this.handleTabShow(item, val)
},
handleTabShow (item, val) {
console.log(item,val);
const mapping = {
partyFlag: { label: '党员', id: '0', groupId: 'parymemberInfoDto' },
ensureHouseFlag: { label: '保障房信息', id: '1', groupId: 'ensureHouseDto' },
@ -1885,7 +1886,17 @@ export default {
this.tabsList.push(mapping[item.formName]);
} else if (val != 1 && mapping[item.formName]) {
this.tabsList = this.tabsList.filter(tab => tab.id !== mapping[item.formName].id);
delete this.form[mapping[item.formName].groupId];
// delete this.form[mapping[item.formName].groupId];
let group = this.form[mapping[item.formName].groupId];
for (let key in group) {
if (group.hasOwnProperty(key)) {
if (typeof group[key] === "string") {
group[key] = "";
} else if (typeof group[key] === "number") {
group[key] = null;
}
}
}
}
},

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

@ -81,7 +81,6 @@ export default {
}
});
const myArray = [...new Set(this.levelArr)];
console.log(myArray);
this.levelArr = this.getLevelArrNum(myArray);
},
//

23
src/views/dataBoard/organizational/personalPage/index.vue

@ -32,6 +32,29 @@ export default {
],
};
},
watch: {
"$route.params.name": {
handler(val) {
if (val) {
this.setCrumbListFun(val);
}
},
immediate: true,
deep: true,
},
},
mounted() {
const name = this.$route.params.name;
this.setCrumbListFun(name);
},
methods: {
setCrumbListFun(name) {
const nowName = name;
const path = nowName === "党组织架构" ? "/organizational/dangTree" : "/organizational/jwTree";
this.list[0].name = nowName;
this.list[0].path = path;
},
},
};
</script>

73
src/views/modules/base/organization/organization.vue

@ -692,18 +692,18 @@
<!-- 新增组织 -->
<el-dialog v-if="createAgencyDialogFlag"
title="新增组织"
title="新增组织1"
:visible.sync="createAgencyDialogFlag"
width="850"
:before-close="handleClose" destroy-on-close>
<el-form label-width="120px">
<el-form-item label="组织名称">
<el-form label-width="120px" :model="agencyForm" ref="agencyForm" :rules="rulesAddAgency">
<el-form-item label="组织名称" prop="agencyName">
<el-input v-model="agencyForm.agencyName"
placeholder="请输入组织名称"></el-input>
</el-form-item>
<!-- 组织区划 -->
<el-form-item label="组织区划">
<el-form-item label="组织区划" prop="areaCode">
<el-select v-model="agencyForm.areaCode"
placeholder="请选择组织区划"
@change="handelZoing">
@ -1280,7 +1280,9 @@ export default {
duty: [{ required: true, message: "职责必填", trigger: "blur" }],
newRoles: [{ required: true, message: "角色必填", trigger: "blur" }],
},
rulesAddAgency:{
areaCode: [{ required: true, message: "组织区划必填", trigger: "blur" }]
},
selDeptType: "",
//
@ -2486,35 +2488,44 @@ export default {
},
//
async submitaddNewAgency () {
const url = "/gov/org/agency/addagency-v2";
this.$refs['agencyForm'].validate(async (valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
this.btnDisable = false
} else {
const url = "/gov/org/agency/addagency-v2";
let params = {
parentAgencyId: this.currentAgencyId,
agencyName: this.agencyForm.agencyName,
level: this.agencyForm.level,
areaCodeSwitch: this.currentAreaCodeSwitch,
areaCode: this.agencyForm.areaCode,
areaName: this.agencyForm.areaName,
contacts: this.agencyForm.contacts,
mobile: this.agencyForm.mobile,
description: this.agencyForm.description,
code: this.agencyForm.code,
latitude: this.latitude,
longitude: this.longitude,
};
let params = {
parentAgencyId: this.currentAgencyId,
agencyName: this.agencyForm.agencyName,
level: this.agencyForm.level,
areaCodeSwitch: this.currentAreaCodeSwitch,
areaCode: this.agencyForm.areaCode,
areaName: this.agencyForm.areaName,
contacts: this.agencyForm.contacts,
mobile: this.agencyForm.mobile,
description: this.agencyForm.description,
code: this.agencyForm.code,
latitude: this.latitude,
longitude: this.longitude,
};
const { data, code, msg } = await requestPost(url, params);
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("添加成功");
this.createAgencyDialogFlag = false;
this.getAgencyList();
this.getDepartmentList();
this.getGridList();
this.getAgencyStaffListData();
} else {
this.$message.error(msg);
}
if (code === 0) {
this.$message.success("添加成功");
this.createAgencyDialogFlag = false;
this.getAgencyList();
this.getDepartmentList();
this.getGridList();
this.getAgencyStaffListData();
} else {
this.$message.error(msg);
}
}
})
},
//

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

@ -70,7 +70,7 @@
{{ handleFilterSpan(scope.row, item) }}
</a>
<div v-else-if="item.columnName == 'gender'">
{{ scope.row.gender == 1 ? "男" : "女" }}
{{ scope.row.gender == null ? '--':scope.row.gender == 1?'男':scope.row.gender ==2?'女':'--' }}
</div>
<div v-else-if="item.columnName == 'birthday'">
{{

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

@ -0,0 +1,647 @@
<template>
<div>
<div class="dialog-h-content scroll-h" :class="{ 'visiual-form': source === 'visiual' }">
<el-form ref="ref_add_form" :inline="true" :model="formData" :rules="dataRule" class="div_form">
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else label="所属组织" label-width="100px" prop="agencyId">
<el-cascader v-if="formType == 'add'" ref="ref_cascader_agency" class="width-two"
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>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">姓名: </span>
<span>{{ formData.name || "--" }}</span>
</div>
<el-form-item label-width="100px" label="姓名" prop="name" v-else>
<el-input v-model="formData.name" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">联系电话: </span>
<span>{{ formData.mobile || "--" }}</span>
</div>
<el-form-item label-width="100px" label="联系电话" v-else>
<el-input v-model="formData.mobile" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">证件类型: </span>
<span>{{ formData.idTypeName || "--" }}</span>
</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"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">证件号: </span>
<span>{{ formData.idNum || "--" }}</span>
</div>
<el-form-item label-width="100px" label="证件号" prop="idNum" v-else>
<el-input v-model="formData.idNum" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">本地户籍: </span>
<span>{{
formData.localResidenceFlag != null
? formData.localResidenceFlag === 1
? "是"
: formData.localResidenceFlag === 0
? "否"
: "--"
: "--"
}}</span>
</div>
<el-form-item label-width="100px" label="本地户籍" v-else>
<el-select v-model="formData.localResidenceFlag" clearable>
<el-option v-for="item in binaryOptionList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">户籍地址: </span>
<span>{{ formData.placeOfDomicile || "--" }}</span>
</div>
<el-form-item label-width="100px" label="户籍地址" class="wd-wr" v-else>
<el-input v-model="formData.placeOfDomicile" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">现居地址: </span>
<span>{{ formData.currentResidence || "--" }}</span>
</div>
<el-form-item label-width="100px" label="现居地址" class="wd-wr" v-else>
<el-input v-model="formData.currentResidence" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">是否残疾: </span>
<span>{{
formData.disabilityFlag != null
? formData.disabilityFlag === 1
? "是"
: formData.disabilityFlag === 0
? "否"
: "--"
: "--"
}}</span>
</div>
<el-form-item label-width="100px" label="是否残疾" v-else>
<el-select v-model="formData.disabilityFlag" clearable>
<el-option v-for="item in binaryOptionList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">残疾类别: </span>
<span>{{ formData.disabilityCategoryName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="残疾类别" v-else>
<el-select v-model="formData.disabilityCategoryCode" clearable>
<el-option v-for="item in dicts.disability_category_code" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">残疾级别: </span>
<span>{{ formData.disabilityLevelName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="残疾级别" v-else>
<el-select v-model="formData.disabilityLevel" clearable>
<el-option v-for="item in dicts.disability_level" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">残疾证号: </span>
<span>{{ formData.disabilityNum || "--" }}</span>
</div>
<el-form-item label-width="100px" label="残疾证号" v-else>
<el-input v-model="formData.disabilityNum" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">与户主关系: </span>
<span>{{ formData.disabilityCategoryName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="与户主关系" v-else>
<el-select v-model="formData.houseHolderRel" clearable>
<el-option v-for="item in dicts.resi_base_info" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">居住情况: </span>
<span>{{ formData.resideSituationName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="居住情况" v-else>
<el-select v-model="formData.resideSituation" clearable>
<el-option v-for="item in dicts.reside_situation" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</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.marriageName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="婚姻情况" v-else>
<el-select v-model="formData.marriage" clearable>
<el-option v-for="item in dicts.marriage" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">配偶情况: </span>
<span>{{ formData.spouseSituationName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="配偶情况" v-else>
<el-select v-model="formData.spouseSituation" clearable>
<el-option v-for="item in dicts.spouse_situation" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">退休金额: </span>
<span>{{ formData.retirementAmount || "--" }}</span>
</div>
<el-form-item label-width="100px" label="退休金额" v-else>
<el-input v-model="formData.retirementAmount" placeholder="请输入" clearable
@blur="checkNumberInput"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">高龄补助: </span>
<span>{{ formData.oldSubsidy || "--" }}</span>
</div>
<el-form-item label-width="100px" label="高龄补助" v-else>
<el-input v-model="formData.oldSubsidy" placeholder="请输入" clearable
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">该居民有无赡养老人: </span>
<span>{{
formData.elderlyFlag != null
? formData.elderlyFlag === 1
? "是"
: formData.elderlyFlag === 0
? "否"
: "--"
: "--"
}}</span>
</div>
<el-form-item label-width="100px" label="该居民有无赡养老人" v-else>
<el-select v-model="formData.elderlyFlag" clearable>
<el-option v-for="item in elderlyList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">该居民与赡养人关系: </span>
<span>{{ formData.elderlyRelationName || "--" }}</span>
</div>
<el-form-item label-width="100px" label="该居民与赡养人关系" v-else>
<el-select v-model="formData.elderlyRelation" clearable>
<el-option v-for="item in dicts.resi_base_info" :key="item.value"
:label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">赡养人联系电话: </span>
<span>{{ formData.dependantMobile || "--" }}</span>
</div>
<el-form-item label-width="100px" label="赡养人联系电话" v-else>
<el-input v-model="formData.dependantMobile" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">备注: </span>
<span>{{ formData.remark || "--" }}</span>
</div>
<el-form-item label-width="100px" label="备注" class="wd-wr" v-else>
<el-input v-model="formData.remark" placeholder="请输入" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="div_btn">
<el-button size="small" @click="handleCancle"> </el-button>
<el-button size="small" type="primary" :disabled="btnDisable" @click="handleComfirm"> </el-button>
</div>
</div>
</template>
<script>
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";
let loading; //
export default {
props: {
formType: {
type: String,
default: "add",
},
source: {
//manage visiual
type: String,
default: "manage",
},
},
data() {
return {
btnDisable: false,
selGridId: [],
optionsA: [],
formData: {
agencyId: "",
name: "",
mobile: "",
idType: "",
idNum: "",
localResidenceFlag: null,
placeOfDomicile: "",
currentResidence: "",
disabilityFlag: "",
disabilityCategoryCode: "",
disabilityLevel: "",
resideSituation: "",//
houseHolderRel: "",//
marriage: "",//
disabilityNum:"",
spouseSituation: "",//
retirementAmount: "",
oldSubsidy: "",//
elderlyFlag: "",//
elderlyRelation: "",//
dependantMobile: "",//
remark: "",
},
elderlyList:[
{
label: "有",
value: 1
},
{
label: "无",
value: 0
}
],
genderList,
binaryOptionList,
dataRule: {
name: [{ required: true, message: "姓名不能为空", trigger: "bulr" }],
idNum: [{ required: true, message: "证件号不能为空", trigger: "bulr" }],
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
dicts: {
disability_category_code: [],
disability_level: [],
idCard_type: [],
resi_base_info: [],//
reside_situation: [],//
marriage: [],//
spouse_situation: []//
},
};
},
watch: {},
components: {},
async created() {
await this.getDicts();
await this.getGridList()
},
async mounted() {
this.startLoading();
await this.endLoading();
},
methods: {
async initForm(type, row) {
this.formType = type;
this.scopeId = row.categorizedResiId;
await this.getDetail(row.categorizedResiId);
},
async getDetail(categorizedResiId) {
const url = `/actual/base/resiCategorized/oldPeople/detail/${categorizedResiId}`;
const { data, code, msg } = await requestGet(url);
if (code === 0) {
console.log(data);
this.formData = { ...data };
} else {
this.$message.error(msg);
}
},
checkNumberInput() {
if (isNaN(this.formData.retirementAmount)) {
this.$message.error("请输入数字");
this.formData.retirementAmount = "";
} else {
this.formData.retirementAmount = parseFloat(
this.formData.retirementAmount
);
}
},
monthIncomeNumberInput() {
if (isNaN(this.formData.monthIncome)) {
this.$message.error("请输入数字");
this.formData.monthIncome = "";
} else {
this.formData.monthIncome = parseFloat(this.formData.monthIncome);
}
},
async handleComfirm() {
this.$refs["ref_add_form"].validate(async (valid) => {
if (!valid) {
return false;
}
if (this.formType == 'edit') {
this.formData.categorizedResiId = this.scopeId
}
console.log(this.formData);
const url =
this.formType === "edit"
? "/actual/base/resiCategorized/oldpeople/update"
: "/actual/base/resiCategorized/oldpeople/create";
const { data, code, msg } = await requestPost(url, this.formData);
if (code === 0) {
this.$message.success(
this.formType == "add" ? "添加成功" : "修改成功"
);
this.resetData();
this.$emit("handleComfirm");
} else if (code >= 8000) {
this.$message.error(msg);
}
});
},
async getDicts() {
try {
const requests = [
this.$http.post("sys/dict/data/dictlist", {
dictType: "disability_category_code",
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "disability_level",
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "idCard_type",
}),
this.$http.post("sys/dict/data/relationship", {
formCode: "resi_base_info"
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "reside_situation"
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "marriage"
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "spouse_situation"
}),
];
const dictKeys = ["disability_category_code", "disability_level", "idCard_type", "resi_base_info", "reside_situation", "marriage", "spouse_situation"]; //
const results = await Promise.all(requests);
results.forEach((result, index) => {
if (result.data.code === 0) {
this.dicts[dictKeys[index]].push(...result.data.data);
} else {
console.log(`获取${dictKeys[index]}失败: ${result.data.msg}`);
}
});
} catch (error) {
console.log("获取字典失败: ", error);
}
},
handleCancle() {
this.resetData();
this.$emit("handleClose");
},
resetData() {
this.formData = {};
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
if (loading) {
loading.close();
}
},
handleChangeAngency(val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList() {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree(arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/form-main.scss";
@import "@/assets/scss/modules/visual/a_customize.scss";
@import "@/assets/scss/modules/management/detail-main.scss";
.form-item::v-deep .el-form-item__label {
color: #fff;
}
.form-item {
.el-radio {
color: #fff;
}
.el-checkbox {
color: #fff;
}
}
.wd-wr {
width: 100%;
/deep/ .el-form-item__content {
width: calc(100% - 148px);
}
}
.info-prop {
margin-top: 29px;
.info-title-2 {
width: 100px;
text-align: right;
display: inline-block;
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

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

@ -0,0 +1,847 @@
<template>
<div class="g-main">
<div>
<div class="m-search">
<el-form
:inline="true"
:model="formData"
ref="ref_searchform"
:label-width="'100px'"
>
<el-form-item label="姓名">
<el-input
v-model="formData.name"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
></el-input>
</el-form-item>
<el-form-item label="联系电话">
<el-input
v-model="formData.mobile"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
></el-input>
</el-form-item>
<el-form-item label="证件号">
<el-input
v-model="formData.idNum"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
></el-input>
</el-form-item>
<!-- <el-form-item label="性别">
<el-select
v-model="formData.gender"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
>
<el-option
v-for="item in genderList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="居住地址">
<el-input
v-model="formData.currentResidence"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
></el-input>
</el-form-item>
<el-form-item label="是否残疾">
<el-select
v-model="formData.disabilityFlag"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
>
<el-option
v-for="item in binaryOptionList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="居住情况">
<el-select
v-model="formData.resideSituation"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
>
<el-option
v-for="item in dicts.reside_situation"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="婚姻情况">
<el-select
v-model="formData.marriage"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
>
<el-option
v-for="item in dicts.marriage"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="该居民有无赡养人">
<el-select
v-model="formData.elderlyList"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
>
<el-option
v-for="item in elderlyList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备注">
<el-input
v-model="formData.remark"
placeholder="请输入"
size="small"
class="u-item-width-normal"
clearable
></el-input>
</el-form-item>
<el-row type="flex">
<el-col :span="24" align="right">
<el-button
style="margin-left: 30px"
size="small"
type="primary "
@click="handleSearch"
>查询</el-button
>
<el-button
style="margin-left: 10px"
is-plain
class="diy-button--white el-button--default"
size="small"
@click="resetSearch"
>重置</el-button
>
</el-col>
</el-row>
</el-form>
</div>
<div class="m-table">
<div class="div_btn">
<div class="div_btn_left">
<el-button
size="small"
@click="handleAdd"
type="primary"
icon="el-icon-plus"
>新增</el-button
>
</div>
<el-button
@click="handleExport"
type="primary"
size="small"
class="diy-button--white el-button--default"
>导出</el-button
>
<el-button
@click="onDeleteBatch"
style="margin: 0 10px"
size="small"
type="primary"
>
批量删除
</el-button>
<el-upload
:headers="$getElUploadHeaders()"
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:accept="'.xls,.xlsx'"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button
type="primary"
size="small"
class="diy-button--white el-button--default"
:loading="importLoading"
>导入</el-button
>
</el-upload>
<el-button
style="margin-left: 10px"
class="diy-button--blue"
size="small"
@click="handleExportModule('room')"
>下载模板</el-button
>
</div>
<el-table
:data="tableData"
border
v-loading="tableLoading"
class="m-table-item"
style="width: 100%"
:height="maxTableHeight"
@selection-change="onMultiSelection"
>
<el-table-column
type="selection"
fixed="left"
align="center"
width="50"
/>
<el-table-column
label="序号"
fixed="left"
type="index"
align="center"
width="50"
/>
<el-table-column
prop="name"
align="center"
width="100"
label="姓名"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
width="150"
label="联系电话"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="idNum"
align="center"
width="200"
label="证件号"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="disabilityFlag"
align="center"
width="80"
label="是否伤残"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
<span>{{ binaryText(scope.row.disabilityFlag) }}</span>
</template>
</el-table-column>
<el-table-column
prop="resideSituationName"
align="center"
width="100"
label="居住情况"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="marriageName"
align="center"
width="100"
label="婚姻状况"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="elderlyFlag"
align="center"
width="100"
label="该居民有无赡养老人"
:show-overflow-tooltip="true"
>
<template slot-scope="scope">
<span>{{ scope.row.elderlyFlag!=null?scope.row.elderlyFlag == 1?'有':scope.row.elderlyFlag == 0?'无':'--':'--' }}</span>
</template>
</el-table-column>
<el-table-column
prop="oldSubsidy"
align="center"
width="100"
label="高龄补助"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="currentResidence"
align="center"
width="100"
label="现居地址"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="remark"
align="center"
label="备注"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
align="center"
width="220"
>
<template slot-scope="scope">
<el-button
@click="handleDetail(scope.row)"
type="text"
size="small"
>查看</el-button
>
<el-button
@click="handleEdit(scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button @click="handleDel(scope.row)" type="text" size="small"
>删除</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>
<el-dialog
v-if="showAdd"
:visible.sync="showAdd"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="addDiaTitle"
:modal-append-to-body="false"
width="720px"
top="5vh"
class="dialog-h"
@closed="showAdd = false"
>
<add-form
ref="ref_add_form"
@handleComfirm="handleComfirm"
@handleClose="handleClose"
></add-form>
</el-dialog>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { genderList, binaryOptionList } from "@/js/columns/constants";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import addForm from "./addForm";
// import detailForm from "./detailForm";
// import editForm from "./editForm";
export default {
components: { addForm, },
data() {
let endDisabledDate = (time) => {
//datareturn
let nowData = Date.now();
if (this.formData.serviceTimeStart) {
let serviceTimeStart = new Date(this.formData.serviceTimeStart);
return (
time.getTime() < serviceTimeStart - 24 * 60 * 60 * 1000 ||
time.getTime() === serviceTimeStart - 24 * 60 * 60 * 1000
);
} else {
return time.getTime() > nowData || time.getTime() === nowData;
}
};
// let startDisabledDate = (time) => {
// //datareturn
// let nowData = Date.now() - 24 * 60 * 60 * 1000;
// return time.getTime() < nowData;
// };
return {
tableLoading: false,
user: {},
agencyId: "",
searchH: 170,
tableData: [],
genderList,
binaryOptionList,
formData: {
name: "",
mobile: "",
disabilityFlag: "",
idNum: "",
currentResidence: "",//
resideSituation:"",//,
marriage:"",//
elderlyFlag:"",//
oldSubsidy:"",
remark: "",
},
elderlyList:[
{
label: "有",
value: 1
},
{
label: "无",
value: 0
}
],
pageNo: 1,
pageSize: window.localStorage.getItem("pageSize") || 20,
total: null,
endPickerOptions: {
disabledDate: endDisabledDate,
},
startPickerOptions: {
// disabledDate: startDisabledDate
},
showAdd: false,
showEdit: false,
showDetail: false,
formType: "add",
addDiaTitle: "新增",
detailDiaTitle: "详情",
multiSelection: [], //
importLoading: false,
dicts: {
reside_situation: [],
marriage: [],
}, //
importCode:[],
dataList:[]
};
},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 330 + this.iframeHeight;
const _h = this.clientHeight - 330 - this.searchH;
return this.$store.state.inIframe ? h : _h;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
watch: {},
async created() {
await this.getDicts();
},
mounted() {
console.log(this.$store.state);
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.getTableData();
},
methods: {
// --------------------------------------------------------------------------------
async getDicts() {
try {
const requests = [
this.$http.post("sys/dict/data/dictlist", {
dictType: "reside_situation"
}),
this.$http.post("sys/dict/data/dictlist", {
dictType: "marriage"
}),
];
const dictKeys = ["reside_situation", "marriage"]; //
const results = await Promise.all(requests);
results.forEach((result, index) => {
if (result.data.code === 0) {
this.dicts[dictKeys[index]].push(...result.data.data);
} else {
console.log(`获取${dictKeys[index]}失败: ${result.data.msg}`);
}
});
} catch (error) {
console.log("获取字典失败: ", error);
}
},
binaryText(value){
let text = ''
let foundItem = this.binaryOptionList.filter((item) => item.value == value)[0];
text = foundItem ? foundItem.label : "--";
return text || "--"
},
// ------------------------------------------------------------------------------
checkNumberInput(){
if (isNaN(this.formData.retirementAmount)) {
this.$message.error('请输入数字');
this.formData.retirementAmount = '';
} else {
this.formData.retirementAmount = parseFloat(this.formData.retirementAmount);
}
},
//
beforeExcelUpload(file) {
console.log("file", file);
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;
},
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",'OLDPEOPLE');
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
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) {
console.log(this.formData);
this.pageNo = 1;
this.getTableData();
},
//
async handleAdd() {
this.addDiaTitle = "新增";
this.formType = "add";
this.showAdd = true;
},
//
async handleDetail(row) {
this.addDiaTitle = "详情";
this.formType = "detail";
this.showAdd = true;
this.$nextTick(() => {
this.$refs.ref_add_form.initForm("detail", row);
});
},
//
async handleEdit(row) {
this.showAdd = true;
this.$nextTick(() => {
this.$refs.ref_add_form.initForm("edit", row);
});
},
//
handleClose() {
this.formType = "";
this.showAdd = false;
this.showEdit = false;
},
//
handleComfirm() {
this.handleClose();
this.pageNo = 1;
this.getTableData();
},
//
async handleDel(row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.cancelFuwu([row.categorizedResiId]);
})
.catch((err) => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
},
//
async cancelFuwu(id) {
const url = "/actual/base/resiCategorized/oldpeople/deleteBatch";
const { data, code, msg } = await requestPost(url, id);
if (code === 0) {
this.$message.success("删除成功!");
this.getTableData();
} else {
this.$message.error("操作失败!");
}
},
//
async getTableData() {
this.tableLoading = true;
const url = "/actual/base/resiCategorized/oldpeople/page";
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
pageNo,
...formData,
});
this.tableLoading = false;
if (code === 0) {
this.total = data.total || 0;
this.tableData = data.list;
} else {
this.$message.error(msg);
}
},
//
async handleExport() {
const url = "/actual/base/resiCategorized/oldpeople/export";
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,
method: "post",
data: {
pageSize,
pageNo,
...formData,
},
responseType: "blob",
})
.then((res) => {
let fileName = window.decodeURI(
res.headers["content-disposition"].split(";")[1].split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
})
.catch((err) => {
console.log("获取导出情失败", err);
return this.$message.error("网络错误");
});
},
//
async handleExportModule() {
let url = "/actual/base/resiCategorized/oldpeople/downloadImportTemplate";
let params = {};
await this.$http({
method: "get",
url,
responseType: "blob",
data: params,
})
.then((res) => {
console.log("res----dddd", res);
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"].split(";")[1].split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
} else this.$message.error("下载失败");
})
.catch((err) => {
console.log("err", err);
return this.$message.error("网络错误");
});
},
//
handleSizeChange(val) {
this.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getTableData();
},
//
handleCurrentChange(val) {
this.pageNo = val;
this.getTableData();
},
//
resetSearch() {
this.formData = {};
this.pageNo = 1;
this.getTableData();
},
//
onMultiSelection(rows) {
this.multiSelection = rows;
},
//
onDeleteBatch() {
if (this.multiSelection.length == 0) {
this.$message.warning("请先选中至少一项");
return;
}
this.$confirm("删除之后无法恢复,确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.cancelFuwu(this.multiSelection.map((e) => e.categorizedResiId));
})
.catch((err) => {
console.error(err);
this.$message.error("删除失败");
});
},
},
props: {},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
@import "@/assets/scss/modules/management/list-main.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
.div_btn_left > * {
margin-right: 10px;
}
</style>

88
src/views/modules/base/residentManagement/resiDisability/addForm.vue

@ -11,6 +11,32 @@
:rules="dataRule"
class="div_form"
>
<el-row>
<el-col :span="24">
<div class="info-prop"
v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else
label="所属组织"
label-width="100px"
prop="agencyId">
<el-cascader v-if="formType == 'add'"
ref="ref_cascader_agency"
class="width-two"
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>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
@ -370,7 +396,8 @@ export default {
data() {
return {
btnDisable: false,
selGridId: [],
optionsA: [],
formData: {
name: "",
mobile: "",
@ -388,6 +415,7 @@ export default {
monthIncome: null,
contactName: "",
contactMobile: "",
agencyId:"",
remark: "",
},
genderList,
@ -399,6 +427,7 @@ export default {
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
@ -415,6 +444,7 @@ export default {
components: {},
async created() {
await this.getDicts();
await this.getGridList()
},
async mounted() {
this.startLoading();
@ -527,6 +557,59 @@ export default {
loading.close();
}
},
handleChangeAngency (val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree (arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
},
};
</script>
@ -563,6 +646,9 @@ export default {
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

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

@ -281,7 +281,15 @@
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
@ -600,9 +608,9 @@ export default {
},
binaryText(value) {
let text = "";
text = this.binaryOptionList.filter((item) => item.value == value)[0]
.label;
return text || "--";
let foundItem = this.binaryOptionList.filter((item) => item.value == value)[0];
text = foundItem ? foundItem.label : "--";
return text;
},
// ------------------------------------------------------------------------------
//

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

@ -12,24 +12,30 @@
class="div_form"
>
<el-row>
<el-col :span="24">
<div class="info-prop" v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item label="所属组织" prop="agencyId" label-width="100px" v-else>
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model="agencyIdTemp"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
clearable>
</el-cascader>
<el-col :span="24">
<div class="info-prop"
v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else
label="所属组织"
label-width="100px"
prop="agencyId">
<el-cascader v-if="formType == 'add'"
ref="ref_cascader_agency"
class="width-two"
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>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
@ -365,6 +371,10 @@
type: String,
default: "manage",
},
formType:{
type:Object,
default:"add"
}
},
data() {
@ -378,6 +388,9 @@
return {
formType:'',
btnDisable: false,
selGridId: [],
optionsA: [],
formData: {
name: "",
idType: null,
@ -410,6 +423,8 @@
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
@ -426,9 +441,11 @@
watch: {},
components: {},
created() {
this.getDicts();
this.getOrgTreeList()
async created() {
await this.getDicts();
// this.getOrgTreeList()
await this.getGridList()
},
async mounted() {
this.startLoading();
@ -535,6 +552,59 @@
return this.$message.error('网络错误')
})
},
handleChangeAngency (val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree (arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
findPathInOptions(agencyId, options) {
console.log(agencyId,options);
for (let i = 0; i < options.length; i++) {
@ -611,6 +681,9 @@
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

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

@ -215,7 +215,14 @@
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
@ -470,7 +477,9 @@
binaryText(value){
let text = ''
text = this.binaryOptionList.filter(item=>item.value == value)[0].label
let foundItem = this.binaryOptionList.filter((item) => item.value == value)[0];
text = foundItem ? foundItem.label : "--";
return text;
return text || "--"
},
// ------------------------------------------------------------------------------

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

@ -11,6 +11,32 @@
:rules="dataRule"
class="div_form"
>
<el-row>
<el-col :span="24">
<div class="info-prop"
v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else
label="所属组织"
label-width="100px"
prop="agencyId">
<el-cascader v-if="formType == 'add'"
ref="ref_cascader_agency"
class="width-two"
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>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
@ -515,6 +541,8 @@ export default {
data() {
return {
btnDisable: false,
selGridId: [],
optionsA: [],
genderList,
binaryOptionList,
@ -545,6 +573,7 @@ export default {
employmentWish: "",
specialSkill: "",
remark: "",
agencyId:""
},
dataRule: {
@ -554,6 +583,7 @@ export default {
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
@ -574,6 +604,7 @@ export default {
components: {},
async created() {
await this.getDicts();
await this.getGridList()
},
async mounted() {
this.startLoading();
@ -690,6 +721,59 @@ export default {
loading.close();
}
},
handleChangeAngency (val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree (arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
},
};
</script>
@ -726,4 +810,7 @@ export default {
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

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

@ -349,7 +349,14 @@
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
@ -711,12 +718,6 @@ export default {
}
},
binaryText(value) {
let text = "";
text = this.binaryOptionList.filter((item) => item.value == value)[0]
.label;
return text || "--";
},
// ------------------------------------------------------------------------------
checkNumberInput() {
if (isNaN(this.formData.retirementAmount)) {

86
src/views/modules/base/residentManagement/veteran/addForm.vue

@ -11,6 +11,32 @@
:rules="dataRule"
class="div_form"
>
<el-row>
<el-col :span="24">
<div class="info-prop"
v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else
label="所属组织"
label-width="100px"
prop="agencyId">
<el-cascader v-if="formType == 'add'"
ref="ref_cascader_agency"
class="width-two"
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>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
@ -589,6 +615,8 @@ export default {
};
return {
btnDisable: false,
selGridId: [],
optionsA: [],
formData: {
name: "",
@ -616,6 +644,7 @@ export default {
pubWelfareJobFlag: null,
workUnit: "",
remark: "",
agencyId:""
},
endPickerOptionsJoinWar: {
disabledDate: (time) => endDisabledDate(time, "joinWarStartTime"),
@ -633,6 +662,7 @@ export default {
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
@ -650,6 +680,7 @@ export default {
components: {},
async created() {
await this.getDicts();
await this.getGridList()
},
async mounted() {
this.startLoading();
@ -757,7 +788,59 @@ export default {
this.resetData();
this.$emit("handleClose");
},
handleChangeAngency (val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree (arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
resetData() {
this.formData = {};
},
@ -811,6 +894,9 @@ export default {
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

16
src/views/modules/base/residentManagement/veteran/veteran.vue

@ -377,7 +377,15 @@
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"
@ -689,12 +697,6 @@ export default {
console.log("获取字典失败: ", error);
}
},
binaryText(value) {
let text = "";
text = this.binaryOptionList.filter((item) => item.value == value)[0]
.label;
return text || "--";
},
// ------------------------------------------------------------------------------
checkNumberInput() {
if (isNaN(this.formData.retirementAmount)) {

88
src/views/modules/base/residentManagement/volunteer/addForm.vue

@ -11,6 +11,33 @@
:rules="dataRule"
class="div_form"
>
<el-row>
<el-col :span="24">
<div class="info-prop"
v-if="formType == 'detail'">
<span class="info-title-2">所属组织: </span>
<span>{{ formData.agencyName || "--" }}</span>
</div>
<el-form-item v-else
label="所属组织"
label-width="100px"
prop="agencyId">
<el-cascader v-if="formType == 'add'"
ref="ref_cascader_agency"
class="width-two"
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>
</el-row>
<el-row>
<el-col :span="12">
<div class="info-prop" v-if="formType == 'detail'">
@ -373,6 +400,8 @@ export default {
data() {
return {
btnDisable: false,
selGridId: [],
optionsA: [],
formData: {
name: "",
@ -390,6 +419,7 @@ export default {
occupation: "",
hobbyCodes: [],
remark: "",
agencyId:""
},
genderList,
binaryOptionList,
@ -400,6 +430,7 @@ export default {
idType: [
{ required: true, message: "证件类型不能为空", trigger: "bulr" },
],
agencyId: [{ required: true, message: "所属组织不能为空", trigger: "bulr" }],
},
scopeId: "",
dicts: {
@ -417,6 +448,7 @@ export default {
components: {},
async created() {
await this.getDicts();
await this.getGridList()
},
async mounted() {
this.startLoading();
@ -523,6 +555,59 @@ export default {
loading.close();
}
},
handleChangeAngency (val) {
let obj = this.$refs["ref_cascader_agency"].getCheckedNodes()[0].data;
console.log('改变组织', obj)
if (obj) {
if (obj.level !== 'community') {
this.$message.info('请选择社区')
this.formData.agencyId = ''
this.selGridId = []
return false
} else {
this.formData.agencyId = val
}
}
},
getGridList () {
const { user } = this.$store.state
this.dataListLoading = true
const params = {
agencyId: user.agencyId,
client: 'gov'
}
this.$http
// .post('/gov/org/userhouse/service/serviceScopeTree')
// .post('/data/aggregator/org/agencytree', params)
.post('/gov/org/customeragency/staffinagencylist')
.then(({ data: res }) => {
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)
}
})
.catch(() => {
this.dataListLoading = false
return this.$message.error('网络错误')
})
this.dataListLoading = false
},
deepTree (arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null
}
})
}
},
},
};
</script>
@ -559,6 +644,9 @@ export default {
padding-right: 10px;
}
}
.width-two {
width: 553px;
}
</style>

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

@ -288,7 +288,14 @@
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="agencyName"
align="center"
width="100"
label="所属组织"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="mobile"
align="center"

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

@ -99,7 +99,7 @@
</el-select>
</el-form-item>
<el-form-item prop="studyNotNeed" label="是否缴费">
<el-select v-model="searchForm.isPay" placeholder="请选择" clearable size="small"
<el-select v-model="searchForm.payFlag" placeholder="请选择" clearable size="small"
class="u-item-width-normal">
<el-option v-for="e in studyNotNeedOptions"
:key="e.value"
@ -108,7 +108,7 @@
</el-select>
</el-form-item>
<el-form-item label="最近缴费日期">
<el-date-picker v-model="searchForm.isPayTimeStart"
<el-date-picker v-model="searchForm.payTimeStart"
:picker-options="startPickerOptions"
class="u-item-width-daterange"
size="small"
@ -118,7 +118,7 @@
placeholder="开始时间">
</el-date-picker>
<span class="u-data-tag"></span>
<el-date-picker v-model="searchForm.isPayTimeEnd"
<el-date-picker v-model="searchForm.payTimeEnd"
:picker-options="endPickerOptions"
class="u-item-width-daterange u-data-tag"
size="small"
@ -430,11 +430,11 @@ export default {
flowFlag: null,
flowActNum: null,
studyNotNeed: null,
isPay:null,
isPayTimeEnd:null,
isPayTimeStart:null,
payFlag:null,
payTimeEnd:null,
payTimeStart:null,
pageNo: 0, //
pageSize: 0, //
pageSize: 20, //
},
partyOrgTreeCascadarProps: {

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

@ -101,9 +101,9 @@
placeholder="请输入位置关键词"
:remote-method="searchOnMap"
:loading="mapLoading">
<el-option v-for="(item,index) in searchOptions"
<el-option v-for="(item,index) in mapSearchResultList"
@click.native="handleMapSearchResultSelected(index)"
:key="item.value"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
@ -148,7 +148,6 @@ export default {
xingzhengSelectorVisible: true, //
//
searchOptions: [], //
searchValue: '',
mapLoading: false, //
mapSearchResultList: [], //
@ -191,7 +190,13 @@ export default {
let { latitude, longitude } = this.$store.state.user;
this.$nextTick(() => {
if(!map){
this.initMap(latitude, longitude);
}else{
map.setCenter(latitude, longitude);
map.setMarker(latitude, longitude);
}
})
},
@ -411,14 +416,12 @@ export default {
if (msg == "success" && data.resultList && data.resultList.length > 0) {
if (data.resultList && data.resultList.length > 0) {
this.mapSearchResultList = data.resultList
this.searchOptions = this.mapSearchResultList.map(item => {
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` };
// this.mapSearchResultList = data.resultList
this.mapSearchResultList = data.resultList.map(item => {
return { value: `${item.id}`, label: `${item.address + item.name}`,location:item.location };
});
}
} else {
this.searchOptions = [
this.mapSearchResultList = [
{
value: '0',
label: '未检索到结果'
@ -426,7 +429,7 @@ export default {
]
}
} else {
this.searchOptions = [];
this.mapSearchResultList = [];
}
},
@ -442,7 +445,7 @@ export default {
if (msg == "success") {
this.dataForm.address = data.address
this.searchValue = data.address
this.searchOptions = []
this.mapSearchResultList = []
}
},
@ -452,12 +455,14 @@ export default {
* @param index
*/
handleMapSearchResultSelected (index) {
let selPosition = this.resultList[index]
let lonlat = selPosition.lonlat.split(" ")
map.setCenter(lonlat[1], lonlat[0]);
map.setMarker(lonlat[1], lonlat[0]);
this.dataForm.latitude = lonlat[1];
this.dataForm.longitude = lonlat[0];
console.log(index)
console.log(this.mapSearchResultList);;
let selPosition = this.mapSearchResultList[index]
let {lat,lng} = selPosition.location
map.setCenter(lat, lng);
map.setMarker(lat, lng);
this.dataForm.latitude = lat;
this.dataForm.longitude = lng;
this.dataForm.address = selPosition.address + selPosition.name
},

10
src/views/modules/communityParty/partyOrg/orgTree.vue

@ -149,11 +149,9 @@ export default {
}
}
},
mounted () {
async mounted () {
this.epmetResultResolver = new EpmetResultResolver(this);
this.handleLoadTreeRoot();
this.$nextTick(() => {
this.searchH = this.$refs.searchCard.$el.offsetHeight
console.log('tableHeight', this.tableHeight)
@ -258,7 +256,10 @@ export default {
let url = "/actual/base/party/org/listPartyOrgTreeRoot";
let rst = await requestGet(url, {})
this.epmetResultResolver.success((data) => {
this.partyOrgTree.length = 0
if (!data) {
return;
}
this.partyOrgTree=[]
this.partyOrgTree.push(data);
this.tableKey = new Date().getTime();
// 2
@ -267,6 +268,7 @@ export default {
this.$nextTick(() => {
document.getElementsByClassName('el-table__expand-icon')[0].click();
});
}else{
}
}).parse(rst);
},

4
src/views/modules/communityParty/partyOrg/update.vue

@ -165,19 +165,15 @@ export default {
await this.loadPrincipals();
//
this.$nextTick(() => {
this.dataForm.principalId = partyOrgInfo.principalId;
console.log(this.principals)
console.log(this.dataForm.principalId )
if (!map) {
// console.log(":", longitude, latitude);
this.initMap(this.dataForm.latitude, this.dataForm.longitude);
} else {
map.setCenter(this.dataForm.latitude, this.dataForm.longitude);
map.setMarker(this.dataForm.latitude, this.dataForm.longitude);
}
});
},
//

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

@ -326,11 +326,11 @@ export default {
}
},
async getCategoryList() {
const url = "/governance/issueprojectcategorydict/list";
const url = "/governance/icEvent/getCategoryTree";
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.filterTree(data);
let treeDataNew = this.deepTree(data, "children");
// this.categrayList = data
//
++this.iscascaderShow;
@ -343,18 +343,19 @@ export default {
},
//
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;
}
}
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,
};
});
}
return arr;
},
handleChangeAgency(value) {

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

@ -102,25 +102,31 @@
<template v-if="item.internalFile && item.internalFile.length > 0"
v-for="i in item.internalFile">
<template v-if="i.type === 'image'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">图片</span>
<img :src="i.url" :key="i.url"
style="width: 150px; height: 150px; padding-right: 10px"
@click="watchImg(i.url)" />
<div class="detail">
<div class="detail-field">图片</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<img :src="i.url" :key="i.url"
style="width: 50px; height: 50px; padding-right: 10px"
@click="watchImg(i.url)" />
</div>
</div>
</template>
<template v-if="i.type === 'voice'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
<div class="detail">
<div class="detail-field">语音</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
</div>
</div>
</template>
<template v-if="i.type === 'doc'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">附件</span>
<a :href="i.url">{{ i.name }}</a>
<div class="detail">
<div class="detail-field">附件</div>
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<a :href="i.url">{{ i.name }}</a>
</div>
</div>
</template>
</template>
@ -139,32 +145,32 @@
<div class="detail-value">{{ formTimeLimit(item.timeLimit) }}</div>
</div>
<template v-if="item.internalFile && item.internalFile.length > 0"
v-for="i in item.internalFile">
<template v-if="i.type === 'image'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">图片</span>
<img :src="i.url" :key="i.url"
style="width: 150px; height: 150px; padding-right: 10px"
@click="watchImg(i.url)" />
</div>
</template>
<template v-if="i.type === 'voice'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
</div>
</template>
<template v-if="i.type === 'doc'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
</div>
</template>
v-for="i in item.internalFile">
<template v-if="i.type === 'image'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">图片</span>
<img :src="i.url" :key="i.url"
style="width: 150px; height: 150px; padding-right: 10px"
@click="watchImg(i.url)" />
</div>
</template>
<template v-if="i.type === 'voice'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
</div>
</template>
<template v-if="i.type === 'doc'">
<div :class="['m-info-prop', { 'm-info-prop-vis': source === 'visiual' },]">
<span class="u-info-title-2">语音</span>
<audio controls>
<source :src="i.url" type="" :key="i.url" />
</audio>
</div>
</template>
</template>
</template>
</div>
</div>
@ -360,7 +366,6 @@ export default {
},
async handelAdd() {
debugger
this.$refs.ref_add.getEventInfo();
if (this.$refs.ref_add.okflag) {
this.eventInfoData = this.$refs.ref_add.formData;

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

@ -87,8 +87,8 @@ export default {
optionProps: {
multiple: false,
value: "id",
label: "name",
children: "subCategory",
label: "categoryName",
children: "children",
},
dataRule: {
content: [
@ -163,12 +163,11 @@ export default {
}
},
async getCategoryList() {
const url = "/governance/issueprojectcategorydict/list";
const url = '/governance/icEvent/getCategoryTree';
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.filterTree(data);
//
let treeDataNew = this.deepTree(data, "children");
++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
@ -182,7 +181,6 @@ 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 = ''
@ -198,18 +196,19 @@ export default {
}
},
//
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;
}
}
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,
};
});
}
return arr;
},
async getReplayInfo() {
this.okflag = false;

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

@ -64,9 +64,9 @@ export default {
iscascaderShow: 0,
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
value: "id",
label: "categoryName",
children: "children",
},
dataRule: {
content: [
@ -115,11 +115,11 @@ export default {
methods: {
async getCategoryList() {
const url = '/governance/issueprojectcategorydict/list';
const url = '/governance/icEvent/getCategoryTree';
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.filterTree(data);
let treeDataNew = this.deepTree(data, "children");
//
++this.iscascaderShow;
this.casOptions = [];
@ -136,18 +136,19 @@ export default {
}
},
//
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;
}
}
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,
};
});
}
return arr;
},
async getReplayInfo() {
this.okflag = false;

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

@ -1,12 +1,3 @@
<!--
* @Author: yanLu xgktv007@163.com
* @Date: 2023-09-05 10:21:34
* @LastEditors: yanLu xgktv007@163.com
* @LastEditTime: 2023-09-05 10:21:34
* @Description: 事件回复
*
*
-->
<template>
<div class="search">
<el-form ref="ref_form1" :inline="false" :model="formData" :rules="dataRule">
@ -61,9 +52,10 @@ export default {
iscascaderShow: 0,
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
value: "id",
label: "categoryName",
children: "children",
level: 'categoryType'
},
dataRule: {
content: [
@ -109,21 +101,20 @@ export default {
this.getCategoryList();
if (this.eventId) {
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)
}
console.log('this.eventDetailCopy', this.eventDetailCopy);
let value = this.eventDetailCopy.parentCategoryId.split(",");
value.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(value)
}
},
methods: {
async getCategoryList() {
const url = '/governance/issueprojectcategorydict/list';
const url = '/governance/icEvent/getCategoryTree';
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.filterTree(data);
let treeDataNew = this.deepTree(data, "children");
//
++this.iscascaderShow;
this.casOptions = [];
@ -131,27 +122,50 @@ export default {
} 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);
}
},
buildTree(nodes, treeId) {
nodes.forEach(item => {
if (treeId === item.id) {
return item;
} else {
this.buildTree(item.children, treeId)
}
})
},
handleChangeCate() {
handleChangeCate(value) {
if (this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0]) {
this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0].data
} else {
this.selCateObj = {}
}
if(!value) return
this.selCategoryArray = value
},
//
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;
}
}
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,
};
});
}
return arr;
},
async getReplayInfo() {
this.okflag = false;
@ -165,9 +179,6 @@ export default {
return false;
}
}
if (!this.formData.categoryId) {
this.formData.categoryId = this.selCateObj.id;
}
this.formData.categoryList = [];
this.formData.categoryList.push(this.selCateObj);
this.okflag = true;

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

@ -27,8 +27,8 @@
multiple: true,
checkStrictly: false,
emitPath: false,
children: 'subCategory',
label: 'name',
children: 'children',
label: 'categoryName',
value: 'id',
}" clearable class="u-item-width-normal" @change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
@ -669,10 +669,10 @@ export default {
}
},
async getCateOptions() {
const url = "/governance/issueprojectcategorydict/list";
const url = "/governance/icEvent/getCategoryTree";
const { data, code, msg } = await requestPost(url, {});
if (code === 0) {
this.cateOptions = this.deepTree(data, "subCategory");
this.cateOptions = this.deepTree(data, "children");
} else {
this.$message.error(msg);
}
@ -708,15 +708,15 @@ export default {
this.getTableData();
// this.loadTable()
},
deepTree(arr, child) {
deepTree(arr, children) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map((item) => {
return {
...item,
[child]:
(item[child] &&
item[child].length > 0 &&
this.deepTree(item[child], child)) ||
[children]:
(item[children] &&
item[children].length > 0 &&
this.deepTree(item[children], children)) ||
null,
};
});

24
vue.config.js

@ -1,11 +1,11 @@
/*
* @Author: mk 2403457699@qq.com
* @Date: 2023-08-28 19:45:33
* @Date: 2023-09-20 13:46:51
* @LastEditors: mk 2403457699@qq.com
* @LastEditTime: 2023-09-12 19:24:04
* @LastEditTime: 2023-09-22 15:16:23
* @Description: 介绍一下改动了什么
*
*
*
*
*/
/**
* 配置参考: https://cli.vuejs.org/zh/config/
@ -75,13 +75,13 @@ module.exports = {
"@m": "@/img",
},
},
plugins: [
new FileManagerPlugin({
onEnd: {
delete: ["./epmet-work-pc.zip"],
archive: [{ source: "./epmet-work-pc", destination: "./epmet-work-pc.zip" }],
},
}),
],
// plugins: [
// new FileManagerPlugin({
// onEnd: {
// delete: ["./epmet-work-pc.zip"],
// archive: [{ source: "./epmet-work-pc", destination: "./epmet-work-pc.zip" }],
// },
// }),
// ],
},
};

Loading…
Cancel
Save