|
@@ -1,7 +1,5 @@
|
|
|
->
|
|
|
-
|
|
|
<template>
|
|
|
- <div>
|
|
|
+ <div class="business-order-accept-repeat-event-container">
|
|
|
<el-form :model="state.queryParams" ref="queryParamsRef" :inline="true" @submit.native.prevent>
|
|
|
<el-form-item label="关键词" prop="Keyword">
|
|
|
<el-input v-model="state.queryParams.Keyword" placeholder="事件标题/关键词" clearable @keyup.enter="handleQuery" />
|
|
@@ -16,6 +14,7 @@
|
|
|
end-placeholder="结束时间"
|
|
|
:shortcuts="shortcuts"
|
|
|
@change="timeStartChangeCr"
|
|
|
+ :clearable="false"
|
|
|
value-format="YYYY-MM-DD[T]HH:mm:ss"
|
|
|
/>
|
|
|
</el-form-item>
|
|
@@ -27,23 +26,37 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div class="mb10">
|
|
|
- <el-button type="primary" @click="onAdd" v-auth="'business:repeatEvent:add'"> <SvgIcon name="ele-Plus" class="mr5" />创建重复事件 </el-button>
|
|
|
+ <el-button type="primary" @click="onCreate" v-auth="'business:repeatEvent:add'">
|
|
|
+ <SvgIcon name="ele-Plus" class="mr5" />创建重复事件
|
|
|
+ </el-button>
|
|
|
</div>
|
|
|
<el-table :data="state.tableData" v-loading="state.loading" max-height="300">
|
|
|
+ <el-table-column label="操作" width="80" fixed="left" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button @click="onAdd(row)" link type="primary"> 添加 </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column prop="phoneNo" label="标题" show-overflow-tooltip width="180">
|
|
|
<template #default="{ row }">
|
|
|
{{ row.title }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="hotspotName" label="关键词" show-overflow-tooltip> </el-table-column>
|
|
|
- <el-table-column prop="no" label="创建时间" show-overflow-tooltip width="170">
|
|
|
- <template #default="{ row }"> </template>
|
|
|
+ <el-table-column prop="keyWords" label="关键词" show-overflow-tooltip> </el-table-column>
|
|
|
+ <el-table-column label="创建时间" show-overflow-tooltip width="170">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="currentStepName" label="创建人" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column prop="statusText" label="事件工单数" width="100" fixed="right" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="creatorName" label="创建人" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="statusText" label="事件工单数" width="100" fixed="right" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.details?.length }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
-
|
|
|
- <el-dialog v-model="state.dialogVisible" width="500px" draggable title="新增重复性事件" @close="close">
|
|
|
+ <pagination :total="state.total" v-model:page="state.queryParams.PageIndex" v-model:limit="state.queryParams.PageSize" @pagination="queryList" />
|
|
|
+ <!-- 添加重复性事件 -->
|
|
|
+ <el-dialog v-model="state.dialogVisible" width="50%" draggable title="新增重复性事件" @close="close" append-to-body destroy-on-close>
|
|
|
<el-form :model="state.ruleForm" label-width="80px" ref="ruleFormRef">
|
|
|
<el-row :gutter="10">
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
@@ -52,7 +65,7 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
- <el-form-item label="关键词" prop="synonym" :rules="[{ required: false, message: '请输入关键词', trigger: 'change' }]">
|
|
|
+ <el-form-item label="关键词" prop="keyWords" :rules="[{ required: false, message: '请输入关键词', trigger: 'change' }]">
|
|
|
<el-tag
|
|
|
v-for="tag in dynamicTags"
|
|
|
:key="tag"
|
|
@@ -78,6 +91,125 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
+ <el-divider content-position="left"><span class="font16"> 重复事件工单 </span></el-divider>
|
|
|
+ <div class="mb10">
|
|
|
+ <el-button type="primary" @click="onAddRepeatTable">添加 </el-button>
|
|
|
+ <el-button type="primary" @click="onRemoveRepeatTable" :disabled="!multipleSelection.length">移除 </el-button>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ :data="state.repeatTable"
|
|
|
+ v-loading="state.loading"
|
|
|
+ row-key="id"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ ref="multipleTableRef"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" label="" width="55" :reserve-selection="true" />
|
|
|
+ <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="currentStepName" label="当前办理节点" show-overflow-tooltip width="150"></el-table-column>
|
|
|
+ <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="startTime" 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 prop="expiredTime" label="工单期满时间" show-overflow-tooltip width="170">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
|
|
|
+ <el-table-column prop="acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
|
|
|
+ <el-table-column label="紧急程度" show-overflow-tooltip prop="emergencyLevelText" width="100"></el-table-column>
|
|
|
+ <el-table-column prop="sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="employeeName" label="受理人" show-overflow-tooltip width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span
|
|
|
+ >{{ row.acceptorName }} <span v-if="row.acceptorStaffNo">[{{ row.acceptorStaffNo }}]</span>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- 从所有工单重选择重复 -->
|
|
|
+ <el-dialog v-model="state.dialogVisibleAllTable" width="50%" draggable title="选择重复事件工单" append-to-body destroy-on-close>
|
|
|
+ <el-form :model="state.queryParamsAll" ref="queryParamsAllRef" :inline="true" @submit.native.prevent>
|
|
|
+ <el-form-item label="关键词" prop="Keyword">
|
|
|
+ <el-input v-model="state.queryParamsAll.Keyword" placeholder="工单标题/工单编码" clearable @keyup.enter="queryListAll" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="queryListAll" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
|
|
|
+ <el-button @click="resetQueryAll(queryParamsAllRef)" :loading="state.loading" class="default-button">
|
|
|
+ <SvgIcon name="ele-Refresh" class="mr5" />重置
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-table
|
|
|
+ :data="state.allTable"
|
|
|
+ v-loading="state.loading"
|
|
|
+ row-key="id"
|
|
|
+ @selection-change="handleSelectionChangeAll"
|
|
|
+ ref="multipleTableAllRef"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" label="" width="55" :reserve-selection="true" />
|
|
|
+ <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="currentStepName" label="当前办理节点" show-overflow-tooltip width="150"></el-table-column>
|
|
|
+ <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="startTime" 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 prop="expiredTime" label="工单期满时间" show-overflow-tooltip width="170">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span>{{ formatDate(row.expiredTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
|
|
|
+ <el-table-column prop="acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
|
|
|
+ <el-table-column label="紧急程度" show-overflow-tooltip prop="emergencyLevelText" width="100"></el-table-column>
|
|
|
+ <el-table-column prop="sourceChannel" label="来源方式" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="employeeName" label="受理人" show-overflow-tooltip width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span
|
|
|
+ >{{ row.acceptorName }} <span v-if="row.acceptorStaffNo">[{{ row.acceptorStaffNo }}]</span>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <!-- 分页 -->
|
|
|
+ <pagination
|
|
|
+ :total="state.totalAll"
|
|
|
+ v-model:page="state.queryParamsAll.PageIndex"
|
|
|
+ v-model:limit="state.queryParamsAll.PageSize"
|
|
|
+ @pagination="queryListAll"
|
|
|
+ />
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="state.dialogVisibleAllTable = false" class="default-button">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="onSubmitAll" :loading="state.loading" :disabled="!multipleSelectionAll.length">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
<el-button @click="state.dialogVisible = false" class="default-button">取 消</el-button>
|
|
@@ -89,25 +221,39 @@
|
|
|
</template>
|
|
|
<script setup lang="ts" name="orderAcceptRepeatEvent">
|
|
|
import { nextTick, reactive, ref } from 'vue';
|
|
|
-import { ElButton, ElInput, ElMessage, FormInstance } from 'element-plus';
|
|
|
+import {ElButton, ElInput, ElMessage, ElMessageBox, FormInstance} from 'element-plus';
|
|
|
import { shortcuts } from '/@/utils/constants';
|
|
|
import { throttle } from '/@/utils/tools';
|
|
|
-import { addCommon } from '/@/api/auxiliary/advice';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+import {repeatEventAdd, repeatEventList} from '/@/api/business/repeatEvent';
|
|
|
+import { auth } from '/@/utils/authFunction';
|
|
|
+import {formatDate} from "/@/utils/formatTime";
|
|
|
+import {orderList} from "/@/api/business/order";
|
|
|
+import {removeDuplicate} from "/@/utils/arrayOperation";
|
|
|
const state = reactive<any>({
|
|
|
queryParams: {
|
|
|
// 查询条件
|
|
|
PageIndex: 1,
|
|
|
PageSize: 10,
|
|
|
- Keyword: '', // 关键字
|
|
|
- CreationTimeStart: '', // 创建时间 开始
|
|
|
- CreationTimeEnd: '', // 创建时间 结束
|
|
|
- exTime: [], // 办理期限
|
|
|
+ Keyword: null, // 关键字
|
|
|
+ CreationTimeStart: dayjs().startOf('day').format('YYYY-MM-DD[T]HH:mm:ss'), // 创建时间 开始
|
|
|
+ CreationTimeEnd: dayjs().endOf('day').format('YYYY-MM-DD[T]HH:mm:ss'), // 创建时间 结束
|
|
|
+ exTime: [dayjs().startOf('day').format('YYYY-MM-DD[T]HH:mm:ss'), dayjs().endOf('day').format('YYYY-MM-DD[T]HH:mm:ss')], // 创建时间
|
|
|
},
|
|
|
tableData: [], //表格
|
|
|
loading: false, // 加载
|
|
|
total: 0, // 总数
|
|
|
dialogVisible: false, // 弹窗
|
|
|
ruleForm: {},
|
|
|
+ repeatTable: [], // 重复事件工单
|
|
|
+ dialogVisibleAllTable:false, // 全部工单 重复事件工单弹窗
|
|
|
+ allTable: [], // 全部工单
|
|
|
+ totalAll:0,
|
|
|
+ queryParamsAll:{
|
|
|
+ PageIndex: 1,
|
|
|
+ PageSize: 10,
|
|
|
+ Keyword: '', // 关键字
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
const inputValue = ref('');
|
|
@@ -159,11 +305,87 @@ const resetQuery = throttle((formEl: FormInstance | undefined) => {
|
|
|
formEl.resetFields();
|
|
|
handleQuery();
|
|
|
}, 300);
|
|
|
-const queryList = () => {};
|
|
|
+const queryList = () => {
|
|
|
+ state.loading = true;
|
|
|
+ if (!auth('business:repeatEvent:query')) ElMessage.error('抱歉,您没有权限获取重复性事件列表!');
|
|
|
+ else {
|
|
|
+ const request = {
|
|
|
+ ...state.queryParams,
|
|
|
+ };
|
|
|
+ Reflect.deleteProperty(request, 'exTime');
|
|
|
+ repeatEventList(request)
|
|
|
+ .then((res: any) => {
|
|
|
+ state.loading = false;
|
|
|
+ state.tableData = res.result.items ?? [];
|
|
|
+ state.total = res.result.total ?? 0;
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ state.loading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+// 添加
|
|
|
+const onAdd = () => {};
|
|
|
// 创建重复事件
|
|
|
-const onAdd = () => {
|
|
|
+const onCreate = () => {
|
|
|
state.dialogVisible = true;
|
|
|
};
|
|
|
+// 打开所有工单列表选择重复工单
|
|
|
+const onAddRepeatTable = ()=>{
|
|
|
+ queryListAll();
|
|
|
+ state.dialogVisibleAllTable = true;
|
|
|
+}
|
|
|
+// 获取所有工单列表
|
|
|
+const queryListAll = async ()=>{
|
|
|
+ try {
|
|
|
+ const res = await orderList(state.queryParamsAll);
|
|
|
+ state.allTable = res.result.items ?? [];
|
|
|
+ state.totalAll = res.result.total ?? 0;
|
|
|
+ }catch (e) {
|
|
|
+ console.log(e)
|
|
|
+ }
|
|
|
+}
|
|
|
+// 重置所有工单列表
|
|
|
+const queryParamsAllRef = ref<RefType>();
|
|
|
+const resetQueryAll = (formEl: FormInstance | undefined) => {
|
|
|
+ if (!formEl) return;
|
|
|
+ formEl.resetFields();
|
|
|
+ queryListAll();
|
|
|
+};
|
|
|
+const multipleSelection = ref<EmptyArrayType>([]); // 重复件表格选中项
|
|
|
+const multipleTableRef = ref<RefType>(); // 重复件表格ref
|
|
|
+const handleSelectionChange = (row:any)=>{
|
|
|
+ multipleSelection.value = row;
|
|
|
+}
|
|
|
+const multipleSelectionAll = ref<EmptyArrayType>([]); // 所有工单表格选中项
|
|
|
+const multipleTableAllRef = ref<RefType>(); // 所有工单表格ref
|
|
|
+const handleSelectionChangeAll = (row:any)=>{
|
|
|
+ multipleSelectionAll.value = row;
|
|
|
+}
|
|
|
+// 确定选择所有工单到重复工单
|
|
|
+const onSubmitAll = ()=>{
|
|
|
+ state.dialogVisibleAllTable = false;
|
|
|
+ state.repeatTable = removeDuplicate([...state.repeatTable,...multipleSelectionAll.value], 'id'); // 添加时去重
|
|
|
+ multipleSelectionAll.value = [];
|
|
|
+}
|
|
|
+// 删除重复工单
|
|
|
+const onRemoveRepeatTable = ()=>{
|
|
|
+ const title = multipleSelection.value.map((item: any) => item.title);
|
|
|
+ ElMessageBox.confirm(`您确定要删除:【${title}】,是否继续?`, '提示', {
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ draggable: true,
|
|
|
+ cancelButtonClass: 'default-button',
|
|
|
+ autofocus: false,
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ state.repeatTable = state.repeatTable.filter((item:any)=>{
|
|
|
+ return !multipleSelection.value.includes(item)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+}
|
|
|
const ruleFormRef = ref<RefType>();
|
|
|
const close = () => {
|
|
|
ruleFormRef.value.clearValidate();
|
|
@@ -174,16 +396,24 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
|
|
|
await formEl.validate((valid: boolean) => {
|
|
|
if (!valid) return;
|
|
|
state.loading = true;
|
|
|
+ const details = state.repeatTable.map((item:any)=>{
|
|
|
+ return {
|
|
|
+ orderNo: item.no,
|
|
|
+ orderId: item.id,
|
|
|
+ }
|
|
|
+ })
|
|
|
const request = {
|
|
|
...state.ruleForm,
|
|
|
- synonym: dynamicTags.value.join(','),
|
|
|
+ keyWords: dynamicTags.value.join(','),
|
|
|
+ details
|
|
|
};
|
|
|
- addCommon(request)
|
|
|
+ repeatEventAdd(request)
|
|
|
.then(() => {
|
|
|
ElMessage({
|
|
|
message: '操作成功',
|
|
|
type: 'success',
|
|
|
});
|
|
|
+ queryList();
|
|
|
state.dialogVisible = false;
|
|
|
})
|
|
|
.catch((error) => {})
|
|
@@ -193,5 +423,8 @@ const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
|
|
|
});
|
|
|
});
|
|
|
}, 300);
|
|
|
+defineExpose({
|
|
|
+ queryList,
|
|
|
+})
|
|
|
</script>
|
|
|
<style scoped lang="scss"></style>
|