From d96ac2eaf4129698c49d31050009b524c7a0e38d Mon Sep 17 00:00:00 2001
From: 王恒 <318726284@qq.com>
Date: 星期五, 29 八月 2025 19:20:21 +0800
Subject: [PATCH] '新增综合查一次'
---
src/views/system/comprehensive/index.vue | 669 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 421 insertions(+), 248 deletions(-)
diff --git a/src/views/system/comprehensive/index.vue b/src/views/system/comprehensive/index.vue
index 690fc68..b5e9284 100644
--- a/src/views/system/comprehensive/index.vue
+++ b/src/views/system/comprehensive/index.vue
@@ -18,17 +18,6 @@
@keyup.enter="handleQuery"
/>
</el-form-item>
- <el-form-item label="鍒跺畾鏈烘瀯">
- <el-tree-select
- v-model="queryParams.applyOrgId"
- :data="deptOptions"
- :props="{ value: 'id', label: 'label', children: 'children' }"
- value-key="id"
- placeholder="璇烽�夋嫨鍒跺畾璁″垝鐨勬満鏋�"
- check-strictly
- style="width: 200px"
- />
- </el-form-item>
<el-form-item label="鎵ф硶鏃堕棿" style="width: 290px">
<el-date-picker
v-model="dateRange"
@@ -111,21 +100,6 @@
label="缁熶竴绀句細淇$敤浠g爜"
width="180"
></el-table-column>
- <el-table-column
- prop="enforceContent"
- label="妫�鏌ュ唴瀹�"
- width="180"
- ></el-table-column>
- <el-table-column
- prop="applyDeptNames"
- label="鎵ц绉戝"
- width="180"
- ></el-table-column>
- <el-table-column prop="enforceType" label="妫�鏌ユ柟寮�" width="180">
- <template #default="scope">{{
- methodToText(scope.row.enforceType)
- }}</template>
- </el-table-column>
<el-table-column prop="planFrequency" label="璁″垝棰戞" width="180">
<template #default="scope">{{ frequencyToText(scope.row) }} </template>
</el-table-column>
@@ -135,9 +109,9 @@
width="180"
></el-table-column>
<el-table-column prop="orderStatus" label="鐘舵��" width="180">
- <!-- <template #default="scope">{{
- statusToText(scope.row.checkStatus)
- }}</template> -->
+ <template #default="scope">{{
+ statusToText(scope.row.status)
+ }}</template>
</el-table-column>
<el-table-column
label="鎿嶄綔"
@@ -147,11 +121,11 @@
width="180"
>
<template #default="scope">
- <el-link type="info" @click="handleView(scope.row)">鏌ョ湅</el-link>
+ <el-link type="info" @click="handleView(scope.row.id)">鏌ョ湅</el-link>
<el-divider direction="vertical" />
<el-link type="primary" @click="handleAdd(scope.row)">缂栬緫</el-link>
<el-divider direction="vertical" />
- <el-link type="error" @click="handleDelete(scope.row)">鍒犻櫎</el-link>
+ <el-link type="danger" @click="handleDelete(scope.row)">鍒犻櫎</el-link>
</template>
</el-table-column>
</el-table>
@@ -172,57 +146,37 @@
append-to-body
>
<el-form ref="deptRef" :model="form" :rules="rules" label-width="140px">
+ <div class="sub-title">鍩烘湰淇℃伅</div>
<el-row :gutter="20">
- <el-col :span="24">
+ <el-col :span="12">
<el-form-item label="璁″垝鍚嶇О" prop="enforceReason">
<el-input
+ :disabled="form.id"
v-model="form.enforceReason"
placeholder="璇疯緭鍏ヨ鍒掑悕绉�"
/>
</el-form-item>
</el-col>
- </el-row>
- <el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="鍒跺畾璁″垝鐨勬満鏋�" prop="applyOrgId">
+ <el-form-item label="鐗靛ご鍗曚綅" prop="leadUnitId">
<el-tree-select
- v-model="form.applyOrgId"
+ :disabled="form.id"
+ v-model="form.leadUnitId"
:data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
- placeholder="璇烽�夋嫨鍒跺畾璁″垝鐨勬満鏋�"
+ placeholder="璇烽�夋嫨鐗靛ご鍗曚綅"
check-strictly
- :default-expanded-keys="[form.applyOrgId]"
- :default-checked-keys="[form.applyOrgId]"
+ :default-expanded-keys="[form.leadUnitId]"
+ :default-checked-keys="[form.leadUnitId]"
@node-click="changeTreeHandler"
/>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="鎵ц绉戝" prop="applyDeptIds">
- <el-select
- v-model="selectOffices"
- multiple
- collapse-tags
- collapse-tags-tooltip
- :max-collapse-tags="1"
- placeholder="璇烽�夋嫨鎵ц绉戝"
- style="width: 100%"
- @change="handleSelectOffices"
- >
- <el-option
- v-for="(obj, index) in officeList"
- :key="index"
- :label="obj.deptName"
- :value="obj.deptId"
- />
- </el-select>
- </el-form-item>
- </el-col>
</el-row>
- <el-row :gutter="20" v-if="!form.orderId">
+ <el-row :gutter="20" v-if="!form.id">
<el-col :span="24">
- <el-form-item label="琚鏌ョ殑瀵硅薄" prop="checkdIds">
+ <el-form-item label="琚瀵硅薄" prop="checkdIds">
<el-button type="primary" @click="openFirmSelect"
>閫夋嫨浼佷笟</el-button
>
@@ -253,10 +207,10 @@
</el-row>
<el-row :gutter="20" v-if="form.checkdIds">
<el-col :span="24">
- <el-form-item label="琚鏌ュ璞′俊鎭�">
+ <el-form-item label="琚瀵硅薄淇℃伅">
<el-table
:data="checkedList"
- max-height="200px"
+ max-height="100px"
style="width: 100%"
>
<el-table-column prop="companyName" label="浼佷笟鍚嶇О" />
@@ -267,10 +221,50 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="妫�鏌ユ柟寮�" prop="enforceType">
+ <el-form-item label="妫�鏌ラ娆�" prop="planFrequency">
+ <el-input
+ v-model="form.planFrequency"
+ :disabled="form.id"
+ placeholder="璇疯緭鍏ラ娆�"
+ >
+ <template #append>
+ <el-select
+ :disabled="form.id"
+ v-model="form.planFrequencyUnit"
+ placeholder="鍗曚綅"
+ style="width: 80px"
+ >
+ <el-option
+ v-for="(obj, index) in frequency"
+ :key="index"
+ :label="obj.label"
+ :value="obj.value"
+ />
+ </el-select> </template
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁″垝鏃堕棿" prop="planMonth">
+ <el-date-picker
+ :disabled="form.id"
+ v-model="selectMonth"
+ type="months"
+ format="YYYY-MM"
+ value-format="YYYY-MM"
+ placeholder="璇烽�夋嫨璁″垝鏃堕棿"
+ @change="changeMonth"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="妫�鏌ョ被鍨�" prop="enforceType">
<el-select
+ :disabled="form.id"
v-model="form.enforceType"
- placeholder="璇烽�夋嫨妫�鏌ユ柟寮�"
+ placeholder="璇烽�夋嫨妫�鏌ョ被鍨�"
style="width: 100%"
>
<el-option
@@ -282,66 +276,114 @@
</el-select>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="鎵�灞炶涓�" prop="industry">
- <el-select
- v-model="form.industry"
- placeholder="璇烽�夋嫨鎵�灞炶涓�"
- style="width: 100%"
- >
- <el-option
- v-for="(obj, index) in industry_type"
- :key="index"
- :label="obj.label"
- :value="obj.key"
+ </el-row>
+
+ <div class="sub-title">
+ <div class="title-word">涓讳綋淇℃伅</div>
+ <div class="add-btn">
+ <el-button type="primary" @click="addMainList">鏂板</el-button>
+ </div>
+ </div>
+ <el-row :gutter="20">
+ <el-table :data="mainList" max-height="200px" style="width: 100%">
+ <el-table-column prop="applyOrgId" align="center" label="妫�鏌ュ崟浣�">
+ <template #default="scope">
+ <div v-if="!scope.row.isEdit">{{ scope.row.applyOrgName }}</div>
+ <el-tree-select
+ v-else
+ v-model="scope.row.applyOrgId"
+ :data="deptOptions"
+ :props="{ value: 'id', label: 'label', children: 'children' }"
+ value-key="id"
+ placeholder="璇烽�夋嫨鍒跺畾璁″垝鐨勬満鏋�"
+ check-strictly
+ :default-expanded-keys="[scope.row.applyOrgId]"
+ :default-checked-keys="[scope.row.applyOrgId]"
+ @node-click="
+ (data, node, item) =>
+ changeMainTreeHandler(data, node, item, scope.$index)
+ "
/>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="妫�鏌ュ唴瀹�" prop="enforceContent">
- <el-input
- v-model="form.enforceContent"
- type="textarea"
- placeholder="璇疯緭鍏ユ鏌ュ唴瀹�"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="璁″垝棰戞" prop="planFrequency">
- <el-input v-model="form.planFrequency" placeholder="璇疯緭鍏ラ娆�">
- <template #append>
- <el-select
- v-model="form.planFrequencyUnit"
- placeholder="鍗曚綅"
- style="width: 80px"
- >
- <el-option
- v-for="(obj, index) in frequency"
- :key="index"
- :label="obj.label"
- :value="obj.key"
- />
- </el-select> </template
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="璁″垝鏈堜唤" prop="planMonth">
- <el-date-picker
- v-model="selectMonth"
- type="months"
- format="YYYY-MM"
- value-format="YYYY-MM"
- placeholder="璇烽�夋嫨璁″垝鏈堜唤"
- @change="changeMonth"
- />
- </el-form-item>
- </el-col>
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="applyDeptNames"
+ align="center"
+ label="鎵ц绉戝"
+ >
+ <template #default="scope">
+ <div v-if="!scope.row.isEdit">
+ {{ scope.row.applyDeptNames }}
+ </div>
+ <el-select
+ v-else
+ v-model="scope.row.selectList"
+ multiple
+ collapse-tags
+ collapse-tags-tooltip
+ :max-collapse-tags="1"
+ placeholder="璇烽�夋嫨鎵ц绉戝"
+ style="width: 100%"
+ @change="
+ (value) => {
+ handleSelectOffices(value, scope.$index);
+ }
+ "
+ >
+ <el-option
+ v-for="(obj, index) in scope.row.officeList"
+ :key="index"
+ :label="obj.deptName"
+ :value="obj.deptId"
+ />
+ </el-select>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ prop="enforceContent"
+ show-overflow-tooltip
+ label="妫�鏌ュ唴瀹�"
+ align="center"
+ >
+ <template #default="scope">
+ <div v-if="!scope.row.isEdit">
+ {{ scope.row.enforceContent }}
+ </div>
+ <el-input
+ v-else
+ type="textarea"
+ :rows="1"
+ v-model="scope.row.enforceContent"
+ placeholder="璇疯緭鍏ユ鏌ュ唴瀹�"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" align="center" width="100">
+ <template #default="scope">
+ <el-link
+ style="margin-right: 10px"
+ type="primary"
+ v-if="scope.row.isEdit"
+ @click="saveRowInfo(scope.row, scope.$index)"
+ >淇濆瓨</el-link
+ >
+ <el-link
+ style="margin-right: 10px"
+ type="primary"
+ v-else
+ @click="editMainList(scope.row, scope.$index)"
+ >缂栬緫</el-link
+ >
+ <el-link
+ style="margin-right: 10px"
+ type="danger"
+ @click="delRowInfo(scope.$index)"
+ >鍒犻櫎</el-link
+ >
+ </template>
+ </el-table-column>
+ </el-table>
</el-row>
</el-form>
<template #footer>
@@ -402,20 +444,21 @@
<!-- 璁″垝璇︾粏 -->
<el-dialog title="璁″垝璇︽儏" v-model="planOpen" width="700px" append-to-body>
<el-form label-width="140px">
+ <div class="sub-title">鍩烘湰淇℃伅</div>
<el-row>
<el-col :span="12">
<el-form-item label="璁″垝缂栧彿锛�">{{
- planDetail.orderNo
+ planDetail.planNo
}}</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="璁″垝鍚嶇О锛�">{{
+ <el-form-item label="妫�鏌ヨ鍒掑悕绉帮細">{{
planDetail.enforceReason
}}</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鍒跺畾璁″垝鐨勬満鏋勶細">{{
- planDetail.applyOrgName
+ <el-form-item label="鐗靛ご鍗曚綅锛�">{{
+ planDetail.leadUnitName
}}</el-form-item>
</el-col>
<el-col :span="12">
@@ -429,19 +472,9 @@
}}</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="妫�鏌ユ柟寮忥細">{{
- methodToText(planDetail.enforceType)
- }}</el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鎵ц绉戝锛�">{{
- planDetail.applyDeptNames
- }}</el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="妫�鏌ュ唴瀹癸細">{{
- planDetail.enforceContent
- }}</el-form-item>
+ <el-form-item label="璁″垝棰戞锛�">
+ {{ frequencyToText(planDetail) }}
+ </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="璁″垝鏈堜唤锛�">{{
@@ -449,15 +482,40 @@
}}</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="璁″垝棰戞锛�">
- {{ frequencyToText(planDetail) }}
+ <el-form-item label="妫�鏌ョ被鍨嬶細">
+ {{ methodToText(planDetail.enforceType) }}
</el-form-item>
</el-col>
<el-col :span="12">
- <!-- <el-form-item label="鐘舵�侊細">{{
- statusToText(planDetail.checkStatus)
- }}</el-form-item> -->
+ <el-form-item label="鐘舵�侊細">
+ {{ statusToText(planDetail.status) }}
+ </el-form-item>
</el-col>
+ </el-row>
+ <div class="sub-title">涓讳綋淇℃伅</div>
+ <el-row>
+ <el-table
+ :data="planDetailList"
+ max-height="200px"
+ style="width: 100%"
+ >
+ <el-table-column
+ prop="applyOrgName"
+ align="center"
+ label="妫�鏌ュ崟浣�"
+ />
+ <el-table-column
+ prop="applyDeptNames"
+ align="center"
+ label="鎵ц绉戝"
+ />
+ <el-table-column
+ align="center"
+ prop="enforceContent"
+ show-overflow-tooltip
+ label="妫�鏌ュ唴瀹�"
+ />
+ </el-table>
</el-row>
</el-form>
<template #footer>
@@ -466,6 +524,7 @@
@click="
planOpen = false;
planDetail = {};
+ planDetailList = [];
"
>鍏� 闂�</el-button
>
@@ -543,24 +602,22 @@
import { getToken } from "@/utils/auth";
import {
listOrder,
- // addManage,
- // getManage,
- // updateManage,
- // delManage,
+ getOrder,
+ delOrder,
+ addOrder,
+ updateOrder,
exportTemplate,
- // exportManage,
- // getOrgId,
} from "@/api/system/comprehensive";
import { listCompany } from "@/api/system/company/company";
import { deptTreeSelect } from "@/api/system/user";
import { listDept } from "@/api/system/dept";
// import { download } from '@/utils/request'; // 涓嬭浇鏂囦欢
import { download as downloadHttp } from "@/utils/request";
+import { generateCartesianArray } from "@/utils/arrayUtil";
const { proxy } = getCurrentInstance();
const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
-const { frequency, industry_type, enforce_type } = proxy.useDictPer(
+const { frequency, enforce_type } = proxy.useDictPer(
"frequency",
- "industry_type",
"enforce_type"
);
@@ -581,6 +638,8 @@
const refreshTable = ref(true);
const planOpen = ref(false);
const planDetail = ref({});
+const planDetailList = ref([]);
+const mainList = ref([]);
const dateRange = ref([]);
const selectOpen = ref(false);
const firmList = ref([]);
@@ -592,36 +651,32 @@
const data = reactive({
form: {
enforceReason: "", // 璁″垝鍚嶇О
- applyOrgId: "", // 鍒跺畾鏈烘瀯id
- applyOrgName: "", // 鍒跺畾鏈烘瀯
- applyDeptIds: "", // 鎵ц绉戝
- applyDeptNames: "", // 鎵ц绉戝鍚嶇О
- companyName: "", // 琚鏌ュ璞�
- companyId: "", // 琚鏌ュ璞d
+ leadUnitId: "", // 鍒跺畾鏈烘瀯id
+ leadUnitName: "", // 鍒跺畾鏈烘瀯
+ checkdIds: "", // 琚鏌ュ璞d
+ companyName: "", // 琚鏌ュ璞″悕绉�
companyCode: "", // 缁熶竴绀句細淇$敤浠g爜
- industry: "", // 鎵�灞炶涓�
enforceType: "", // 妫�鏌ユ柟寮�
- enforceContent: "", // 妫�鏌ュ唴瀹�
planFrequency: "", // 璁″垝棰戞
- planFrequencyUnit: "1", // 璁″垝棰戞鍗曚綅
+ planFrequencyUnit: 119, // 璁″垝棰戞鍗曚綅
planMonth: "", // 璁″垝鏈堜唤
},
queryParams: {
companyName: "",
enforceReason: "",
- applyOrgId: "",
+ leadUnitId: "",
planMonthStart: "", // 璁″垝寮�濮嬫湀浠�
planMonthEnd: "", // 璁″垝缁撴潫鏈堜唤
pageNum: 1,
pageSize: 10,
},
rules: {
- orderNo: [{ required: true, message: "璁″垝缂栧彿涓嶈兘涓虹┖", trigger: "blur" }],
+ planNo: [{ required: true, message: "璁″垝缂栧彿涓嶈兘涓虹┖", trigger: "blur" }],
enforceReason: [
{ required: true, message: "璁″垝鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
],
- applyOrgId: [
- { required: true, message: "鍒跺畾璁″垝鐨勬満鏋勪笉鑳戒负绌�", trigger: "blur" },
+ leadUnitId: [
+ { required: true, message: "鐗靛ご鍗曚綅涓嶈兘涓虹┖", trigger: "blur" },
],
checkdIds: [
{ required: true, message: "琚鏌ュ璞′笉鑳戒负绌�", trigger: "blur" },
@@ -631,15 +686,6 @@
],
companyCode: [
{ required: true, message: "缁熶竴绀句細淇$敤浠g爜涓嶈兘涓虹┖", trigger: "blur" },
- ],
- industry: [
- { required: true, message: "鎵�灞炶涓氫笉鑳戒负绌�", trigger: "blur" },
- ],
- enforceContent: [
- { required: true, message: "妫�鏌ュ唴瀹逛笉鑳戒负绌�", trigger: "blur" },
- ],
- applyDeptIds: [
- { required: true, message: "鎵ц绉戝涓嶈兘涓虹┖", trigger: "blur" },
],
planFrequency: [
{ required: true, message: "璁″垝棰戞涓嶈兘涓虹┖", trigger: "blur" },
@@ -662,13 +708,13 @@
});
// 鑾峰彇绉戝鍒楄〃
-const getOfficeList = () => {
+const getOfficeList = (orgId, index) => {
listDept({
pageNum: 1,
pageSize: 1000,
- parentId: form.value.applyOrgId,
+ parentId: orgId,
}).then((response) => {
- officeList.value = response.data;
+ mainList.value[index].officeList = response.data;
});
};
@@ -682,26 +728,35 @@
form.value.planMonth = value.join(",");
};
-// 鏈烘瀯閫夋嫨
+// 鐗靛ご鍗曚綅閫夋嫨
const changeTreeHandler = (e) => {
- form.value.applyOrgId = e.id;
- form.value.applyOrgName = e.label;
+ form.value.leadUnitId = e.id;
+ form.value.leadUnitName = e.label;
selectOffices.value = [];
- form.value.applyDeptIds = "";
- form.value.applyDeptNames = "";
- if (e.id) {
- getOfficeList();
+};
+
+// 妫�鏌ュ崟浣嶉�夋嫨
+const changeMainTreeHandler = (data, item, node, index) => {
+ mainList.value[index].applyOrgId = data.id;
+ mainList.value[index].applyOrgName = data.label;
+ mainList.value[index].applyDeptIds = "";
+ mainList.value[index].applyDeptNames = "";
+ mainList.value[index].selectList = [];
+ mainList.value[index].officeList = [];
+ if (data.id) {
+ getOfficeList(data.id, index);
}
};
// 绉戝閫夋嫨
-const handleSelectOffices = (value) => {
- form.value.applyDeptNames = value
+const handleSelectOffices = (value, index) => {
+ mainList.value[index].applyDeptIds = value.join(",");
+ mainList.value[index].applyDeptNames = value
.map((item) => {
- return officeList.value.find((obj) => obj.deptId === item).deptName;
+ return mainList.value[index].officeList.find((obj) => obj.deptId === item)
+ .deptName;
})
.join(",");
- form.value.applyDeptIds = value.join(",");
};
/*** 璁″垝瀵煎叆鍙傛暟 */
@@ -717,7 +772,9 @@
// 璁剧疆涓婁紶鐨勮姹傚ご閮�
headers: { Authorization: "Bearer " + getToken() },
// 涓婁紶鐨勫湴鍧�
- url: import.meta.env.VITE_APP_BASE_API + "/comprehensive/enforce/order/importData",
+ url:
+ import.meta.env.VITE_APP_BASE_API +
+ "/comprehensive/enforce/order/importData",
});
/**鏂囦欢涓婁紶涓鐞� */
const handleFileUploadProgress = (event, file, fileList) => {
@@ -773,21 +830,17 @@
function reset() {
form.value = {
enforceReason: "", // 璁″垝鍚嶇О
- applyOrgId: "", // 鍒跺畾鏈烘瀯id
- applyOrgName: "", // 鍒跺畾鏈烘瀯
- applyDeptIds: "", // 鎵ц绉戝id
- applyDeptNames: "", // 鎵ц绉戝鍚嶇О
+ leadUnitId: "", // 鍒跺畾鏈烘瀯id
+ leadUnitName: "", // 鍒跺畾鏈烘瀯
checkdIds: "", // 琚鏌ュ璞d
companyName: "", // 琚鏌ュ璞″悕绉�
companyCode: "", // 缁熶竴绀句細淇$敤浠g爜
enforceType: "", // 妫�鏌ユ柟寮�
- industry: "", // 鎵�灞炶涓�
- enforceContent: "", // 妫�鏌ュ唴瀹�
planFrequency: "", // 璁″垝棰戞
- planFrequencyUnit: "1", // 璁″垝棰戞鍗曚綅
+ planFrequencyUnit: 119, // 璁″垝棰戞鍗曚綅
planMonth: "", // 璁″垝鏈堜唤
- orderType: 1,
};
+ mainList.value = [];
selectOffices.value = [];
selectMonth.value = [];
checkedList.value = [];
@@ -813,7 +866,7 @@
orderType: 1,
companyName: "",
enforceReason: "",
- applyOrgId: "",
+ leadUnitId: "",
planMonthStart: "", // 璁″垝寮�濮嬫湀浠�
planMonthEnd: "", // 璁″垝缁撴潫鏈堜唤
pageNum: 1,
@@ -823,66 +876,187 @@
handleQuery();
}
function getDetails(id) {
- getManage(id).then((response) => {
- form.value = JSON.parse(JSON.stringify(response.data));
- form.value.planFrequencyUnit = form.value.planFrequencyUnit.toString();
+ getOrder(id).then((response) => {
+ form.value = JSON.parse(JSON.stringify(response.data.info));
+ const list = JSON.parse(JSON.stringify(response.data.list));
+ mainList.value = list.map((obj) => {
+ return {
+ ...obj,
+ selectList: [],
+ officeList: [],
+ isEdit: false,
+ };
+ });
+ form.value.planFrequencyUnit = Number(form.value.planFrequencyUnit);
form.value.enforceType = Number(form.value.enforceType);
+ form.value.leadUnitId = Number(form.value.leadUnitId);
selectMonth.value = form.value.planMonth.split(",");
- selectOffices.value = form.value.applyDeptIds
- .split(",")
- .map((item) => Number(item));
-
- getOfficeList();
open.value = true;
});
}
-/** 璇︾粏鎸夐挳鎿嶄綔 */
-function handleView(row) {
- planOpen.value = true;
- planDetail.value = row;
- planOpen.value = true;
+/** 璇︽儏鎸夐挳鎿嶄綔 */
+function handleView(id) {
+ getOrder(id).then((response) => {
+ console.log(response);
+ planDetail.value = response.data.info;
+ planDetailList.value = response.data.list;
+ planOpen.value = true;
+ });
}
/** 鏂板鎸夐挳鎿嶄綔 */
function handleAdd(row) {
if (row) {
title.value = "缂栬緫璁″垝";
- getDetails(row.orderId);
+ getDetails(row.id);
} else {
title.value = "娣诲姞璁″垝";
open.value = true;
- getUserOrgId();
+ mainList.value = [
+ {
+ applyOrgId: "",
+ applyOrgName: "",
+ applyDeptIds: "",
+ applyDeptNames: "",
+ enforceContent: "",
+ selectList: [],
+ officeList: [],
+ isEdit: true,
+ },
+ ];
+ console.log(mainList.value);
}
getFirmList();
+}
+
+// 鏂板涓讳綋鍐呭
+function addMainList() {
+ if (mainList.value.length) {
+ const lastObj = JSON.parse(
+ JSON.stringify(mainList.value[mainList.value.length - 1])
+ );
+ if (lastObj.isEdit) {
+ return proxy.$modal.msgError("璇峰厛淇濆瓨褰撳墠淇℃伅");
+ } else {
+ delete lastObj.isEdit;
+ const checkList = [
+ "applyOrgId",
+ "applyOrgName",
+ "applyDeptIds",
+ "applyDeptNames",
+ "enforceContent",
+ ];
+ console.log(lastObj);
+ const check = checkList.every((key) => Boolean(lastObj[key]));
+ if (!check) return proxy.$modal.msgError("璇峰畬鍠勫綋鍓嶄俊鎭�");
+ }
+ }
+ mainList.value.push({
+ applyOrgId: "",
+ applyOrgName: "",
+ applyDeptIds: "",
+ applyDeptNames: "",
+ enforceContent: "",
+ selectList: [],
+ officeList: [],
+ isEdit: true,
+ });
+}
+
+// 缂栬緫琛屼俊鎭�
+function editMainList(row, index) {
+ if (!form.value.id) {
+ mainList.value[index].isEdit = true;
+ } else {
+ if (row.orderStatus > 2) return proxy.$modal.msgError("宸叉墽娉曚笉鑳界紪杈�");
+ mainList.value[index].selectList = row.applyDeptIds
+ .split(",")
+ .map((item) => Number(item));
+ getOfficeList(row.applyOrgId, index);
+ mainList.value[index].isEdit = true;
+ }
+}
+
+// 淇濆瓨琛屼俊鎭�
+function saveRowInfo(row, index) {
+ const rowInfo = JSON.parse(JSON.stringify(row));
+ console.log(rowInfo);
+ delete rowInfo.isEdit;
+ const checkList = [
+ "applyOrgId",
+ "applyOrgName",
+ "applyDeptIds",
+ "applyDeptNames",
+ "enforceContent",
+ ];
+ const check = checkList.every((key) => Boolean(rowInfo[key]));
+ if (!check) return proxy.$modal.msgError("璇峰畬鍠勫綋鍓嶄俊鎭�");
+ mainList.value[index].isEdit = false;
+}
+
+// 鍒犻櫎琛屼俊鎭�
+function delRowInfo(index) {
+ console.log(mainList.value, index);
+ mainList.value.splice(index, 1);
}
/** 鎻愪氦鎸夐挳 */
function submitForm() {
proxy.$refs["deptRef"].validate((valid) => {
if (valid) {
- if (form.value.orderId != undefined) {
- updateManage(form.value).then((response) => {
+ if (form.value.id) {
+ if (mainList.value.some((obj) => obj.isEdit)) {
+ proxy.$modal.msgError("璇峰畬鍠勪富浣撲俊鎭�");
+ return;
+ }
+ updateOrder({
+ info: form.value,
+ list: mainList.value,
+ }).then((response) => {
proxy.$modal.msgSuccess("淇敼鎴愬姛");
open.value = false;
getList();
reset();
});
} else {
- checkedList.value.forEach((item, index) => {
- const submitForm = { ...form.value };
- submitForm.companyId = item.companyId;
- submitForm.companyName = item.companyName;
- submitForm.companyCode = item.companyCode;
- addManage(submitForm).then((response) => {
- if (index === checkedList.value.length - 1) {
- proxy.$modal.msgSuccess("鏂板鎴愬姛");
- open.value = false;
- getList();
- reset();
- }
+ if (mainList.value.some((obj) => obj.isEdit)) {
+ proxy.$modal.msgError("璇峰畬鍠勪富浣撲俊鎭�");
+ return;
+ }
+ // 鍑嗗鎻愪氦鏁版嵁锛氭牴鎹甤heckdIds鍜宲lanMonth鐢熸垚绗涘崱灏旂Н鏁扮粍
+ const submitDataArray = [];
+ // 閬嶅巻姣忎釜閫変腑鐨勪紒涓�
+ for (const company of checkedList.value) {
+ // 閬嶅巻姣忎釜閫変腑鐨勬湀浠�
+ for (const month of selectMonth.value) {
+ // 鍒涘缓鍖呭惈褰撳墠浼佷笟鍜屾湀浠戒俊鎭殑琛ㄥ崟鏁版嵁
+ const companyForm = {
+ ...JSON.parse(JSON.stringify(form.value)),
+ companyId: company.companyId,
+ companyName: company.companyName,
+ companyCode: company.companyCode,
+ planMonth: month,
+ checkdIds: company.companyId,
+ };
+ // 涓烘瘡涓紒涓�-鏈堜唤缁勫悎鐢熸垚瀵瑰簲鐨刴ainList鏁版嵁
+ const formData = companyForm;
+ submitDataArray.push(formData);
+ }
+ }
+ addOrder({
+ companyList: submitDataArray,
+ orgList: mainList.value,
+ })
+ .then((response) => {
+ proxy.$modal.msgSuccess("鏂板鎴愬姛");
+ open.value = false;
+ getList();
+ reset();
+ })
+ .catch(() => {
+ proxy.$modal.msgError("鏂板澶辫触");
});
- });
}
}
});
@@ -892,7 +1066,7 @@
proxy.$modal
.confirm("鏄惁纭鍒犻櫎璇ユ暟鎹�?")
.then(function () {
- return delManage(row.orderId);
+ return delOrder(row.id);
})
.then(() => {
getList();
@@ -966,7 +1140,6 @@
}
function frequencyToText(data) {
- console.log(data.planFrequencyUnit);
if (!data.planFrequencyUnit) {
return "";
}
@@ -978,21 +1151,6 @@
function statusToText(status) {
return statusOptions.value.find((item) => item.value == status).label;
-}
-
-function getUserOrgId() {
- getOrgId().then((response) => {
- form.value.applyOrgId = Number(response.data.orgId) || "";
- form.value.applyDeptIds = response.data.deptId || "";
- if (form.value.applyDeptIds) {
- selectOffices.value = form.value.applyDeptIds
- .split(",")
- .map((item) => Number(item));
- }
- if (form.value.applyOrgId) {
- getOfficeList();
- }
- });
}
getList();
@@ -1014,4 +1172,19 @@
}
}
}
+
+.sub-title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 10px 10px;
+ // height: 40px;
+ // line-height: 40px;
+ font-size: 16px;
+ font-weight: 700;
+ color: #999;
+ background-color: #ebf5ff;
+ box-sizing: border-box;
+ margin-bottom: 10px;
+}
</style>
--
Gitblit v1.9.1