浏览代码

reactor:40 退回功能优化

zhangchong 2 月之前
父节点
当前提交
11d494d5e4

+ 5 - 5
src/components/OrderDetail/History.vue

@@ -31,17 +31,17 @@
 		:max-height="500"
 	>
 		<vxe-column field="no" title="工单编码" width="140"></vxe-column>
+    <vxe-column field="title" title="工单标题" min-width="150">
+      <template #default="{ row }">
+        <order-detail :order="row" @updateList="searchHistory">{{ row.title }}</order-detail>
+      </template>
+    </vxe-column>
 		<vxe-column field="currentStepName" title="当前节点" width="100"></vxe-column>
 		<vxe-column field="isScreen" title="甄别状态" width="100">
 			<template #default="{ row }">
 				<el-text :type="row.isScreen ? 'danger' : 'info'">{{ row.isScreen ? '已甄别' : '-' }}</el-text>
 			</template>
 		</vxe-column>
-		<vxe-column field="title" title="工单标题" min-width="150">
-			<template #default="{ row }">
-				<order-detail :order="row" @updateList="searchHistory">{{ row.title }}</order-detail>
-			</template>
-		</vxe-column>
 		<vxe-column field="statusText" title="状态" width="100"></vxe-column>
 		<vxe-column field="actualHandleOrgName" title="接办部门" width="140"></vxe-column>
 	</vxe-table>

+ 1 - 1
src/main.ts

@@ -18,7 +18,7 @@ import { VxeTable, VxeColumn, VxeToolbar, VxeGrid, VxeColgroup } from 'vxe-table
 // 导入主题变量,也可以重写主题变量
 import 'vxe-table/styles/cssvar.scss';
 import 'vxe-pc-ui/styles/cssvar.scss';
-// 虚拟的css
+// 虚拟的css
 import '@wsfe/vue-tree/style.css';
 
 // 导入默认的语言

+ 38 - 15
src/views/business/order/components/Order-return.vue

@@ -11,21 +11,41 @@
 		@close="close"
 	>
 		<el-form :model="state.ruleForm" label-width="90px" ref="ruleFormRef" v-loading="state.loading">
-			<el-form-item prop="isSms" v-if="isShowReturnSms">
-				<el-checkbox v-model="state.ruleForm.isSms" label="短信通知" />
-			</el-form-item>
-			<el-form-item label="退回意见" class="textarea" prop="opinion" :rules="[{ required: true, message: '请填写退回意见', trigger: 'blur' }]">
-				<common-advice
-					@chooseAdvice="chooseAdvice"
-					v-model="state.ruleForm.opinion"
-					placeholder="请填写退回意见"
-					:loading="state.loading"
-					:commonEnum="commonEnum.Return"
-				/>
-			</el-form-item>
-			<el-form-item label="附件">
-				<annex-list name="退回附件" ref="annexListRef" :businessId="state.ruleForm.orderId" classify="退回附件" v-model:format="handleFiles" />
-			</el-form-item>
+			<el-row :gutter="20">
+				<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+					<el-form-item
+						label="退回节点"
+						prop="assignStepId"
+						:rules="[{ required: true, message: '请选择退回节点', trigger: 'change' }]"
+						v-if="state.nextStepOptions && state.nextStepOptions.length"
+					>
+						<el-select v-model="state.ruleForm.assignStepId" placeholder="请选择退回节点">
+							<el-option v-for="item in state.nextStepOptions" :key="item.id" :label="item.name" :value="item.id" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+					<el-form-item prop="isSms" v-if="isShowReturnSms">
+						<el-checkbox v-model="state.ruleForm.isSms" label="短信通知" />
+					</el-form-item>
+				</el-col>
+				<el-col>
+					<el-form-item label="退回意见" class="textarea" prop="opinion" :rules="[{ required: true, message: '请填写退回意见', trigger: 'blur' }]">
+						<common-advice
+							@chooseAdvice="chooseAdvice"
+							v-model="state.ruleForm.opinion"
+							placeholder="请填写退回意见"
+							:loading="state.loading"
+							:commonEnum="commonEnum.Return"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col>
+					<el-form-item label="附件">
+						<annex-list name="退回附件" ref="annexListRef" :businessId="state.ruleForm.orderId" classify="退回附件" v-model:format="handleFiles" />
+					</el-form-item>
+				</el-col>
+			</el-row>
 		</el-form>
 		<template #footer>
 			<span class="dialog-footer">
@@ -64,10 +84,12 @@ const state = reactive<any>({
 		orderAssignMode: 0, // 派单类型默认逐级派单
 		stepId: null, // 步骤id
 		isStartCountersign: false, // 是否发起会签
+		assignStepId: null, // 选择的退回节点ID
 	},
 	orderDetail: {}, // 工单详情
 	loading: false, // 提交按钮loading
 	transform: 'translate(0px, 0px)', // 滚动条位置
+	nextStepOptions: [],
 });
 // 查询退回参数
 const getSubmitObj = async (val: any) => {
@@ -75,6 +97,7 @@ const getSubmitObj = async (val: any) => {
 		const { result } = await orderReturnParams(val.id);
 		state.ruleForm.orderId = val.id;
 		state.ruleForm.workflowId = val.workflowId;
+		state.nextStepOptions = result.steps ?? [];
 		console.log(result);
 		handleResultReturn(result);
 		state.loading = false;

+ 48 - 43
src/views/snapshot/reAudit/components/Re-audit-special.vue

@@ -53,25 +53,40 @@
 		</el-form>
 		<p class="border-title mt10 mb10">审批信息<el-text tag="b" type="danger" class="ml5">特殊审批</el-text></p>
 		<el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" :disabled="loading">
-			<el-form-item label="审批状态" prop="status" :rules="[{ required: true, message: '请选择审批状态', trigger: 'change' }]">
-				<el-select v-model="state.ruleForm.status" clearable style="max-width: 240px" placeholder="请选择审批状态" @change="selectStatus">
-					<el-option v-for="item in auditComBox" :label="item.value" :key="item.key" :value="item.key" />
-				</el-select>
-			</el-form-item>
-			<el-form-item label="短信模板" prop="smsTemplateId" :rules="[{ required: true, message: '请选择短信模板', trigger: 'change' }]">
-				<el-select v-model="state.ruleForm.smsTemplateId" placeholder="请选择短信模板" clearable>
-					<el-option v-for="item in smsTemplateList" :value="item.id" :key="item.id" :label="item.content" />
-				</el-select>
-			</el-form-item>
-			<el-form-item label="审批意见" prop="opinion" :rules="[{ required: false, message: '请填写审批意见', trigger: 'blur' }]">
-				<el-input
-					type="textarea"
-					:autosize="{ minRows: 6, maxRows: 10 }"
-					v-model="state.ruleForm.opinion"
-					placeholder="请填写审批意见"
-					clearable
-				></el-input>
-			</el-form-item>
+			<el-row :gutter="10">
+				<el-col>
+					<el-form-item label="审批状态" prop="status" :rules="[{ required: true, message: '请选择审批状态', trigger: 'change' }]">
+						<el-select v-model="state.ruleForm.status" clearable placeholder="请选择审批状态" @change="selectStatus">
+							<el-option v-for="item in auditComBox" :label="item.value" :key="item.key" :value="item.key" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<template v-if="state.ruleForm.status === 1">
+					<el-col :span="12">
+						<el-form-item label="审批类型" prop="auditTypeId" :rules="[{ required: true, message: '请选择审批类型', trigger: 'change' }]">
+							<el-select v-model="state.ruleForm.auditTypeId" clearable placeholder="请选择审批类型" @change="selectType">
+								<el-option v-for="item in auditType" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="审批金额" prop="approvedAmount">
+							<el-input v-model="state.ruleForm.approvedAmount" placeholder="请输入审批金额" clearable disabled />
+						</el-form-item>
+					</el-col>
+				</template>
+				<el-col>
+					<el-form-item label="审批意见" prop="opinion" :rules="[{ required: false, message: '请填写审批意见', trigger: 'blur' }]">
+						<el-input
+							type="textarea"
+							:autosize="{ minRows: 6, maxRows: 10 }"
+							v-model="state.ruleForm.opinion"
+							placeholder="请填写审批意见"
+							clearable
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
 		</el-form>
 		<template #footer>
 			<span class="dialog-footer">
@@ -98,15 +113,17 @@ const state = reactive<any>({
 	ruleForm: {
 		redPackAuditId: null, // 审批ID
 		status: null, // 审批状态
+		auditTypeId: null, // 审批类型
 		opinion: null, // 审批意见
-		smsTemplateId: null, // 短信模板
-		isSendSms: true, // 是否发送短信
+		isSendSms: false, // 是否发送短信
+		approvedAmount: 0, // 审批金额
 	},
 	orderId: null,
 });
 let loading = ref<boolean>(false); // 加载状态
 // 打开弹窗
 const auditComBox = ref<EmptyArrayType>([]); // 审批状态
+const auditType = ref<EmptyArrayType>([]); // 审批类型
 const openDialog = async (row: any) => {
 	loading.value = true;
 	state.dialogVisible = true;
@@ -115,6 +132,7 @@ const openDialog = async (row: any) => {
 		// 特殊审批
 		const { result } = await getSpecialRedEnvelopeApprovalBaseInfo(row.orderId);
 		auditComBox.value = result.auditComBox ?? [];
+		auditType.value = result.auditType ?? [];
 		state.infoForm = result;
 		state.ruleForm.redPackAuditId = row.id;
 		loading.value = false;
@@ -124,29 +142,14 @@ const openDialog = async (row: any) => {
 	}
 };
 const ruleFormRef = ref<RefType>();
-const smsTemplateList = ref<EmptyArrayType>([]); // 短信模板
 // 选择审批状态
-const selectStatus = (val: any) => {
-	ruleFormRef.value?.resetFields('smsTemplateId');
-	if (val || val === 0) {
-		loading.value = true;
-		getCitizenRedEnvelopeApprovalSmsTemplate({ OrderId: state.orderId, Status: val })
-			.then((res) => {
-				smsTemplateList.value = res.result ?? [];
-				if (smsTemplateList.value.length) {
-					// 默认选中第一条
-					state.ruleForm.smsTemplateId = smsTemplateList.value[0].id;
-				}
-				loading.value = false;
-			})
-			.catch((e) => {
-				console.log(e);
-				smsTemplateList.value = [];
-				loading.value = false;
-			});
-	} else {
-		smsTemplateList.value = [];
-	}
+const selectStatus = () => {
+	ruleFormRef.value?.resetFields('auditTypeId');
+};
+// 选择审批类型
+const selectType = (val:any) => {
+  const item = auditType.value.find((item:any) => item.dicDataValue === val);
+  console.log(item,'11');
 };
 // 保存
 const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
@@ -157,6 +160,8 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 		const request = {
 			...state.ruleForm,
 		};
+    console.log(request,'22');
+    return;
 		specialRedEnvelopeApproval(request)
 			.then(() => {
 				loading.value = false;

+ 1 - 1
src/views/snapshot/reAudit/special.vue

@@ -259,7 +259,7 @@ const gridOptions = reactive<any>({
 			width: 120,
 		},
 		{
-			field: 'replenishAmount',
+			field: 'awardName',
 			title: '补发姓名',
 			width: 140,
 		},

+ 6 - 6
src/views/todo/seats/accept/History.vue

@@ -34,15 +34,15 @@
 		id="orderAcceptHistory"
 	>
 		<vxe-column field="no" title="工单编码" width="140"></vxe-column>
-		<vxe-column field="currentStepName" title="当前节点" width="100"></vxe-column>
-		<vxe-column field="isScreen" title="甄别状态" width="100">
+		<vxe-column field="title" title="工单标题" min-width="150">
 			<template #default="{ row }">
-				<el-text :type="row.isScreen ? 'danger' : 'info'">{{ row.isScreen ? '已甄别' : '-' }}</el-text>
+				<order-detail :order="row" @updateList="searchHistory">{{ row.title }}</order-detail>
 			</template>
 		</vxe-column>
-		<vxe-column field="title" title="工单标题" min-width="150">
+		<vxe-column field="currentStepName" title="当前节点" width="100"></vxe-column>
+		<vxe-column field="isScreen" title="甄别状态" width="100">
 			<template #default="{ row }">
-				<order-detail :order="row" @updateList="searchHistory">{{ row.title }}</order-detail>
+				<el-text :type="row.isScreen ? 'danger' : 'info'">{{ row.isScreen ? '已甄别' : '-' }}</el-text>
 			</template>
 		</vxe-column>
 		<vxe-column field="statusText" title="状态" width="100"></vxe-column>
@@ -125,7 +125,7 @@ const searchHistory = throttle(async () => {
 		state.total = response?.result.total;
 		state.loading = false;
 	} catch (error) {
-    console.log(error)
+		console.log(error);
 		state.loading = false;
 	}
 }, 300);

+ 2 - 2
src/views/todo/seats/accept/ybAccept.vue

@@ -2,7 +2,7 @@
 	<div class="order-add-container layout-padding">
 		<el-row :gutter="10" class="h100">
 			<!--  左侧语音助手  -->
-			<el-col :span="6" class="left-content h100">
+			<el-col :span="5" class="left-content h100">
 				<el-scrollbar class="h100">
 					<el-card shadow="never">
 						<div class="flex-center-between pb10">
@@ -471,7 +471,7 @@
 				</el-scrollbar>
 			</el-col>
 			<!-- 右侧内容 -->
-			<el-col :span="6" class="right-content h100">
+			<el-col :span="7" class="right-content h100">
 				<el-scrollbar class="h100">
 					<el-card shadow="never">
 						<el-tabs v-model="rightActive" @tab-change="handleRight" stretch>