Browse Source

Merge branch 'dev_shequzhili' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev_shequzhili

shibei_master
jiangyy 3 years ago
parent
commit
232c63ee28
  1. 30
      src/assets/scss/modules/shequzhili/project-info.scss
  2. 6
      src/views/modules/shequzhili/xiangmu/cpts/event-info.vue
  3. 6
      src/views/modules/shequzhili/xiangmu/cpts/project-evaluation.vue
  4. 494
      src/views/modules/shequzhili/xiangmu/cpts/project-info.vue
  5. 16
      src/views/modules/shequzhili/xiangmu/index.vue

30
src/assets/scss/modules/shequzhili/project-info.scss

@ -20,6 +20,36 @@
}
.m-fm {
.avatar-uploader {
margin: 0 0 0 20px;
::v-deep .el-upload {
cursor: pointer;
position: relative;
overflow: hidden;
}
img {
object-fit: cover;
}
.el-upload:hover {
border-color: #409eff;
}
.avatar {
width: 36px;
height: 36px;
display: block;
}
.avatar-uploader-icon {
border: 1px dashed #d9d9d9;
border-radius: 6px;
font-size: 28px;
color: #8c939d;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
}
}
}
.m-btns {

6
src/views/modules/shequzhili/xiangmu/cpts/event-info.vue

@ -3,8 +3,6 @@
<div class="g-page" v-show="pageType == 'info'">
<div class="g-left">
<el-card>
<h3>事件详情</h3>
<div class="m-row">
<div class="m-info">
<div class="info-title">事件内容</div>
@ -60,7 +58,7 @@ function iniData() {
return {
pageType: "info",
eventInfo: {
info: {
eventTime: "",
eventContent: "",
eventAddress: "",
@ -126,7 +124,7 @@ export default {
const url = "/gov/project/resievent/eventdetail-icdata";
const { data, code, msg } = await requestPost(url, {
resiEventId: this.projectInfo.originId,
resiEventId: this.eventId,
});
if (code === 0) {

6
src/views/modules/shequzhili/xiangmu/cpts/project-evaluation.vue

@ -123,9 +123,9 @@ export default {
},
async getTableData() {
// const url = "/gov/project/project/satisfaction-evaluation-list";
const url =
"http://yapi.elinkservice.cn/mock/245/gov/project/project/satisfaction-evaluation-list";
const url = "/gov/project/project/satisfaction-evaluation-list";
// const url =
// "http://yapi.elinkservice.cn/mock/245/gov/project/project/satisfaction-evaluation-list";
const { pageSize, pageNo, fmData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,

494
src/views/modules/shequzhili/xiangmu/cpts/project-info.vue

@ -22,6 +22,7 @@
<span>内部备注</span>
<span>{{ projectInfo.internalRemark || "--" }}</span>
</div>
<div
class="info-prop"
v-if="projectInfo.departmentNameList.length > 0"
@ -29,18 +30,27 @@
<span>当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div>
<div class="info-prop">
<div
class="info-prop"
v-if="
projectInfo.origin == 'issue' ||
projectInfo.origin == 'resi_event'
"
>
<span>项目来源</span>
<a style="cursor: pointer" @click="handleWatchOrigin"
>查看项目来源</a
>
</div>
<div class="info-prop">
<span>项目评价</span>
<a style="cursor: pointer" @click="showedEvaluation=true"
<a style="cursor: pointer" @click="showedEvaluation = true"
>查看项目评价</a
>
</div>
<div class="info-prop" v-if="projectCate.length > 0">
<span>分类</span>
<fold-text style="width: 300px" :row="3">
@ -59,28 +69,168 @@
</div>
</div>
<div class="m-btns" v-if="type == 'info'">
<div
class="m-btns"
v-if="type == 'info' || projectInfo.projectStatus != 'pending'"
>
<el-button size="" @click="handleClose">关闭</el-button>
</div>
</el-card>
<el-card v-if="type == 'edit'">
<el-card
v-if="type == 'edit' && projectInfo.projectStatus == 'pending'"
>
<h3>处理</h3>
<div class="m-fm">
<el-form
:inline="true"
ref="fm"
:inline="false"
:model="fmData"
:rules="dataRule"
label-position="left"
label-width="100px"
>
<el-form-item label="处理:" prop="operateType">
<el-form-item label="处理方式:" prop="operateType">
<el-radio-group v-model="fmData.operateType">
<el-radio :label="3">处理/响应</el-radio>
<el-radio :label="6">结案</el-radio>
<el-radio :label="9">转其他机关/科室</el-radio>
<el-radio :label="10">退回</el-radio>
<el-radio label="dispose">处理/响应</el-radio>
<el-radio label="close">结案</el-radio>
<el-radio label="turn">转其他机关/科室</el-radio>
<el-radio label="back" v-if="projectInfo.returnable"
>退回</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item label="处理部门:" prop="projectStaffId">
<el-select
v-model.trim="fmData.projectStaffId"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in myDepartmentList"
:key="item.projectStaffId"
:label="item.departmentName"
:value="item.projectStaffId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'back'"
label="协办单位:"
prop="assistanceUnitIndex"
>
<el-select
v-model.trim="fmData.assistanceUnitIndex"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="(item, index) in assistanceUnitList"
:key="item.assistanceUnitId"
:label="item.assistanceUnitName"
:value="index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'back'"
label="退回到:"
prop="projectProcessId"
>
<el-select
v-model.trim="fmData.projectProcessId"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in returnableList"
:key="item.projectProcessId"
:label="item.processor"
:value="item.projectProcessId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'close'"
label="结案状态:"
prop="closedStatus"
>
<el-select
v-model.trim="fmData.closedStatus"
placeholder="请选择"
class="resi-cell-select"
>
<el-option
v-for="item in resolveTypeList"
:key="item.closedStatus"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="fmData.operateType == 'close'"
label="结案说明:"
prop="publicReply"
>
<el-input
type="textarea"
:rows="2"
placeholder="您输入的结案说明会向居民公开展示"
v-model="fmData.publicReply"
>
</el-input>
</el-form-item>
<el-form-item label="内部备注:" prop="internalRemark">
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="fmData.internalRemark"
>
</el-input>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'close'"
label="图片/附件:"
prop="internalFile"
>
<el-upload
class="avatar-uploader"
:action="uploadUlr"
:data="{ customerId: customerId }"
:show-file-list="true"
:on-success="handleImgSuccess"
:on-remove="handleImgRemove"
:before-upload="beforeImgUpload"
>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item
v-if="fmData.operateType != 'close'"
label="公开回复:"
prop="publicReply"
>
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
v-model="fmData.publicReply"
>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="m-btns">
@ -196,14 +346,45 @@ import dateFormat from "dai-js/tools/dateFormat";
function iniData() {
return {
pageType: "info",
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
showedEvaluation: false,
projectIdCopy: this.projectId,
customerId: localStorage.getItem("customerId"),
fmData: {
operateType: "",
assistanceUnitIndex: "",
assistanceUnitId: "",
assistanceUnitType: "",
internalRemark: "",
publicReply: "",
internalFile: [],
departmentName: "",
projectStaffId: "",
projectProcessId: "",
closedStatus: "",
},
myDepartmentList: [],
assistanceUnitList: [],
returnableList: [],
resolveTypeList: [
{
name: "已解决",
value: "resolved",
},
{
name: "无需解决",
value: "unresolved",
},
],
projectProcess: [],
@ -223,7 +404,7 @@ function iniData() {
platformIds: [],
processable: false,
projectId: "",
projectStatus: "pending",
projectStatus: "",
projectTitle: "",
publicReply: "",
returnable: false,
@ -276,7 +457,7 @@ export default {
props: {
projectId: {
type: String,
default: "64502a8f1048a7240295527a9b32e513",
default: "",
},
type: {
type: String,
@ -295,11 +476,42 @@ export default {
computed: {
dataRule() {
const {
fmData: { operateType },
} = this;
let obj = (() => {
return {
operateType: [
{ required: true, message: "处理方式不能为空", trigger: "blur" },
],
projectStaffId: [
{ required: true, message: "请选择处理部门", trigger: "blur" },
],
};
})();
if (operateType != "") {
if (operateType == "close") {
obj.publicReply = [
{ required: true, message: "请填写结案说明", trigger: "blur" },
];
obj.closedStatus = [
{ required: true, message: "请选择结案状态", trigger: "blur" },
];
} else {
obj.internalRemark = [
{ required: true, message: "请填写内部备注", trigger: "blur" },
];
}
}
console.log(obj);
if (this.$refs && this.$refs.fm) {
this.$nextTick(() => {
this.$refs["fm"].clearValidate();
});
}
return obj;
},
},
@ -311,9 +523,26 @@ export default {
});
this.getApiData();
},
// projectIdCopy () {
// },
"fmData.assistanceUnitIndex": function (val) {
if (val === "") {
this.fmData.assistanceUnitId = "";
this.fmData.assistanceUnitType = "";
} else {
this.fmData.assistanceUnitId =
this.assistanceUnitList[val].assistanceUnitId;
this.fmData.assistanceUnitType =
this.assistanceUnitList[val].assistanceUnitType;
}
},
"fmData.projectStaffId": function (val) {
if (val === "") {
this.fmData.departmentName = "";
} else {
this.fmData.departmentName = this.myDepartmentList.find(
(item) => item.projectStaffId == val
)["departmentName"];
}
},
},
mounted() {
@ -322,6 +551,40 @@ export default {
},
methods: {
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return isLt1M;
},
handleImgSuccess(res, file, fileList) {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.fmData.internalFile.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.fmData.internalFile);
} else {
this.$message.error(res.msg);
}
},
handleImgRemove(file) {
let index = this.fmData.internalFile.findIndex(
(item) => item.url == file.response.data.url
);
this.fmData.internalFile.splice(index, 1);
console.log(this.fmData.internalFile);
},
watchImg(src) {
window.open(src);
},
@ -331,7 +594,29 @@ export default {
},
handleSubmit() {
this.$emit("afterEdit");
this.$refs["fm"].validate((valid, messageObj) => {
if (valid) {
this.beforeSubmit();
} else {
}
});
},
beforeSubmit() {
const {
fmData: { operateType },
} = this;
if (operateType == "dispose") {
this.submitDispose();
} else if (operateType == "close") {
this.submitClose();
} else if (operateType == "trun") {
this.submitTurn();
} else if (operateType == "back") {
this.submitBack();
} else {
return this.$message.error("请先选择处理方式");
}
},
handleWatchOrigin() {
@ -341,6 +626,131 @@ export default {
this.pageType = "info";
},
//
async submitBack() {
const url = "/gov/project/trace/return-v2";
const { fmData } = this;
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.5)",
});
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
projectProcessId: fmData.projectProcessId,
departmentName: fmData.departmentName,
internalRemark: fmData.internalRemark,
projectStaffId: fmData.projectStaffId,
publicReply: fmData.publicReply,
internalFile: fmData.internalFile,
});
loading.close();
if (code === 0) {
this.$emit("afterEdit");
} else {
this.$message.error(msg);
}
},
//
async submitClose() {
const url = "/gov/project/trace/closeproject-v2";
const { fmData } = this;
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.5)",
});
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
closedStatus: fmData.closedStatus,
departmentName: fmData.departmentName,
internalRemark: fmData.internalRemark,
projectStaffId: fmData.projectStaffId,
publicReply: fmData.publicReply,
internalFile: fmData.internalFile,
});
loading.close();
if (code === 0) {
this.$emit("afterEdit");
} else {
this.$message.error(msg);
}
},
//
async submitTurn() {
const url = "/gov/project/trace/return-v2";
const { fmData } = this;
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.5)",
});
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
projectProcessId: fmData.projectProcessId,
departmentName: fmData.departmentName,
internalRemark: fmData.internalRemark,
projectStaffId: fmData.projectStaffId,
publicReply: fmData.publicReply,
internalFile: fmData.internalFile,
});
loading.close();
if (code === 0) {
this.$emit("afterEdit");
} else {
this.$message.error(msg);
}
},
//
async submitDispose() {
const url = "/gov/project/trace/response-v2";
const { fmData } = this;
const loading = this.$loading({
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.5)",
});
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
departmentName: fmData.departmentName,
internalRemark: fmData.internalRemark,
projectStaffId: fmData.projectStaffId,
publicReply: fmData.publicReply,
internalFile: fmData.internalFile,
assistanceUnitId: fmData.assistanceUnitId,
assistanceUnitType: fmData.assistanceUnitType,
});
loading.close();
if (code === 0) {
this.$emit("afterEdit");
} else {
this.$message.error(msg);
}
},
async getApiData() {
await this.getProjectInfo();
this.getProjectCate();
@ -357,6 +767,58 @@ export default {
if (code === 0) {
this.projectInfo = data;
if (data.projectStatus == "pending") {
this.getMyDepartmentList();
this.getAssistanceUnitList();
if (data.returnable) {
this.getReturnableList();
}
}
} else {
this.$message.error(msg);
}
},
//
async getReturnableList() {
const url = "/gov/project/trace/returnablelist";
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
});
if (code === 0) {
this.returnableList = data;
} else {
this.$message.error(msg);
}
},
//
async getMyDepartmentList() {
const url = "/gov/project/trace/mydepartmentlist";
const { data, code, msg } = await requestPost(url, {
projectId: this.projectIdCopy,
});
if (code === 0) {
this.myDepartmentList = data;
} else {
this.$message.error(msg);
}
},
//
async getAssistanceUnitList() {
const url = "/heart/icpartyunit/assistanceUnitList";
const { data, code, msg } = await requestPost(url, {
// projectId: this.projectIdCopy,
});
if (code === 0) {
this.assistanceUnitList = data;
} else {
this.$message.error(msg);
}

16
src/views/modules/shequzhili/xiangmu/index.vue

@ -277,11 +277,11 @@ export default {
optionsStatus: [
{
value: "1",
value: "pending",
label: "未结案",
},
{
value: "0",
value: "closed",
label: "已结案",
},
],
@ -315,11 +315,11 @@ export default {
watch: {
"fmData.date": function (val) {
if (Array.isArray(val) && val.length == 2) {
this.fmData.birthdayStart = val[0];
this.fmData.birthdayEnd = val[1];
this.fmData.startDate = val[0];
this.fmData.endDate = val[1];
} else {
this.fmData.birthdayStart = "";
this.fmData.birthdayEnd = "";
this.fmData.startDate = "";
this.fmData.endDate = "";
}
},
},
@ -552,8 +552,8 @@ export default {
},
async getTableData() {
const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/project-list";
// const url = "/gov/project/project/project-list";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/project-list";
const url = "/gov/project/project/project-list";
const { pageSize, pageNo, fmData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,

Loading…
Cancel
Save