|
@@ -1,62 +1,56 @@
|
|
|
<template>
|
|
|
<div class="business-publish-container layout-padding">
|
|
|
<div class="layout-padding-auto layout-padding-view pd20">
|
|
|
- <vxe-grid v-bind="gridOptions" ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
|
|
|
- <template #form>
|
|
|
- <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="gridOptions.loading">
|
|
|
- <el-form-item label="工单标题" prop="Title">
|
|
|
- <el-input v-model.trim="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="工单编码" prop="No">
|
|
|
- <el-input v-model.trim="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
|
|
|
- <el-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- <template #toolbar_buttons>
|
|
|
- <el-button type="primary" @click="onJbExport" :loading="state.loading" :disabled="isChecked"
|
|
|
- ><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{ checkTable.length }})</span>
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template #statusText="{ row }">
|
|
|
- <el-text type="danger" tag="b" v-if="[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.order?.status)">{{ row.order?.statusText }}</el-text>
|
|
|
- <span v-else>{{ row.order?.statusText }}</span>
|
|
|
- </template>
|
|
|
- <template #order_detail="{ row }">
|
|
|
- <order-detail :order="row.order" @updateList="queryList(true)">{{ row.order?.title }}</order-detail>
|
|
|
- </template>
|
|
|
- <template #action="{row}">
|
|
|
- <el-button
|
|
|
- link
|
|
|
- type="primary"
|
|
|
- @click="editPublish(row)"
|
|
|
- v-if="!row.order?.isProvince"
|
|
|
- title="编辑发布"
|
|
|
- v-auth="'business:publish:edit'"
|
|
|
- >
|
|
|
- 编辑发布
|
|
|
- </el-button>
|
|
|
- <el-button link type="primary" @click="onCancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'"> 取消发布 </el-button>
|
|
|
- </template>
|
|
|
- <template #pager>
|
|
|
- <div class="flex-end" style="align-items: center">
|
|
|
- <span v-loading="totalLoading" class="mr10">共 {{ totalCount }} 条</span>
|
|
|
- <!-- sizes-->
|
|
|
- <el-pagination
|
|
|
- layout="prev, pager, next"
|
|
|
- :total="state.total"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- :page-size="state.queryParams.PageSize"
|
|
|
- :current-page="state.queryParams.PageIndex"
|
|
|
- @size-change="handleSizeChange"
|
|
|
- :disabled="state.loading"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </vxe-grid>
|
|
|
+ <vxe-grid v-bind="gridOptions" ref="gridRef" @checkbox-all="selectAllChangeEvent" @checkbox-change="selectChangeEvent">
|
|
|
+ <template #form>
|
|
|
+ <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="gridOptions.loading">
|
|
|
+ <el-form-item label="工单标题" prop="Title">
|
|
|
+ <el-input v-model.trim="state.queryParams.Title" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="工单编码" prop="No">
|
|
|
+ <el-input v-model.trim="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
|
|
|
+ <el-button @click="drawer = true" class="default-button"> <SvgIcon name="ele-Search" class="mr5" />更多查询</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </template>
|
|
|
+ <template #toolbar_buttons>
|
|
|
+ <el-button type="primary" @click="onJbExport" :loading="state.loading" :disabled="isChecked"
|
|
|
+ ><SvgIcon name="iconfont icon-daochu" class="mr5" />交办单导出<span v-if="checkTable.length">({{ checkTable.length }})</span>
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template #statusText="{ row }">
|
|
|
+ <el-text type="danger" tag="b" v-if="[1, 2, 3, 9, 101, 102, 103, 104, 105, 200].includes(row.order?.status)">{{ row.order?.statusText }}</el-text>
|
|
|
+ <span v-else>{{ row.order?.statusText }}</span>
|
|
|
+ </template>
|
|
|
+ <template #order_detail="{ row }">
|
|
|
+ <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
|
|
|
+ </template>
|
|
|
+ <template #action="{row}">
|
|
|
+ <el-button
|
|
|
+ link
|
|
|
+ type="primary"
|
|
|
+ @click="editPublish(row)"
|
|
|
+ v-if="!row.order?.isProvince"
|
|
|
+ title="编辑发布"
|
|
|
+ v-auth="'business:publish:edit'"
|
|
|
+ >
|
|
|
+ 编辑发布
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="primary" @click="onCancelPublish(row)" title="取消发布" v-auth="'business:publish:cancel'"> 取消发布 </el-button>
|
|
|
+ </template>
|
|
|
+ <template #pager>
|
|
|
+ <pagination
|
|
|
+ @pagination="queryList"
|
|
|
+ :total="state.total"
|
|
|
+ v-model:current-page="state.queryParams.PageIndex"
|
|
|
+ v-model:page-size="state.queryParams.PageSize"
|
|
|
+ :disabled="state.loading"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </vxe-grid>
|
|
|
</div>
|
|
|
<!-- 更多查询 -->
|
|
|
<el-drawer v-model="drawer" title="更多查询" size="500px">
|
|
@@ -136,9 +130,9 @@
|
|
|
</template>
|
|
|
</el-drawer>
|
|
|
<!-- 工单发布详情 -->
|
|
|
- <order-publish ref="orderPublishRef" @updateList="queryList(true)" />
|
|
|
+ <order-publish ref="orderPublishRef" @updateList="queryList" />
|
|
|
<!-- 工单发布修改 -->
|
|
|
- <order-publish-edit ref="orderPublishEditRef" @updateList="queryList(true)" />
|
|
|
+ <order-publish-edit ref="orderPublishEditRef" @updateList="queryList" />
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="tsx" name="businessPublish">
|
|
@@ -153,12 +147,13 @@ import { exportAssignment, getNeedArr } from '@/utils/tools';
|
|
|
const OrderPublish = defineAsyncComponent(() => import('@/views/business/publish/components/Order-publish.vue')); // 工单发布和查看详情
|
|
|
const OrderPublishEdit = defineAsyncComponent(() => import('@/views/business/publish/components/Order-publish-edit.vue')); // 工单发布修改
|
|
|
const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
|
|
|
+const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
|
|
|
|
|
|
const state = reactive<any>({
|
|
|
queryParams: {
|
|
|
// 查询条件
|
|
|
PageIndex: 1,
|
|
|
- PageSize: 100,
|
|
|
+ PageSize: 20,
|
|
|
Keyword: null, // 关键词
|
|
|
No: null,
|
|
|
Resolve: null, // 处理结果
|
|
@@ -290,35 +285,11 @@ const gridOptions = reactive<any>({
|
|
|
// 手动查询,将页码设置为1
|
|
|
const handleQuery = () => {
|
|
|
state.queryParams.PageIndex = 1;
|
|
|
- queryIndex.value = 0;
|
|
|
- queryList(true);
|
|
|
-};
|
|
|
-// 改变页码
|
|
|
-const queryIndex = ref(0); // 数据批次
|
|
|
-const totalTable = ref([]); // 数据总数
|
|
|
-const handleCurrentChange = (val: number) => {
|
|
|
- state.queryParams.PageIndex = val;
|
|
|
- // 判断当前页是否是数据的最后一页
|
|
|
- if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
|
|
|
- queryList();
|
|
|
- } else {
|
|
|
- state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
|
|
|
- }
|
|
|
-};
|
|
|
-// 改变每页条数
|
|
|
-const handleSizeChange = (val: any) => {
|
|
|
- state.queryParams.PageSize = val;
|
|
|
- // 判断当前页是否是数据的最后一页
|
|
|
- if (val === Math.ceil(state.total / state.queryParams.PageSize)) {
|
|
|
- queryList();
|
|
|
- } else {
|
|
|
- state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
|
|
|
- }
|
|
|
+ queryList();
|
|
|
+ getTotal();
|
|
|
};
|
|
|
/** 获取列表 */
|
|
|
-const totalCount = ref(0);
|
|
|
-const totalLoading = ref(false);
|
|
|
-const queryList = (isQuery: boolean = false) => {
|
|
|
+const queryList = () => {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
state.loading = true;
|
|
|
gridOptions.loading = true;
|
|
@@ -329,45 +300,16 @@ const queryList = (isQuery: boolean = false) => {
|
|
|
requestParams.value.StartTime = state.queryParams.fbTime === null ? null : state.queryParams.fbTime[0]; // 受理时间
|
|
|
requestParams.value.EndTime = state.queryParams.fbTime === null ? null : state.queryParams.fbTime[1];
|
|
|
Reflect.deleteProperty(requestParams.value, 'fbTime'); // 删除无用的参数
|
|
|
- requestParams.value.QueryIndex = queryIndex.value; // 数据批次
|
|
|
- if (isQuery) requestParams.value.QueryIndex = 0;
|
|
|
publishedListFixed(requestParams.value)
|
|
|
.then((res: any) => {
|
|
|
- if (isQuery) {
|
|
|
- // 如果是查询
|
|
|
- totalTable.value = []; // 先清空
|
|
|
- totalTable.value = res?.result;
|
|
|
- state.total = totalTable.value.length;
|
|
|
- state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
|
|
|
- gridOptions.data = state.tableData;
|
|
|
- queryIndex.value = 1; // 请求完成之后,页码加一避免重复
|
|
|
- } else {
|
|
|
- if (res?.result.length) queryIndex.value++;
|
|
|
- totalTable.value = totalTable.value.concat(res?.result);
|
|
|
- state.total = totalTable.value.length;
|
|
|
- state.tableData = getNeedArr(totalTable.value, state.queryParams.PageSize)[state.queryParams.PageIndex - 1]; //当前页的表格数据
|
|
|
- gridOptions.data = state.tableData;
|
|
|
- }
|
|
|
+ gridOptions.data = res?.result ?? [];
|
|
|
state.loading = false;
|
|
|
gridOptions.loading = false;
|
|
|
gridRef.value.clearCheckboxRow();
|
|
|
checkTable.value = [];
|
|
|
resolve(res);
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- // 查询总数
|
|
|
- publishedListFixedCount(requestParams.value)
|
|
|
- .then((count) => {
|
|
|
- totalCount.value = count.result;
|
|
|
- totalLoading.value = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- totalLoading.value = false;
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
+ }).catch(() => {
|
|
|
state.loading = false;
|
|
|
- totalLoading.value = false;
|
|
|
gridOptions.loading = false;
|
|
|
gridRef.value.clearCheckboxRow();
|
|
|
checkTable.value = [];
|
|
@@ -375,6 +317,15 @@ const queryList = (isQuery: boolean = false) => {
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
+// 查询总数
|
|
|
+const getTotal = () => {
|
|
|
+ publishedListFixedCount(requestParams.value)
|
|
|
+ .then((res) => {
|
|
|
+ state.total = res.result ?? 0;
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ });
|
|
|
+};
|
|
|
/** 重置按钮操作 */
|
|
|
const drawerRuleFormRef = ref();
|
|
|
const ruleFormRef = ref<RefType>(); // 表单ref
|
|
@@ -383,7 +334,8 @@ const resetQuery = (formEl: FormInstance | undefined) => {
|
|
|
if (!formEl) return;
|
|
|
formEl.resetFields();
|
|
|
ruleFormRef.value?.resetFields();
|
|
|
- queryList(true);
|
|
|
+ queryList();
|
|
|
+ getTotal();
|
|
|
};
|
|
|
// 修改发布
|
|
|
const orderPublishEditRef = ref<RefType>(); // 工单发布修改ref
|
|
@@ -452,6 +404,7 @@ const isChecked = computed(() => {
|
|
|
onMounted(() => {
|
|
|
queryList().then(() => {
|
|
|
getBaseInfo();
|
|
|
+ getTotal();
|
|
|
});
|
|
|
});
|
|
|
</script>
|