index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <div class="business-publish-container layout-pd">
  3. <!-- 搜索 -->
  4. <el-card shadow="never">
  5. <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
  6. <el-form-item label="工单标题" prop="Keyword">
  7. <el-input v-model="state.queryParams.Keyword" placeholder="工单编标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
  8. </el-form-item>
  9. <el-form-item label="工单编码" prop="No">
  10. <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
  11. </el-form-item>
  12. <!-- <el-form-item label="处理结果" prop="Resolve">
  13. <el-select v-model="state.queryParams.Resolve" placeholder="请选择处理结果" @change="handleQuery">
  14. <el-option label="已得到解决" value="true" />
  15. <el-option label="未得到解决" value="false" />
  16. </el-select>
  17. </el-form-item>-->
  18. <el-form-item>
  19. <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
  20. <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
  21. <SvgIcon name="ele-Refresh" class="mr5" />重置
  22. </el-button>
  23. </el-form-item>
  24. </el-form>
  25. </el-card>
  26. <el-card shadow="never">
  27. <ProTable
  28. ref="proTableRef"
  29. :columns="columns"
  30. :data="state.tableData"
  31. @updateTable="queryList"
  32. :loading="state.loading"
  33. :total="state.total"
  34. v-model:page-index="state.queryParams.PageIndex"
  35. v-model:page-size="state.queryParams.PageSize"
  36. >
  37. <template #title="{ row }">
  38. <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
  39. </template>
  40. <template #publishState="{ row }">
  41. <span>{{ row.publishState ? '公开' : '不公开' }}</span>
  42. </template>
  43. <!-- 表格操作 -->
  44. <template #operation="{ row }">
  45. <el-button link type="primary" @click="editPublish(row)" v-if="!row.order?.isProvince" title="编辑发布" v-auth="'business:publish:edit'">
  46. 编辑发布
  47. </el-button>
  48. <order-detail :order="row.order" @updateList="queryList" />
  49. </template>
  50. </ProTable>
  51. </el-card>
  52. <!-- 工单发布详情 -->
  53. <order-publish ref="orderPublishRef" @updateList="queryList" />
  54. <!-- 工单发布修改 -->
  55. <order-publish-edit ref="orderPublishEditRef" @updateList="queryList" />
  56. </div>
  57. </template>
  58. <script setup lang="tsx" name="businessPublish">
  59. import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
  60. import { FormInstance } from 'element-plus';
  61. import { formatDate } from '@/utils/formatTime';
  62. import { publishedList } from '@/api/business/publish';
  63. // 引入组件
  64. const OrderPublish = defineAsyncComponent(() => import('@/views/business/publish/component/Order-publish.vue')); // 工单发布和查看详情
  65. const OrderPublishEdit = defineAsyncComponent(() => import('@/views/business/publish/component/Order-publish-edit.vue')); // 工单发布修改
  66. const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
  67. // 定义变量内容
  68. const ruleFormRef = ref<RefType>(); // 表单ref
  69. const proTableRef = ref<RefType>(); // 表格ref
  70. // 表格配置项
  71. const columns = ref<any[]>([
  72. { prop: 'order.no', label: '工单编码', width: 150 },
  73. { prop: 'order.isProvinceText', label: '省/市工单', width: 100 },
  74. { prop: 'order.title', label: '工单标题', width: 300 },
  75. { prop: 'order.counterSignTypeText', label: '是否会签', width: 100 },
  76. { prop: 'order.sourceChannel', label: '来源渠道', width: 120 },
  77. { prop: 'order.statusText', label: '工单状态', width: 100 },
  78. { prop: 'order.acceptType', label: '受理类型', width: 150 },
  79. { prop: 'order.hotspotName', label: '热点分类', width: 200 },
  80. { prop: 'acceptorName', label: '受理人', width: 170 },
  81. { prop: 'order.actualHandleOrgName', label: '接办部门', width: 120 },
  82. {
  83. prop: 'order.filedTime',
  84. label: '办结时间',
  85. width: 170,
  86. render: (scope) => {
  87. return <span>{formatDate(scope.row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
  88. },
  89. },
  90. { prop: 'publishMan', label: '发布人', width: 120 },
  91. {
  92. prop: 'order.startTime',
  93. label: '受理时间',
  94. width: 170,
  95. render: (scope) => {
  96. return <span>{formatDate(scope.row.order?.startTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
  97. },
  98. },
  99. {
  100. prop: 'publishTime',
  101. label: '发布时间',
  102. width: 170,
  103. render: (scope) => {
  104. return <span>{formatDate(scope.row.publishTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
  105. },
  106. },
  107. {
  108. prop: 'lastModificationTime',
  109. label: '更新时间',
  110. width: 170,
  111. render: (scope) => {
  112. return <span>{formatDate(scope.row.lastModificationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
  113. },
  114. },
  115. { prop: 'publishState', label: '是否公开', width: 100 },
  116. { prop: 'operation', label: '操作', fixed: 'right', width: 170, align: 'center' },
  117. ]);
  118. const state = reactive({
  119. queryParams: {
  120. // 查询条件
  121. PageIndex: 1,
  122. PageSize: 10,
  123. Keyword: null, // 关键词
  124. No: null,
  125. Resolve: null, // 处理结果
  126. },
  127. tableData: [], //表单
  128. loading: false, // 加载
  129. total: 0, // 总数
  130. });
  131. // 手动查询,将页码设置为1
  132. const handleQuery = () => {
  133. state.queryParams.PageIndex = 1;
  134. queryList();
  135. };
  136. /** 获取列表 */
  137. const queryList = () => {
  138. state.loading = true;
  139. publishedList(state.queryParams)
  140. .then((res: any) => {
  141. state.tableData = res.result?.items ?? [];
  142. state.total = res.result?.total ?? 0;
  143. state.loading = false;
  144. })
  145. .catch((err: any) => {
  146. state.loading = false;
  147. });
  148. };
  149. /** 重置按钮操作 */
  150. const resetQuery = (formEl: FormInstance | undefined) => {
  151. if (!formEl) return;
  152. formEl.resetFields();
  153. queryList();
  154. };
  155. // 修改发布
  156. const orderPublishEditRef = ref<RefType>(); // 工单发布修改ref
  157. const editPublish = (row: any) => {
  158. orderPublishEditRef.value.openDialog(row);
  159. };
  160. onMounted(() => {
  161. queryList();
  162. });
  163. </script>