Browse Source

refactor:时间快捷选择统一封装,代码优化;

zhangchong 1 year ago
parent
commit
d9af099b4d

+ 75 - 4
src/utils/tools.ts

@@ -36,7 +36,7 @@ export function throttle(func: Function, delay: number, thisArg?: any) {
 /**
  * vite引入图片
  *
- * @param {string} name   文件路径
+ * @param {string} name   ../assets/images 后面的文件路径+文件名后缀
  */
 export function getImageUrl(name: string) {
     return new URL(`../assets/images/${name}`, import.meta.url).href;
@@ -68,7 +68,6 @@ export function desensitizationName(name: string) {
  * @returns 返回处理后的姓名
  */
 export function checkFile(fileValue: string) {
-
     let index = fileValue.lastIndexOf('.'); //(考虑严谨用lastIndexOf(".")得到)得到"."在第几位
     let fileValueSuffix = fileValue.substring(index); //截断"."之前的,得到后缀
     if (/(.*)\.(mp4|avi|wmv|MP4|AVI|WMV)$/.test(fileValueSuffix)) {
@@ -145,6 +144,7 @@ export const commonEnum = {
  * @returns
  * @param {string | number} num
  * @param {string} type
+ * @returns {string | number}
  */
 export function upNumber(num: string | number, type:string = ''):number | string {
     if (!num) return 0
@@ -212,7 +212,7 @@ export function guid(): string {
  * 根据id排除自己(树形结构选择 修改时用)
  * @param {any} arr 需要排除的数组
  * @param {string} id
- * @returns {*}
+ * @returns {any}
  */
 export function excludeSelfById(arr: Array<any>, id: string) {
     if (!arr) return [];
@@ -223,4 +223,75 @@ export function excludeSelfById(arr: Array<any>, id: string) {
         }
         return true;
     });
-}
+}
+/**
+ * 常用时间选择
+ * @param
+ */
+export const shortcuts = [
+    {
+        text: '近一周',
+        value: () => {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            return [start, end];
+        },
+    },
+    {
+        text: '近一个月',
+        value: () => {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            return [start, end];
+        },
+    },
+    {
+        text: '上季度',
+        value: () => {
+            let oDate = new Date();
+            let thisYear = oDate.getFullYear();
+            let thisMonth = oDate.getMonth() + 1;
+            let n = Math.ceil(thisMonth / 3); // 季度
+            let Month = n * 3 - 1;
+            let start = new Date(thisYear, Month - 2, 1);
+            let end = new Date();
+            return [start, end];
+        },
+    },
+    {
+        text: '本季度',
+        value: () => {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            return [start, end];
+        },
+    },
+    {
+        text: '去年',
+        value: ()=> {
+            let oDate = new Date();
+            let prevYear = oDate.getFullYear() - 1;
+            const end = new Date();
+            const start = new Date();
+            start.setFullYear(prevYear);
+            start.setMonth(0);
+            start.setDate(1);
+            end.setFullYear(prevYear);
+            end.setMonth(11);
+            end.setDate(31);
+            return [start, end];
+        }
+    },{
+        text: '今年',
+        value: ()=> {
+            const end = new Date();
+            const start = new Date();
+            start.setMonth(0);
+            start.setDate(1);
+            return [start, end];
+        }
+    },
+];

+ 2 - 30
src/views/business/followUp/index.vue

@@ -177,39 +177,11 @@ import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import {  listBaseData } from '/@/api/business/order';
 import {ElMessage, ElMessageBox, FormInstance} from 'element-plus';
 import { auth } from '/@/utils/authFunction';
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { formatDate } from '/@/utils/formatTime';
 // 引入组件
 const FollowUpPhone = defineAsyncComponent(()=>import('/@/views/business/followUp/component/Follow-up-phone.vue'))
-const shortcuts = [
-  {
-    text: '近一周',
-    value: () => {
-      const end = new Date();
-      const start = new Date();
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-      return [start, end];
-    },
-  },
-  {
-    text: '近一个月',
-    value: () => {
-      const end = new Date();
-      const start = new Date();
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-      return [start, end];
-    },
-  },
-  {
-    text: '近三个月',
-    value: () => {
-      const end = new Date();
-      const start = new Date();
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-      return [start, end];
-    },
-  },
-];
+
 // 定义变量内容
 const ruleFormRef = ref<RefType>();
 const followUpPhoneRef = ref<RefType>();

+ 3 - 3
src/views/business/order/accept/orderAdd.vue

@@ -142,7 +142,7 @@
 								<el-form-item label="证件类型" prop="licenceTypeObj"
 									:rules="[{ required: false, message: '请选择证件类型', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.licenceTypeObj" placeholder="请选择证件类型" class="w100"
-										clearable value-key="dicDataValue" @change="(val) => {
+										clearable value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.licenceType = val.dicDataName;
 											state.ruleForm.licenceTypeCode = val.dicDataValue
 										}">
@@ -169,7 +169,7 @@
 								<el-form-item label="年龄段" prop="ageRangeObj"
 									:rules="[{ required: false, message: '请选择年龄段', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.ageRangeObj" placeholder="请选择年龄段" class="w100"
-										clearable value-key="dicDataValue" @change="(val) => {
+										clearable value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.ageRange = val.dicDataName;
 											state.ruleForm.ageRangeCode = val.dicDataValue
 										}">
@@ -343,7 +343,7 @@
 								<el-form-item label="推送分类" prop="pushTypeObj"
 									:rules="[{ required: false, message: '请选择推送分类', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.pushTypeObj" placeholder="请选择推送分类" class="w100"
-										clearable value-key="dicDataValue" @change="(val) => {
+										clearable value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.pushType = val.dicDataName;
 											state.ruleForm.pushTypeCode = val.dicDataValue
 										}">

+ 3 - 3
src/views/business/order/accept/orderEdit.vue

@@ -136,7 +136,7 @@
 								<el-form-item label="证件类型" prop="licenceTypeObj"
 									:rules="[{ required: false, message: '请选择证件类型', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.licenceTypeObj" placeholder="请选择证件类型" class="w100"
-										value-key="dicDataValue" @change="(val) => {
+										value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.licenceType = val.dicDataName;
 											state.ruleForm.licenceTypeCode = val.dicDataValue;
 										}
@@ -164,7 +164,7 @@
 								<el-form-item label="年龄段" prop="ageRangeObj"
 									:rules="[{ required: false, message: '请选择年龄段', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.ageRangeObj" placeholder="请选择年龄段" class="w100"
-										value-key="dicDataValue" @change="(val) => {
+										value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.ageRange = val.dicDataName;
 											state.ruleForm.ageRangeCode = val.dicDataValue;
 										}
@@ -339,7 +339,7 @@
 								<el-form-item label="推送分类" prop="pushTypeObj"
 									:rules="[{ required: false, message: '请选择推送分类', trigger: 'change' }]">
 									<el-select v-model="state.ruleForm.pushTypeObj" placeholder="请选择推送分类" class="w100"
-										clearable value-key="dicDataValue" @change="(val) => {
+										clearable value-key="dicDataValue" @change="(val:any) => {
 											state.ruleForm.pushType = val.dicDataName;
 											state.ruleForm.pushTypeCode = val.dicDataValue;
 										}

+ 2 - 2
src/views/business/order/accept/repeatOrderDetail.vue

@@ -274,7 +274,7 @@ const OrderExpandDetail = defineAsyncComponent(() => import('/@/views/business/o
 // 定义变量内容
 const state = reactive<any>({
 	isShowDialog: false,
-	ruleForm: { url: '' } as any,
+	ruleForm: { url: '' },
 	activeName: 'default',
 	tabPaneList: [
 		{
@@ -336,7 +336,7 @@ const showExpandInfo = () => {
 		form.acceptTypeText = '投诉';
 	}
 	form.orderTypeText = '12315市场监管局受理单';
-  	ExpandDetailRef.value.openDialog(form);
+  ExpandDetailRef.value.openDialog(form);
 };
 // 展示重复工单详情
 const showDuplicateInf = () => {

+ 2 - 31
src/views/business/order/index.vue

@@ -278,7 +278,7 @@
 import {defineAsyncComponent, ref, reactive, onMounted, onActivated} from 'vue';
 import { ElMessageBox, ElMessage } from 'element-plus';
 import type { FormInstance } from 'element-plus';
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { auth } from '/@/utils/authFunction';
 import other from '/@/utils/other';
 import { useRouter,useRoute } from 'vue-router';
@@ -287,35 +287,7 @@ import { listBaseData, orderList, hotSpotType, orderDelete } from '/@/api/busine
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('/@/views/business/order/components/Order-detail.vue'));
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
+
 // 定义变量内容
 const ruleFormRef = ref<RefType>();
 const searchCol = ref(true);
@@ -595,7 +567,6 @@ onMounted(async () => {
   if(route.query.tabIndex){
     state.activeName = route.query.tabIndex as string;
   }
-  console.log(route)
 });
 onActivated(() => {
   if(route.query.tabIndex){

+ 1 - 30
src/views/business/release/index.vue

@@ -164,39 +164,10 @@ import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { hotSpotType, listBaseData } from '/@/api/business/order';
 import { ElMessage, FormInstance } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { formatDate } from '/@/utils/formatTime';
 // 引入组件
 const OrderRelease =  defineAsyncComponent(() => import('/@/views/business/release/component/Order-release.vue'));
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
 // 定义变量内容
 const ruleFormRef = ref<RefType>();
 const orderReleaseRef = ref<RefType>();

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

@@ -128,44 +128,13 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
 import other from '/@/utils/other';
 import { formatDate } from '/@/utils/formatTime';
-// 引入节流
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { handleList, KnowledgeReturn, baseData } from '/@/api/knowledge/apply';
 
 // 引入组件
 const KnowledgeApplyDetail = defineAsyncComponent(() => import('/@/views/knowledge/apply/component/Knowledge-apply-detail.vue'));
 const KnowledgeApplyHandle = defineAsyncComponent(() => import('/@/views/knowledge/apply/component/Knowledge-apply-handle.vue'));
 
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
-
 // 定义变量内容
 const state = reactive(<any>{
 	queryParams: {

+ 1 - 32
src/views/knowledge/apply/my/index.vue

@@ -134,8 +134,7 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
 import { formatDate } from '/@/utils/formatTime';
 import other from '/@/utils/other';
-// 引入节流
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { KnowledgeApply, KnowledgeRemove, KnowledgeCancel, baseData } from '/@/api/knowledge/apply';
 import { getOrgList } from '/@/api/system/organize';
 import { KnowledgeGetKnowledge } from '/@/api/knowledge';
@@ -144,36 +143,6 @@ import { KnowledgeGetKnowledge } from '/@/api/knowledge';
 const KnowledgeMyApplyAdd = defineAsyncComponent(() => import('/@/views/knowledge/apply/my/component/Knowledge-my-apply-add.vue'));
 const KnowledgeMyApplyEdit = defineAsyncComponent(() => import('/@/views/knowledge/apply/my/component/Knowledge-my-apply-edit.vue'));
 const KnowledgeMyApplyDetail = defineAsyncComponent(() => import('/@/views/knowledge/apply/my/component/Knowledge-my-apply-detail.vue'));
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
-
 // 定义变量内容
 const state = reactive(<any>{
 	queryParams: {

+ 84 - 131
src/views/knowledge/knowledge/component/knowledge-edit.vue

@@ -6,23 +6,18 @@
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="温馨提示">
 							<span style="color: var(--el-color-danger)">
-								发布知识前请仔细阅读 <el-link type="primary" @click="showStandard">【知识编写规范】</el-link>,以免知识无法通过审核,浪费您的时间!
+								发布知识前请仔细阅读 <el-link type="primary"
+									@click="showStandard">【知识编写规范】</el-link>,以免知识无法通过审核,浪费您的时间!
 							</span>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="知识分类" prop="knowledgeTypeId" :rules="[{ required: true, message: '请选择知识分类', trigger: 'change' }]">
-							<el-cascader
-								:options="state.typeData"
-								filterable
+						<el-form-item label="知识分类" prop="knowledgeTypeId"
+							:rules="[{ required: true, message: '请选择知识分类', trigger: 'change' }]">
+							<el-cascader :options="state.typeData" filterable
 								:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'children' }"
-								placeholder="请选择上知识分类"
-								clearable
-								class="w100"
-								v-model="state.ruleForm.knowledgeTypeId"
-								ref="cascadeRef"
-								@change="getKnowledgeList"
-							>
+								placeholder="请选择上知识分类" clearable class="w100" v-model="state.ruleForm.knowledgeTypeId"
+								ref="cascadeRef" @change="getKnowledgeList">
 								<template #default="{ node, data }">
 									<span>{{ data.name }}</span>
 									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@@ -31,46 +26,45 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="热点分类" prop="hotspotId" :rules="[{ required: true, message: '请选择热点分类', trigger: 'change' }]">
-							<el-tree-select
-								class="w100"
-								v-model="state.ruleForm.hotspotId"
-								filterable
-								placeholder="请选择热点分类"
-								:props="HotspotProps"
-								lazy
-								:load="load"
-								node-key="id"
-								check-strictly
-								:render-after-expand="false"
-								@node-click="hotSpotChange"
-								ref="hotspotRef"
-								:default-expanded-keys="state.hotspotExternal"
-							/>
+						<el-form-item label="热点分类" prop="hotspotId"
+							:rules="[{ required: true, message: '请选择热点分类', trigger: 'change' }]">
+							<el-tree-select class="w100" v-model="state.ruleForm.hotspotId" filterable placeholder="请选择热点分类"
+								:props="HotspotProps" lazy :load="load" node-key="id" check-strictly
+								:render-after-expand="false" @node-click="hotSpotChange" ref="hotspotRef"
+								:default-expanded-keys="state.hotspotExternal" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="标题" prop="title" :rules="[{ required: true, message: '请填写标题', trigger: 'blur' }]">
-							<el-input v-model="state.ruleForm.title" placeholder=" 输入标题,不超过30个字" max-length="30" clearable></el-input>
+						<el-form-item label="标题" prop="title"
+							:rules="[{ required: true, message: '请填写标题', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.title" placeholder=" 输入标题,不超过30个字" max-length="30"
+								clearable></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="摘要" prop="summary" :rules="[{ required: false, message: '请填写摘要', trigger: 'blur' }]">
-							<el-input v-model="state.ruleForm.summary" placeholder="输入摘要,不超过200个字" max-length="200" clearable></el-input>
+						<el-form-item label="摘要" prop="summary"
+							:rules="[{ required: false, message: '请填写摘要', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.summary" placeholder="输入摘要,不超过200个字" max-length="200"
+								clearable></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="正文" prop="content" :rules="[{ required: true, message: '请输入正文内容', trigger: 'blur' }]">
-							<editor v-model:get-html="state.ruleForm.content" :disable="state.disable" placeholder="请输入正文内容" />
+						<el-form-item label="正文" prop="content"
+							:rules="[{ required: true, message: '请输入正文内容', trigger: 'blur' }]">
+							<editor v-model:get-html="state.ruleForm.content" :disable="state.disable"
+								placeholder="请输入正文内容" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="关键词" prop="keywords" :rules="[{ required: false, message: '请填写关键词要', trigger: 'blur' }]">
-							<el-input v-model="state.ruleForm.keywords" placeholder="请输入关键词,多个关键词用英文“,”分开" max-length="200" clearable></el-input>
+						<el-form-item label="关键词" prop="keywords"
+							:rules="[{ required: false, message: '请填写关键词要', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.keywords" placeholder="请输入关键词,多个关键词用英文“,”分开" max-length="200"
+								clearable></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="是否公开" prop="isPublic" :rules="[{ required: false, message: '请选择是否公开', trigger: 'change' }]">
+						<el-form-item label="是否公开" prop="isPublic"
+							:rules="[{ required: false, message: '请选择是否公开', trigger: 'change' }]">
 							<el-radio-group v-model="state.ruleForm.isPublic">
 								<el-radio :label="true">是</el-radio>
 								<el-radio :label="false">否</el-radio>
@@ -78,7 +72,8 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="关联知识" prop="knowledges" :rules="[{ required: false, message: '请选择关联知识', trigger: 'change' }]">
+						<el-form-item label="关联知识" prop="knowledges"
+							:rules="[{ required: false, message: '请选择关联知识', trigger: 'change' }]">
 							<template #label>
 								<div style="height: 34px; display: flex; align-items: center">
 									关联知识
@@ -88,19 +83,13 @@
 									</el-tooltip>
 								</div>
 							</template>
-							<el-select-v2
-								v-model="state.ruleForm.knowledges"
-								filterable
-								clearable
-								:options="state.knowledgeOptions"
-								placeholder="请选择关联知识"
-								class="w100"
-								multiple
-							/>
+							<el-select-v2 v-model="state.ruleForm.knowledges" filterable clearable
+								:options="state.knowledgeOptions" placeholder="请选择关联知识" class="w100" multiple />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="失效时间" prop="expiredTime" :rules="[{ required: false, message: '请选择失效时间', trigger: 'change' }]">
+						<el-form-item label="失效时间" prop="expiredTime"
+							:rules="[{ required: false, message: '请选择失效时间', trigger: 'change' }]">
 							<template #label>
 								<div style="height: 34px; display: flex; align-items: center">
 									失效时间
@@ -110,25 +99,23 @@
 									</el-tooltip>
 								</div>
 							</template>
-							<el-date-picker
-								v-model="state.ruleForm.expiredTime"
-								type="datetime"
-								placeholder="请选择失效时间"
-								class="w100"
-								value-format="YYYY-MM-DD[T]HH:mm:ss"
-							/>
+							<el-date-picker v-model="state.ruleForm.expiredTime" type="datetime" placeholder="请选择失效时间"
+								class="w100" value-format="YYYY-MM-DD[T]HH:mm:ss" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-						<el-form-item label="附件" prop="additions" :rules="[{ required: false, message: '请选择附件', trigger: 'change' }]">
+						<el-form-item label="附件" prop="additions"
+							:rules="[{ required: false, message: '请选择附件', trigger: 'change' }]">
 							<Upload :fileList="state.fileList" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item>
-							<el-button type="primary" @click="onSubmitReview(ruleFormRef)" :loading="state.loading">提交审核</el-button>
+							<el-button type="primary" @click="onSubmitReview(ruleFormRef)"
+								:loading="state.loading">提交审核</el-button>
 							<el-button class="default-button" @click="onPreview" :loading="state.loading">预览 </el-button>
-							<el-button @click="onSaveOnly(ruleFormRef)" class="default-button" :loading="state.loading">{{ state.saveText }}</el-button>
+							<el-button @click="onSaveOnly(ruleFormRef)" class="default-button" :loading="state.loading">{{
+								saveText }}</el-button>
 						</el-form-item>
 					</el-col>
 				</el-row>
@@ -168,15 +155,14 @@ const state = reactive<any>({
 	isShowDialog: false,
 	ruleForm: {
 		isPublic: true,
-    knowledgeTypeId:'',
-    hotspotId:'',
+		knowledgeTypeId: '',
+		hotspotId: '',
 		knowledges: [],
 	},
 	typeData: [], // 知识分类
 	loading: false,
 	hotspotExternal: [],
 	knowledgeOptions: [], //关联知识
-	saveText: '保存到草稿箱',
 	knowledgeId: '', // 当前id
 });
 const route = useRoute();
@@ -216,7 +202,7 @@ const getParentId = (val: any, arr: string[]) => {
 // 展示编写规范
 const KnowledgeStandardRef = ref<RefType>();
 const showStandard = () => {
-  KnowledgeStandardRef.value.openDialog();
+	KnowledgeStandardRef.value.openDialog();
 };
 const cascadeRef = ref<RefType>();
 // 获取选择name值
@@ -226,6 +212,12 @@ const getKnowledgeList = () => {
 	state.ruleForm.knowledgeTypeName = currentNode[0]?.text ?? '';
 };
 // 提交审核
+const handleOperation = async (submitObj: any, operation: Function) => {
+	await operation(submitObj).then((res: any) => {
+		const id = res.result || submitObj.id;
+		KnowledgeProcessRef.value.openDialog({ id, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
+	});
+};
 const onSubmitReview = async (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	await formEl.validate((valid) => {
@@ -235,30 +227,16 @@ const onSubmitReview = async (formEl: FormInstance | undefined) => {
 			if (route.params.id) {
 				// 更新
 				submitObj.id = route.params.id;
-				if (route.params.isDraft) {
-					// 如果从草稿进来 // 更新
-					KnowledgeUpdate(submitObj).then(() => {
-            KnowledgeProcessRef.value.openDialog({ id: submitObj.id, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
-					});
-				} else {
-					//如果是直接从知识库编辑 新增
-					KnowledgeAdd(submitObj).then((res: any) => {
-            KnowledgeProcessRef.value.openDialog({ id: res.result, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
-					});
-				}
+				const operation = route.params.isDraft ? KnowledgeUpdate : KnowledgeAdd;
+				handleOperation(submitObj, operation);
 			} else {
 				if (state.knowledgeId) {
 					// 更新
 					submitObj.id = state.knowledgeId;
-					KnowledgeUpdate(submitObj).then(() => {
-            KnowledgeProcessRef.value.openDialog({ id: submitObj.id, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
-					});
+					handleOperation(submitObj, KnowledgeUpdate);
 				} else {
 					//知识流程提交
-					KnowledgeAdd(submitObj).then((res: any) => {
-						state.knowledgeId = res.result;
-            KnowledgeProcessRef.value.openDialog({ id: res.result, title: '创建知识', commonEnum: commonEnum.KnowledgeLocution, processType: 'addStart' });
-					});
+					handleOperation(submitObj, KnowledgeAdd);
 				}
 			}
 		}
@@ -285,6 +263,16 @@ const onPreview = () => {
 	});
 };
 // 保存到草稿箱
+const handleSuccess = () => {
+	ElMessage.success('操作成功');
+	// 关闭当前 tagsView
+	mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
+	mittBus.emit('clearCache', 'knowledge');
+	mittBus.emit('clearCache', 'knowledgeDraft');
+	router.push({
+		path: '/knowledge/draft',
+	});
+};
 const onSaveOnly = throttle(async (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	await formEl.validate((valid) => {
@@ -296,55 +284,19 @@ const onSaveOnly = throttle(async (formEl: FormInstance | undefined) => {
 				submitObj.id = route.params.id;
 				if (route.params.isDraft) {
 					// 如果从草稿进来 // 更新
-					KnowledgeUpdate(submitObj).then(() => {
-						ElMessage.success('操作成功');
-						// 关闭当前 tagsView
-						mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
-						mittBus.emit('clearCache', 'knowledge');
-						mittBus.emit('clearCache', 'knowledgeDraft');
-						router.push({
-							path: '/knowledge/draft',
-						});
-					});
+					KnowledgeUpdate(submitObj).then(handleSuccess);
 				} else {
 					//如果是直接从知识库编辑 新增
-					KnowledgeAdd(submitObj).then(() => {
-						ElMessage.success('操作成功');
-						// 关闭当前 tagsView
-						mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
-						mittBus.emit('clearCache', 'knowledge');
-						mittBus.emit('clearCache', 'knowledgeDraft');
-						router.push({
-							path: '/knowledge/draft',
-						});
-					});
+					KnowledgeAdd(submitObj).then(handleSuccess);
 				}
 			} else {
 				if (state.knowledgeId) {
 					// 更新
 					submitObj.id = state.knowledgeId;
-					KnowledgeUpdate(submitObj).then(() => {
-						ElMessage.success('操作成功');
-						// 关闭当前 tagsView
-						mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
-						mittBus.emit('clearCache', 'knowledge');
-						mittBus.emit('clearCache', 'knowledgeDraft');
-						router.push({
-							path: '/knowledge/draft',
-						});
-					});
+					KnowledgeUpdate(submitObj).then(handleSuccess);
 				} else {
 					// 新增
-					KnowledgeAdd(submitObj).then(() => {
-						ElMessage.success('操作成功');
-						// 关闭当前 tagsView
-						mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
-						mittBus.emit('clearCache', 'knowledge');
-						mittBus.emit('clearCache', 'knowledgeDraft');
-						router.push({
-							path: '/knowledge/draft',
-						});
-					});
+					KnowledgeAdd(submitObj).then(handleSuccess);
 				}
 			}
 		}
@@ -367,19 +319,20 @@ const getKnowledgeType = async () => {
 		state.loading = false;
 	}
 };
+const saveText = ref('保存为草稿');
 onMounted(async () => {
 	await getKnowledgeType();
-		if (route.params.id) {
-			const res: any = await KnowledgeDetail(route.params.id); //知识详情
-			if (route.params.isDraft) {
-				state.saveText = '保存';
-			}
-			state.ruleForm = res.result ?? {};
-			if (res.result.hotspotExternal) {
-				//热点分类默认展开
-				state.hotspotExternal = state.ruleForm.hotspotExternal.split(',');
-			}
-			state.ruleForm.knowledges = state.ruleForm.knowledges ?? [];
+	if (route.params.id) {
+		const res: any = await KnowledgeDetail(route.params.id); //知识详情
+		if (route.params.isDraft) {
+			saveText.value = '保存';
 		}
+		state.ruleForm = res.result ?? {};
+		if (res.result.hotspotExternal) {
+			//热点分类默认展开
+			state.hotspotExternal = state.ruleForm.hotspotExternal.split(',');
+		}
+		state.ruleForm.knowledges = state.ruleForm.knowledges ?? [];
+	}
 });
 </script>

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

@@ -110,44 +110,13 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
 import other from '/@/utils/other';
 import { formatDate } from '/@/utils/formatTime';
-// 引入节流
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { KnowledgeDeleteList, deleteBase } from '/@/api/knowledge';
 import { workflowTerminate } from '/@/api/system/workflow';
 
 // 引入组件
 const KnowledgeProcessRecord = defineAsyncComponent(() => import('/@/views/knowledge/component/Knowledge-process-record.vue'));
 
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
-
 // 定义变量内容
 const state = reactive(<any>{
 	queryParams: {

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

@@ -85,39 +85,9 @@ import other from '/@/utils/other';
 import { treeList } from '/@/api/knowledge/type';
 import { formatDate } from '/@/utils/formatTime';
 import { useRouter } from 'vue-router';
-import { throttle } from '/@/utils/tools';
+import { throttle,shortcuts } from '/@/utils/tools';
 import { KnowledgeDel, myDraftsList } from '/@/api/knowledge';
 
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
-
 // 定义变量内容
 const state = reactive(<any>{
 	queryParams: {

+ 2 - 30
src/views/knowledge/knowledge/index.vue

@@ -285,7 +285,7 @@ import { ElMessageBox, ElMessage } from 'element-plus';
 import { useRouter } from 'vue-router';
 import type { FormInstance } from 'element-plus';
 import { formatDate } from '/@/utils/formatTime';
-import { throttle, commonEnum } from '/@/utils/tools';
+import { throttle, commonEnum,shortcuts } from '/@/utils/tools';
 import { auth } from '/@/utils/authFunction';
 import other from '/@/utils/other';
 import { KnowledgePaged, KnowledgeOffShelf, KnowledgeOnTheShelf, baseData } from '/@/api/knowledge';
@@ -298,35 +298,7 @@ import { hotSpotType } from '/@/api/business/order';
 const KnowledgeProcessRecord = defineAsyncComponent(() => import('/@/views/knowledge/component/Knowledge-process-record.vue'));
 const KnowledgeProcess = defineAsyncComponent(() => import('/@/views/knowledge/component/Knowledge-process.vue'));
 const KnowledgeUpdate = defineAsyncComponent(() => import('/@/views/knowledge/knowledge/component/Knowledge-update.vue'));
-const shortcuts = [
-	{
-		text: '近一周',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-			return [start, end];
-		},
-	},
-	{
-		text: '近一个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-			return [start, end];
-		},
-	},
-	{
-		text: '近三个月',
-		value: () => {
-			const end = new Date();
-			const start = new Date();
-			start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-			return [start, end];
-		},
-	},
-];
+
 // 定义变量内容
 const state = reactive<any>({
 	queryParams: {

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

@@ -118,7 +118,6 @@ import type { FormInstance } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
 import { useRouter } from 'vue-router';
 import { formatDate } from '/@/utils/formatTime';
-// 引入节流
 import { throttle, commonEnum } from '/@/utils/tools';
 import { KnowledgeApprovedList, approvedBaseData } from '/@/api/knowledge';
 

+ 0 - 1
src/views/system/config/workflow/index.vue

@@ -161,7 +161,6 @@ import { useRouter } from 'vue-router';
 import type { FormInstance } from 'element-plus';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { formatDate } from '/@/utils/formatTime';
-// 引入节流
 import { throttle } from '/@/utils/tools';
 import {
 	workflowList,

+ 0 - 1
src/views/tels/callRecord/index.vue

@@ -189,7 +189,6 @@ import { ref, reactive, onMounted, defineAsyncComponent } from 'vue';
 import type { FormInstance } from 'element-plus';
 import { ElMessage } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
-// 引入节流
 import { throttle } from '/@/utils/tools';
 import { callPaged, callPagedMissed } from '/@/api/tels/callRecord';
 import {formatDate} from "/@/utils/formatTime";