|
|
@@ -29,93 +29,67 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="项目名称" prop="name">
|
|
|
- <el-input v-model="form.name" :disabled="mode == 'explain'" placeholder="请输入项目名称"></el-input>
|
|
|
+ <el-input v-model="form.name" placeholder="请输入项目名称"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="项目等级" prop="zcLevel">
|
|
|
- <el-select v-model="form.zcLevel" :disabled="mode == 'explain'" placeholder="请选择项目等级">
|
|
|
+ <el-select v-model="form.zcLevel" placeholder="请选择项目等级">
|
|
|
<el-option v-for="item in levelDic" :key="item" :label="item" :value="item"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="项目类别" prop="zcType">
|
|
|
- <el-select v-model="form.zcType" :disabled="mode == 'explain'" placeholder="请选择项目类别">
|
|
|
+ <el-select v-model="form.zcType" placeholder="请选择项目类别">
|
|
|
<el-option v-for="item in typeDic" :key="item" :label="item" :value="item"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="政策文号" prop="docNo">
|
|
|
- <el-input v-model="form.docNo" :disabled="mode == 'explain'" placeholder="请输入政策文号"></el-input>
|
|
|
+ <el-input v-model="form.docNo" placeholder="请输入政策文号"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="联系方式" prop="contactPhone">
|
|
|
- <el-input v-model="form.contactPhone" :disabled="mode == 'explain'" placeholder="请输入联系方式"></el-input>
|
|
|
+ <el-input v-model="form.contactPhone" placeholder="请输入联系方式"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="预计争取金额" prop="yjStriveAmount">
|
|
|
- <el-input-number v-model="form.yjStriveAmount" :min="0" :step="0.1" :precision="2" controls-position="right" :disabled="mode == 'explain'" placeholder="请输入预计争取金额"></el-input-number>
|
|
|
+ <el-input-number v-model="form.yjStriveAmount" :min="0" :step="0.1" :precision="2" controls-position="right" placeholder="请输入预计争取金额"></el-input-number>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="预计完成时间" prop="yjFinishTime">
|
|
|
- <el-date-picker v-model="form.yjFinishTime" value-format="YYYY-MM-DD" :disabled="mode == 'explain'" placeholder="请选择预计完成时间"></el-date-picker>
|
|
|
+ <el-date-picker v-model="form.yjFinishTime" value-format="YYYY-MM-DD" placeholder="请选择预计完成时间"></el-date-picker>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="责任人" prop="directorName">
|
|
|
- <el-input v-model="form.directorName" :disabled="mode == 'explain'" placeholder="请输入责任人"></el-input>
|
|
|
+ <el-input v-model="form.directorName" placeholder="请输入责任人"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="项目概要" prop="abstractContent">
|
|
|
- <el-input v-model="form.abstractContent" type="textarea" :rows="4" :disabled="mode == 'explain'" placeholder="请输入项目概要"></el-input>
|
|
|
+ <el-input v-model="form.abstractContent" type="textarea" :rows="4" placeholder="请输入项目概要"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item :class="(mode == 'detail' || mode == 'explain') && 'no-upload-btn'" label="附件">
|
|
|
- <yhUpload v-model="form.fileList" :limit="10" :disabled="mode == 'explain'" @updateTable="fileIsDel = true">
|
|
|
+ <el-form-item :class="mode == 'detail' && 'no-upload-btn'" label="附件">
|
|
|
+ <yhUpload v-model="form.fileList" :limit="10" @updateTable="fileIsDel = true">
|
|
|
<el-button type="primary" icon="upload" size="small"></el-button>
|
|
|
</yhUpload>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
- <el-row v-if="form.status == 'done'">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="是否已落地" prop="isLand">
|
|
|
- <el-radio-group v-model="form.isLand" @change="form.landAmount = null, form.partPersonArr = null">
|
|
|
- <el-radio v-for="(label, key) in whetherDic" :key="key" :label="label" :value="parseInt(key)"></el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <template v-if="form.isLand == 1">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="落地金额" prop="landAmount">
|
|
|
- <el-input-number v-model="form.landAmount" :min="0" :step="0.1" :precision="2" controls-position="right" placeholder="请输入落地金额"></el-input-number>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="参与人" prop="partPerson">
|
|
|
- <el-input v-model="form.partPerson" type="textarea" :rows="4" placeholder="请输入参与人(以英文 , 分割)"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item class="label-column-2" :label="titleMap['explain']" prop="monthSituation" label-width="80px">
|
|
|
- <el-input v-model="form.monthSituation" type="textarea" :rows="4" :placeholder="`请输入${titleMap['explain']}`"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
</el-form>
|
|
|
+ <explain-form v-if="mode == 'detail' && form.id" ref="explainForm" :rowData="form" :disabled="!isExplain" @success="visible = false"></explain-form>
|
|
|
|
|
|
<template #footer>
|
|
|
- <template v-if="mode == 'explain'">
|
|
|
- <el-button type="primary" @click="validateForm(mode)">保存上报</el-button>
|
|
|
+ <template v-if="isExplain">
|
|
|
+ <el-button type="primary" @click="policyExplain">保存上报</el-button>
|
|
|
</template>
|
|
|
<template v-if="mode == 'add' || mode == 'edit'">
|
|
|
<el-button type="primary" @click="validateForm(mode)">保 存</el-button>
|
|
|
@@ -129,28 +103,34 @@
|
|
|
import Common from "@/api/common";
|
|
|
import API from "@/api/policy/strive";
|
|
|
import { useUserStore } from "@/store/user";
|
|
|
-import { levelDic, typeDic, whetherDic } from "@/views/policyShare/main";
|
|
|
+import { levelDic, typeDic } from "@/views/policyShare/main";
|
|
|
import yhUpload from "@/components/Upload/index.vue";
|
|
|
+import explainForm from "@/views/policyStrive/explain.vue";
|
|
|
|
|
|
const { userInfo } = useUserStore(); // store 用户
|
|
|
|
|
|
export default {
|
|
|
emits: ["success", "closed"],
|
|
|
+ props: {
|
|
|
+ isMaster: { type: Boolean, default: false }
|
|
|
+ },
|
|
|
+
|
|
|
components: {
|
|
|
- yhUpload
|
|
|
+ yhUpload,
|
|
|
+ explainForm
|
|
|
},
|
|
|
|
|
|
data() {
|
|
|
return {
|
|
|
- levelDic, typeDic, whetherDic,
|
|
|
+ levelDic, typeDic,
|
|
|
|
|
|
visible: false,
|
|
|
+ isExplain: false,
|
|
|
mode: "add",
|
|
|
titleMap: {
|
|
|
add: "新增",
|
|
|
edit: "编辑",
|
|
|
- detail: "详情",
|
|
|
- explain: "月度争取情况说明"
|
|
|
+ detail: "详情"
|
|
|
},
|
|
|
form: {
|
|
|
id: null,
|
|
|
@@ -188,11 +168,7 @@ export default {
|
|
|
directorName: [{ required: true, message: "请输入责任人" }],
|
|
|
yjFinishTime: [{ required: true, message: "请选择预计完成时间" }],
|
|
|
yjStriveAmount: [{ required: true, message: "请输入预计争取金额" }],
|
|
|
- abstractContent: [{ required: true, message: "请输入政策概要" }],
|
|
|
- isLand: [{ required: true }],
|
|
|
- landAmount: [{ required: true, message: "请输入落地金额" }],
|
|
|
- partPerson: [{ required: true, message: "请输入参与人(以英文 , 分割)" }],
|
|
|
- monthSituation: [{ required: true, message: "请输入月度争取情况" }]
|
|
|
+ abstractContent: [{ required: true, message: "请输入政策概要" }]
|
|
|
},
|
|
|
|
|
|
fileIsDel: false,
|
|
|
@@ -205,8 +181,9 @@ export default {
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- init(mode = "add") {
|
|
|
+ init(mode = "add", isExplain = false) {
|
|
|
this.mode = mode;
|
|
|
+ this.isExplain = isExplain;
|
|
|
this.visible = true;
|
|
|
return this;
|
|
|
},
|
|
|
@@ -220,7 +197,6 @@ export default {
|
|
|
} else if (key == "isLand") this.form.isLand = !!res.data[key] && res.data[key] || 0;
|
|
|
else this.form[key] = res.data[key] || null;
|
|
|
}
|
|
|
- this.form.updateId = userInfo.id;
|
|
|
this.form.partPerson = res.data["partPersonArr"] && JSON.parse(res.data["partPersonArr"]).map(item => item.name).join() || null;
|
|
|
} else ElMessage.error(res.msg);
|
|
|
});
|
|
|
@@ -236,17 +212,15 @@ export default {
|
|
|
},
|
|
|
|
|
|
// 表单提交方法
|
|
|
- validateForm(mode) {
|
|
|
- this.$refs.formRef.validate(valid => {
|
|
|
- if (valid) {
|
|
|
- this.submit(mode);
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- });
|
|
|
+ async validateForm(mode) {
|
|
|
+ const promiseArray = [this.$refs.formRef.validate()];
|
|
|
+ this.isExplain && promiseArray.push(await this.$refs.explainForm.$refs.formRef.validate());
|
|
|
+
|
|
|
+ return Promise.all(promiseArray).then(() => this.submit(mode)).catch(() => false);
|
|
|
},
|
|
|
|
|
|
submit(mode) {
|
|
|
+ console.log('submit',mode)
|
|
|
const partPersonArr = this.form.partPerson && JSON.stringify(this.form.partPerson.split(",").map(name => ({ name }))) || "";
|
|
|
API[mode]({ ...this.form, partPersonArr }).then(() => {
|
|
|
ElMessage.success("操作成功");
|
|
|
@@ -254,6 +228,10 @@ export default {
|
|
|
this.fileIsDel = false;
|
|
|
this.$emit("success", mode);
|
|
|
});
|
|
|
+ },
|
|
|
+
|
|
|
+ policyExplain() {
|
|
|
+ this.$refs.explainForm.submit();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -281,8 +259,4 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-.label-column-2 :deep(.el-form-item__label) {
|
|
|
- margin-left: 30px;
|
|
|
-}
|
|
|
</style>
|