Эх сурвалжийг харах

reactor:质检新增更多查询条件

zhangchong 1 долоо хоног өмнө
parent
commit
9888b68721

+ 14 - 3
src/api/business/order.ts

@@ -414,7 +414,7 @@ export const orderStepAttachment = (id: string) => {
 		url: `/api/v1/Order/all_file/workflow/${id}`,
 		method: 'get',
 	});
-}
+};
 /**
  * @description 附件列表补充附件
  * @param {object} data
@@ -425,7 +425,7 @@ export const orderAttachmentAdd = (data: object) => {
 		method: 'post',
 		data,
 	});
-}
+};
 /**
  * @description 工单列表 企业
  * @param {any} params
@@ -464,4 +464,15 @@ export const exportOrderEnterprise = (data: object) => {
 			reduce_data_format: false,
 		}
 	);
-};
+};
+/**
+ * @description 获取工单的基础数据 包含来源渠道、工单状态、受理类型、当前节点、催办状态、延期申请单位
+ * @param {any} params
+ */
+export const orderBaseData = (params?: any) => {
+	return request({
+		url: `/api/v1/Order/basedata`,
+		method: 'get',
+		params,
+	});
+};

+ 289 - 203
src/views/quality/done/YBQualityDone.vue

@@ -1,152 +1,222 @@
 <template>
-  <div class="quality-done-container layout-padding">
-    <div class="layout-padding-auto layout-padding-view pd20">
-      <el-tabs v-model="state.queryParams.Source" @tab-change="handleQuery">
-        <el-tab-pane label="受理已质检" :name="1" :disabled="state.loading"></el-tab-pane>
-        <el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
-        <el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
-      </el-tabs>
-      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <el-form-item label="工单标题" prop="Keyword">
-          <el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-        <el-form-item label="工单编码" prop="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-        <el-form-item label="分数区间" prop="value">
-          <input-number-range v-model="state.queryParams.value" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="crTime">
-          <el-date-picker
-              v-model="state.queryParams.crTime"
-              type="datetimerange"
-              unlink-panels
-              range-separator="至"
-              start-placeholder="开始时间"
-              end-placeholder="结束时间"
-              :shortcuts="shortcuts"
-              @change="handleQuery"
-              value-format="YYYY-MM-DD[T]HH:mm:ss"
-              :default-time="defaultTimeStartEnd"
-          />
-        </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="resetQuery(ruleFormRef)" v-waves class="default-button">
-            <SvgIcon name="ele-Refresh" class="mr5" />重置
-          </el-button>
-        </el-form-item>
-      </el-form>
-      <vxe-toolbar
-          ref="toolbarRef"
-          :loading="state.loading"
-          custom
-          :refresh="{
+	<div class="quality-done-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<el-tabs v-model="state.queryParams.Source" @tab-change="handleQuery">
+				<el-tab-pane label="受理已质检" :name="1" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
+				<el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
+			</el-tabs>
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+				<el-form-item label="工单标题" prop="Keyword">
+					<el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="工单编码" prop="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="分数区间" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</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>
+			<vxe-toolbar
+				ref="toolbarRef"
+				:loading="state.loading"
+				custom
+				:refresh="{
 					queryMethod: handleQuery,
 				}"
-      >
-      </vxe-toolbar>
-      <div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
-        <vxe-table
-            border
-            :loading="state.loading"
-            :data="state.tableData"
-            :column-config="{ resizable: true }"
-            :row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
-            ref="tableRef"
-            height="auto"
-            auto-resize
-            show-overflow
-            :scrollY="{ enabled: true, gt: 100 }"
-            id="qualityDone"
-            :custom-config="{ storage: true }"
-        >
-          <vxe-column field="order.no" title="工单编码" width="140"></vxe-column>
-          <vxe-column field="order.title" title="工单标题" min-width="200">
-            <template #default="{ row }">
-              <order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
-            </template>
-          </vxe-column>
-          <vxe-column field="aiQuality" title="质检方式" width="100">
-            <template #default="{ row }">
-              {{ row.aiQuality ? '智能质检' : '人工质检' }}
-            </template>
-          </vxe-column>
-          <vxe-column field="order.sourceChannel" title="来源渠道" width="110"></vxe-column>
-          <vxe-column field="order.creationTime" title="受理时间" width="160">
-            <template #default="{ row }">
-              {{ formatDate(row.order?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-            </template>
-          </vxe-column>
-          <template v-if="state.queryParams.Source === 3">
-            <vxe-column field="visit.visitStateText" title="回访状态" width="110"></vxe-column>
-            <vxe-column field="visit.visitTypeText" title="回访方式" width="110"></vxe-column>
-            <vxe-column field="order.filedTime" title="办结时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.publishTime" title="发布时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.publishTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.creationTime" title="回访任务创建时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="visit.employeeName" title="回访人" width="120"></vxe-column>
-            <vxe-column field="visit.visitTime" title="回访时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.visit?.visitTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-            <vxe-column field="order.counterSignTypeText" title="是否会签" width="100"></vxe-column>
-          </template>
-          <template v-if="state.queryParams.Source === 2">
-            <vxe-column field="creationTime" title="交办时间" width="160">
-              <template #default="{ row }">
-                {{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
-              </template>
-            </vxe-column>
-          </template>
-          <vxe-column field="order.statusText" title="工单状态" width="100">
-            <template #default="{ 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>
-          </vxe-column>
-          <vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
-          <vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
-          <vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-          <vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
-          <vxe-column field="userName" title="质检人" width="120"></vxe-column>
-          <vxe-column field="qualityTime" title="质检时间" width="160">
-            <template #default="{ row }">
-              {{ formatDate(row.qualityTime, 'YYYY-mm-dd HH:MM:SS') }}
-            </template>
-          </vxe-column>
-          <vxe-column field="grade" title="质检得分" width="100"></vxe-column>
-          <vxe-column title="操作" fixed="right" width="120" align="center" :show-overflow="false">
-            <template #default="{ row }">
-              <el-button link type="primary" @click="onQualityView(row)" v-auth="'quality:done:view'" title="查看质检详情"> 查看 </el-button>
-              <el-button link type="primary" @click="onQualityEdit(row)" v-auth="'quality:done:edit'" title="编辑质检"> 编辑 </el-button>
-            </template>
-          </vxe-column>
-        </vxe-table>
-      </div>
-      <pagination
-          @pagination="queryList"
-          :total="state.total"
-          v-model:current-page="state.queryParams.PageIndex"
-          v-model:page-size="state.queryParams.PageSize"
-          :disabled="state.loading"
-      />
-    </div>
-    <!-- 质检 -->
-    <quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
-  </div>
+			>
+			</vxe-toolbar>
+			<div style="overflow: hidden; width: 100%; height: 100%; flex: 1">
+				<vxe-table
+					border
+					:loading="state.loading"
+					:data="state.tableData"
+					:column-config="{ resizable: true }"
+					:row-config="{ isCurrent: true, isHover: true, height: 30, useKey: true }"
+					ref="tableRef"
+					height="auto"
+					auto-resize
+					show-overflow
+					:scrollY="{ enabled: true, gt: 100 }"
+					id="qualityDone"
+					:custom-config="{ storage: true }"
+				>
+					<vxe-column field="order.no" title="工单编码" width="140"></vxe-column>
+					<vxe-column field="order.title" title="工单标题" min-width="200">
+						<template #default="{ row }">
+							<order-detail :order="row.order" @updateList="queryList">{{ row.order?.title }}</order-detail>
+						</template>
+					</vxe-column>
+					<vxe-column field="aiQuality" title="质检方式" width="100">
+						<template #default="{ row }">
+							{{ row.aiQuality ? '智能质检' : '人工质检' }}
+						</template>
+					</vxe-column>
+					<vxe-column field="order.sourceChannel" title="来源渠道" width="110"></vxe-column>
+					<vxe-column field="order.creationTime" title="受理时间" width="160">
+						<template #default="{ row }">
+							{{ formatDate(row.order?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+						</template>
+					</vxe-column>
+					<template v-if="state.queryParams.Source === 3">
+						<vxe-column field="visit.visitStateText" title="回访状态" width="110"></vxe-column>
+						<vxe-column field="visit.visitTypeText" title="回访方式" width="110"></vxe-column>
+						<vxe-column field="order.filedTime" title="办结时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.order?.filedTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.publishTime" title="发布时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.publishTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.creationTime" title="回访任务创建时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="visit.employeeName" title="回访人" width="120"></vxe-column>
+						<vxe-column field="visit.visitTime" title="回访时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.visit?.visitTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+						<vxe-column field="order.counterSignTypeText" title="是否会签" width="100"></vxe-column>
+					</template>
+					<template v-if="state.queryParams.Source === 2">
+						<vxe-column field="creationTime" title="交办时间" width="160">
+							<template #default="{ row }">
+								{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}
+							</template>
+						</vxe-column>
+					</template>
+					<vxe-column field="order.statusText" title="工单状态" width="100">
+						<template #default="{ 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>
+					</vxe-column>
+					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
+					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
+					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
+					<vxe-column field="userName" title="质检人" width="120"></vxe-column>
+					<vxe-column field="qualityTime" title="质检时间" width="160">
+						<template #default="{ row }">
+							{{ formatDate(row.qualityTime, 'YYYY-mm-dd HH:MM:SS') }}
+						</template>
+					</vxe-column>
+					<vxe-column field="grade" title="质检得分" width="100"></vxe-column>
+					<vxe-column title="操作" fixed="right" width="120" align="center" :show-overflow="false">
+						<template #default="{ row }">
+							<el-button link type="primary" @click="onQualityView(row)" v-auth="'quality:done:view'" title="查看质检详情"> 查看 </el-button>
+							<el-button link type="primary" @click="onQualityEdit(row)" v-auth="'quality:done:edit'" title="编辑质检"> 编辑 </el-button>
+						</template>
+					</vxe-column>
+				</vxe-table>
+			</div>
+			<pagination
+				@pagination="queryList"
+				:total="state.total"
+				v-model:current-page="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				:disabled="state.loading"
+			/>
+		</div>
+		<!-- 质检 -->
+		<quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="受理时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检人" prop="UserName">
+					<el-input v-model.trim="state.queryParams.UserName" placeholder="质检人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检时间" prop="zjTime">
+					<el-date-picker
+						v-model="state.queryParams.zjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
+	</div>
 </template>
 
 <script lang="tsx" setup name="qualityDone">
@@ -156,6 +226,7 @@ import { formatDate } from '@/utils/formatTime';
 import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const QualityInspection = defineAsyncComponent(() => import('@/views/quality/done/components/Quality-inspection.vue')); // 质检
@@ -165,86 +236,101 @@ const pagination = defineAsyncComponent(() => import('@/components/ProTable/comp
 
 // 定义变量内容
 const state = reactive<any>({
-  loading: false, // 加载状态
-  queryParams: {
-    // 查询参数
-    PageIndex: 1,
-    PageSize: 20,
-    Source: 1,
-    CreationTimeStart: null, // 创建时间 开始
-    CreationTimeEnd: null, // 创建时间 结束
-    crTime: [], // 办理期限
-    State: 1, // 待质检
-    Keyword: null,
-    value: [0, 100],
-    No:null,
-  },
-  total: 0, // 总条数
-  tableData: [], // 表格数据
+	loading: false, // 加载状态
+	queryParams: {
+		// 查询参数
+		PageIndex: 1,
+		PageSize: 20,
+		Source: 1,
+		CreationTimeStart: null, // 创建时间 开始
+		CreationTimeEnd: null, // 创建时间 结束
+		crTime: [], // 办理期限
+		State: 1, // 待质检
+		Keyword: null,
+		value: [0, 100],
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
+		zjTime: [], // 质检时间
+		QualityTimeStar: null, // 质检时间 开始
+		QualityTimeEnd: null, // 质检时间 结束
+	},
+	total: 0, // 总条数
+	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
-  try {
-    const res = await qualityBaseData();
-    qualitySourceOptions.value = res.result?.qualitySource ?? [];
-    qualityStateOptions.value = res.result?.qualityState ?? [];
-  } catch (error) {
-    console.log(error);
-  }
+	try {
+		const res = await qualityBaseData();
+		qualitySourceOptions.value = res.result?.qualitySource ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
+	} catch (error) {
+		console.log(error);
+	}
 };
 // 手动查询,将页码设置为1
 const handleQuery = () => {
-  state.queryParams.PageIndex = 1;
-  queryList();
+	state.queryParams.PageIndex = 1;
+	queryList();
 };
 // 查询已质检列表
 const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
-  state.loading = true;
-  requestParams.value = Other.deepClone(state.queryParams);
-  requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
-  requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
-  Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
-  requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
-  requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
-  Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
-  qualityList(requestParams.value)
-      .then((res) => {
-        state.loading = false;
-        state.tableData = res.result.items ?? [];
-        state.total = res.result.total ?? 0;
-      })
-      .finally(() => {
-        state.loading = false;
-      });
+	state.loading = true;
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
+	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
+	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	qualityList(requestParams.value)
+		.then((res) => {
+			state.loading = false;
+			state.tableData = res.result.items ?? [];
+			state.total = res.result.total ?? 0;
+		})
+		.finally(() => {
+			state.loading = false;
+		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  state.queryParams.CreationTimeStart = null;
-  state.queryParams.CreationTimeEnd = null;
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
+	queryList();
 };
 // 质检查看
 const qualityInspectionRef = ref<RefType>();
 const onQualityView = (row: any) => {
-  qualityInspectionRef.value.openDialog(row, state.queryParams.Source, true);
+	qualityInspectionRef.value.openDialog(row, state.queryParams.Source, true);
 };
 // 质检编辑
 const onQualityEdit = (row: any) => {
-  qualityInspectionRef.value.openDialog(row, state.queryParams.Source);
+	qualityInspectionRef.value.openDialog(row, state.queryParams.Source);
 };
 // 页面加载时
 const toolbarRef = ref<RefType>();
 const tableRef = ref<RefType>();
 onMounted(() => {
-  queryList();
-  if (tableRef.value && toolbarRef.value) {
-    tableRef.value.connect(toolbarRef.value);
-  }
-  getBaseData();
+	queryList();
+	if (tableRef.value && toolbarRef.value) {
+		tableRef.value.connect(toolbarRef.value);
+	}
+	getBaseData();
 });
-</script>
+</script>

+ 106 - 31
src/views/quality/done/ZGQualityDone.vue

@@ -6,33 +6,19 @@
 				<el-tab-pane label="派单已质检" :name="2" :disabled="state.loading"></el-tab-pane>
 				<el-tab-pane label="回访已质检" :name="3" :disabled="state.loading"></el-tab-pane>
 			</el-tabs>
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <el-form-item label="工单标题" prop="Keyword">
-          <el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-        <el-form-item label="工单编码" prop="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-				<el-form-item label="分数区间" prop="value">
-					<input-number-range v-model="state.queryParams.value" />
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
+				<el-form-item label="工单标题" prop="Keyword">
+					<el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
 				</el-form-item>
-				<el-form-item label="创建时间" prop="crTime">
-					<el-date-picker
-						v-model="state.queryParams.crTime"
-						type="datetimerange"
-						unlink-panels
-						range-separator="至"
-						start-placeholder="开始时间"
-						end-placeholder="结束时间"
-						:shortcuts="shortcuts"
-						@change="handleQuery"
-						value-format="YYYY-MM-DD[T]HH:mm:ss"
-						:default-time="defaultTimeStartEnd"
-					/>
+				<el-form-item label="工单编码" prop="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="质检得分" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
 				</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="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -128,7 +114,7 @@
 					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
 					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
 					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-					<vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
 					<vxe-column field="userName" title="质检人" width="120"></vxe-column>
 					<vxe-column field="qualityTime" title="质检时间" width="160">
 						<template #default="{ row }">
@@ -154,6 +140,76 @@
 		</div>
 		<!-- 质检 -->
 		<z-g-quality ref="ZGQualityRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="受理时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检人" prop="UserName">
+					<el-input v-model.trim="state.queryParams.UserName" placeholder="质检人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="质检时间" prop="zjTime">
+					<el-date-picker
+						v-model="state.queryParams.zjTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 	</div>
 </template>
 
@@ -165,6 +221,7 @@ import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { exportQuality } from '@/utils/tools';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -186,19 +243,32 @@ const state = reactive<any>({
 		State: 1, // 待质检
 		Keyword: null,
 		value: [0, 100],
-    No:null,
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
+		zjTime: [], // 质检时间
+		QualityTimeStar: null, // 质检时间 开始
+		QualityTimeEnd: null, // 质检时间 结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
 	try {
 		const res = await qualityBaseData();
 		qualitySourceOptions.value = res.result?.qualitySource ?? [];
-		qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
 	} catch (error) {
 		console.log(error);
 	}
@@ -213,12 +283,15 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 受理时间
 	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分数区间
 	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
 	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	requestParams.value.QualityTimeStar = state.queryParams.zjTime === null ? null : state.queryParams.zjTime[0]; // 质检时间
+	requestParams.value.QualityTimeEnd = state.queryParams.zjTime === null ? null : state.queryParams.zjTime[1];
+	Reflect.deleteProperty(requestParams.value, 'zjTime'); // 删除无用的参数
 	qualityList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
@@ -234,11 +307,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
-	state.queryParams.CreationTimeStart = null;
-	state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 质检查看

+ 63 - 11
src/views/quality/index/YBQuality.vue

@@ -10,14 +10,14 @@
             :disabled="state.loading"
         ></el-tab-pane>
       </el-tabs>
-      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
+      <el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent  :disabled="state.loading">
         <el-form-item label="工单标题" prop="Keyword">
           <el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
         </el-form-item>
         <el-form-item label="工单编码" prop="No">
           <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
         </el-form-item>
-        <el-form-item label="创建时间" prop="crTime">
+        <el-form-item label="受理时间" prop="crTime">
           <el-date-picker
               v-model="state.queryParams.crTime"
               type="datetimerange"
@@ -33,7 +33,7 @@
         </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="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" 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>
       <vxe-toolbar
@@ -119,7 +119,7 @@
           <vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
           <vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
           <vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-          <vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+          <vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
           <vxe-column title="操作" fixed="right" width="90" align="center">
             <template #default="{ row }">
               <el-button link type="primary" @click="onQualityInspection(row)" v-auth="'quality:inspection'" title="质检"> 质检 </el-button>
@@ -137,6 +137,45 @@
     </div>
     <!-- 质检 -->
     <quality-inspection ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
   </div>
 </template>
 
@@ -147,6 +186,7 @@ import { formatDate } from '@/utils/formatTime';
 import { qualityBaseData, qualityList } from '@/api/quality';
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -166,19 +206,29 @@ const state = reactive<any>({
     CreationTimeEnd: null, // 创建时间 结束
     State: 0, // 待质检
     Keyword: null,
-    No:null
+    No:null,
+		AiQuality:null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
   },
   total: 0, // 总条数
   tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
-const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const qualitySourceOptions = ref<EmptyArrayType>([]); // 质检分类
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
   try {
     const res = await qualityBaseData();
     qualitySourceOptions.value = res.result?.qualitySource ?? [];
-    qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
   } catch (error) {
     console.log(error);
   }
@@ -207,11 +257,13 @@ const queryList = () => {
       });
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   formEl.resetFields();
-  state.queryParams.CreationTimeStart = null;
-  state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
   queryList();
 };
 // 质检

+ 69 - 17
src/views/quality/index/ZGQuality.vue

@@ -10,14 +10,14 @@
 					:disabled="state.loading"
 				></el-tab-pane>
 			</el-tabs>
-			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent>
-        <el-form-item label="工单标题" prop="Keyword">
-          <el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-        <el-form-item label="工单编码" prop="No">
-          <el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
-        </el-form-item>
-				<el-form-item label="创建时间" prop="crTime">
+			<el-form :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
+				<el-form-item label="工单标题" prop="Keyword">
+					<el-input v-model="state.queryParams.Keyword" placeholder="工单标题" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="工单编码" prop="No">
+					<el-input v-model="state.queryParams.No" placeholder="工单编码" clearable @keyup.enter="handleQuery" class="keyword-input" />
+				</el-form-item>
+				<el-form-item label="受理时间" prop="crTime">
 					<el-date-picker
 						v-model="state.queryParams.crTime"
 						type="datetimerange"
@@ -33,7 +33,7 @@
 				</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="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -147,7 +147,7 @@
 					<vxe-column field="order.acceptType" title="受理类型" width="100"></vxe-column>
 					<vxe-column field="order.hotspotName" title="热点分类" width="150"></vxe-column>
 					<vxe-column field="order.acceptorName" title="受理人" width="120"></vxe-column>
-					<vxe-column field="order.fromPhone" title="来电电话" width="140"></vxe-column>
+					<vxe-column field="order.fromPhone" title="来电号码" width="140"></vxe-column>
 					<vxe-column title="操作" fixed="right" width="90" align="center">
 						<template #default="{ row }">
 							<el-button link type="primary" @click="onQualityInspection(row)" v-auth="'quality:inspection'" title="质检"> 质检 </el-button>
@@ -165,6 +165,45 @@
 		</div>
 		<!-- 质检 -->
 		<z-g-quality ref="qualityInspectionRef" @updateList="queryList" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检方式" prop="AiQuality">
+					<el-select v-model="state.queryParams.AiQuality" placeholder="请选择质检方式" @change="handleQuery" clearable>
+						<el-option label="智能质检" :value="true" />
+						<el-option label="人工质检" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Channel" label="来源渠道">
+					<el-select v-model="state.queryParams.Channel" placeholder="请选择来源渠道" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in channelOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="Status" label="工单状态">
+					<el-select v-model="state.queryParams.Status" placeholder="请选择工单状态" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in orderStatusOptions" :value="item.key" :key="item.key" :label="item.value" />
+					</el-select>
+				</el-form-item>
+				<el-form-item prop="AcceptTypeCode" label="受理类型">
+					<el-select v-model="state.queryParams.AcceptTypeCode" placeholder="请选择受理类型" clearable class="w100" @change="handleQuery">
+						<el-option v-for="item in acceptTypeOptions" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="热点分类" prop="Hotspot">
+					<el-input v-model.trim="state.queryParams.Hotspot" placeholder="热点分类" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="受理人" prop="NameOrNo">
+					<el-input v-model.trim="state.queryParams.NameOrNo" placeholder="受理人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="来电号码" prop="FromPhone">
+					<el-input v-model.trim="state.queryParams.FromPhone" placeholder="来电号码" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 	</div>
 </template>
 
@@ -176,6 +215,7 @@ import { qualityBaseData, qualityList, qualityRecordTransfer } from '@/api/quali
 import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 import Other from '@/utils/other';
 import { exportQuality } from '@/utils/tools';
+import { orderBaseData } from '@/api/business/order';
 
 // 引入组件
 const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
@@ -195,19 +235,29 @@ const state = reactive<any>({
 		CreationTimeEnd: null, // 创建时间 结束
 		State: 0, // 待质检
 		Keyword: null,
-    No:null
+		No: null,
+		AiQuality: null, // 质检方式
+		Channel: null, // 来源渠道
+		Status: null, // 工单状态
+		AcceptTypeCode: null, // 受理类型
+		Hotspot: null, // 热点分类
+		NameOrNo: null, // 受理人
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualitySourceOptions = ref<EmptyArrayType>([]); // 违禁词分类
-const qualityStateOptions = ref<EmptyArrayType>([]); // 违禁词属性
+const channelOptions = ref<EmptyArrayType>([]); // 来源渠道
+const orderStatusOptions = ref<EmptyArrayType>([]); // 工单状态
+const acceptTypeOptions = ref<EmptyArrayType>([]); // 受理类型
 const getBaseData = async () => {
 	try {
 		const res = await qualityBaseData();
 		qualitySourceOptions.value = res.result?.qualitySource ?? [];
-		qualityStateOptions.value = res.result?.qualityState ?? [];
+		const { result } = await orderBaseData();
+		channelOptions.value = result.channelOptions ?? [];
+		orderStatusOptions.value = result.orderStatusOptions ?? [];
+		acceptTypeOptions.value = result.acceptTypeOptions ?? [];
 	} catch (error) {
 		console.log(error);
 	}
@@ -222,7 +272,7 @@ const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
 	requestParams.value = Other.deepClone(state.queryParams);
-	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 受理时间
 	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
 	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
 	qualityList(requestParams.value)
@@ -240,11 +290,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
-	state.queryParams.CreationTimeStart = null;
-	state.queryParams.CreationTimeEnd = null;
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 质检

+ 87 - 5
src/views/quality/project/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="quality-project-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 :model="state.queryParams" ref="ruleFormRef" inline @submit.native.prevent :disabled="state.loading">
 				<el-form-item label="质检项名称" prop="Name">
 					<el-input v-model="state.queryParams.Name" placeholder="请填写质检项目名称" clearable @keyup.enter="handleQuery" class="keyword-input" />
 				</el-form-item>
@@ -10,9 +10,12 @@
 						<el-option v-for="item in qualityItemGrouping" :value="item.dicDataValue" :key="item.dicDataValue" :label="item.dicDataName" />
 					</el-select>
 				</el-form-item>
+				<el-form-item label="分值" prop="value">
+					<input-number-range v-model="state.queryParams.value" />
+				</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="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -108,6 +111,58 @@
 		<project-add ref="projectAddRef" @updateList="queryList" :qualityItemGrouping="qualityItemGrouping" />
 		<!--  质检项目编辑  -->
 		<project-edit ref="projectEditRef" @updateList="queryList" :qualityItemGrouping="qualityItemGrouping" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="质检描述" prop="Describe">
+					<el-input v-model.trim="state.queryParams.Describe" placeholder="质检描述" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="是否启用" prop="IsEnable">
+					<el-select v-model="state.queryParams.IsEnable" placeholder="请选择是否启用" @change="handleQuery" clearable>
+						<el-option label="启用" :value="true" />
+						<el-option label="禁用" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="创建人" prop="CreatorName">
+					<el-input v-model.trim="state.queryParams.CreatorName" placeholder="创建人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新人" prop="LastModificationName">
+					<el-input v-model.trim="state.queryParams.LastModificationName" placeholder="更新人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新时间" prop="gxTime">
+					<el-date-picker
+						v-model="state.queryParams.gxTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 	</div>
 </template>
 
@@ -119,11 +174,14 @@ import { auth } from '@/utils/authFunction';
 import { projectBaseData, projectDelete, projectList, projectUpdate } from '@/api/quality/project';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { storeToRefs } from 'pinia';
+import Other from '@/utils/other';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
 
 // 引入组件
 const ProjectAdd = defineAsyncComponent(() => import('@/views/quality/project/components/Project-add.vue')); // 质检项目新增
 const ProjectEdit = defineAsyncComponent(() => import('@/views/quality/project/components/Project-edit.vue')); // 质检项目编辑
 const pagination = defineAsyncComponent(() => import('@/components/ProTable/components/Pagination.vue')); // 分页
+const InputNumberRange = defineAsyncComponent(() => import('@/components/NumberRange/index.vue')); // 数字区间
 
 // 定义变量内容
 const state = reactive({
@@ -135,13 +193,22 @@ const state = reactive({
 		GroupingName: null,
 		Type: null,
 		Name: null,
+		value: [0, 100], // 质检分值
+		Describe: null, // 质检描述
+		IsEnable:null, // 是否启用
+		CreatorName:null, // 创建人
+		crTime: [], // 创建时间
+		CreationTimeStart: null, // 创建时间开始
+		CreationTimeEnd: null, // 创建时间结束
+		gxTime: [], // 更新时间
+		LastModificationTimeStart: null, // 更新时间开始
+		LastModificationTimeEnd: null, // 更新时间结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
 const storesThemeConfig = useThemeConfig();
 const { themeConfig } = storeToRefs(storesThemeConfig);
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const qualityItemGrouping = ref<EmptyArrayType>([]); // 质检项目分组
 const getBaseData = async () => {
 	try {
@@ -157,9 +224,20 @@ const handleQuery = () => {
 	queryList();
 };
 // 获取参数列表
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	projectList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.MinGrade = state.queryParams.value === null ? null : state.queryParams.value[0]; // 分值
+	requestParams.value.MaxGrade = state.queryParams.value === null ? null : state.queryParams.value[1];
+	Reflect.deleteProperty(requestParams.value, 'value'); // 删除无用的参数
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.LastModificationTimeStart = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.LastModificationTimeEnd = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
+	projectList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
 			state.tableData = res.result.items ?? [];
@@ -174,9 +252,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 新增质检项目
@@ -256,7 +338,7 @@ const selectChangeEvent = ({ checked }) => {
 	}
 };
 const isChecked = computed(() => {
-	return !Boolean(checkTable.value.length);
+	return !checkTable.value.length;
 });
 const toolbarRef = ref<RefType>();
 // 页面加载时

+ 72 - 3
src/views/quality/template/index.vue

@@ -12,7 +12,7 @@
 				</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="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" 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>
 			<vxe-toolbar
@@ -101,6 +101,55 @@
 		<quality-template-add ref="templateAdd" @updateList="queryList" :templateGrouping="templateGrouping" />
 		<!--  模板编辑  -->
 		<quality-template-edit ref="templateEditRef" @updateList="queryList" :templateGrouping="templateGrouping" />
+		<!--	更多查询	-->
+		<el-drawer v-model="drawer" title="更多查询" size="500px">
+			<el-form :model="state.queryParams" ref="drawerRuleFormRef" @submit.native.prevent label-width="100px" :disabled="state.loading">
+				<el-form-item label="是否启用" prop="IsEnable">
+					<el-select v-model="state.queryParams.IsEnable" placeholder="请选择是否启用" @change="handleQuery" clearable>
+						<el-option label="启用" :value="true" />
+						<el-option label="禁用" :value="false" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="创建时间" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+				<el-form-item label="创建人" prop="CreatorName">
+					<el-input v-model.trim="state.queryParams.CreatorName" placeholder="创建人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新人" prop="LastModificationName">
+					<el-input v-model.trim="state.queryParams.LastModificationName" placeholder="更新人" clearable @keyup.enter="handleQuery" />
+				</el-form-item>
+				<el-form-item label="更新时间" prop="gxTime">
+					<el-date-picker
+						v-model="state.queryParams.gxTime"
+						type="datetimerange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD[T]HH:mm:ss"
+						:default-time="defaultTimeStartEnd"
+					/>
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+				<el-button @click="resetQuery(drawerRuleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
+			</template>
+		</el-drawer>
 	</div>
 </template>
 
@@ -110,6 +159,8 @@ import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
 import { auth } from '@/utils/authFunction';
 import { templateBaseData, templateDelete, templateList, templateUpdate } from '@/api/quality/template';
+import { defaultTimeStartEnd, shortcuts } from '@/utils/constants';
+import Other from '@/utils/other';
 
 // 引入组件
 const QualityTemplateAdd = defineAsyncComponent(() => import('@/views/quality/template/components/Template-add.vue')); // 模板新增
@@ -125,11 +176,17 @@ const state = reactive({
 		PageSize: 20,
 		Grouping: null,
 		Name: null,
+		CreatorName:null, // 创建人
+		crTime: [], // 创建时间
+		CreationTimeStart: null, // 创建时间开始
+		CreationTimeEnd: null, // 创建时间结束
+		gxTime: [], // 更新时间
+		LastModificationTimeStart: null, // 更新时间开始
+		LastModificationTimeEnd: null, // 更新时间结束
 	},
 	total: 0, // 总条数
 	tableData: [], // 表格数据
 });
-const ruleFormRef = ref<RefType>(null); // 表单ref
 const templateGrouping = ref<EmptyArrayType>([]); // 质检分组
 const getBaseData = async () => {
 	try {
@@ -145,9 +202,17 @@ const handleQuery = () => {
 	queryList();
 };
 // 获取参数列表
+const requestParams = ref<EmptyObjectType>({});
 const queryList = () => {
 	state.loading = true;
-	templateList(state.queryParams)
+	requestParams.value = Other.deepClone(state.queryParams);
+	requestParams.value.CreationTimeStart = state.queryParams.crTime === null ? null : state.queryParams.crTime[0]; // 创建时间
+	requestParams.value.CreationTimeEnd = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+	Reflect.deleteProperty(requestParams.value, 'crTime'); // 删除无用的参数
+	requestParams.value.LastModificationTimeStart = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[0]; // 更新时间
+	requestParams.value.LastModificationTimeEnd = state.queryParams.gxTime === null ? null : state.queryParams.gxTime[1];
+	Reflect.deleteProperty(requestParams.value, 'gxTime'); // 删除无用的参数
+	templateList(requestParams.value)
 		.then((res) => {
 			state.loading = false;
 			state.tableData = res.result.items ?? [];
@@ -162,9 +227,13 @@ const queryList = () => {
 		});
 };
 // 重置表单
+const drawerRuleFormRef = ref();
+const ruleFormRef = ref<RefType>(); // 表单ref
+const drawer = ref(false);
 const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
+	ruleFormRef.value?.resetFields();
 	queryList();
 };
 // 新增意见