From 70e4d2c33cc2e3af590d1816c0c703da341538cf Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期五, 04 九月 2026 14:13:32 +0800
Subject: [PATCH] 测试完成
---
src/views/Satisfaction/configurationmyd/batch.vue | 616 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 532 insertions(+), 84 deletions(-)
diff --git a/src/views/Satisfaction/configurationmyd/batch.vue b/src/views/Satisfaction/configurationmyd/batch.vue
index 750c893..59ada45 100644
--- a/src/views/Satisfaction/configurationmyd/batch.vue
+++ b/src/views/Satisfaction/configurationmyd/batch.vue
@@ -211,7 +211,7 @@
</div>
<div class="info-item">
<span class="label">澶勭悊璇存槑锛�</span>
- <span class="value">{{ row.handledesc }}</span>
+ <span class="value">{{ formatHandledesc(row.handledesc) }}</span>
</div>
</div>
<span v-else class="no-data">鏈鐞�</span>
@@ -238,7 +238,7 @@
size="small"
icon="el-icon-edit"
@click="handleProcess(row)"
- :disabled="row.handleFlag === '1'"
+ :disabled="row.handleresult === 'resolved'"
>
澶勭悊
</el-button>
@@ -266,88 +266,258 @@
<el-dialog
title="澶勭悊寮傚父鍙嶉"
:visible.sync="processDialogVisible"
- width="600px"
+ width="60%"
+ top="6vh"
center
>
- <el-form
- :model="processForm"
- :rules="processRules"
- ref="processForm"
- label-width="100px"
- size="medium"
- >
- <el-form-item label="澶勭悊鐘舵��" prop="handleFlag">
- <el-select
- v-model="processForm.handleFlag"
- placeholder="璇烽�夋嫨澶勭悊鐘舵��"
- style="width: 100%"
+ <div class="flow-dialog-body">
+ <!-- 宸﹀崐閮ㄥ垎锛氬鐞嗕俊鎭� -->
+ <div class="flow-left">
+ <el-form
+ :model="processForm"
+ :rules="processRules"
+ ref="processForm"
+ label-width="100px"
+ size="medium"
>
- <el-option label="宸插鐞�" :value="'1'" />
- <el-option label="鍙栨秷澶勭悊" :value="'0'" />
- </el-select>
- </el-form-item>
+ <el-form-item label="鏄惁娴佽浆" prop="isFlow">
+ <el-switch
+ v-model="processForm.isFlow"
+ active-value="1"
+ inactive-value="0"
+ active-text="娴佽浆"
+ inactive-text="涓嶆祦杞�"
+ />
+ </el-form-item>
- <el-form-item label="鎶ュ绉戝" prop="ccdepts">
- <el-select
- v-model="processForm.ccdepts"
- placeholder="璇烽�夋嫨鎶ュ绉戝"
- multiple
- filterable
- collapse-tags
- style="width: 100%"
- :disabled="processForm.handleFlag !== '1'"
- >
- <el-option
- v-for="dept in deptList"
- :key="dept.deptCode"
- :label="dept.label"
- :value="dept.deptCode"
- />
- </el-select>
- </el-form-item>
+ <el-form-item label="澶勭悊鐘舵��" prop="handleFlag">
+ <el-select
+ v-model="processForm.handleFlag"
+ placeholder="璇烽�夋嫨澶勭悊鐘舵��"
+ style="width: 100%"
+ >
+ <el-option label="宸插鐞�" :value="'1'" />
+ <el-option label="鍙栨秷澶勭悊" :value="'0'" />
+ </el-select>
+ </el-form-item>
- <el-form-item label="澶勭悊缁撴灉" prop="handleresult">
- <el-select
- v-model="processForm.handleresult"
- placeholder="璇烽�夋嫨澶勭悊缁撴灉"
- style="width: 100%"
- :disabled="processForm.handleFlag !== '1'"
- >
- <el-option label="宸茶В鍐�" value="resolved" />
- <el-option label="宸茶В閲�" value="explained" />
- <el-option label="宸茶浆浜�" value="transferred" />
- <el-option label="闇�鏀硅繘" value="improvement" />
- <el-option label="宸查┏鍥�" value="rejected" />
- </el-select>
- </el-form-item>
+ <el-form-item label="鎶ュ绉戝" prop="ccdepts">
+ <el-select
+ v-model="processForm.ccdepts"
+ placeholder="璇烽�夋嫨鎶ュ绉戝"
+ multiple
+ filterable
+ collapse-tags
+ style="width: 100%"
+ :disabled="processForm.handleFlag !== '1'"
+ >
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.deptCode"
+ :label="dept.label"
+ :value="dept.deptCode"
+ />
+ </el-select>
+ </el-form-item>
- <el-form-item label="澶勭悊璇存槑" prop="handledesc">
- <el-input
- v-model="processForm.handledesc"
- type="textarea"
- :rows="4"
- placeholder="璇疯緭鍏ュ鐞嗚鏄庯紙鏈�澶�500瀛楋級"
- maxlength="500"
- show-word-limit
- :disabled="processForm.handleFlag !== '1'"
- />
- </el-form-item>
+ <el-form-item label="澶勭悊缁撴灉" prop="handleresult">
+ <el-select
+ v-model="processForm.handleresult"
+ placeholder="璇烽�夋嫨澶勭悊缁撴灉"
+ style="width: 100%"
+ :disabled="processForm.handleFlag !== '1'"
+ >
+ <el-option label="宸茶В鍐�" value="resolved" />
+ <el-option label="宸茶В閲�" value="explained" />
+ <el-option label="宸茶浆浜�" value="transferred" />
+ <el-option label="闇�鏀硅繘" value="improvement" />
+ <el-option label="宸查┏鍥�" value="rejected" />
+ </el-select>
+ </el-form-item>
- <el-form-item
- label="鏈�缁堟剰瑙�"
- prop="finaloption"
- v-if="hasQualityPermission"
- >
- <el-input
- v-model="processForm.finaloption"
- type="textarea"
- :rows="3"
- placeholder="璇疯緭鍏ユ渶缁堝鐞嗘剰瑙侊紙鏈�澶�300瀛楋級"
- maxlength="300"
- show-word-limit
- />
- </el-form-item>
- </el-form>
+ <el-form-item label="澶勭悊璇存槑" prop="handledesc">
+ <el-input
+ v-model="processForm.handledesc"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏ュ鐞嗚鏄庯紙鏈�澶�500瀛楋級"
+ maxlength="500"
+ show-word-limit
+ :disabled="processForm.handleFlag !== '1'"
+ />
+ </el-form-item>
+
+ <el-form-item
+ label="鏈�缁堟剰瑙�"
+ prop="finaloption"
+ v-if="hasQualityPermission"
+ >
+ <el-input
+ v-model="processForm.finaloption"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ユ渶缁堝鐞嗘剰瑙侊紙鏈�澶�300瀛楋級"
+ maxlength="300"
+ show-word-limit
+ />
+ </el-form-item>
+ </el-form>
+ </div>
+
+ <!-- 鍙冲崐閮ㄥ垎锛氭祦杞椂闂寸嚎锛堥�変腑娴佽浆鍚庡睍寮�锛� -->
+ <div class="flow-right" v-if="processForm.isFlow === '1'">
+ <el-timeline>
+ <el-timeline-item type="primary" placement="top" color="#5788fe">
+ <div class="flow-step-title">绗竴姝� 路 娴佽浆鍙戣捣</div>
+ <el-form label-width="90px" size="small" class="flow-step-form">
+ <el-form-item label="娴佽浆浜�">
+ <el-input
+ v-model="processForm.flowPerson"
+ placeholder="娴佽浆浜猴紙榛樿褰撳墠鐢ㄦ埛锛�"
+ />
+ </el-form-item>
+ <el-form-item label="娴佽浆浜虹紪鍙�">
+ <el-input
+ v-model="processForm.flowPersonCode"
+ placeholder="娴佽浆浜虹紪鍙凤紙榛樿褰撳墠鐢ㄦ埛宸ュ彿锛�"
+ />
+ </el-form-item>
+ <el-form-item label="娴佽浆鏃堕棿">
+ <el-date-picker
+ v-model="processForm.flowTime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="娴佽浆鏃堕棿"
+ style="width: 100%"
+ />
+ </el-form-item>
+ <el-form-item label="娴佽浆璇存槑">
+ <el-input
+ v-model="processForm.flowDesc"
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ユ祦杞鏄�"
+ />
+ </el-form-item>
+ <el-form-item label="娴佽浆绉戝">
+ <el-select
+ v-model="processForm.flowDepts"
+ multiple
+ filterable
+ collapse-tags
+ placeholder="璇烽�夋嫨娴佽浆绉戝"
+ style="width: 100%"
+ @change="onFlowDeptChange"
+ >
+ <el-option
+ v-for="dept in deptList"
+ :key="dept.deptCode"
+ :label="dept.label"
+ :value="dept.deptCode"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="娴佽浆绉戝code">
+ <el-select
+ v-model="processForm.flowDeptCodes"
+ multiple
+ disabled
+ placeholder="閫夋嫨绉戝鍚庤嚜鍔ㄧ敓鎴�"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="code in processForm.flowDeptCodes"
+ :key="code"
+ :label="code"
+ :value="code"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎺ㄩ�佽礋璐d汉">
+ <el-select
+ v-model="processForm.pushUsers"
+ multiple
+ filterable
+ collapse-tags
+ placeholder="璇烽�夋嫨鎺ㄩ�佽礋璐d汉"
+ style="width: 100%"
+ @change="onPushUserChange"
+ >
+ <el-option
+ v-for="u in userList"
+ :key="u.userId"
+ :label="u.nickName || u.userName"
+ :value="u.userId"
+ />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ </el-timeline-item>
+
+ <el-timeline-item type="primary" placement="top" color="#e6a23c">
+ <div class="flow-step-title">绗簩姝� 路 绉戝鍙嶉</div>
+ <el-table
+ :data="processForm.flowFeedbacks"
+ border
+ size="mini"
+ v-if="processForm.flowFeedbacks.length > 0"
+ >
+ <el-table-column
+ label="绉戝"
+ prop="deptName"
+ width="120"
+ align="center"
+ />
+ <el-table-column label="鏄惁鍚屾剰" width="130" align="center">
+ <template slot-scope="scope">
+ <el-select
+ v-model="scope.row.agree"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ >
+ <el-option label="鍚屾剰" value="1" />
+ <el-option label="涓嶅悓鎰�" value="0" />
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍏蜂綋璇存槑" min-width="200" align="center">
+ <template slot-scope="scope">
+ <el-input
+ v-model="scope.row.desc"
+ placeholder="璇疯緭鍏ュ叿浣撹鏄�"
+ size="mini"
+ />
+ </template>
+ </el-table-column>
+ </el-table>
+ <div v-else class="flow-empty-tip">
+ 璇峰厛鍦ㄧ涓�姝ラ�夋嫨娴佽浆绉戝
+ </div>
+ </el-timeline-item>
+
+ <el-timeline-item type="primary" placement="top" color="#67c23a">
+ <div class="flow-step-title">绗笁姝� 路 澶勭悊缁撴灉</div>
+ <el-form label-width="90px" size="small" class="flow-step-form">
+ <el-form-item label="澶勭悊浜�">
+ <el-input
+ v-model="processForm.handleBy"
+ placeholder="澶勭悊浜�"
+ />
+ </el-form-item>
+ <el-form-item label="澶勭悊鏃堕棿">
+ <el-date-picker
+ v-model="processForm.handleTime"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="澶勭悊鏃堕棿"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-form>
+ </el-timeline-item>
+ </el-timeline>
+ </div>
+ </div>
<span slot="footer" class="dialog-footer">
<el-button @click="processDialogVisible = false">鍙栨秷</el-button>
<el-button type="primary" @click="submitProcess" :loading="processing">
@@ -483,7 +653,7 @@
import DetailsAnomaly from "./components/DetailsAnomaly.vue";
import { tracelist, traceedit } from "@/api/AiCentre/index";
import dayjs from "dayjs";
-import { deptTreeSelect } from "@/api/system/user";
+import { deptTreeSelect, listUser } from "@/api/system/user";
export default {
name: "BatchProcess",
@@ -527,6 +697,8 @@
// 绉戝鍒楄〃
deptList: [],
+ // 鐢ㄦ埛鍒楄〃锛堟祦杞礋璐d汉鍊欓�夛級
+ userList: [],
// 寮傚父鍒楄〃鏁版嵁
exceptionList: [],
@@ -540,6 +712,21 @@
handleresult: "",
handledesc: "",
finaloption: "",
+ // 娴佽浆鐩稿叧
+ isFlow: "0",
+ flowPerson: "",
+ flowPersonCode: "",
+ flowTime: "",
+ flowDesc: "",
+ flowDepts: [],
+ flowDeptNames: [],
+ flowDeptCodes: [],
+ pushUsers: [],
+ pushUserNames: [],
+ pushUserNos: [],
+ flowFeedbacks: [],
+ handleBy: "",
+ handleTime: "",
},
batchProgress: {
visible: false,
@@ -616,6 +803,7 @@
mounted() {
this.loadExceptionList();
this.getDeptOptions();
+ this.getUserOptions();
},
methods: {
@@ -648,6 +836,19 @@
.catch((error) => {
console.error("鑾峰彇绉戝鍒楄〃澶辫触:", error);
this.$message.error("鑾峰彇绉戝鍒楄〃澶辫触");
+ });
+ },
+ /** 鏌ヨ鐢ㄦ埛鍒楄〃锛堟祦杞礋璐d汉鍊欓�夛級 */
+ getUserOptions() {
+ listUser({ pageNum: 1, pageSize: 999 })
+ .then((res) => {
+ if (res.code == 200) {
+ this.userList = res.rows || [];
+ }
+ })
+ .catch((error) => {
+ console.error("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触:", error);
+ this.$message.error("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触");
});
},
flattenArray(multiArray) {
@@ -870,22 +1071,212 @@
handleProcess(row) {
this.currentExceptionId = row.id;
+ const nickName = this.$store.state.user.nickName || "";
+ const now = dayjs().format("YYYY-MM-DD HH:mm:ss");
+
+ // 鏄惁娴佽浆锛堝悗绔� circulationStatus锛�0 涓嶆祦杞� / 1 娴佽浆锛�
+ const isFlow = String(row.circulationStatus) === "1" ? "1" : "0";
+
+ // 鎶ュ绉戝锛堝吋瀹规暟缁勬垨閫楀彿鍒嗛殧瀛楃涓诧級
+ const ccdepts = Array.isArray(row.ccdepts)
+ ? row.ccdepts
+ : row.ccdepts
+ ? row.ccdepts.split(",")
+ : [];
+
+ // 娴佽浆绉戝 code / 鍚嶇О
+ const flowDeptCodes = row.circulationDeptCode
+ ? row.circulationDeptCode.split(",")
+ : [];
+ const flowDeptNames = row.circulationDeptName
+ ? row.circulationDeptName.split(",")
+ : [];
+
+ // 鎺ㄩ�佽礋璐d汉锛氬悗绔瓨宸ュ彿(userName)锛屼笅鎷� value 鐢� userId锛岄渶鍥炴槧
+ const pushUserNos = row.circulationDeptPersonCode
+ ? row.circulationDeptPersonCode.split(",")
+ : [];
+ const pushUserNames = row.circulationDeptPersonName
+ ? row.circulationDeptPersonName.split(",")
+ : [];
+ const pushUsers = pushUserNos.map((no) => {
+ const u = this.userList.find((item) => item.userName === no);
+ return u ? u.userId : no;
+ });
+
+ // 绉戝鍙嶉锛氫粠 handledesc JSON 涓繕鍘�
+ let flowFeedbacks = [];
+ try {
+ const parsed =
+ typeof row.handledesc === "string" &&
+ row.handledesc.trim().startsWith("{")
+ ? JSON.parse(row.handledesc)
+ : null;
+ if (parsed && parsed.flow && Array.isArray(parsed.flow.feedbacks)) {
+ flowFeedbacks = parsed.flow.feedbacks;
+ }
+ } catch (e) {
+ // handledesc 闈� JSON锛屽拷鐣�
+ }
+
+ // 娴佽浆鏃堕棿锛氬悗绔� Date 瀛楁锛岀粺涓�杞垚 yyyy-MM-dd HH:mm:ss 渚涙棩鏈熼�夋嫨鍣ㄥ洖鏄�
+ let flowTime = now;
+ if (row.circulationTime) {
+ const d = new Date(
+ typeof row.circulationTime === "number"
+ ? row.circulationTime
+ : String(row.circulationTime).replace(" ", "T")
+ );
+ if (!isNaN(d.getTime())) {
+ const pad = (n) => String(n).padStart(2, "0");
+ flowTime =
+ d.getFullYear() +
+ "-" +
+ pad(d.getMonth() + 1) +
+ "-" +
+ pad(d.getDate()) +
+ " " +
+ pad(d.getHours()) +
+ ":" +
+ pad(d.getMinutes()) +
+ ":" +
+ pad(d.getSeconds());
+ }
+ }
+
// 鍒濆鍖栬〃鍗曟暟鎹�
this.processForm = {
- handleFlag: row.handleFlag === "0" ? "1" : "0",
- ccdepts: row.ccdepts ? row.ccdepts.split(",") : [],
+ handleFlag: "1",
+ ccdepts,
handleresult: row.handleresult || "",
- handledesc: row.handledesc || "",
+ handledesc: this.formatHandledesc(row.handledesc),
finaloption: row.finaloption || "",
+ // 娴佽浆鐩稿叧
+ isFlow,
+ flowPerson: row.circulationPersonName || nickName,
+ flowPersonCode:
+ row.circulationPersonCode || this.$store.state.user.userName || "",
+ flowTime,
+ flowDesc: row.circulationExplain || "",
+ flowDepts: [...flowDeptCodes],
+ flowDeptNames: [...flowDeptNames],
+ flowDeptCodes: [...flowDeptCodes],
+ pushUsers,
+ pushUserNames: [...pushUserNames],
+ pushUserNos: [...pushUserNos],
+ flowFeedbacks,
+ handleBy: nickName,
+ handleTime: now,
};
this.processDialogVisible = true;
+ },
+
+ // 娴佽浆绉戝鍙樺寲锛氬悓姝ョ瀹ゅ悕绉般�佺瀹ode锛屽苟鐢熸垚鍙嶉琛ㄦ牸
+ onFlowDeptChange(codes) {
+ this.processForm.flowDeptCodes = [...codes];
+ this.processForm.flowDeptNames = codes.map((code) => {
+ const dept = this.deptList.find((item) => item.deptCode === code);
+ return dept ? dept.label : code;
+ });
+ // 鐢熸垚/缁存姢绗簩姝ュ弽棣堣〃鏍硷紙淇濈暀宸插~鍐欑殑鍙嶉锛�
+ this.processForm.flowFeedbacks = codes.map((code) => {
+ const existing = this.processForm.flowFeedbacks.find(
+ (item) => item.deptCode === code
+ );
+ if (existing) return existing;
+ const dept = this.deptList.find((item) => item.deptCode === code);
+ return {
+ deptCode: code,
+ deptName: dept ? dept.label : code,
+ agree: "",
+ desc: "",
+ };
+ });
+ },
+
+ // 鎺ㄩ�佽礋璐d汉鍙樺寲锛氬悓姝ヨ礋璐d汉鏄电О銆佸伐鍙�
+ onPushUserChange(ids) {
+ this.processForm.pushUserNames = ids.map((id) => {
+ const user = this.userList.find((u) => String(u.userId) === String(id));
+ return user ? user.nickName || user.userName : "";
+ });
+ this.processForm.pushUserNos = ids.map((id) => {
+ const user = this.userList.find((u) => String(u.userId) === String(id));
+ return user ? user.userName || "" : "";
+ });
+ },
+
+ // 缁勮 handledesc锛氭祦杞椂浠� JSON 褰㈠紡淇濆瓨鍘熷鐞嗚鏄庝笌娴佽浆璇存槑銆佺瀹ゅ弽棣�
+ buildHandledesc() {
+ if (this.processForm.isFlow !== "1") {
+ return this.processForm.handledesc;
+ }
+ const flow = {
+ feedbacks: this.processForm.flowFeedbacks.map((f) => ({
+ deptCode: f.deptCode,
+ deptName: f.deptName,
+ agree: f.agree,
+ desc: f.desc,
+ })),
+ };
+ return JSON.stringify({
+ desc: this.processForm.handledesc,
+ flow,
+ });
+ },
+
+ // 瑙f瀽 handledesc锛氳嫢鏄祦杞� JSON 鍒欏彇鍏朵腑鐨勫鐞嗚鏄庯紝鍚﹀垯鍘熸牱杩斿洖
+ formatHandledesc(val) {
+ if (!val) return "";
+ if (typeof val !== "string") return val;
+ const trimmed = val.trim();
+ if (trimmed.startsWith("{")) {
+ try {
+ const obj = JSON.parse(trimmed);
+ if (obj && obj.desc != null) return obj.desc;
+ } catch (e) {
+ // 涓嶆槸鍚堟硶 JSON锛屾寜鍘熸枃鏈繑鍥�
+ }
+ }
+ return val;
+ },
+
+ // 娴佽浆鏃堕棿杞负甯︽椂鍖虹殑 ISO 鏍煎紡锛屼緵鍚庣 Date 绫诲瀷瀛楁鍙嶅簭鍒楀寲
+ toISODateTime(str) {
+ if (!str) return null;
+ const d = new Date(String(str).replace(" ", "T"));
+ if (isNaN(d.getTime())) return null;
+ const pad = (n) => String(n).padStart(2, "0");
+ const offset = -d.getTimezoneOffset();
+ const sign = offset >= 0 ? "+" : "-";
+ const abs = Math.abs(offset);
+ const tz = sign + pad(Math.floor(abs / 60)) + ":" + pad(abs % 60);
+ return (
+ d.getFullYear() +
+ "-" + pad(d.getMonth() + 1) +
+ "-" + pad(d.getDate()) +
+ "T" + pad(d.getHours()) +
+ ":" + pad(d.getMinutes()) +
+ ":" + pad(d.getSeconds()) +
+ "." + String(d.getMilliseconds()).padStart(3, "0") +
+ tz
+ );
},
// 鎻愪氦澶勭悊
async submitProcess() {
this.$refs.processForm.validate(async (valid) => {
if (!valid) {
+ return;
+ }
+
+ // 娴佽浆鏃舵牎楠屽繀椤婚�夋嫨娴佽浆绉戝
+ if (
+ this.processForm.isFlow === "1" &&
+ (!this.processForm.flowDepts || this.processForm.flowDepts.length === 0)
+ ) {
+ this.$message.warning("璇峰厛閫夋嫨娴佽浆绉戝");
return;
}
@@ -897,14 +1288,30 @@
id: this.currentExceptionId,
handleFlag: this.processForm.handleFlag,
handleresult: this.processForm.handleresult,
- handledesc: this.processForm.handledesc,
+ handledesc: this.buildHandledesc(),
finaloption: this.processForm.finaloption,
- handleBy: this.$store.state.user.nickName,
- handleTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+ handleBy:
+ this.processForm.handleBy || this.$store.state.user.nickName,
+ handleTime:
+ this.processForm.handleTime ||
+ dayjs().format("YYYY-MM-DD HH:mm:ss"),
// 灏嗘暟缁勮浆鎹负閫楀彿鍒嗛殧鐨勫瓧绗︿覆
ccdepts: Array.isArray(this.processForm.ccdepts)
? this.processForm.ccdepts.join(",")
: this.processForm.ccdepts,
+ // 娴佽浆鐩稿叧涓昏〃瀛楁锛堝悗绔凡瀹氱锛�
+ circulationPersonName: this.processForm.flowPerson,
+ circulationPersonCode:
+ this.processForm.flowPersonCode ||
+ this.$store.state.user.userName ||
+ "",
+ circulationStatus: this.processForm.isFlow,
+ circulationDeptName: this.processForm.flowDeptNames.join(","),
+ circulationDeptCode: this.processForm.flowDeptCodes.join(","),
+ circulationDeptPersonName: this.processForm.pushUserNames.join(","),
+ circulationDeptPersonCode: this.processForm.pushUserNos.join(","),
+ circulationExplain: this.processForm.flowDesc,
+ circulationTime: this.toISODateTime(this.processForm.flowTime),
};
// TODO: 杩欓噷闇�瑕佽皟鐢ㄥ疄闄呯殑澶勭悊鎺ュ彛
await traceedit(submitData);
@@ -1227,6 +1634,47 @@
}
}
+// 澶勭悊寮规宸﹀彸甯冨眬
+.flow-dialog-body {
+ display: flex;
+ align-items: stretch;
+
+ .flow-left {
+ flex: 1;
+ min-width: 320px;
+ padding-right: 24px;
+ border-right: 1px solid #ebeef5;
+ }
+
+ .flow-right {
+ flex: 1;
+ min-width: 320px;
+ padding-left: 24px;
+ max-height: 60vh;
+ overflow-y: auto;
+
+ .flow-step-title {
+ font-weight: 600;
+ color: #303133;
+ margin-bottom: 12px;
+ font-size: 14px;
+ }
+
+ .flow-step-form {
+ ::v-deep .el-form-item {
+ margin-bottom: 12px;
+ }
+ }
+
+ .flow-empty-tip {
+ padding: 20px;
+ text-align: center;
+ color: #909399;
+ font-size: 13px;
+ }
+ }
+}
+
@media (max-width: 768px) {
.batch-process {
padding: 10px;
--
Gitblit v1.9.3