Explorar el Código

reactor:自贡工单受理页面调整;新布局调整;

zhangchong hace 9 meses
padre
commit
9acd1f0eea

+ 2 - 2
.env.development

@@ -3,11 +3,11 @@ VITE_MODE_NAME=development
 # 防止部署多套系统到同一域名不同目录时,变量共用的问题 设置不同的前缀
 VITE_STORAGE_NAME=dev
 # 基础请求地址
-VITE_API_URL=http://110.188.24.28:50100
+VITE_API_URL=http://110.188.24.28:50300
 # 数据共享平台请求地址
 VITE_DATASHARE_API_YRL=http://ds.12345lm.cn
 # socket API
-VITE_API_SOCKET_URL=http://110.188.24.28:50100/hubs/hotline
+VITE_API_SOCKET_URL=http://110.188.24.28:50300/hubs/hotline
 # 上传 API
 VITE_API_UPLOAD_URL=http://110.188.24.28:50120
 # 文件上传地址前缀

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

@@ -477,7 +477,7 @@
 					type="primary"
 					@click="onSubmit('工单退回', '退回附件')"
 					:loading="state.loading"
-					v-if="isInRange(state.ruleForm?.status, 100, 200) && state.ruleForm?.canHandle"
+					v-if="isInRange(state.ruleForm?.status, 100, 200) && state.ruleForm?.canHandle && state.ruleForm?.canPrevious"
 					v-auth="'business:order:return'"
 					>退 回</el-button
 				>
@@ -743,6 +743,10 @@ const onRecord = () => {
 // 提交流程
 const processAuditRef = ref<RefType>(); // 处理流程
 const onSubmit = (val: string, annexName: string = '办理附件', classify: string = '办理附件') => {
+  if(['工单办理'].includes(val) && state.ruleForm.isReturnUnderApproval){
+    ElMessage.warning(`该工单存在正在审核中的退回,不能办理!`);
+    return;
+  }
 	const params = {
 		id: state.ruleForm.workflowId,
 		processType: val,
@@ -810,6 +814,10 @@ const getCopyOrder = () => {
 // 特提
 const specialHandleOrderRef = ref<RefType>(); // 特提
 const onSpecialHandle = () => {
+  if(state.ruleForm.isReturnUnderApproval){
+    ElMessage.warning(`该工单存在正在审核中的退回,不能特提!`);
+    return;
+  }
 	if (state.ruleForm.status == 200) {
 		// 会签工单无法进行特提
 		ElMessage.warning('工单会签中,请先结束会签!');

+ 1 - 1
src/components/ProTable/components/Pagination.vue

@@ -102,7 +102,7 @@ onMounted(() => {
 </script>
 <style scoped>
 .pagination-container {
-	padding-top: 20px;
+	padding-top: 10px;
 	display: flex;
 	justify-content: flex-end;
 }

+ 78 - 54
src/components/ProTable/index.vue

@@ -45,55 +45,60 @@
 			</div>
 		</div>
 		<!-- 表格主体 -->
-		<el-table
-			ref="tableRef"
-			v-bind="$attrs"
-			:data="processTableData"
-			:border="border"
-			:row-key="rowKey"
-			@selection-change="selectionChange"
-			v-loading="loading"
-			:scrollbar-always-on="true"
-			v-horizontal-scroll="'always'"
-		>
-			<!-- 默认插槽 -->
-			<slot />
-			<template v-for="item in tableColumns" :key="item">
-				<!-- selection || radio || index || expand || sort -->
-				<el-table-column
-					v-if="item.type && columnTypes.includes(item.type)"
-					v-bind="item"
-					:align="item.align ?? 'left'"
-					:reserve-selection="item.type == 'selection'"
-				>
-					<template #default="scope">
-						<!-- expand -->
-						<template v-if="item.type == 'expand'">
-							<component :is="item.render" v-bind="scope" v-if="item.render" />
-							<slot v-else :name="item.type" v-bind="scope" />
-						</template>
-						<!-- radio -->
-						<el-radio v-if="item.type == 'radio'" v-model="radio" :label="scope.row[rowKey]">
-							<i></i>
-						</el-radio>
-					</template>
-				</el-table-column>
-				<!-- other -->
-				<TableColumn v-if="!item.type && item.prop && item.isShow" :column="item" col-setting="">
-					<template v-for="slot in Object.keys($slots)" #[slot]="scope">
-						<slot :name="slot" v-bind="scope" />
-					</template>
-				</TableColumn>
-			</template>
-			<!-- 插入表格最后一行之后的插槽 -->
-			<template #append>
-				<slot name="append" />
-			</template>
-			<!-- 无数据 -->
-			<template #empty>
-				<el-empty :image-size="120" />
-			</template>
-		</el-table>
+
+    <el-table
+        ref="tableRef"
+        v-bind="$attrs"
+        :data="processTableData"
+        :border="border"
+        :row-key="rowKey"
+        @selection-change="selectionChange"
+        :scrollbar-always-on="true"
+        v-horizontal-scroll="'always'"
+        v-loading="loading"
+        height="100%"
+        :key="Math.random()"
+        :row-style="{height: '24px'}"
+        :cell-style="{padding: '4px 0'}"
+    >
+      <!-- 默认插槽 -->
+      <slot />
+      <template v-for="item in tableColumns" :key="item">
+        <!-- selection || radio || index || expand || sort -->
+        <el-table-column
+            v-if="item.type && columnTypes.includes(item.type)"
+            v-bind="item"
+            :align="item.align ?? 'left'"
+            :reserve-selection="item.type == 'selection'"
+        >
+          <template #default="scope">
+            <!-- expand -->
+            <template v-if="item.type == 'expand'">
+              <component :is="item.render" v-bind="scope" v-if="item.render" />
+              <slot v-else :name="item.type" v-bind="scope" />
+            </template>
+            <!-- radio -->
+            <el-radio v-if="item.type == 'radio'" v-model="radio" :label="scope.row[rowKey]">
+              <i></i>
+            </el-radio>
+          </template>
+        </el-table-column>
+        <!-- other -->
+        <TableColumn v-if="!item.type && item.prop && item.isShow" :column="item" col-setting="">
+          <template v-for="slot in Object.keys($slots)" #[slot]="scope">
+            <slot :name="slot" v-bind="scope" />
+          </template>
+        </TableColumn>
+      </template>
+      <!-- 插入表格最后一行之后的插槽 -->
+      <template #append>
+        <slot name="append" />
+      </template>
+      <!-- 无数据 -->
+      <template #empty>
+        <el-empty :image-size="120" />
+      </template>
+    </el-table>
 		<!-- 分页组件 -->
 		<slot name="pagination">
 			<PaginationEl
@@ -111,7 +116,7 @@
 </template>
 
 <script setup lang="ts" name="ProTable">
-import { ref, provide, onMounted, unref, computed, reactive, PropType, watch } from 'vue';
+import {ref, provide, onMounted, unref, computed, reactive, PropType, watch, nextTick} from 'vue';
 import { ElMessageBox, ElTable } from 'element-plus';
 import { useSelection } from '@/hooks/useSelection';
 import { ColumnProps, TypeProps } from '@/components/ProTable/interface';
@@ -119,6 +124,8 @@ import PaginationEl from './components/Pagination.vue';
 import ColSetting from './components/ColSetting.vue';
 import TableColumn from './components/TableColumn.vue';
 import { downloadFileByStream } from '@/utils/tools';
+import { useResizeObserver } from '@vueuse/core'
+
 
 // 接受父组件参数,配置默认值
 const props = defineProps({
@@ -257,16 +264,25 @@ const { selectionChange, selectedList, selectedListIds, isSelected } = useSelect
 
 // 清空选中数据列表
 const clearSelection = () => tableRef.value!.clearSelection();
-
 // 初始化表格数据 && 拖拽排序
-onMounted(() => {});
-
+onMounted(() => {
+  useResizeObserver(tableRef, () => {
+    tableRef.value.doLayout();
+  })
+});
 // 处理表格数据
 const processTableData = computed(() => {
 	if (!props.pagination) return props.data;
 	return props.data;
 });
 
+// 监听 tableData 的变化来更新表格布局
+watch(processTableData, () => {
+  if (tableRef.value) {
+    tableRef.value.doLayout();
+  }
+});
+
 // 接收 columns 并设置为响应式
 const tableColumns = ref(props.columns);
 
@@ -580,8 +596,16 @@ defineExpose({
 });
 </script>
 <style scoped lang="scss">
+.pro-table-main{
+  display: flex;
+  flex-direction: column;
+  height:calc(100% - 40px);
+  .el-table{
+   flex:1;
+  }
+}
 .table-header {
-	margin-bottom: 15px;
+	margin-bottom: 10px;
 	display: flex;
 	justify-content: space-between;
 }

+ 1 - 1
src/components/ProcessAudit/index.vue

@@ -312,7 +312,7 @@
 											prop="timeLimitUnit"
 											:rules="[{ required: true, message: '请选择办理时限单位', trigger: 'change' }]"
 										>
-											<el-select v-model="state.ruleForm.timeLimitUnit" placeholder="办理时限单位" @change="computeTimeNext" disabled>
+											<el-select v-model="state.ruleForm.timeLimitUnit" placeholder="办理时限单位" @change="computeTimeNext" disabled style="width: 240px">
 												<el-option v-for="item in timeTypeOptions" :value="item.key" :key="item.key" :label="item.value" />
 											</el-select>
 										</el-form-item>

+ 1 - 1
src/layout/footer/index.vue

@@ -30,7 +30,7 @@ const props = defineProps({
 <style scoped lang="scss">
 .layout-footer {
 	width: 100%;
-	padding: 5px 0;
+	padding-bottom: 5px;
 	color: var(--el-text-color-primary);
 	&-warp {
 		display: flex;

+ 2 - 1
src/theme/element.scss

@@ -280,7 +280,7 @@
 		padding: 0;
 	}
 	thead {
-		height: 50px !important;
+		//height: 50px !important;
 		color: var(--hotline-color-text-main);
 	}
 	th.el-table__cell {
@@ -400,6 +400,7 @@
 .el-table__body tr.hover-row.el-table__row--striped > td.el-table__cell,
 .el-table__body tr.hover-row > td.el-table__cell {
 	background: var(--el-fill-color-darker);
+	//background: var(--el-color-primary-light-5);
 }
 .el-table-v2__row:hover {
 	background: var(--el-fill-color-darker);

+ 4 - 4
src/views/business/discern/todo.vue

@@ -203,21 +203,21 @@ const columnsDone = [
 	{ prop: 'order.isProvinceText', label: '省/市工单', minWidth: 90 },
 	{ prop: 'statusText', label: '甄别状态', minWidth: 100 },
   {
-    prop: 'order.actualHandleTime',
+    prop: 'screenDetail.newestAuditTime',
     label: '审批时间',
     sortable: 'custom',
     minWidth: 170,
     render: (scope) => {
-      return <span>{formatDate(scope.row.order?.actualHandleTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+      return <span>{formatDate(scope.row.screenDetail?.newestAuditTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
     },
   },
   {
-    prop: 'order.actualHandleTime',
+    prop: 'screenDetail.newestBackTime',
     label: '退回时间',
     sortable: 'custom',
     minWidth: 170,
     render: (scope) => {
-      return <span>{formatDate(scope.row.order?.actualHandleTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+      return <span>{formatDate(scope.row.screenDetail?.actualHandleTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
     },
   },
   { prop: 'creatorName', label: '申请人', minWidth: 120 },

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

@@ -415,7 +415,7 @@ const state = reactive<any>({
 		ActualHandleTimeStart: null,
 		ActualHandleTimeEnd: null,
 		PushTypeCode: null, //推送类型
-		IsProvinceOrder: '', // 省市工单
+		IsProvinceOrder: null, // 省市工单
 		IsSensitiveWord: null, // 是否敏感词工单
 		SensitiveWord: null, // 敏感词
 		IsUrgent: null, // 是否加急

+ 4 - 4
src/views/statistics/center/emergencyList.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="statistics-center-emergency-List-container layout-pd">
 		<el-card shadow="never">
-			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent>
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent label-width="100px">
 				<el-row :gutter="10">
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
 						<el-form-item label="工单标题" prop="Title">
@@ -14,8 +14,8 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
-						<el-form-item label="热点分类" prop="Hotspot">
-							<el-input v-model="state.queryParams.Hotspot" placeholder="热点分类名称" clearable @keyup.enter="handleQuery" />
+						<el-form-item label="热点分类" prop="HotspotSpliceName">
+							<el-input v-model="state.queryParams.HotspotSpliceName" placeholder="热点分类名称" clearable @keyup.enter="handleQuery" />
 						</el-form-item>
 					</el-col>
 					<transition name="el-zoom-in-top">
@@ -158,7 +158,7 @@ const state = reactive<any>({
 		PageSize: 10,
 		Title: null, // 关键词
 		No: null,
-		Hotspot: null,
+    HotspotSpliceName: null,
 		AcceptType: null,
 		SourceChannel: null,
 		crTime: [], // 创建时间

+ 9 - 8
src/views/system/parameter/index.vue

@@ -1,6 +1,6 @@
 <template>
-	<div class="system-parameter-container layout-pd">
-		<el-card shadow="never">
+	<div class="system-parameter-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
 			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
 				<el-form-item label="参数名称" prop="settingName">
 					<el-input v-model="state.queryParams.settingName" placeholder="请填写参数名称" clearable @keyup.enter="handleQuery" class="keyword-input" />
@@ -13,8 +13,6 @@
 					<el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
 				</el-form-item>
 			</el-form>
-		</el-card>
-		<el-card shadow="never">
 			<ProTable
 				ref="proTableRef"
 				:columns="columns"
@@ -24,6 +22,7 @@
 				:total="state.total"
 				v-model:page-index="state.queryParams.PageIndex"
 				v-model:page-size="state.queryParams.PageSize"
+				class="table"
 			>
 				<template #tableHeader="scope">
 					<el-button type="primary" @click="addParameter" v-waves v-auth="'system:parameter:add'">
@@ -39,7 +38,7 @@
 					<!--              <el-button link type="danger" @click="parameterDelete(row)" v-auth="'system:timeLimit:detail'" title="删除参数"> 删除 </el-button>-->
 				</template>
 			</ProTable>
-		</el-card>
+		</div>
 		<!--  参数新增  -->
 		<parameter-add ref="ParameterAddRef" @updateList="queryList" />
 		<!--  参数编辑  -->
@@ -64,11 +63,11 @@ const columns = ref<any[]>([
 	{ prop: 'code', label: '参数', minWidth: 150 },
 	{ prop: 'settingValue', label: '参数值', minWidth: 150 },
 	{ prop: 'remark', label: '参数说明', minWidth: 300 },
-	{ prop: 'creator.name', label: '创建人' , minWidth: 120},
+	{ prop: 'creator.name', label: '创建人', minWidth: 120 },
 	{
 		prop: 'creationTime',
 		label: '创建时间',
-    minWidth: 160,
+		minWidth: 160,
 		render: (scope: any) => {
 			return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
 		},
@@ -151,8 +150,10 @@ onMounted(() => {
 	queryList();
 });
 </script>
-
 <style lang="scss" scoped>
 .system-parameter-container {
+	.pro-table-main {
+		flex: 1;
+	}
 }
 </style>

+ 1 - 1
src/views/todo/seats/accept/ybAccept.vue

@@ -484,7 +484,7 @@
 								</el-col>
 								<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
 									<el-form-item>
-										<el-button class="default-button" @click="onCancel"> 取消 </el-button>
+										<el-button class="default-button" @click="onCancel" :loading="buttonLoading" > 取消 </el-button>
 										<el-button class="default-button" @click="save(ruleFormRef)" :loading="buttonLoading" :disabled="isSaveSuccess"> 保存 </el-button>
 										<el-button type="primary" @click="submit(ruleFormRef)" :loading="buttonLoading" v-if="canHandle" :disabled="!isSaveSuccess">
 											办理

+ 1 - 1
src/views/todo/seats/accept/zgAccept.vue

@@ -425,7 +425,7 @@
                 </el-col>
                 <el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
                   <el-form-item>
-                    <el-button class="default-button" @click="onCancel"> 取消 </el-button>
+                    <el-button class="default-button" @click="onCancel" :loading="buttonLoading" > 取消 </el-button>
                     <el-button class="default-button" @click="save(ruleFormRef)" :loading="buttonLoading" :disabled="isSaveSuccess"> 保存 </el-button>
                     <el-button type="primary" @click="submit(ruleFormRef)" :loading="buttonLoading" v-if="canHandle" :disabled="!isSaveSuccess">
                       办理

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

@@ -137,7 +137,7 @@ import { useRouter } from 'vue-router';
 import { seatsListTodo, orderSign } from '@/api/todo/order';
 import { downloadFileByStream, downloadZip } from '@/utils/tools';
 import { exportJbOrder, exportOrder } from '@/api/business/order';
-import { defaultDateThree, defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { treeArea } from '@/api/auxiliary/area';
 // 引入组件