Эх сурвалжийг харах

fix:流程提交期满时间调整;

zhangchong 1 жил өмнө
parent
commit
cb1c5e3126

+ 1 - 1
src/components/ProcessTimeLine/index.vue

@@ -67,7 +67,7 @@
 						</div>
 						<div class="flex1">
 							<p class="flex1-title">办理期限</p>
-							<p class="flex1-inner">{{ formatDate(item.timeLimit, 'YYYY-mm-dd HH:MM:SS') }}</p>
+							<p class="flex1-inner">{{ formatDate(item.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</p>
 						</div>
 					</div>
 					<div class="opinion" v-if="item.opinion">

+ 7 - 6
src/layout/navBars/breadcrumb/telControl.vue

@@ -266,6 +266,7 @@
 		:width="AppConfigInfo.isRestApproval ? '60%' : '500px'"
 		@mouseup="mouseup"
 		:style="'transform: ' + state.transform + ';'"
+    @opend="restFormOpened"
 	>
 		<!-- 需要审核 -->
 		<template v-if="AppConfigInfo.isRestApproval">
@@ -318,11 +319,6 @@
 							<el-checkbox v-model="state.restForm.acceptSms" label="短信通知" />
 						</el-form-item>
 					</el-col> -->
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label="期满时间" prop="expiredTime" :rules="[{ required: true, message: '请选择期满时间', trigger: 'change' }]">
-              <el-date-picker v-model="state.restForm.expiredTime" type="datetime" placeholder="请选择期满时间" value-format="YYYY-MM-DD[T]HH:mm:ss" class="w100" />
-            </el-form-item>
-          </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
             <el-form-item label="是否发起会签" prop="isStartCountersign" :rules="[{ required: false, message: '请选择是否发起会签', trigger: 'change' }]">
               <el-switch v-model="state.restForm.isStartCountersign" inline-prompt active-text="是" inactive-text="否" />
@@ -569,7 +565,7 @@ const RestApplyPassFn = (data: any) => {
 // 链接websocket
 const initWebsocket = () => {
   if(!userInfos.value.staffNo){
-    ElMessage.warning('账号暂无工号,请设置工号');
+    ElMessage.warning('账号暂无工号,请设置工号后重新登录后重试');
     return;
   }
   let telNo:string|number;
@@ -824,6 +820,11 @@ const onRest = async () => {
 	state.restReasonOptions = response.result;
 	state.showRestDialog = true;
 };
+// 打开弹窗清空表单
+const restFormOpened = () => {
+  restFormRef.value?.resetFields();
+  restFormRef.value?.clearValidate();
+};
 // 小休流程选择下一个环节
 const selectNextStep = (val: any) => {
 	const next = state.nextStepOptions.find((item: any) => item.key === val);

+ 33 - 14
src/views/business/order/accept/orderAdd.vue

@@ -196,7 +196,7 @@
 								<el-form-item label="" prop="acceptSms"
 									:rules="[{ required: false, message: '请选择', trigger: 'change' }]">
 									<el-checkbox v-model="state.ruleForm.acceptSms" label="受理短信" />
-                  <el-checkbox v-model="state.ruleForm.needContact" label="是否保密" />
+                  <el-checkbox v-model="state.ruleForm.isSecret" label="是否保密" />
 								</el-form-item>
 							</el-col>
 							<!-- 当“来电/信人身份”为“企业”时必填 -->
@@ -537,19 +537,38 @@ const state = reactive<any>({
 	createBy: 'manual', // 工单创建方式 默认手动创建  tel:来电弹单  letter:互联网来信 默认表示手动创建
 	activeName: 'first', // tabs
 	ruleForm: {
-		// 表单
-		street: '',//街道
-		transferPhone: '',//转接电话
-		employeeName: '',//员工姓名
-		employeeStaffNo: '',//员工工号
-		duplicateTitle: '',//重复工单标题
-		duplicateId: '',//重复工单id
-		content: '', // 工单内容
-		licenceTypeCode: '', // 证件类型
-		acceptSms: false, // 是否接收短信
-    isSecret:false, //是否保密
-		fromPhone: '', // 来电号码
-		fromGender: '',// 来电人性别
+    channel: '', // 来源频道
+    transferPhone: '', // 转接来源
+    fromPhone: '', // 来电号码
+    employeeName: '', // 员工姓名
+    employeeStaffNo: '', // 员工工号
+    fromName: '', // 来电人姓名
+    fromGender: 1, // 来电人性别 默认先生
+    identityType: 1, // 来电/信人身份 默认市民
+    licenceType:'', // 证件类型
+    licenceTypeCode: '', // 证件类型code
+    licenceNo: '', // 证件号码
+    ageRange: '', // 年龄段
+    ageRangeCode: '', // 年龄段code
+    contact: '', // 联系电话
+    acceptSms: false, // 是否接收短信 默认false
+    isSecret: false, // 是否保密 默认false
+    company: '', // 工作单位
+    no: '', // 工单编号
+    title: '', // 工单标题
+    orderType: 0, // 工单类型 默认通用工单
+    acceptType: '', // 受理类型
+    emergencyLevel: 1, // 紧急程度 默认一般
+    hotspotId: '', // 热点问题
+    incidentTime: '', // 事件发生时间
+    areaCode: '', // 区域编码
+    street: '', // 街道
+    isRepeat: 'false', // 是否重复工单 默认否
+    duplicateId: '',//重复工单id
+    duplicateTitle: '', // 重复工单标题
+    pushType: '', // 推送类型
+    pushTypeCode: '', // 推送类型code
+    content: '', // 工单内容
 	},
 	formLoading: false, // 表单加载状态
 	historyOrderLoading: false, // 历史工单加载状态

+ 32 - 13
src/views/business/order/accept/orderEdit.vue

@@ -578,19 +578,38 @@ const state = reactive<any>({
 	createFrom: 'manual', // 工单创建方式 默认手动创建  tel:来电弹单  letter:互联网来信 默认表示手动创建
 	activeName: 'first', // tabs
 	ruleForm: {
-		// 表单
-		street: '', //街道
-		transferPhone: '', //转接电话
-		employeeName: '', //员工姓名
-		employeeStaffNo: '', //员工工号
-		duplicateTitle: '', //重复工单标题
-		duplicateId: '', //重复工单id
-		content: '', // 工单内容
-		licenceTypeCode: '', // 证件类型
-		acceptSms: false, // 是否接收短信
-		isSecret: false, //是否保密
-		fromPhone: '', // 来电号码
-		fromGender: '', // 来电人性别
+    channel: '', // 来源频道
+    transferPhone: '', // 转接来源
+    fromPhone: '', // 来电号码
+    employeeName: '', // 员工姓名
+    employeeStaffNo: '', // 员工工号
+    fromName: '', // 来电人姓名
+    fromGender: 1, // 来电人性别 默认先生
+    identityType: 1, // 来电/信人身份 默认市民
+    licenceType:'', // 证件类型
+    licenceTypeCode: '', // 证件类型code
+    licenceNo: '', // 证件号码
+    ageRange: '', // 年龄段
+    ageRangeCode: '', // 年龄段code
+    contact: '', // 联系电话
+    acceptSms: false, // 是否接收短信 默认false
+    isSecret: false, // 是否保密 默认false
+    company: '', // 工作单位
+    no: '', // 工单编号
+    title: '', // 工单标题
+    orderType: 0, // 工单类型 默认通用工单
+    acceptType: '', // 受理类型
+    emergencyLevel: 1, // 紧急程度 默认一般
+    hotspotId: '', // 热点问题
+    incidentTime: '', // 事件发生时间
+    areaCode: '', // 区域编码
+    street: '', // 街道
+    isRepeat: 'false', // 是否重复工单 默认否
+    duplicateId: '',//重复工单id
+    duplicateTitle: '', // 重复工单标题
+    pushType: '', // 推送类型
+    pushTypeCode: '', // 推送类型code
+    content: '', // 工单内容
 	},
 	formLoading: false, // 表单加载状态
 	historyOrderLoading: false, // 历史工单加载状态

+ 2 - 2
src/views/business/order/components/Order-detail.vue

@@ -121,7 +121,7 @@
 								<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" v-if="state.ruleForm.incidentTime">
 									<el-form-item label="事发时间"> {{ formatDate(state.ruleForm.incidentTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
 								</el-col>
-								<el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16">
+								<el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16" v-if="state.ruleForm.address">
 									<el-form-item label="事发地址"> {{ state.ruleForm.address }} </el-form-item>
 								</el-col>
 								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
@@ -448,7 +448,7 @@ const onRecord = () => {
 };
 // 办理 下一步
 const onSubmit = throttle((val: string, type?: string) => {
-	OrderProcessRef.value.openDialog({ id: state.ruleForm.workflowId, title: val, processType: type, commonEnum: commonEnum.OrderCirculation,expiredTime:state.ruleForm.expiredTime });
+	OrderProcessRef.value.openDialog({ id: state.ruleForm.workflowId, title: val, processType: type, commonEnum: commonEnum.OrderCirculation});
 }, 1000);
 // 流程提交成功
 const orderProcessSuccess = () => {

+ 14 - 6
src/views/business/order/components/Order-process.vue

@@ -9,6 +9,7 @@
 			:style="'transform: ' + state.transform + ';'"
 			append-to-body
 			destroy-on-close
+      @opened="opened"
 		>
 			<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef">
 				<el-row :gutter="35">
@@ -49,12 +50,13 @@
 							<el-checkbox v-model="state.ruleForm.acceptSms" label="短信通知" />
 						</el-form-item>
 					</el-col> -->
-          <!--  办理流程和开始流程展示期满时间和是否发起会签  -->
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next','start'].includes(state.processType)">
+          <!--  办理流程展示期满时间  -->
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next'].includes(state.processType)">
             <el-form-item label="期满时间" prop="expiredTime" :rules="[{ required: true, message: '请选择期满时间', trigger: 'change' }]">
               <el-date-picker v-model="state.ruleForm.expiredTime" type="datetime" placeholder="请选择期满时间" value-format="YYYY-MM-DD[T]HH:mm:ss" class="w100" />
             </el-form-item>
           </el-col>
+          <!--  办理流程和开始流程是否发起会签  -->
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next','start'].includes(state.processType)">
             <el-form-item label="是否发起会签" prop="isStartCountersign" :rules="[{ required: false, message: '请选择是否发起会签', trigger: 'change' }]">
               <el-switch v-model="state.ruleForm.isStartCountersign" inline-prompt active-text="是" inactive-text="否" />
@@ -130,14 +132,11 @@ const ruleFormRef = ref<RefType>();
 const dialogRef = ref<RefType>();
 // 打开弹窗
 const openDialog = async (val: any) => {
-	console.log(val);
-	ruleFormRef.value?.clearValidate();
-	ruleFormRef.value?.resetFields();
+
 	state.processType = val.processType ?? 'next'; // 流程状态
 	state.ruleForm.workflowId = state.workflowId = val.id ?? ''; // 流程id
 	state.commonEnum = val.commonEnum ?? ''; // 常用意见类型
 	state.title = val.title ?? '提交流程'; // 流程标题
-  state.ruleForm.expiredTime = val.expiredTime ?? ''; // 期满时间
 	let res: any = {};
 	switch (state.processType) {
 		case 'start': //开始流程
@@ -163,6 +162,7 @@ const openDialog = async (val: any) => {
 		case 'next': // 默认下一流程
 			res = await workflowNextSteps(state.workflowId);
 			state.nextStepOptions = res.result.steps;
+      state.ruleForm.expiredTime = res.result?.expiredTime ?? '';
 			state.handleId = res.result.id;
 			if (state.nextStepOptions.length === 1) {
 				state.ruleForm.nextStepCode = state.nextStepOptions[0].key;
@@ -172,6 +172,7 @@ const openDialog = async (val: any) => {
     case 'delay': // 延期
       res = await workflowNextSteps(state.workflowId);
       state.nextStepOptions = res.result.steps;
+      state.ruleForm.expiredTime = res.result?.expiredTime ?? '';
       state.handleId = res.result.id;
       if (state.nextStepOptions.length === 1) {
         state.ruleForm.nextStepCode = state.nextStepOptions[0].key;
@@ -181,6 +182,7 @@ const openDialog = async (val: any) => {
     case 'supervise': // 督办
       res = await workflowNextSteps(state.workflowId);
       state.nextStepOptions = res.result.steps;
+      state.ruleForm.expiredTime = res.result?.expiredTime ?? '';
       state.handleId = res.result.id;
       if (state.nextStepOptions.length === 1) {
         state.ruleForm.nextStepCode = state.nextStepOptions[0].key;
@@ -191,6 +193,7 @@ const openDialog = async (val: any) => {
 		default: // 默认下一流程
 			res = await workflowNextSteps(state.workflowId);
 			state.nextStepOptions = res.result.steps;
+      state.ruleForm.expiredTime = res.result?.expiredTime ?? '';
 			state.handleId = res.result.id;
 			if (state.nextStepOptions.length === 1) {
 				state.ruleForm.nextStepCode = state.nextStepOptions[0].key;
@@ -200,6 +203,11 @@ const openDialog = async (val: any) => {
 	}
 	state.isShowDialog = true;
 };
+// 打开弹窗清空表单
+const opened = () => {
+  ruleFormRef.value?.clearValidate();
+  ruleFormRef.value?.resetFields();
+};
 // 流程选择下一环节
 const selectNextStep = (val: any) => {
 	ruleFormRef.value?.resetFields('nextHandlers');

+ 13 - 9
src/views/knowledge/component/Knowledge-process.vue

@@ -8,8 +8,9 @@
 			@mouseup="mouseup"
 			:style="'transform: ' + state.transform + ';'"
 			append-to-body
+      @opened="opened"
 		>
-			<el-form :model="state.ruleForm" label-width="90px" ref="ruleFormRef">
+			<el-form :model="state.ruleForm" label-width="100px" ref="ruleFormRef">
 				<el-row :gutter="35">
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 						<el-form-item label="下一环节" prop="nextStepCode" :rules="[{ required: true, message: '请选择下一环节', trigger: 'change' }]">
@@ -52,13 +53,14 @@
 								<el-checkbox v-model="state.ruleForm.acceptSms" label="短信通知" />
 							</el-form-item>
 						</el-col> -->
-          <!--  办理流程和开始展示期满时间和是否发起会签  -->
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next','addStart',''].includes(state.processType)">
+          <!--  办理流程展示期满时间  -->
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next'].includes(state.processType)">
             <el-form-item label="期满时间" prop="expiredTime" :rules="[{ required: true, message: '请选择期满时间', trigger: 'change' }]">
               <el-date-picker v-model="state.ruleForm.expiredTime" type="datetime" placeholder="请选择期满时间" value-format="YYYY-MM-DD[T]HH:mm:ss" class="w100" />
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next','addStart'].includes(state.processType)">
+          <!-- 办理流程和开始流程是否发起会签 -->
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" v-if="['next','addStart','deleteStart'].includes(state.processType)">
             <el-form-item label="是否发起会签" prop="isStartCountersign" :rules="[{ required: false, message: '请选择是否发起会签', trigger: 'change' }]">
               <el-switch v-model="state.ruleForm.isStartCountersign" inline-prompt active-text="是" inactive-text="否" />
             </el-form-item>
@@ -140,13 +142,9 @@ const dialogRef = ref<RefType>();
 // 打开弹窗
 const openDialog = async (val: any) => {
 	console.log(val);
-
-	ruleFormRef.value?.clearValidate();
-	ruleFormRef.value?.resetFields();
 	state.processType = val.processType ?? 'next'; // 流程状态
 	state.workflowId = val.id ?? ''; // 流程id
 	state.commonEnum = val.commonEnum ?? ''; // 常用意见类型
-  state.expiredTime = val.expiredTime ?? ''; // 期满时间
 	state.title = val.title ?? '提交流程'; // 流程标题
 	let res: any = {};
 	switch (state.processType) {
@@ -183,6 +181,7 @@ const openDialog = async (val: any) => {
 		case 'next': // 默认下一流程
 			res = await workflowNextSteps(state.workflowId);
 			state.ruleForm.workflowId = state.workflowId;
+      state.ruleForm. expiredTime = res.result?.expiredTime ?? '';
 			state.nextStepOptions = res.result.steps;
 			state.handleId = res.result.id;
 			if (state.nextStepOptions.length === 1) {
@@ -190,10 +189,10 @@ const openDialog = async (val: any) => {
 				await getNextStepOption(res.result.id, state.nextStepOptions[0].key);
 			}
 			break;
-
 		default: // 默认下一流程
 			res = await workflowNextSteps(state.workflowId);
 			state.ruleForm.workflowId = state.workflowId;
+      state.ruleForm.expiredTime = res.result?.expiredTime ?? '';
 			state.nextStepOptions = res.result.steps;
 			state.handleId = res.result.id;
 			if (state.nextStepOptions.length === 1) {
@@ -204,6 +203,11 @@ const openDialog = async (val: any) => {
 	}
 	state.isShowDialog = true;
 };
+// 打开弹窗清空表单
+const opened = () => {
+  ruleFormRef.value?.clearValidate();
+  ruleFormRef.value?.resetFields();
+};
 // 流程选择下一个环节
 const selectNextStep = (val: any) => {
 	ruleFormRef.value?.resetFields('nextHandlers');

+ 1 - 2
src/views/knowledge/knowledge/component/knowledge-edit.vue

@@ -215,8 +215,7 @@ const getKnowledgeList = () => {
 const handleOperation = async (submitObj: any, operation: Function) => {
 	await operation(submitObj).then((res: any) => {
 		const id = res.result || submitObj.id;
-    const expiredTime = submitObj.expiredTime ?? '';
-		KnowledgeProcessRef.value.openDialog({ id, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart',expiredTime });
+		KnowledgeProcessRef.value.openDialog({ id, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
 	});
 };
 const onSubmitReview = async (formEl: FormInstance | undefined) => {

+ 1 - 1
src/views/knowledge/knowledge/index.vue

@@ -618,7 +618,7 @@ const onRecall = (row: any) => {
 };
 // 删除知识
 const onRowDel = (row: any) => {
-	knowledgeProcessRef.value.openDialog({ id: row.id, title: '删除知识', commonEnum: commonEnum.Seat, processType: 'deleteStart',expiredTime:row.expiredTime });
+	knowledgeProcessRef.value.openDialog({ id: row.id, title: '删除知识', commonEnum: commonEnum.Seat, processType: 'deleteStart' });
 };
 // 页面基础数据
 const getBaseData = async () => {

+ 24 - 31
src/views/system/config/workflow/index.vue

@@ -12,12 +12,17 @@
 						:inline="true"
 						@submit.native.prevent
 						class="mt15"
-						v-show="state.activeName === '2'"
+            v-if="['1','2'].includes(state.activeName)"
 					>
 						<el-form-item label="关键字查询" prop="Keyword">
-							<el-input v-model="state.queryParams.Keyword" placeholder="流程标题/流程ID" style="width: 300px" clearable @keyup.enter="queryList" />
+							<el-input v-model="state.queryParams.Keyword" :placeholder="state.activeName ==='1' ? '模板名称/模板编码' : '流程标题/流程ID'" clearable @keyup.enter="queryList" />
 						</el-form-item>
-						<el-form-item label="业务模块" prop="ModuleCode">
+            <el-form-item label="模板状态" prop="Status"  v-if="state.activeName === '1'">
+              <el-select v-model="state.queryParams.Status" class="w100" placeholder="请选择模板状态" v-show="state.activeName === '1'">
+                <el-option v-for="item in state.statusList" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+						<el-form-item label="业务模块" prop="ModuleCode"  v-if="state.activeName === '2'">
 							<el-select v-model="state.queryParams.ModuleCode" class="w100" placeholder="请选择业务模块">
 								<el-option v-for="item in state.moduleOptions" :key="item.key" :label="item.value" :value="item.key" />
 							</el-select>
@@ -183,36 +188,24 @@ import {
 const WorkflowJump = defineAsyncComponent(() => import('/@/views/system/config/workflow/component/Workflow-jump.vue'));
 const WorkflowConfig = defineAsyncComponent(() => import('/@/views/system/config/workflow/component/Workflow-config.vue'));
 
-// 定义接口来定义对象的类型
-interface QueryState {
-	activeName: string;
-	queryParams: {
-		PageIndex: number;
-		PageSize: number;
-		Keyword: string;
-		ModuleCode: string;
-	};
-	tableList: Array<any>;
-	loading: boolean;
-	total: number;
-	multipleSelection: Array<any>;
-	moduleOptions: Array<any>;
-}
-
 // 定义变量内容
-const state = reactive(<QueryState>{
-	activeName: '0',
-	queryParams: {
-		PageIndex: 1,
-		PageSize: 10,
-		Keyword: '',
-		ModuleCode: '',
+const state = reactive(<any>{
+	activeName: '0', // 0:模板 1:实例 2:历史
+	queryParams: { // 查询参数
+		PageIndex: 1, // 当前页
+		PageSize: 10, // 每页条数
+		Keyword: '',// 关键字
+		ModuleCode: '', // 模块编码
 	},
-	tableList: [],
-	loading: false,
-	total: 0,
-	multipleSelection: [],
-	moduleOptions: [],
+	tableList: [], // 表格数据
+	loading: false, // 加载状态
+	total: 0, // 总条数
+	multipleSelection: [], // 多选
+	moduleOptions: [], // 模块下拉
+  statusList:[ // 状态下拉
+    {label:'启用',value:'1'},
+    {label:'草稿',value:'0'},
+  ]
 });
 
 const ruleFormRef = ref<FormInstance>();

+ 1 - 2
src/views/tels/restApply/index.vue

@@ -182,8 +182,7 @@ const resetQuery = debounce((formEl: FormInstance | undefined) => {
 }, 300);
 // 办理 下一步
 const onSubmit = debounce((row: any, title: string, type?: string) => {
-  const expiredTime = row.expiredTime ?? '';
-	processRef.value.openDialog({ id: row.workflowId, title, processType: type, commonEnum: commonEnum.OrderCirculation,expiredTime });
+	processRef.value.openDialog({ id: row.workflowId, title, processType: type, commonEnum: commonEnum.OrderCirculation });
 }, 1000);
 // 审核记录
 const onRecord = (row: any) => {