Browse Source

Merge branch 'dev' into jw_feature_zhangruochen

V1.0
张若晨 2 years ago
parent
commit
cc41349d0d
  1. 79
      src/views/modules/base/residentManagement/housingNature/housingNature.vue
  2. 30
      src/views/modules/base/residentManagement/resiDisability/resiDisability.vue
  3. 30
      src/views/modules/base/residentManagement/unemployment/unemployment.vue
  4. 1210
      src/views/modules/shequzhili/eventOld/cpts/add.vue
  5. 711
      src/views/modules/shequzhili/eventOld/cpts/event-detail.vue
  6. 1198
      src/views/modules/shequzhili/eventOld/cpts/event-info.vue
  7. 126
      src/views/modules/shequzhili/eventOld/cpts/process-form-designate.vue
  8. 579
      src/views/modules/shequzhili/eventOld/cpts/process-form-project.vue
  9. 436
      src/views/modules/shequzhili/eventOld/cpts/process-form-replay.vue
  10. 175
      src/views/modules/shequzhili/eventOld/cpts/process-form-urban.vue
  11. 406
      src/views/modules/shequzhili/eventOld/cpts/process-form.vue
  12. 1585
      src/views/modules/shequzhili/eventOld/eventList.vue
  13. 9
      vue.config.js

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

@ -287,36 +287,58 @@ export default {
} }
return fileType && isLt1M; return fileType && isLt1M;
}, },
async uploadHttpRequest(file) { async uploadHttpRequest(file) {
this.$message({ this.$message({
showClose: true, showClose: true,
dangerouslyUseHTMLString: true, dangerouslyUseHTMLString: true,
message: message:
"导入中,请到系统管理-<a id='clickA' style='cursor: pointer;'>导入记录</a>中查看进度", "导入中,请到系统管理-<a id='clickA' style='cursor: pointer;'>导入记录</a>中查看进度",
duration: 3000, duration: 3000,
}); });
let than = this; let than = this;
document.getElementById("clickA").addEventListener("click", function () { document.getElementById("clickA").addEventListener("click", function () {
than.$router.replace("/main/importRecord-index"); than.$router.replace("/main/importRecord-index");
});
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
await this.$http
.post("/actual/base/resiHousingNature/import", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.$message.success("导入成功");
this.getTableData();
this.$refs.upload.clearFiles();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
}); });
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
formData.append("fileMode",'ENSUREHOUSE');
await this.$http
.post("/actual/base/importExcelData/extractExcelHead", formData)
.then((res) => {
const { metaListData, fileCode, msg } = res.data.data;
this.dataList = {"所属网格":"所属网格","所属小区":"所属小区","所属楼栋":"所属楼栋","所属单元":"所属单元","所属房屋":"所属房屋","本地户籍":"本地户籍","居民姓名":"居民姓名","联系电话":"联系电话","国籍":"国籍","证件类型":"证件类型","证件号":"证件号","民族":"民族","备注":"备注","户籍地址":"户籍所在地","现居地址":"现居住地址","房东姓名":"房东姓名","房东身份证号":"房东身份证号","住房性质":"住房性质","领取通知书日期":"领取通知书日期","保障类型":"保障类型","发证日期":"发证日期","补贴编号":"补贴编号","补贴金额":"补贴金额"};
// forfilter, O(1) itemGroupId
this.importCode = fileCode;
this.handleComfirmUpload()
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});//
},
async handleComfirmUpload () {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
const { importOption, importCode, dataList } = this;
const formData = new FormData();
formData.append("columnMateJson", JSON.stringify(dataList));
formData.append("fileCode", importCode);
await this.$http
.post("/actual/base/importExcelData/importResiHouseExcel", formData)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.getTableData();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
});
this.importLoading = false;
this.importBtnTitle = "导入";
}, },
// //
handleSearch(val) { handleSearch(val) {
@ -356,6 +378,7 @@ export default {
this.showAdd = false; this.showAdd = false;
this.showEdit = false; this.showEdit = false;
}, },
// //
handleComfirm(type) { handleComfirm(type) {
this.handleClose(); this.handleClose();

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

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

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

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

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

File diff suppressed because it is too large

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

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

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

File diff suppressed because it is too large

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

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

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

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

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

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

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

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

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

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

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

File diff suppressed because it is too large

9
vue.config.js

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

Loading…
Cancel
Save