Bladeren bron

reactor:工单发布调整(需求未确定,未完成)

zhangchong 1 jaar geleden
bovenliggende
commit
dd44293fd1

+ 21 - 0
src/api/business/release.ts → src/api/business/publish.ts

@@ -7,6 +7,17 @@
  * @LastEditTime: 2022-11-16 14:49:01
  */
 import request from '/@/utils/request';
+/**
+ * @description: 工单已发布列表
+ * @param {any} params
+ */
+export const publishedList = (params: object) => {
+    return request({
+        url: `/api/v1/Order/published`,
+        method: 'get',
+        params
+    });
+};
 /**
  * @description: 工单发布列表
  * @param {any} params
@@ -29,6 +40,16 @@ export const publishOrder = (data: object) => {
         data
     });
 };
+/**
+ * @description: 工单发布详情
+ * @param id
+ */
+export const publishOrderDetail = (id: string) => {
+    return request({
+        url: `/api/v1/Order/published-order/${id}`,
+        method: 'get',
+    });
+};
 /**
  * @description: 发布页面基础信息
  * @param id

+ 2 - 2
src/components/LogicFlow/index.vue

@@ -222,11 +222,11 @@ const initOp = () => {
 	});
 	// 控制面板-发布
 	// lf.extension.control.addItem({
-	// 	iconClass: 'lf-control-release',
+	// 	iconClass: 'lf-control-publish',
 	// 	title: '发布流程模板',
 	// 	text: '发布',
 	// 	onClick: () => {
-	// 		release(ruleFormRef.value);
+	// 		publish(ruleFormRef.value);
 	// 	},
 	// });
 	// 设置默认边

+ 1 - 1
src/views/business/order/accept/index.vue

@@ -228,7 +228,7 @@
 						</el-row>
 						<p class="border-title mb10">诉求信息</p>
 						<el-row>
-							<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
+							<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.no">
 								<el-form-item label="工单编码"> {{ state.ruleForm.no }} </el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

+ 202 - 0
src/views/business/publish/backlog/index.vue

@@ -0,0 +1,202 @@
+<template>
+  <div class="business-publish-container layout-pd">
+    <!-- 搜索  -->
+    <el-card shadow="never">
+      <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
+        <el-row :gutter="10">
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+            <el-form-item label="关键词" prop="Keyword">
+              <el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+            <el-form-item label=" ">
+              <el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+              <el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+    <el-card shadow="never">
+      <!-- 功能按钮 -->
+      <div class="mb20">
+        <el-button type="primary" @click="publishMultiple" v-auth="'business:publish:multiple'" :disabled="!multipleSelection.length">
+          <SvgIcon name="iconfont icon-tianjiawenjian" class="mr5" />批量发布
+        </el-button>
+      </div>
+      <!-- 表格 -->
+      <el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" :selectable="selectable"/>
+        <el-table-column prop="no" label="工单编码" show-overflow-tooltip  width="150"></el-table-column>
+        <el-table-column prop="no" label="是否会签件" show-overflow-tooltip width="100"></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 label="工单标题" show-overflow-tooltip width="400">
+          <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>{{ row.acceptorName + '[' + row.acceptorStaffNo + ']' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
+        <el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
+        <el-table-column prop="order.actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
+        <el-table-column prop="order.actualHandleTime" label="接办时间" show-overflow-tooltip width="170">
+          <template #default="{ row }">
+            <span>{{ formatDate(row.actualHandleTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="publishTime" 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 prop="publishMan" label="发布人" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column prop="order.statusText" label="发布状态" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column prop="publishStateText" label="是否公开" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="操作" width="250" fixed="right" align="center">
+          <template #default="{ row }">
+            <el-button link type="primary" @click="publish(row)" title="发布工单" v-auth="'business:publish:publish'"> 发布 </el-button>
+            <el-button link type="danger" @click="cancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'"> 取消发布 </el-button>
+            <el-button link type="success" @click="publishContent(row)" title="发布内容" v-auth="'business:publish:content'"> 发布内容 </el-button>
+            <el-button link type="danger" @click="OnOrderRedo(row)" title="重办工单" v-auth="'business:publish:reDo'"> 重办 </el-button>
+            <el-button link type="primary" @click="publishDetail(row)" title="发布详情" v-auth="'business:publish:detail'"> 发布详情 </el-button>
+          </template>
+        </el-table-column>
+        <template #empty>
+          <Empty />
+        </template>
+      </el-table>
+      <!-- 分页 -->
+      <pagination
+          :total="state.total"
+          v-model:page="state.queryParams.PageIndex"
+          v-model:limit="state.queryParams.PageSize"
+          @pagination="queryList"
+      />
+    </el-card>
+    <!-- 工单发布详情 -->
+    <order-publish ref="orderPublishRef" @updateList="queryList" />
+    <!--  流程审批  -->
+    <process-approval ref="processApprovalRef" @orderProcessSuccess="queryList" />
+  </div>
+</template>
+<script setup lang="ts" name="orderPublishBacklog">
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import {ElButton, ElMessage, ElMessageBox, FormInstance} from 'element-plus';
+import { auth } from '/@/utils/authFunction';
+import { throttle } from '/@/utils/tools';
+import { formatDate } from '/@/utils/formatTime';
+import {publishList} from "/@/api/business/publish";
+// 引入组件
+const OrderPublish = defineAsyncComponent(() => import('/@/views/business/publish/component/Order-publish.vue'));
+const ProcessApproval = defineAsyncComponent(() => import('/@/components/ProcessApproval/index.vue'));  // 流程审批
+// 定义变量内容
+const ruleFormRef = ref<RefType>(); // 表单ref
+const state = reactive(<any>{
+  queryParams: {
+    // 查询条件
+    PageIndex: 1,
+    PageSize: 10,
+    Keyword: '', // 关键词
+  },
+  tableData: [], //表单
+  loading: false, // 加载
+  total: 0, // 总数
+});
+/** 获取列表 */
+const queryList = throttle(() => {
+  if (!auth('business:publish:backlog:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
+  else {
+    state.loading = true;
+    publishList(state.queryParams).then((res: any) => {
+      state.tableData = res.result?.items ?? [];
+      state.total = res.result?.total ?? 0;
+      state.loading = false;
+    }).catch((err: any) => {
+      state.loading = false;
+    })
+  }
+}, 500);
+const selectable = (row:any)=>{ //设置省工单不可选(不可批量发布)
+  return !row.isProvince;
+}
+/** 重置按钮操作 */
+const resetQuery = throttle((formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  queryList();
+}, 500);
+// 表格多选
+const multipleTableRef = ref<RefType>()
+const multipleSelection = ref<any>([])
+const handleSelectionChange = (val: any[]) => {
+  multipleSelection.value = val
+}
+// 批量发布
+const publishMultiple = () => {
+  console.log('批量发布');
+};
+// 发布
+const orderPublishRef = ref<RefType>(); // 工单发布详情ref
+const publish = (row: any) => {
+  orderPublishRef.value.openDialog(row);
+};
+// 取消发布
+const cancelPublish = (row: any) => {
+  ElMessageBox.confirm(`确定要取消发布【${row.title}】?`, '提示', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+    draggable: true,
+    cancelButtonClass: 'default-button',
+  })
+      .then(() => {
+
+      }).catch(() => {});
+};
+// 发布内容
+const publishContent = (row: any) => {
+  console.log('发布内容');
+};
+// 工单重办
+const processApprovalRef = ref<RefType>();  // 流程审批ref
+const OnOrderRedo = (row: any) => {
+  const params = {
+    id: row.workflowId,
+    processType: '工单重办',
+    orderDetail:row,
+    extra:{
+      dialogTitle: '工单重办',
+      inputPlaceholder:'重办意见',
+      annexName:"办理附件",
+    }
+  }
+  processApprovalRef.value.openDialog(params);
+};
+// 发布详情
+const publishDetail = (row: any) => {
+  orderPublishRef.value.openDialog(row,true);
+};
+onMounted(() => {
+  queryList();
+});
+</script>
+
+<style scoped lang="scss">
+.business-publish-container {
+
+}
+</style>

+ 47 - 19
src/views/business/release/component/Order-release.vue → src/views/business/publish/component/Order-publish.vue

@@ -1,5 +1,5 @@
 <template>
-	<el-dialog v-model="state.dialogVisible" draggable title="工单发布" ref="dialogRef" width="50%" append-to-body destroy-on-close @close="close">
+	<el-dialog v-model="state.dialogVisible" draggable :title="dialogTitle" ref="dialogRef" width="50%" append-to-body destroy-on-close @close="close">
 		<div class="collapse-container pb1">
 			<el-form label-width="100px" ref="ruleFormRef" :model="state.ruleForm">
 				<el-row :gutter="10" class="w100">
@@ -8,7 +8,7 @@
 							<el-divider content-position="left"> <b class="font16">省工单发布内容</b> </el-divider>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 								<el-form-item label="是否公开" prop="proPublishState" :rules="[{ required: false, message: '请选择是否公开', trigger: 'change' }]">
-									<el-radio-group v-model="state.ruleForm.proPublishState">
+									<el-radio-group v-model="state.ruleForm.proPublishState" :disabled="disabled">
 										<el-radio :label="false">不公开</el-radio>
                     <el-radio :label="true">公开</el-radio>
 									</el-radio-group>
@@ -20,7 +20,7 @@
 											message: '反馈人电话格式错误',
 											trigger: 'blur',
 										},]">
-									<el-input placeholder="请输入反馈人电话" v-model="state.ruleForm.feedBackPhone" clearable></el-input>
+									<el-input placeholder="请输入反馈人电话" v-model="state.ruleForm.feedBackPhone" clearable  :disabled="disabled"></el-input>
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" v-if="!state.ruleForm.proPublishState">
@@ -30,6 +30,7 @@
 										placeholder="请输入不公开原因"
 										:autosize="{ minRows: 6, maxRows: 10 }"
 										v-model="state.ruleForm.noPubReason"
+                    :disabled="disabled"
 									></el-input>
 								</el-form-item>
 							</el-col>
@@ -41,7 +42,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="整改后标题" prop="arrangeTitle" :rules="[{ required: false, message: '请输入整改后标题', trigger: 'blur' }]">
-							<el-input placeholder="请输入整改后标题" v-model="state.ruleForm.arrangeTitle" clearable></el-input>
+							<el-input placeholder="请输入整改后标题" v-model="state.ruleForm.arrangeTitle" clearable  :disabled="disabled"></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
@@ -54,6 +55,7 @@
 								type="textarea"
 								:autosize="{ minRows: 6, maxRows: 10 }"
 								v-model="state.ruleForm.arrangeContent"
+                :disabled="disabled"
 							></el-input>
 						</el-form-item>
 					</el-col>
@@ -67,12 +69,13 @@
 								placeholder="请输入整改后办件结果"
 								:autosize="{ minRows: 6, maxRows: 10 }"
 								v-model="state.ruleForm.arrangeOpinion"
+                :disabled="disabled"
 							></el-input>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="门户是否公开" prop="publishState" :rules="[{ required: false, message: '请输入整改后内容', trigger: 'blur' }]">
-							<el-radio-group v-model="state.ruleForm.publishState">
+							<el-radio-group v-model="state.ruleForm.publishState"  :disabled="disabled">
 								<el-radio :label="false">不公开</el-radio>
 								<el-radio :label="true">公开</el-radio>
 							</el-radio-group>
@@ -85,7 +88,7 @@
           </el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="需回访部门" prop="checkList" :rules="[{ required: false, message: '请选择需回访部门', trigger: 'blur' }]">
-							<el-checkbox-group v-model="state.ruleForm.idNames">
+							<el-checkbox-group v-model="state.ruleForm.idNames" :disabled="disabled">
 								<el-checkbox :label="item" v-for="item in idNames" :key="item.label">{{ item.value }}</el-checkbox>
 							</el-checkbox-group>
 						</el-form-item>
@@ -93,19 +96,24 @@
 				</el-row>
 			</el-form>
 		</div>
-
-		<template #footer>
+    <template #footer v-if="disabled">
+			<span class="dialog-footer">
+				<el-button @click="onCancel" class="default-button">关 闭</el-button>
+			</span>
+    </template>
+		<template #footer v-else>
 			<span class="dialog-footer">
 				<el-button @click="onCancel" class="default-button">取 消</el-button>
-				<el-button type="primary" @click="onRelease(ruleFormRef)" :loading="state.loading" v-auth="'business:release:release'">发布</el-button>
+				<el-button type="primary" @click="onPublish(ruleFormRef)" v-if="!disabled" :loading="state.loading" v-auth="'business:publish:publish'">发布</el-button>
 			</span>
 		</template>
+
 	</el-dialog>
 </template>
-<script setup lang="ts" name="orderReleaseDetail">
+<script setup lang="ts" name="orderPublishDetail">
 import { reactive, ref } from 'vue';
 import {ElMessage, ElMessageBox, FormInstance} from 'element-plus';
-import {baseData,publishOrder} from '/@/api/business/release';
+import {baseData,publishOrder,publishOrderDetail} from '/@/api/business/publish';
 
 // 定义子组件向父组件传值/事件
 const emit = defineEmits(['updateList']);
@@ -127,16 +135,36 @@ const state = reactive<any>({
 });
 const ruleFormRef = ref<RefType>(); // 表单ref
 const idNames = ref<EmptyArrayType>()// 部门列表
-const getBaseData = (id:string)=>{
-  baseData(id).then((res:any)=>{
+const disabled = ref<boolean>(false); //是否查看详情
+const dialogTitle = ref<string>('发布详情'); // 弹窗标题
+const getBaseData = async (id:string)=>{
+  try {
+    const res = await baseData(id);
     state.publishDetail = res.result ?? {};
     idNames.value = res.result?.idNames ?? [];
-  })
+
+  } catch (error) {
+    console.log(error);
+  }
 }
-// 打开弹窗
-const openDialog = (row:any) => {
-  state.orderDetail = row;
-  getBaseData(row.id)
+/*
+* @param row 工单详情
+* @param isDisabled 是否查看详情
+* @description 打开弹窗
+* */
+const openDialog = async (row:any,isDisabled:boolean=false) => {
+  disabled.value = isDisabled;
+  if(isDisabled){
+    state.orderDetail = row.order ?? {};
+    await getBaseData(state.orderDetail.id)
+    const response = await publishOrderDetail(row.id)
+    state.ruleForm = response.result ?? {};
+    dialogTitle.value = '发布详情';
+  }else{
+    state.orderDetail = row ?? {};
+    await getBaseData(state.orderDetail.id)
+    dialogTitle.value = '工单发布';
+  }
 	state.loading = false;
 	state.dialogVisible = true;
 };
@@ -153,7 +181,7 @@ const onCancel = () => {
 	closeDialog();
 };
 // 发布
-const onRelease = (formEl: FormInstance | undefined) => {
+const onPublish = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.validate((valid: boolean) => {
 		if (!valid) return;

+ 210 - 0
src/views/business/publish/index.vue

@@ -0,0 +1,210 @@
+<template>
+	<div class="business-publish-container layout-pd">
+		<!-- 搜索  -->
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
+				<el-row :gutter="10">
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label="关键词" prop="Keyword">
+							<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
+						<el-form-item label=" ">
+							<el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+							<el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading">
+								<SvgIcon name="ele-Refresh" class="mr5" />重置
+							</el-button>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-card>
+		<el-card shadow="never">
+			<!-- 功能按钮 -->
+			<div class="mb20">
+				<el-button type="primary" @click="publishMultiple" v-auth="'business:publish:multiple'" :disabled="!multipleSelection.length">
+					<SvgIcon name="iconfont icon-tianjiawenjian" class="mr5" />批量发布
+				</el-button>
+			</div>
+			<!-- 表格 -->
+			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55" :selectable="selectable" />
+				<el-table-column prop="order.no" label="工单编码" show-overflow-tooltip width="150"></el-table-column>
+				<el-table-column prop="order.no" label="是否会签件" show-overflow-tooltip width="100"></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="400">
+					<template #default="{ row }">
+						<span class="color-primary">{{ row.order.title }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column 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>{{ row.order.acceptorName + '[' + row.order.acceptorStaffNo + ']' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="order.hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
+				<el-table-column prop="order.acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
+				<el-table-column prop="order.actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></el-table-column>
+				<el-table-column label="接办时间" show-overflow-tooltip width="170">
+					<template #default="{ row }">
+						<span>{{ formatDate(row.order.actualHandleTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="publishTime" 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 prop="publishMan" label="发布人" show-overflow-tooltip width="120"></el-table-column>
+				<el-table-column prop="order.statusText" label="发布状态" show-overflow-tooltip width="100"></el-table-column>
+				<el-table-column prop="isPublicity" label="是否公开" show-overflow-tooltip width="100">
+					<template #default="{ row }">
+						<span>{{ row.isPublicity ? '公开' : '不公开' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" width="250" fixed="right" align="center">
+					<template #default="{ row }">
+						<el-button link type="primary" @click="publish(row)" title="发布工单" v-auth="'business:publish:publish'" v-if="row.order.statusText !== '已发布'"> 发布 </el-button>
+						<el-button link type="danger" @click="cancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'" v-if="row.order.statusText === '已发布'"> 取消发布 </el-button>
+						<el-button link type="success" @click="publishContent(row)" title="发布内容" v-auth="'business:publish:content'"> 发布内容 </el-button>
+						<el-button link type="danger" @click="OnOrderRedo(row)" title="重办工单" v-auth="'business:publish:reDo'"> 重办 </el-button>
+						<el-button link type="primary" @click="publishDetail(row)" title="发布详情" v-auth="'business:publish:detail'"> 发布详情 </el-button>
+					</template>
+				</el-table-column>
+				<template #empty>
+					<Empty />
+				</template>
+			</el-table>
+			<!-- 分页 -->
+			<pagination
+				:total="state.total"
+				v-model:page="state.queryParams.PageIndex"
+				v-model:limit="state.queryParams.PageSize"
+				@pagination="queryList"
+			/>
+		</el-card>
+		<!-- 工单发布详情 -->
+		<order-publish ref="orderPublishRef" @updateList="queryList" />
+		<!--  流程审批  -->
+		<process-approval ref="processApprovalRef" @orderProcessSuccess="queryList" />
+	</div>
+</template>
+<script setup lang="ts" name="orderPublish">
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { auth } from '/@/utils/authFunction';
+import { throttle } from '/@/utils/tools';
+import { formatDate } from '/@/utils/formatTime';
+import { publishedList } from '/@/api/business/publish';
+// 引入组件
+const OrderPublish = defineAsyncComponent(() => import('/@/views/business/publish/component/Order-publish.vue'));
+const ProcessApproval = defineAsyncComponent(() => import('/@/components/ProcessApproval/index.vue')); // 流程审批
+// 定义变量内容
+const ruleFormRef = ref<RefType>(); // 表单ref
+const state = reactive(<any>{
+	queryParams: {
+		// 查询条件
+		PageIndex: 1,
+		PageSize: 10,
+		Keyword: '', // 关键词
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
+});
+/** 获取列表 */
+const queryList = throttle(() => {
+	if (!auth('business:publish:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
+	else {
+		state.loading = true;
+		publishedList(state.queryParams)
+			.then((res: any) => {
+				state.tableData = res.result?.items ?? [];
+				state.total = res.result?.total ?? 0;
+				state.loading = false;
+			})
+			.catch((err: any) => {
+				state.loading = false;
+			});
+	}
+}, 500);
+const selectable = (row: any) => {
+	//设置省工单不可选(不可批量发布)
+	return !row.isProvince;
+};
+/** 重置按钮操作 */
+const resetQuery = throttle((formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
+}, 500);
+// 表格多选
+const multipleTableRef = ref<RefType>();
+const multipleSelection = ref<any>([]);
+const handleSelectionChange = (val: any[]) => {
+	multipleSelection.value = val;
+};
+// 批量发布
+const publishMultiple = () => {
+	console.log('批量发布');
+};
+// 发布
+const orderPublishRef = ref<RefType>(); // 工单发布详情ref
+const publish = (row: any) => {
+	orderPublishRef.value.openDialog(row);
+};
+// 取消发布
+const cancelPublish = (row: any) => {
+	console.log('取消发布');
+	ElMessageBox.confirm(`确定要取消发布【${row.title}】?`, '提示', {
+		confirmButtonText: '确认',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+	})
+		.then(() => {})
+		.catch(() => {});
+};
+// 发布内容
+const publishContent = (row: any) => {
+	console.log('发布内容');
+};
+// 工单重办
+const processApprovalRef = ref<RefType>(); // 流程审批ref
+const OnOrderRedo = (row: any) => {
+	const params = {
+		id: row.order.workflowId,
+		processType: '工单重办',
+		orderDetail: row.order,
+		extra: {
+			dialogTitle: '工单重办',
+			inputPlaceholder: '重办意见',
+			annexName: '办理附件',
+		},
+	};
+	processApprovalRef.value.openDialog(params);
+};
+// 发布详情
+const publishDetail = (row: any) => {
+  orderPublishRef.value.openDialog(row,true);
+};
+onMounted(() => {
+	queryList();
+});
+</script>
+
+<style scoped lang="scss">
+.business-publish-container {
+}
+</style>

+ 0 - 213
src/views/business/release/index.vue

@@ -1,213 +0,0 @@
-<template>
-	<div class="business-release-container layout-pd">
-		<!-- 搜索  -->
-		<el-card shadow="never">
-			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent class="mt15" label-width="100px">
-				<el-row :gutter="10">
-					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-						<el-form-item label="关键词" prop="Keyword">
-							<el-input v-model="state.queryParams.Keyword" placeholder="工单编码/标题" clearable @keyup.enter="queryList" />
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
-            <el-form-item label=" ">
-                <el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-                <el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button" :loading="state.loading"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
-            </el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
-		</el-card>
-		<el-card shadow="never">
-			<!-- 功能按钮 -->
-			<div class="mb20">
-					<el-button type="primary" @click="releaseMultiple" v-auth="'business:release:multiple'" :disabled="!multipleSelection.length">
-						<SvgIcon name="iconfont icon-tianjiawenjian" class="mr5" />批量发布
-					</el-button>
-			</div>
-			<!-- 表格 -->
-			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" :selectable="selectable"/>
-				<el-table-column prop="no" label="工单编码" show-overflow-tooltip  width="150"></el-table-column>
-				<el-table-column prop="no" label="是否会签件" show-overflow-tooltip width="100"></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 label="工单标题" show-overflow-tooltip width="400">
-					<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>{{ row.acceptorName + '[' + row.acceptorStaffNo + ']' }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="hotspotName" label="热点分类" show-overflow-tooltip width="200"></el-table-column>
-				<el-table-column prop="acceptType" label="受理类型" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="actualHandleOrgName" label="接办部门" show-overflow-tooltip width="170"></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>
-					</template>
-				</el-table-column>
-				<el-table-column prop="publishTime" 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 prop="publishMan" label="发布人" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="publishState" label="发布状态" show-overflow-tooltip width="120"></el-table-column>
-				<el-table-column prop="isPublicity" label="是否公开" show-overflow-tooltip width="120">
-          <template #default="{ row }">
-            <span>{{ row.isPublicity ? '公开' : '不公开' }}</span>
-          </template>
-        </el-table-column>
-				<el-table-column label="操作" width="250" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="release(row)" title="发布工单" v-auth="'business:release:release'"> 发布 </el-button>
-						<el-button link type="danger" @click="cancelRelease(row)" title="取消发布" v-auth="'business:release:cancel'"> 取消发布 </el-button>
-						<el-button link type="success" @click="releaseContent(row)" title="发布内容" v-auth="'business:release:content'"> 发布内容 </el-button>
-						<el-button link type="danger" @click="OnOrderRedo(row)" title="重办工单" v-auth="'business:release:reDo'"> 重办 </el-button>
-						<el-button link type="primary" @click="releaseDetail(row)" title="发布详情" v-auth="'business:release:detail'"> 发布详情 </el-button>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
-				</template>
-			</el-table>
-			<!-- 分页 -->
-			<pagination
-				:total="state.total"
-				v-model:page="state.queryParams.PageIndex"
-				v-model:limit="state.queryParams.PageSize"
-				@pagination="queryList"
-			/>
-		</el-card>
-		<!-- 工单发布详情 -->
-		<order-release ref="orderReleaseRef" @updateList="queryList" />
-    <!--  流程审批  -->
-    <process-approval ref="processApprovalRef" @orderProcessSuccess="queryList" />
-	</div>
-</template>
-<script setup lang="ts" name="orderRelease">
-import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
-import {ElButton, ElMessage, ElMessageBox, FormInstance} from 'element-plus';
-import { auth } from '/@/utils/authFunction';
-import { throttle } from '/@/utils/tools';
-import { formatDate } from '/@/utils/formatTime';
-import {publishList} from "/@/api/business/release";
-// 引入组件
-const OrderRelease = defineAsyncComponent(() => import('/@/views/business/release/component/Order-release.vue'));
-const ProcessApproval = defineAsyncComponent(() => import('/@/components/ProcessApproval/index.vue'));  // 流程审批
-// 定义变量内容
-const ruleFormRef = ref<RefType>(); // 表单ref
-const state = reactive(<any>{
-	queryParams: {
-		// 查询条件
-		PageIndex: 1,
-		PageSize: 10,
-    Keyword: '', // 关键词
-	},
-	tableData: [], //表单
-	loading: false, // 加载
-	total: 0, // 总数
-	channelOptions: [], // 来源频道
-	emergencyLevelOptions: [], // 紧急程度
-	orderStatusOptions: [], // 工单状态
-	orgsOptions: [], // 部门
-	pushTypeOptions: [], //推送分类
-	orgData: [], // 机构数据
-});
-/** 获取列表 */
-const queryList = throttle(() => {
-	if (!auth('business:release:query')) ElMessage.error('抱歉,您没有权限查看工单发布列表!');
-	else {
-    state.loading = true;
-    publishList(state.queryParams).then((res: any) => {
-      state.tableData = res.result?.items ?? [];
-      state.total = res.result?.total ?? 0;
-      state.loading = false;
-    }).catch((err: any) => {
-      state.loading = false;
-    })
-	}
-}, 500);
-const selectable = (row:any)=>{ //设置省工单不可选(不可批量发布)
-  return !row.isProvince;
-}
-/** 重置按钮操作 */
-const resetQuery = throttle((formEl: FormInstance | undefined) => {
-	if (!formEl) return;
-	formEl.resetFields();
-	queryList();
-}, 500);
-// 表格多选
-const multipleTableRef = ref<RefType>()
-const multipleSelection = ref<any>([])
-const handleSelectionChange = (val: any[]) => {
-  multipleSelection.value = val
-}
-// 批量发布
-const releaseMultiple = () => {
-  console.log('批量发布');
-};
-// 发布
-const orderReleaseRef = ref<RefType>(); // 工单发布详情ref
-const release = (row: any) => {
-  orderReleaseRef.value.openDialog(row);
-};
-// 取消发布
-const cancelRelease = (row: any) => {
-  console.log('取消发布');
-  ElMessageBox.confirm(`确定要取消发布【${row.title}】?`, '提示', {
-    confirmButtonText: '确认',
-    cancelButtonText: '取消',
-    type: 'warning',
-    draggable: true,
-    cancelButtonClass: 'default-button',
-  })
-      .then(() => {
-
-      }).catch(() => {});
-};
-// 发布内容
-const releaseContent = (row: any) => {
-  console.log('发布内容');
-};
-// 工单重办
-const processApprovalRef = ref<RefType>();  // 流程审批ref
-const OnOrderRedo = (row: any) => {
-  const params = {
-    id: row.workflowId,
-    processType: '工单重办',
-    orderDetail:row,
-    extra:{
-      dialogTitle: '工单重办',
-      inputPlaceholder:'重办意见',
-      annexName:"办理附件",
-    }
-  }
-  processApprovalRef.value.openDialog(params);
-};
-// 发布详情
-const releaseDetail = (row: any) => {
-  console.log('发布详情');
-};
-onMounted(() => {
-	queryList();
-});
-</script>
-
-<style scoped lang="scss">
-.business-release-container {
-
-}
-</style>

+ 2 - 2
src/views/home/component/Backlog-list.vue

@@ -220,7 +220,7 @@
         </el-table-column>
         <el-table-column label="操作" width="150" fixed="right" align="center">
           <template #default="{ row }">
-            <el-button link type="primary" @click="release(row)" title="发布工单" v-auth="'business:release:release'">
+            <el-button link type="primary" @click="release(row)" title="发布工单" v-auth="'business:publish:publish'">
               发布
             </el-button>
           </template>
@@ -348,7 +348,7 @@ const linkList = ()=>{
       router.push('/business/return/backlog')
       break;
     case '4': // 发布待办
-      router.push('/business/release')
+      router.push('/business/publish')
       break;
     case '5': // 回访待办
       router.push('/business/followUp/backlog')

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

@@ -72,7 +72,7 @@
 								<!-- 草稿0 启用1 禁用2 -->
 								<template #default="{ row }">
 									<el-button link type="primary" @click="onEditTemp(row)" title="修改" v-auth="'system:workflow:template:edit'"> 修改 </el-button>
-									<el-button link type="success" v-if="row.status === 0" @click="onReleaseTemp(row)" title="发布" v-auth="'system:workflow:template:release'" >
+									<el-button link type="success" v-if="row.status === 0" @click="onReleaseTemp(row)" title="发布" v-auth="'system:workflow:template:publish'" >
 										发布
 									</el-button>
 									<!-- <el-button link type="warning" v-if="row.status === 2" @click="tempEnable(row)" title="启用" v-auth="'system:workflow:template:enable'">