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

reactor:降级element-plus至2.4.x;(2.5.x)BUG太多啦;
reactor:首页调整工单待办和坐席工单待办并新增权限控制;首页数据根据中心和部门判断展示不同内容;

zhangchong 1 жил өмнө
parent
commit
112e8769b7

+ 1 - 1
package.json

@@ -23,7 +23,7 @@
 		"@wangeditor/editor-for-vue": "^5.1.12",
 		"axios": "^1.4.0",
 		"dayjs": "^1.11.9",
-		"element-plus": "^2.5.1",
+		"element-plus": "^2.4.4",
 		"js-cookie": "^3.0.1",
 		"jsencrypt": "^3.3.2",
 		"mitt": "^3.0.0",

+ 26 - 0
src/components/Auth/auth.vue

@@ -0,0 +1,26 @@
+<template>
+  <slot v-if="getUserAuthBtnList" />
+</template>
+
+<script setup lang="ts" name="auth">
+import { computed } from 'vue';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '@/stores/userInfo';
+
+// 定义父组件传过来的值
+const props = defineProps({
+  value: {
+    type: String,
+    default: () => '',
+  },
+});
+
+// 定义变量内容
+const stores = useUserInfo();
+const { userInfos } = storeToRefs(stores);
+
+// 获取 pinia 中的用户权限
+const getUserAuthBtnList = computed(() => {
+  return userInfos.value.authBtnList.some((v: string) => v === props.value);
+});
+</script>

+ 27 - 0
src/components/Auth/authAll.vue

@@ -0,0 +1,27 @@
+<template>
+  <slot v-if="getUserAuthBtnList" />
+</template>
+
+<script setup lang="ts" name="authAll">
+import { computed } from 'vue';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '@/stores/userInfo';
+import { judgementSameArr } from '@/utils/arrayOperation';
+
+// 定义父组件传过来的值
+const props = defineProps({
+  value: {
+    type: Array,
+    default: () => [],
+  },
+});
+
+// 定义变量内容
+const stores = useUserInfo();
+const { userInfos } = storeToRefs(stores);
+
+// 获取 pinia 中的用户权限
+const getUserAuthBtnList = computed(() => {
+  return judgementSameArr(props.value, userInfos.value.authBtnList);
+});
+</script>

+ 27 - 0
src/components/Auth/auths.vue

@@ -0,0 +1,27 @@
+<template>
+  <slot v-if="getUserAuthBtnList" />
+</template>
+
+<script setup lang="ts" name="authAll">
+import { computed } from 'vue';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '@/stores/userInfo';
+import { judgementSameArr } from '@/utils/arrayOperation';
+
+// 定义父组件传过来的值
+const props = defineProps({
+  value: {
+    type: Array,
+    default: () => [],
+  },
+});
+
+// 定义变量内容
+const stores = useUserInfo();
+const { userInfos } = storeToRefs(stores);
+
+// 获取 pinia 中的用户权限
+const getUserAuthBtnList = computed(() => {
+  return judgementSameArr(props.value, userInfos.value.authBtnList);
+});
+</script>

+ 22 - 1
src/components/OrderDetail/index.vue

@@ -415,6 +415,10 @@
 
 		<template #footer>
 			<span class="dialog-footer">
+				<!-- 有流程信息就可以查询明细 -->
+				<el-button type="primary" @click="onCloseCountersignature" :loading="state.loading" v-auth="'business:order:closeCountersignature'"
+					>结束会签</el-button
+				>
 				<!-- 有流程信息就可以查询明细 -->
 				<el-button type="primary" @click="onRecord" :loading="state.loading" v-if="state.ruleForm?.workflowId">流程明细</el-button>
 				<!-- 有流程信息就可以撤回 -->
@@ -523,7 +527,7 @@ import { defineAsyncComponent, PropType, reactive, ref } from 'vue';
 import { useRouter } from 'vue-router';
 import { throttle, transformFile } from '@/utils/tools';
 import { orderDetail } from '@/api/business/order';
-import { ElButton, ElMessage } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox } from 'element-plus';
 import { ola } from '@/utils/ola_api';
 import { formatDate } from '@/utils/formatTime';
 import Empty from '@/components/Empty/index.vue';
@@ -730,6 +734,7 @@ const onSupply = () => {
 // 补充意见提交成功
 const onSupplySuccess = () => {
 	handleClick(state.activeName);
+	emit('updateList');
 };
 // 撤销
 const orderRevokeRef = ref<RefType>(); // 工单撤销
@@ -771,6 +776,22 @@ const onSpecialHandleSuccess = () => {
 	handleClick(state.activeName);
 	emit('updateList');
 };
+// 结束会签
+const onCloseCountersignature = () => {
+	ElMessageBox.confirm(`当前工单正在会签中,是否确认结束会签?`, '提示', {
+		confirmButtonText: '结束会签',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+		autofocus: false,
+	})
+		.then(() => {
+			handleClick(state.activeName);
+			emit('updateList');
+		})
+		.catch(() => {});
+};
 // 暴露变量
 defineExpose({
 	openDialog,

+ 0 - 1
src/main.ts

@@ -23,5 +23,4 @@ other.elSvg(app);
 // 全局组件挂载
 app.component('Pagination', Pagination);
 app.component('Empty', Empty);
-
 app.use(pinia).use(router).use(ElementPlus).use(MotionPlugin).mount('#app');

+ 1 - 1
src/stores/userInfo.ts

@@ -76,7 +76,7 @@ export const useUserInfo = defineStore('userInfo', {
 					showTelControl: false, // 是否展示坐席操作电话面板
 					orgName:'', // 组织名称
 					roles: [], // 角色
-					isCenter: false, // 当前部门是否是中心
+					isCenter: false, // 当前部门是否是中心
 				}
 				Session.set('userInfo', this.userInfos);
 				return this.userInfos;

+ 2 - 6
src/theme/element.scss

@@ -342,14 +342,10 @@
 		white-space: nowrap;
 	}
 }
-/* 字体颜色
-------------------------------- */
-//.el-text{
-//	color: var(--el-text-color-primary);
-//}
-
 /* Select 选择器默认宽度
 ------------------------------- */
+/*
 .el-select {
 	--el-select-width: 220px;
 }
+*/

+ 137 - 135
src/views/business/visit/component/Visit-detail.vue

@@ -151,9 +151,9 @@
 									</template>
 									<!-- 部门评价 -->
 									<template v-if="item.visitTarget === 20">
-                    <el-divider content-position="left">
-                      <el-text tag="b" size="large"> {{ item.visitOrgName }} </el-text>
-                    </el-divider>
+										<el-divider content-position="left">
+											<el-text tag="b" size="large"> {{ item.visitOrgName }} </el-text>
+										</el-divider>
 										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
 											<el-form-item label="部门办件结果">
 												{{ item.orgProcessingResults?.dicDataName }}
@@ -188,145 +188,147 @@
 								<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
 									<el-form-item label="当前工单已回访次数" label-width="140px"> {{ visitCount }}次 </el-form-item>
 								</el-col>
-								<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+								<el-col :span="24">
 									<el-form-item label="回访标签" prop="isPutThrough" :rules="[{ required: false, message: '请选择回访标签', trigger: 'change' }]">
 										<el-checkbox v-model="state.ruleForm.isPutThrough">未接通</el-checkbox>
 									</el-form-item>
 								</el-col>
-								<el-row v-for="(item, index) in state.ruleForm.visitDetails" :key="item.id" :gutter="10">
-									<!-- 务员评价 -->
-									<template v-if="item.visitTarget === 10">
-										<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-											<el-form-item
-												label="语音评价"
-												:prop="`visitDetails.${index}.voiceEvaluate`"
-												:rules="[{ required: notGetThrough, message: '请选择语音评价', trigger: 'change' }]"
-											>
-												<el-radio-group v-model="item.voiceEvaluate">
-													<el-radio :label="item.key" v-for="item in viceEvaluate" :key="item.key">{{ item.value }}</el-radio>
-												</el-radio-group>
-											</el-form-item>
-										</el-col>
-										<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-											<el-form-item
-												label="话务员评价"
-												:prop="`visitDetails.${index}.seatEvaluate`"
-												:rules="[{ required: notGetThrough, message: '请选择话务员评价', trigger: 'change' }]"
-											>
-												<el-radio-group v-model="item.seatEvaluate">
-													<el-radio :label="item.key" v-for="item in seatEvaluate" :key="item.key">{{ item.value }}</el-radio>
-												</el-radio-group>
-											</el-form-item>
-										</el-col>
-										<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-											<el-form-item
-												label="话务员回访内容"
-												:prop="`visitDetails.${index}.visitContent`"
-												:rules="[{ required: notGetThrough, message: '请填写话务员回访内容', trigger: 'blur' }]"
-											>
-												<common-advice
-													@chooseAdvice="chooseAdvice($event, index)"
-													v-model="item.visitContent"
-													placeholder="请填写话务员回访内容"
-													:loading="state.loading"
-													:commonEnum="commonEnum.Seat"
-													:minRows="5"
-													:maxRows="10"
-													drawerWidth="40%"
-												/>
-											</el-form-item>
-										</el-col>
-									</template>
-									<!-- 部门评价 -->
-									<template v-if="item.visitTarget === 20">
-                    <el-divider content-position="left">
-                      <el-text tag="b" size="large"> {{ item.visitOrgName }} </el-text>
-                    </el-divider>
-										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
-											<el-form-item
-												label="部门办件结果"
-												:prop="`visitDetails.${index}.orgProcessingResults`"
-												:rules="[{ required: notGetThrough, message: '请选择部门办件结果', trigger: 'change' }]"
-											>
-												<el-select
-													v-model="item.orgProcessingResults"
-													placeholder="请选择部门办件结果"
-													class="w100"
-													value-key="dicDataValue"
-													@change="
-														(val) => {
-															item.orgProcessingResults.value = val.dicDataName;
-															item.orgProcessingResults.key = val.dicDataValue;
-														}
-													"
+								<el-col :span="24">
+									<el-row v-for="(item, index) in state.ruleForm.visitDetails" :key="item.id" :gutter="10">
+										<!-- 务员评价 -->
+										<template v-if="item.visitTarget === 10">
+											<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+												<el-form-item
+													label="语音评价"
+													:prop="`visitDetails.${index}.voiceEvaluate`"
+													:rules="[{ required: notGetThrough, message: '请选择语音评价', trigger: 'change' }]"
 												>
-													<el-option v-for="items in visitManner" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
-												</el-select>
-											</el-form-item>
-										</el-col>
-										<!-- 不满意才会选择不满意原因 -->
-										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="['1', '2'].includes(item.orgProcessingResults?.key)">
-											<el-form-item
-												label="不满意原因"
-												:prop="`visitDetails.${index}.orgNoSatisfiedReason`"
-												:rules="[{ required: notGetThrough, message: '请选择不满意原因', trigger: 'change' }]"
-											>
-												<el-select
-													v-model="item.orgNoSatisfiedReason"
-													placeholder="请选择不满意原因"
-													class="w100"
-													value-key="dicDataValue"
-													multiple
-													collapse-tags
-													collapse-tags-tooltip
-													@change="selectReason($event, index)"
+													<el-radio-group v-model="item.voiceEvaluate">
+														<el-radio :label="item.key" v-for="item in viceEvaluate" :key="item.key">{{ item.value }}</el-radio>
+													</el-radio-group>
+												</el-form-item>
+											</el-col>
+											<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+												<el-form-item
+													label="话务员评价"
+													:prop="`visitDetails.${index}.seatEvaluate`"
+													:rules="[{ required: notGetThrough, message: '请选择话务员评价', trigger: 'change' }]"
 												>
-													<el-option v-for="items in dissatisfiedReason" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
-												</el-select>
-											</el-form-item>
-										</el-col>
-										<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
-											<el-form-item
-												label="部门办件态度"
-												:prop="`visitDetails.${index}.orgHandledAttitude`"
-												:rules="[{ required: notGetThrough, message: '请选择部门办件态度', trigger: 'change' }]"
-											>
-												<el-select
-													v-model="item.orgHandledAttitude"
-													placeholder="请选择部门办件态度"
-													class="w100"
-													value-key="dicDataValue"
-													@change="
-														(val) => {
-															item.orgHandledAttitude.value = val.dicDataName;
-															item.orgHandledAttitude.key = val.dicDataValue;
-														}
-													"
+													<el-radio-group v-model="item.seatEvaluate">
+														<el-radio :label="item.key" v-for="item in seatEvaluate" :key="item.key">{{ item.value }}</el-radio>
+													</el-radio-group>
+												</el-form-item>
+											</el-col>
+											<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+												<el-form-item
+													label="话务员回访内容"
+													:prop="`visitDetails.${index}.visitContent`"
+													:rules="[{ required: notGetThrough, message: '请填写话务员回访内容', trigger: 'blur' }]"
 												>
-													<el-option v-for="items in visitSatisfaction" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
-												</el-select>
-											</el-form-item>
-										</el-col>
-										<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-											<el-form-item
-												label="部门回访内容"
-												:prop="`visitDetails.${index}.visitContent`"
-												:rules="[{ required: notGetThrough, message: '请填写部门回访内容', trigger: 'blur' }]"
-											>
-												<common-advice
-													@chooseAdvice="chooseAdvice($event, index)"
-													v-model="item.visitContent"
-													placeholder="请填写部门回访内容"
-													:loading="state.loading"
-													:commonEnum="commonEnum.Seat"
-													:minRows="5"
-													:maxRows="10"
-													drawerWidth="40%"
-												/>
-											</el-form-item>
-										</el-col>
-									</template>
-								</el-row>
+													<common-advice
+														@chooseAdvice="chooseAdvice($event, index)"
+														v-model="item.visitContent"
+														placeholder="请填写话务员回访内容"
+														:loading="state.loading"
+														:commonEnum="commonEnum.Seat"
+														:minRows="5"
+														:maxRows="10"
+														drawerWidth="40%"
+													/>
+												</el-form-item>
+											</el-col>
+										</template>
+										<!-- 部门评价 -->
+										<template v-if="item.visitTarget === 20">
+											<el-divider content-position="left">
+												<el-text tag="b" size="large"> {{ item.visitOrgName }} </el-text>
+											</el-divider>
+											<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+												<el-form-item
+													label="部门办件结果"
+													:prop="`visitDetails.${index}.orgProcessingResults`"
+													:rules="[{ required: notGetThrough, message: '请选择部门办件结果', trigger: 'change' }]"
+												>
+													<el-select
+														v-model="item.orgProcessingResults"
+														placeholder="请选择部门办件结果"
+														class="w100"
+														value-key="dicDataValue"
+														@change="
+															(val) => {
+																item.orgProcessingResults.value = val.dicDataName;
+																item.orgProcessingResults.key = val.dicDataValue;
+															}
+														"
+													>
+														<el-option v-for="items in visitManner" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
+													</el-select>
+												</el-form-item>
+											</el-col>
+											<!-- 不满意才会选择不满意原因 -->
+											<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="['1', '2'].includes(item.orgProcessingResults?.key)">
+												<el-form-item
+													label="不满意原因"
+													:prop="`visitDetails.${index}.orgNoSatisfiedReason`"
+													:rules="[{ required: notGetThrough, message: '请选择不满意原因', trigger: 'change' }]"
+												>
+													<el-select
+														v-model="item.orgNoSatisfiedReason"
+														placeholder="请选择不满意原因"
+														class="w100"
+														value-key="dicDataValue"
+														multiple
+														collapse-tags
+														collapse-tags-tooltip
+														@change="selectReason($event, index)"
+													>
+														<el-option v-for="items in dissatisfiedReason" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
+													</el-select>
+												</el-form-item>
+											</el-col>
+											<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+												<el-form-item
+													label="部门办件态度"
+													:prop="`visitDetails.${index}.orgHandledAttitude`"
+													:rules="[{ required: notGetThrough, message: '请选择部门办件态度', trigger: 'change' }]"
+												>
+													<el-select
+														v-model="item.orgHandledAttitude"
+														placeholder="请选择部门办件态度"
+														class="w100"
+														value-key="dicDataValue"
+														@change="
+															(val) => {
+																item.orgHandledAttitude.value = val.dicDataName;
+																item.orgHandledAttitude.key = val.dicDataValue;
+															}
+														"
+													>
+														<el-option v-for="items in visitSatisfaction" :key="items.dicDataValue" :label="items.dicDataName" :value="items" />
+													</el-select>
+												</el-form-item>
+											</el-col>
+											<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+												<el-form-item
+													label="部门回访内容"
+													:prop="`visitDetails.${index}.visitContent`"
+													:rules="[{ required: notGetThrough, message: '请填写部门回访内容', trigger: 'blur' }]"
+												>
+													<common-advice
+														@chooseAdvice="chooseAdvice($event, index)"
+														v-model="item.visitContent"
+														placeholder="请填写部门回访内容"
+														:loading="state.loading"
+														:commonEnum="commonEnum.Seat"
+														:minRows="5"
+														:maxRows="10"
+														drawerWidth="40%"
+													/>
+												</el-form-item>
+											</el-col>
+										</template>
+									</el-row>
+								</el-col>
 							</template>
 						</el-row>
 					</el-form>

+ 106 - 105
src/views/home/component/Numbers.vue

@@ -1,114 +1,115 @@
 <template>
-  <el-row :gutter="20">
-    <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
-        <div class="statistics-title">
-          <img v-lazy="getImageUrl('home/Call.png')" alt="" src="" />
-          今日来电
-        </div>
-        <div class="statistics-number">
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>520</b></p>
-            <p class="statistics-number-item-tips">全部</p>
-          </div>
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>200</b></p>
-            <p class="statistics-number-item-tips">有效</p>
-          </div>
-        </div>
-      </el-card>
-    </el-col>
-    <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
-        <div class="statistics-title">
-          <img v-lazy="getImageUrl('home/connectionRate.png')" alt="" src="" />
-          今日接通率
-        </div>
-        <div class="statistics-number">
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>198</b></p>
-            <p class="statistics-number-item-tips">接通</p>
-          </div>
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>90%</b></p>
-            <p class="statistics-number-item-tips">接通率</p>
-          </div>
-        </div>
-      </el-card>
-    </el-col>
-    <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
-        <div class="statistics-title">
-          <img v-lazy="getImageUrl('home/workOrder.png')" alt="" src="" />
-          今日受理工单
-        </div>
-        <div class="statistics-number">
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>980</b></p>
-            <p class="statistics-number-item-tips">受理工单量</p>
-          </div>
-          <div class="statistics-number-item">
-            <p class="statistics-number-item-number"><b>730</b></p>
-            <p class="statistics-number-item-tips">今日直办工单量</p>
-          </div>
-        </div>
-      </el-card>
-    </el-col>
-  </el-row>
+	<el-row :gutter="20">
+		<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+			<el-card shadow="never" v-loading="state.loading" class="statistics-item">
+				<div class="statistics-title">
+					<img v-lazy="getImageUrl('home/Call.png')" alt="" src="" />
+					{{ userInfos.isCenter ? '今日来电' : '今日待办' }}
+				</div>
+				<div class="statistics-number">
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>520</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '全部' : '我的' }}</p>
+					</div>
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>200</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '有效' : '部门' }}</p>
+					</div>
+				</div>
+			</el-card>
+		</el-col>
+		<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+			<el-card shadow="never" v-loading="state.loading" class="statistics-item">
+				<div class="statistics-title">
+					<img v-lazy="getImageUrl('home/connectionRate.png')" alt="" src="" />
+					{{ userInfos.isCenter ? '今日接通率' : '已办' }}
+				</div>
+				<div class="statistics-number">
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>198</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '接通' : '我的' }}</p>
+					</div>
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>90%</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '接通率' : '部门' }}</p>
+					</div>
+				</div>
+			</el-card>
+		</el-col>
+		<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+			<el-card shadow="never" v-loading="state.loading" class="statistics-item">
+				<div class="statistics-title">
+					<img v-lazy="getImageUrl('home/workOrder.png')" alt="" src="" />
+					{{ userInfos.isCenter ? '今日受理工单' : '部门超期工单' }}
+				</div>
+				<div class="statistics-number">
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>980</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '受理工单量' : '待办超期' }}</p>
+					</div>
+					<div class="statistics-number-item">
+						<p class="statistics-number-item-number"><b>730</b></p>
+						<p class="statistics-number-item-tips">{{ userInfos.isCenter ? '今日直办工单量' : '已办超期' }}</p>
+					</div>
+				</div>
+			</el-card>
+		</el-col>
+	</el-row>
 </template>
 <script setup lang="ts">
-import {getImageUrl} from "@/utils/tools";
-import {reactive} from "vue";
+import { getImageUrl } from '@/utils/tools';
+import { reactive } from 'vue';
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '@/stores/userInfo';
+const stores = useUserInfo(); // 用户信息
+const { userInfos } = storeToRefs(stores); // 用户信息
+console.log(userInfos.value);
 const state = reactive({
-  entranceList: <EmptyArrayType>[], // 常用入口
-  noticeList: [], // 通知公告
-  loading: false, //头部
-  entranceLoading: false, //入口
-  noticeLoading: false, // 公告
+	loading: false, //头部
 });
 </script>
 <style scoped lang="scss">
 .statistics {
-  display: flex;
-  justify-content: space-between;
-  &-item {
-    height: 200px;
-    margin-bottom: 20px;
-  }
-  &-title {
-    background: var(--hotline-bg-main-color);
-    border-radius: 16px;
-    height: 60px;
-    position: relative;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    font-size: var(--el-font-size-medium);
-    img {
-      width: 83px;
-      height: 83px;
-      position: absolute;
-      left: -22px;
-      top: -2px;
-    }
-  }
-  &-number {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    padding: 40px 20px 0 20px;
-    text-align: center;
-    &-item-number {
-      font-size: 30px;
-    }
-    &-item-tips {
-      margin-top: 12px;
-      color: var(--hotline-color-text-main-light);
-    }
-    &-item-total {
-      flex: 1;
-      font-size: 30px;
-    }
-  }
+	display: flex;
+	justify-content: space-between;
+	&-item {
+		height: 200px;
+		margin-bottom: 20px;
+	}
+	&-title {
+		background: var(--hotline-bg-main-color);
+		border-radius: 16px;
+		height: 60px;
+		position: relative;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: var(--el-font-size-medium);
+		img {
+			width: 83px;
+			height: 83px;
+			position: absolute;
+			left: -22px;
+			top: -2px;
+		}
+	}
+	&-number {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 40px 20px 0 20px;
+		text-align: center;
+		&-item-number {
+			font-size: 30px;
+		}
+		&-item-tips {
+			margin-top: 12px;
+			color: var(--hotline-color-text-main-light);
+		}
+		&-item-total {
+			flex: 1;
+			font-size: 30px;
+		}
+	}
 }
-</style>
+</style>

+ 90 - 268
src/views/home/component/ToDo.vue

@@ -1,15 +1,22 @@
 <template>
 	<el-card shadow="never" class="mb20" style="position: relative" v-loading="state.tableLoading">
-		<el-button link type="primary" style="position: absolute; right: 20px; top: 32px; z-index: 2" @click="linkList">
+		<el-button
+			link
+			type="primary"
+			style="position: absolute; right: 20px; top: 32px; z-index: 2"
+			@click="linkList"
+			v-auths="['home:orderTodo', 'home:orderSeatTodo']"
+		>
 			更多<SvgIcon name="ele-ArrowRight" />
 		</el-button>
-		<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleChange">
-			<el-tab-pane :name="item.value" v-for="item in tabsList" :key="item.value" :label="item.label"></el-tab-pane>
+		<el-tabs v-model="activeName" @tab-change="handleChange" v-if="auths(['home:orderTodo', 'home:orderSeatTodo'])">
+			<el-tab-pane name="0" label="工单待办" v-if="auth('home:orderTodo')"></el-tab-pane>
+			<el-tab-pane name="1" label="工单坐席待办" v-if="auth('home:orderSeatTodo')"></el-tab-pane>
 		</el-tabs>
 		<!-- 表格 -->
-		<el-table :data="state.tableList" row-key="id">
+		<el-table :data="state.tableList" row-key="id" v-if="auths(['home:orderTodo', 'home:orderSeatTodo'])">
 			<!-- 工单待办 -->
-			<template v-if="activeName === '0'">
+			<template v-if="activeName === '0' && auth('home:orderTodo')">
 				<el-table-column prop="no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
 				<el-table-column width="100" label="省/市工单" prop="isProvince">
 					<template #default="{ row }">
@@ -50,195 +57,59 @@
 					</template>
 				</el-table-column>
 			</template>
-			<!-- 延期待办 -->
-			<template v-if="activeName === '1'">
-				<el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column width="100" label="省/市工单" prop="isProvince">
-					<template #default="{ row }">
-						<span>{{ row.order?.isProvince ? '省工单' : '市工单' }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="工单标题" show-overflow-tooltip width="300">
-					<template #default="{ row }">
-						<span class="color-primary">{{ row.order?.title }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="delayStateText" label="延期审批状态" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="expiredTime" label="受理时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.order?.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="延期申请时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="creatorOrgName" label="延期申请部门" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="creatorName" label="延期申请人" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="delayNum" label="延期申请时限" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="delayUnitText" label="延期申请单位" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="delayReason" label="申请理由" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column label="申请前期满时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.applyDelayTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="通过后期满时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.afterDelay, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="160" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="onDelayDetail(row)" title="查看延期详情"> 延期详情 </el-button>
-						<order-detail :order="row.order" @updateList="handleChange('1')" />
-					</template>
-				</el-table-column>
-			</template>
-			<!-- 甄别待办 -->
-			<template v-if="activeName === '2'">
-				<el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column width="100" label="省/市工单" prop="isProvince">
-					<template #default="{ row }">
-						<span>{{ row.order?.isProvince ? '省工单' : '市工单' }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="工单标题" show-overflow-tooltip width="300">
-					<template #default="{ row }">
-						<span class="color-primary">{{ row.order?.title }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="statusText" label="甄别状态" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="currentStepName" label="当前节点" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="order.sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="expiredTime" label="受理人" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span
-							>{{ row.order?.acceptorName }} <span v-if="row.order?.acceptorStaffNo">[{{ row.order?.acceptorStaffNo }}]</span>
-						</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="order.actualHandleOrgName" label="接办部门" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="order.startTime" label="受理时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="creationTime" label="甄别申请时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="creatorName" label="甄别申请人" show-overflow-tooltip width="170"></el-table-column>
-				<el-table-column prop="creatorOrgName" label="甄别申请部门" show-overflow-tooltip width="200"></el-table-column>
-				<el-table-column prop="typeDicName" label="甄别申请类型" show-overflow-tooltip width="170"></el-table-column>
-				<el-table-column prop="content" label="甄别申请原因" show-overflow-tooltip width="200"></el-table-column>
-				<el-table-column label="操作" width="160" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="onDiscernDetail(row)" title="查看甄别详情"> 甄别详情 </el-button>
-						<order-detail :order="row.order" @updateList="handleChange('2')" />
-					</template>
-				</el-table-column>
-			</template>
-			<!-- 发布待办 -->
-			<template v-if="activeName === '3'">
+			<!-- 工单坐席待办 -->
+			<template v-if="activeName === '1' && auth('home:orderSeatTodo')">
 				<el-table-column prop="no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
 				<el-table-column width="100" label="省/市工单" prop="isProvince">
 					<template #default="{ row }">
 						<span>{{ row.isProvince ? '省工单' : '市工单' }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="statusText" label="发布状态" show-overflow-tooltip></el-table-column>
-				<el-table-column label="工单标题" show-overflow-tooltip width="300">
+				<el-table-column prop="currentStepName" label="办理节点" show-overflow-tooltip width="150"></el-table-column>
+				<template v-if="state.queryParams.Status === 'false'">
+					<el-table-column prop="creationTime" label="节点签收时间" show-overflow-tooltip width="170">
+						<template #default="{ row }">
+							<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+						</template>
+					</el-table-column>
+				</template>
+				<el-table-column label="工单状态" show-overflow-tooltip width="100" prop="statusText"></el-table-column>
+				<el-table-column label="标题" show-overflow-tooltip width="300">
 					<template #default="{ row }">
 						<span class="color-primary">{{ row.title }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="expiredTime" label="受理人" show-overflow-tooltip width="170">
+				<el-table-column label="生成时间" show-overflow-tooltip width="170">
 					<template #default="{ row }">
-						<span
-							>{{ row.acceptorName }} <span v-if="row.acceptorStaffNo">[{{ row.acceptorStaffNo }}]</span>
-						</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="counterSignTypeText" label="中心会签" show-overflow-tooltip width="100"></el-table-column>
-				<el-table-column prop="actualHandleOrgName" label="接办部门" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="actualHandleTime" label="接办时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.actualHandleTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="startTime" label="受理时间" show-overflow-tooltip width="170">
+				<el-table-column label="受理时间" show-overflow-tooltip width="170">
 					<template #default="{ row }">
 						<span>{{ formatDate(row.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column label="办结时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.filedTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="140" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="onRelease(row)" title="发布工单"> 发布 </el-button>
-						<order-detail :order="row" @updateList="handleChange('3')" />
-					</template>
-				</el-table-column>
-			</template>
-			<!-- 回访待办 -->
-			<template v-if="activeName === '4'">
-				<el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column label="工单标题" show-overflow-tooltip width="300">
+				<el-table-column label="工单期满时间" show-overflow-tooltip width="170">
 					<template #default="{ row }">
-						<span class="color-primary">{{ row.order?.title }}</span>
+						<span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="order.sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="visitStateText" label="回访状态" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
-				<el-table-column prop="expiredTime" label="受理人" show-overflow-tooltip width="170">
+				<el-table-column prop="acceptType" label="受理类型" show-overflow-tooltip width="120"></el-table-column>
+				<el-table-column label="紧急程度" show-overflow-tooltip prop="emergencyLevelText"></el-table-column>
+				<el-table-column prop="sourceChannel" label="来源方式" show-overflow-tooltip width="120"></el-table-column>
+				<el-table-column prop="hotspotName" label="热点分类" show-overflow-tooltip width="100"></el-table-column>
+				<el-table-column prop="employeeName" label="受理人" show-overflow-tooltip width="150">
 					<template #default="{ row }">
 						<span
-							>{{ row.order?.acceptorName }} <span v-if="row.order?.acceptorStaffNo">[{{ row.order?.acceptorStaffNo }}]</span>
+							>{{ row.acceptorName }} <span v-if="row.acceptorStaffNo">[{{ row.acceptorStaffNo }}]</span>
 						</span>
 					</template>
 				</el-table-column>
-				<el-table-column prop="order.orgLevelOneName" label="一级部门" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="order.actualHandleOrgName" label="接办部门" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="order.startTime" label="受理时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.order?.startTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="办结时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="发布时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.publishTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="回访任务创建时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="employeeName" label="回访人" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column label="是否接通" show-overflow-tooltip width="150">
-					<template #default="{ row }">
-						<span>{{ row.isPutThrough ? '未接通' : '已接通' }}</span>
-					</template>
-				</el-table-column>
 				<el-table-column label="操作" width="140" fixed="right" align="center">
 					<template #default="{ row }">
-						<el-button link type="primary" @click="onManpower(row)" title="工单回访"> 回访 </el-button>
-						<order-detail :order="row.order" @updateList="handleChange('4')" />
+						<el-button link type="success" @click="onOrderEdit(row)" title="编辑工单" v-if="row.canEdit" v-auth="'todo:seats:edit'"> 修改 </el-button>
+						<el-button link type="primary" @click="onSign(row)" title="签收工单" v-if="row.canSign" v-auth="'todo:seats:sign'"> 签收 </el-button>
+						<order-detail :order="row" @updateList="handleChange('1')" v-if="row.workflowId" />
 					</template>
 				</el-table-column>
 			</template>
@@ -246,32 +117,18 @@
 				<Empty />
 			</template>
 		</el-table>
-		<!--  延期详情  -->
-		<delay-detail ref="delayDetailRef" @updateList="handleChange('1')" />
-		<!-- 甄别详情 -->
-		<discern-detail ref="discernDetailRef" @updateList="handleChange('2')" />
-		<!-- 工单发布详情 -->
-		<order-publish ref="orderPublishRef" @updateList="handleChange('3')" />
-		<!-- 回访 -->
-		<visit-detail ref="visitDetailRef" @updateList="handleChange('4')" />
+		<Empty v-else />
 	</el-card>
 </template>
 <script setup lang="ts">
-import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { computed, defineAsyncComponent, onMounted, reactive, ref, watch, watchEffect } from 'vue';
 import { formatDate } from '@/utils/formatTime';
 import { useRouter } from 'vue-router';
-import { orderListTodo } from '@/api/todo/order';
-import { delayList } from '@/api/todo/delay';
-import { screenList } from '@/api/business/discern';
-import { publishList } from '@/api/todo/publish';
-import { visitList } from '@/api/todo/visit';
-import { ElButton } from 'element-plus';
+import { orderListTodo, orderSign, seatsListTodo } from '@/api/todo/order';
+import { ElButton, ElMessage, ElMessageBox } from 'element-plus';
+import { auth, auths } from '@/utils/authFunction';
 
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
-const DelayDetail = defineAsyncComponent(() => import('@/views/business/delay/components/Delay-detail.vue')); // 延期详情
-const DiscernDetail = defineAsyncComponent(() => import('@/views/business/discern/components/Discern-detail.vue')); // 甄别详情
-const OrderPublish = defineAsyncComponent(() => import('@/views/business/publish/component/Order-publish.vue')); // 发布详情
-const VisitDetail = defineAsyncComponent(() => import('/src/views/business/visit/component/Visit-detail.vue')); // 回访详情
 const state = reactive<any>({
 	tableLoading: false, // 表格loading
 	tableList: [], //表格数据
@@ -280,49 +137,14 @@ const state = reactive<any>({
 		PageSize: 10,
 	},
 });
-const tabsList = ref([
-	{
-		label: '工单待办',
-		name: '0',
-	},
-	{
-		label: '延期待办',
-		name: '1',
-	},
-	{
-		label: '甄别待办',
-		name: '2',
-	},
-	{
-		label: '发布待办',
-		name: '3',
-	},
-	{
-		label: '回访待办',
-		name: '4',
-	},
-]);
-const activeName = ref<string>('0'); // tab切换
-// 查看延期详情
-const delayDetailRef = ref<RefType>();
-const onDelayDetail = (row: any) => {
-	delayDetailRef.value.openDialog(row);
-};
-// 查看甄别详情
-const discernDetailRef = ref<RefType>();
-const onDiscernDetail = (row: any) => {
-	discernDetailRef.value.openDialog(row);
-};
-// 发布
-const orderPublishRef = ref<RefType>(); // 工单发布详情ref
-const onRelease = (row: any) => {
-	orderPublishRef.value.openDialog(row);
-};
-// 工单回访
-const visitDetailRef = ref<RefType>(); // 工单回访ref
-const onManpower = (row: any) => {
-	visitDetailRef.value.openDialog(row);
-};
+const activeName = ref('0');
+watchEffect(() => {
+	if (auth('home:orderTodo')) {
+		return (activeName.value = '0');
+	} else if (auth('home:orderSeatTodo')) {
+		return (activeName.value = '1');
+	}
+});
 // tab切换
 const handleChange = async (tab: any) => {
 	state.tableLoading = true;
@@ -336,41 +158,17 @@ const handleChange = async (tab: any) => {
 				state.tableLoading = false;
 			}
 			break;
-		case '1': // 延期待办
+		case '1': // 工单待办
 			try {
-				const res: any = await delayList({ ...state.queryParams, IsApply: 'false' });
+				const res: any = await seatsListTodo({ ...state.queryParams, IsHandled: 'false' });
 				state.tableList = res.result?.items ?? [];
 				state.tableLoading = false;
 			} catch (error) {
 				state.tableLoading = false;
 			}
 			break;
-		case '2': //甄别待办
-			try {
-				const res: any = await screenList({ ...state.queryParams, Status: '0' });
-				state.tableList = res.result?.items ?? [];
-				state.tableLoading = false;
-			} catch (error) {
-				state.tableLoading = false;
-			}
-			break;
-		case '3': // 发布待办
-			try {
-				const res: any = await publishList({ ...state.queryParams });
-				state.tableList = res.result?.items ?? [];
-				state.tableLoading = false;
-			} catch (error) {
-				state.tableLoading = false;
-			}
-			break;
-		case '4': // 回访待办
-			try {
-				const res: any = await visitList({ ...state.queryParams, VisitState: '2' });
-				state.tableList = res.result?.items ?? [];
-				state.tableLoading = false;
-			} catch (error) {
-				state.tableLoading = false;
-			}
+		default:
+			state.tableLoading = false;
 			break;
 	}
 };
@@ -382,20 +180,44 @@ const linkList = () => {
 		case '0': // 工单待办
 			router.push('/todo/order');
 			break;
-		case '1': // 延期待办
-			router.push('/todo/delay');
-			break;
-		case '2': //甄别待办
-			router.push('/todo/discern');
-			break;
-		case '3': // 发布待办
-			router.push('/todo/publish');
-			break;
-		case '4': // 回访待办
-			router.push('/todo/visit');
+		case '1': // 工单坐席待办
+			router.push('/todo/seats');
 			break;
 	}
 };
+// 编辑工单
+const onOrderEdit = (row: any) => {
+	if (!router.hasRoute('orderAccept')) {
+		ElMessage.warning('未找到工单受理页面');
+		return;
+	}
+	router.push({
+		name: 'orderAccept',
+		params: {
+			tagsViewName: '工单受理-' + row.no,
+			id: row.id,
+			callId: '0',
+		},
+	});
+};
+// 签收工单
+const onSign = (row: any) => {
+	ElMessageBox.confirm(`您确定要要签收【${row.title}】,是否继续?`, '提示', {
+		confirmButtonText: '确认',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+		autofocus: false,
+	})
+		.then(() => {
+			orderSign(row.id).then(() => {
+				ElMessage.success('签收成功');
+				handleChange(activeName.value);
+			});
+		})
+		.catch(() => {});
+};
 onMounted(() => {
 	handleChange(activeName.value);
 });

+ 1 - 0
src/views/todo/seats/accept/index.vue

@@ -1067,6 +1067,7 @@ const loadForm = async () => {
 			dicDataValue: state.ruleForm.pushTypeCode,
 			dicDataName: state.ruleForm.pushType,
 		};
+		console.log(state.ruleForm);
 	}
 };
 // 加载省市区

+ 4 - 4
yarn.lock

@@ -2229,10 +2229,10 @@ electron-to-chromium@^1.4.601:
   resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.633.tgz#df8831d2fef994fe9c013e61db6cfb98eeebf52d"
   integrity sha512-7BvxzXrHFliyQ1oZc6NRMjyEaKOO1Ma1NY98sFZofogWlm+klLWSgrDw7EhatiMgi4R4NV+iWxDdxuIKXtPbOw==
 
-element-plus@^2.5.1:
-  version "2.5.1"
-  resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.5.1.tgz#ab54c77321728f82740c1adbce288a129147c64e"
-  integrity sha512-ylX9h2U125/nesPlLWgfPkI1rID9EiGROlgf0QkzBUjx+/d4w/YqS+IqZZZC5yvQPhKYu9aMDqEBzOurwn4Cnw==
+element-plus@2.4.4:
+  version "2.4.4"
+  resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.4.tgz#962be40b4843381af04b8f799bfc142072184b8b"
+  integrity sha512-TlKubXJgxwhER0dw+8ULn9hr9kZjraV4R6Q/eidwWUwCKxwXYPBGmMKsZ/85tlxlhMYbcLZd/YZh6G3QkHX4fg==
   dependencies:
     "@ctrl/tinycolor" "^3.4.1"
     "@element-plus/icons-vue" "^2.3.1"