Forráskód Böngészése

reactor:失效时间限制为今天以后;工单列表,工单待办取消新建工单按钮,新建工单现只存在与工单坐席待办;

zhangchong 1 éve
szülő
commit
bf1ee4d120

+ 1 - 1
src/App.vue

@@ -151,4 +151,4 @@ watch(
 		deep: true,
 	}
 );
-</script>
+</script>

+ 6 - 0
src/theme/app.scss

@@ -454,4 +454,10 @@ li {
 	.el-form-item{
 		margin-bottom: 5px;
 	}
+}
+/* 失效时间隐藏此刻选项 */
+.no-atTheMoment {
+	.el-button.is-text{
+		display: none !important;
+	}
 }

+ 5 - 0
src/utils/constants.ts

@@ -105,3 +105,8 @@ export const commonEnum = {
     ReturnVisit: 12,
     Delay: 13,
 };
+
+// 限制日期选择最大时间
+export const disabledDate = (time: Date) => {
+    return time.getTime() < new Date().getTime();
+};

+ 6 - 7
src/views/auxiliary/notice/component/Notice-add.vue

@@ -42,7 +42,8 @@
 								placeholder="请选择失效时间"
 								value-format="YYYY-MM-DD[T]HH:mm:ss"
 								class="w100"
-								:disabled-date="disabledDate"
+                :disabled-date="disabledDate"
+                popper-class="no-atTheMoment"
 							/>
 						</el-form-item>
 					</el-col>
@@ -167,7 +168,8 @@
 								placeholder="请选择失效时间"
 								value-format="YYYY-MM-DD[T]HH:mm:ss"
 								class="w100"
-								:disabled-date="disabledDate"
+                :disabled-date="disabledDate"
+                popper-class="no-atTheMoment"
 							/>
 						</el-form-item>
 					</el-col>
@@ -213,9 +215,10 @@
 <script setup lang="ts" name="noticeDetail">
 import { reactive, ref, defineAsyncComponent, computed } from 'vue';
 import '@wangeditor/editor/dist/css/style.css'; // 引入 css
-import { bulletinAdd, bulletinAddBaseData, bulletinDetail, circularAdd, circularAddBaseData, getAllUsers } from '/@/api/auxiliary/notice';
+import { bulletinAdd, bulletinAddBaseData, circularAdd, circularAddBaseData, getAllUsers } from '/@/api/auxiliary/notice';
 import { throttle } from '/@/utils/tools';
 import { ElMessage, FormInstance } from 'element-plus';
+import {disabledDate} from "/@/utils/constants";
 // 引入组件
 const Editor = defineAsyncComponent(() => import('/@/components/Editor/index.vue')); // 富文本编辑器
 // 定义子组件向父组件传值/事件
@@ -281,10 +284,6 @@ const openDialog = async (type: string) => {
 			break;
 	}
 };
-// 通知公告是失效时间必须大于当前时间
-const disabledDate = (time: Date) => {
-	return time.getTime() <= Date.now();
-};
 const orgRef = ref<RefType>(); //来源单位
 const changeOrg = () => {
 	const currentNode = orgRef.value.getCheckedNodes();

+ 29 - 30
src/views/auxiliary/notice/component/Notice-edit.vue

@@ -43,6 +43,7 @@
 								value-format="YYYY-MM-DD[T]HH:mm:ss"
 								class="w100"
 								:disabled-date="disabledDate"
+                popper-class="no-atTheMoment"
 							/>
 						</el-form-item>
 					</el-col>
@@ -150,6 +151,7 @@
 								value-format="YYYY-MM-DD[T]HH:mm:ss"
 								class="w100"
 								:disabled-date="disabledDate"
+                popper-class="no-atTheMoment"
 							/>
 						</el-form-item>
 					</el-col>
@@ -196,16 +198,17 @@
 import { reactive, ref, defineAsyncComponent, computed } from 'vue';
 import '@wangeditor/editor/dist/css/style.css'; // 引入 css
 import {
-  bulletinAdd,
-  bulletinAddBaseData,
-  bulletinDetail,
-  circularUpdate,
-  circularAddBaseData,
-  circularDetail,
-  getAllUsers, bulletinUpdate,
+	bulletinAddBaseData,
+	bulletinDetail,
+	circularUpdate,
+	circularAddBaseData,
+	circularDetail,
+	getAllUsers,
+	bulletinUpdate,
 } from '/@/api/auxiliary/notice';
 import { throttle } from '/@/utils/tools';
 import { ElMessage, FormInstance } from 'element-plus';
+import { disabledDate } from '/@/utils/constants';
 // 引入组件
 const Editor = defineAsyncComponent(() => import('/@/components/Editor/index.vue')); // 富文本编辑器
 // 定义子组件向父组件传值/事件
@@ -286,26 +289,26 @@ const openDialog = async (row: any, type: string) => {
 			break;
 		case '编辑公告':
 			try {
-				const [responseAnnounce,bulletinDetailResponse] = await Promise.all([bulletinAddBaseData(), bulletinDetail(row.id)]);
+				const [responseAnnounce, bulletinDetailResponse] = await Promise.all([bulletinAddBaseData(), bulletinDetail(row.id)]);
 				bulletinTypeOptions.value = responseAnnounce.result?.bulletinType ?? [];
 				pushRangesOptions.value = responseAnnounce.result?.pushRanges ?? [];
 				orgsOptions.value = responseAnnounce.result?.orgsOptions ?? [];
-        state.ruleForm = bulletinDetailResponse.result ?? {};
-        state.ruleForm.bulletinObj = {
-          dicDataValue: bulletinDetailResponse.result?.bulletinTypeId,
-          dicDataName: bulletinDetailResponse.result?.bulletinTypeName,
-        };
-        state.ruleForm.pushRangesArray = [];
-        const arrr = state.ruleForm.pushRanges.map((item: any) => {
-          return item.key
-        });
-        for(let i of arrr){
-          for(let j of pushRangesOptions.value){
-            if(i === j.dicDataValue){
-              state.ruleForm.pushRangesArray.push(j)
-            }
-          }
-        }
+				state.ruleForm = bulletinDetailResponse.result ?? {};
+				state.ruleForm.bulletinObj = {
+					dicDataValue: bulletinDetailResponse.result?.bulletinTypeId,
+					dicDataName: bulletinDetailResponse.result?.bulletinTypeName,
+				};
+				state.ruleForm.pushRangesArray = [];
+				const arrr = state.ruleForm.pushRanges.map((item: any) => {
+					return item.key;
+				});
+				for (let i of arrr) {
+					for (let j of pushRangesOptions.value) {
+						if (i === j.dicDataValue) {
+							state.ruleForm.pushRangesArray.push(j);
+						}
+					}
+				}
 				loading.value = false;
 			} catch (error) {
 				console.log(error);
@@ -314,10 +317,6 @@ const openDialog = async (row: any, type: string) => {
 			break;
 	}
 };
-// 通知公告是失效时间必须大于当前时间
-const disabledDate = (time: Date) => {
-	return time.getTime() <= Date.now();
-};
 const orgRef = ref<RefType>(); //来源单位
 const changeOrg = (type: string) => {
 	const currentNode = orgRef.value.getCheckedNodes();
@@ -430,7 +429,7 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
 					sourceOrgName: state.ruleForm.sourceOrgName,
 					pushRanges,
 				};
-        bulletinUpdate(bulletinRequest)
+				bulletinUpdate(bulletinRequest)
 					.then(() => {
 						ElMessage.success('操作成功');
 						emit('updateList');
@@ -450,7 +449,7 @@ const closeDialog = () => {
 	state.dialogVisible = false;
 };
 const close = () => {
-  ruleFormRef.value?.clearValidate();
+	ruleFormRef.value?.clearValidate();
 	ruleFormRef.value?.resetFields();
 };
 // 暴露变量

+ 115 - 91
src/views/business/order/index.vue

@@ -16,7 +16,16 @@
 					<transition name="el-zoom-in-top">
 						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
 							<el-form-item label="受理类型" prop="AcceptType">
-								<el-select v-model="state.queryParams.AcceptType" placeholder="请选择受理类型" multiple clearable class="w100">
+								<el-select
+									v-model="state.queryParams.AcceptType"
+									placeholder="请选择受理类型"
+									multiple
+									clearable
+									class="w100"
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
+								>
 									<el-option v-for="item in state.acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
 								</el-select>
 							</el-form-item>
@@ -25,7 +34,16 @@
 					<transition name="el-zoom-in-top">
 						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
 							<el-form-item label="来源渠道" prop="Channel">
-								<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" multiple clearable class="w100">
+								<el-select
+									v-model="state.queryParams.Channel"
+									placeholder="请选择来源渠道"
+									multiple
+									clearable
+									class="w100"
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
+								>
 									<el-option v-for="item in state.channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
 								</el-select>
 							</el-form-item>
@@ -48,6 +66,9 @@
 									:load="load"
 									node-key="id"
 									check-strictly
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
 								/>
 							</el-form-item>
 						</el-col>
@@ -59,13 +80,16 @@
 									:options="state.orgsOptions"
 									filterable
 									:show-all-levels="false"
-									:props="{ checkStrictly: true, value: 'id', label: 'orgName', emitPath: false, multiple: true }"
+									:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, multiple: true }"
 									placeholder="请选择所属部门"
 									clearable
 									class="w100"
 									v-model="state.queryParams.OrgCode"
 									ref="cascadeRef"
 									@change="getKnowledgeList"
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
 								>
 								</el-cascader>
 							</el-form-item>
@@ -105,7 +129,16 @@
 					<transition name="el-zoom-in-top">
 						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
 							<el-form-item label="紧急程度" prop="EmergencyLevel">
-								<el-select v-model="state.queryParams.EmergencyLevel" placeholder="请选择受理类型" multiple clearable class="w100">
+								<el-select
+									v-model="state.queryParams.EmergencyLevel"
+									placeholder="请选择受理类型"
+									multiple
+									clearable
+									class="w100"
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
+								>
 									<el-option v-for="item in state.emergencyLevelOptions" :value="item.key" :key="item.key" :label="item.value" />
 								</el-select>
 							</el-form-item>
@@ -147,7 +180,16 @@
 					<transition name="el-zoom-in-top">
 						<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-show="!searchCol">
 							<el-form-item label="工单状态" prop="Status">
-								<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" multiple clearable class="w100">
+								<el-select
+									v-model="state.queryParams.Status"
+									placeholder="请选择工单状态"
+									multiple
+									clearable
+									class="w100"
+									collapse-tags
+									collapse-tags-tooltip
+									:max-collapse-tags="2"
+								>
 									<el-option v-for="item in state.orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
 								</el-select>
 							</el-form-item>
@@ -173,19 +215,18 @@
 		<el-card shadow="never">
 			<!-- 功能按钮 -->
 			<div class="mb20">
-				<el-button type="primary" @click="onAddWorkOrder" v-auth="'business:order:add'"> <SvgIcon name="ele-Plus" class="mr5" />新建工单 </el-button>
 				<el-button type="primary" @click="onCreateRepeatEvent" v-auth="'business:repeatEvent:add'">
 					<SvgIcon name="ele-Plus" class="mr5" /> 创建重复性事件
 				</el-button>
 				<el-button type="primary" @click="onExport" v-auth="'business:order:export'" :disabled="!multipleSelection.length">
 					<SvgIcon name="iconfont icon-daochu" class="mr5" />导出
 				</el-button>
-        <el-button type="primary" @click="onObserve" v-auth="'business:order:observe'" :disabled="!multipleSelection.length">
-          <SvgIcon name="ele-View" class="mr5" />设置观察件
-        </el-button>
-        <el-button type="primary" @click="onEnd" v-auth="'business:order:end'" :disabled="!multipleSelection.length">
-          <SvgIcon name="ele-Stopwatch" class="mr5" />设置终结件
-        </el-button>
+				<el-button type="primary" @click="onObserve" v-auth="'business:order:observe'" :disabled="!multipleSelection.length">
+					<SvgIcon name="ele-View" class="mr5" />设置观察件
+				</el-button>
+				<el-button type="primary" @click="onEnd" v-auth="'business:order:end'" :disabled="!multipleSelection.length">
+					<SvgIcon name="ele-Stopwatch" class="mr5" />设置终结件
+				</el-button>
 			</div>
 			<!-- 表格 -->
 			<el-table
@@ -243,14 +284,7 @@
 				</el-table-column>
 				<el-table-column label="操作" width="80" fixed="right" align="center">
 					<template #default="{ row }">
-						<el-button
-							link
-							type="success"
-							@click="onOrderEdit(row)"
-							title="编辑工单"
-							v-if="row.canEdit"
-							v-auth="'business:order:edit'"
-						>
+						<el-button link type="success" @click="onOrderEdit(row)" title="编辑工单" v-if="row.canEdit" v-auth="'business:order:edit'">
 							修改
 						</el-button>
 						<el-button link type="primary" @click="onOrderDetail(row)" title="查看工单详情" v-auth="'business:order:detail'" v-else> 详情 </el-button>
@@ -270,23 +304,23 @@
 		</el-card>
 		<!-- 工单详情 -->
 		<order-detail ref="orderDetailRef" @updateList="queryList" />
-    <!-- 编辑重复性事件 -->
-    <repeat-event-edit ref="repeatEventEditRef" @updateList="queryList" />
+		<!-- 编辑重复性事件 -->
+		<repeat-event-edit ref="repeatEventEditRef" @updateList="queryList" />
 	</div>
 </template>
 <script setup lang="ts" name="order">
-import {defineAsyncComponent, onMounted, reactive, ref} from 'vue';
-import type {FormInstance} from 'element-plus';
-import {ElButton, ElMessage, ElMessageBox} from 'element-plus';
-import {throttle} from '/@/utils/tools';
-import {shortcuts} from '/@/utils/constants';
-import {auth} from '/@/utils/authFunction';
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import type { FormInstance } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox } from 'element-plus';
+import { throttle } from '/@/utils/tools';
+import { shortcuts } from '/@/utils/constants';
+import { auth } from '/@/utils/authFunction';
 import other from '/@/utils/other';
-import {useRoute, useRouter} from 'vue-router';
-import {formatDate} from '/@/utils/formatTime';
-import {hotSpotType, listBaseData, orderList} from '/@/api/business/order';
-import {addObserve} from "/@/api/query/observe";
-import {addEnd} from "/@/api/query/end";
+import { useRoute, useRouter } from 'vue-router';
+import { formatDate } from '/@/utils/formatTime';
+import { hotSpotType, listBaseData, orderList } from '/@/api/business/order';
+import { addObserve } from '/@/api/query/observe';
+import { addEnd } from '/@/api/query/end';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('/@/views/business/order/components/Order-detail.vue')); // 工单详情
@@ -431,71 +465,61 @@ const onExport = () => {
 	console.log('导出');
 };
 // 设置终结件
-const onObserve = ()=>{
-  const titles = multipleSelection.value.map((item: any) => item.title).join(',');
-  const ids = multipleSelection.value.map((item: any) => {
-    return {
-      orderId: item.id,
-    }
-  })
-  ElMessageBox.confirm(`确定要将【${titles}】设置观察件吗?`, '提示', {
-    confirmButtonText: '确定',
-    cancelButtonText: '取消',
-    type: 'warning',
-    draggable: true,
-    autofocus: false,
-  }).then(() => {
-    addObserve({orderIds:ids}).then(() => {
-      ElMessage.success('操作成功');
-      queryList()
-    })
-  }).catch(() => {
-
-  });
-}
+const onObserve = () => {
+	const titles = multipleSelection.value.map((item: any) => item.title).join(',');
+	const ids = multipleSelection.value.map((item: any) => {
+		return {
+			orderId: item.id,
+		};
+	});
+	ElMessageBox.confirm(`确定要将【${titles}】设置观察件吗?`, '提示', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		autofocus: false,
+	})
+		.then(() => {
+			addObserve({ orderIds: ids }).then(() => {
+				ElMessage.success('操作成功');
+				queryList();
+			});
+		})
+		.catch(() => {});
+};
 // 设置终结件
-const onEnd = ()=>{
-  const titles = multipleSelection.value.map((item: any) => item.title).join(',');
-  const ids = multipleSelection.value.map((item: any) => {
-    return {
-      orderId: item.id,
-    }
-  })
-  ElMessageBox.confirm(`确定要将【${titles}】设置终结件吗?`, '提示', {
-    confirmButtonText: '确定',
-    cancelButtonText: '取消',
-    type: 'warning',
-    draggable: true,
-    autofocus: false,
-  }).then(() => {
-    addEnd({orderIds:ids}).then(() => {
-      ElMessage.success('操作成功');
-      queryList()
-    })
-  }).catch(() => {
-
-  });
-}
+const onEnd = () => {
+	const titles = multipleSelection.value.map((item: any) => item.title).join(',');
+	const ids = multipleSelection.value.map((item: any) => {
+		return {
+			orderId: item.id,
+		};
+	});
+	ElMessageBox.confirm(`确定要将【${titles}】设置终结件吗?`, '提示', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		autofocus: false,
+	})
+		.then(() => {
+			addEnd({ orderIds: ids }).then(() => {
+				ElMessage.success('操作成功');
+				queryList();
+			});
+		})
+		.catch(() => {});
+};
 // 查看详情
 const orderDetailRef = ref<RefType>();
 const onOrderDetail = (row: any) => {
-  orderDetailRef.value.openDialog(row);
-};
-// 新增工单
-const onAddWorkOrder = () => {
-  // 跳转到录入工单页面
-  router.push({
-    name: 'orderAccept',
-    params: {
-      tagsViewName: '工单受理',
-    },
-  });
+	orderDetailRef.value.openDialog(row);
 };
 // 创建重复性事件
 const repeatEventEditRef = ref<RefType>();
-const onCreateRepeatEvent = ()=>{
-  repeatEventEditRef.value.openDialog();
-}
+const onCreateRepeatEvent = () => {
+	repeatEventEditRef.value.openDialog();
+};
 // 编辑工单
 const onOrderEdit = (row: any) => {
 	router.push({

+ 3 - 0
src/views/knowledge/index/edit.vue

@@ -52,6 +52,8 @@
 								placeholder="请选择失效时间"
 								class="w100"
 								value-format="YYYY-MM-DD[T]HH:mm:ss"
+                :disabled-date="disabledDate"
+                popper-class="no-atTheMoment"
 							/>
 						</el-form-item>
 					</el-col>
@@ -194,6 +196,7 @@ import { KnowledgeAdd, KnowledgeGetKnowledge, KnowledgeInfo, knowledgeTitle, Kno
 import { hotSpotType } from '/@/api/business/order';
 import { getCanUseOrg } from '/@/api/system/user';
 import { templateList } from '/@/views/knowledge/index/template';
+import {disabledDate} from "/@/utils/constants";
 // 引入组件
 const Editor = defineAsyncComponent(() => import('/@/components/Editor/index.vue')); // 富文本编辑器
 const ProcessAudit = defineAsyncComponent(() => import('/@/components/ProcessAudit/index.vue')); // 流程审批

+ 0 - 11
src/views/todo/order/index.vue

@@ -32,7 +32,6 @@
 			</el-form>
 			<!-- 功能按钮 -->
 			<div class="mb20">
-				<el-button type="primary" @click="onAddWorkOrder" v-auth="'todo:order:add'"> <SvgIcon name="ele-Plus" class="mr5" />新建工单 </el-button>
 				<el-button type="primary" @click="onExport" v-auth="'todo:order:export'" :disabled="!multipleSelection.length">
 					<SvgIcon name="iconfont icon-daochu" class="mr5" />导出
 				</el-button>
@@ -217,16 +216,6 @@ const resetQuery = throttle((formEl: FormInstance | undefined) => {
 	formEl.resetFields();
 	queryList();
 }, 300);
-// 新增工单
-const onAddWorkOrder = () => {
-	// 跳转到录入工单页面
-  router.push({
-    name: 'orderAccept',
-    params: {
-      tagsViewName: '工单受理',
-    },
-  });
-};
 // 表格多选
 const multipleTableRef = ref<RefType>();
 const multipleSelection = ref<any>([]);

+ 2 - 2
src/views/todo/seats/index.vue

@@ -32,7 +32,7 @@
 			</el-form>
 			<!-- 功能按钮 -->
 			<div class="mb20">
-				<el-button type="primary" @click="onAddWorkOrder" v-auth="'todo:order:add'"> <SvgIcon name="ele-Plus" class="mr5" />新建工单 </el-button>
+				<el-button type="primary" @click="onAddOrder" v-auth="'todo:seats:add'"> <SvgIcon name="ele-Plus" class="mr5" />新建工单 </el-button>
 				<el-button type="primary" @click="onExport" v-auth="'todo:order:export'" :disabled="!multipleSelection.length">
 					<SvgIcon name="iconfont icon-daochu" class="mr5" />导出
 				</el-button>
@@ -235,7 +235,7 @@ const resetQuery = throttle((formEl: FormInstance | undefined) => {
 	queryList();
 }, 300);
 // 新增工单
-const onAddWorkOrder = () => {
+const onAddOrder = () => {
 	// 跳转到录入工单页面
   router.push({
     name: 'orderAccept',