Explorar el Código

reactor:对接数据共享平台;

zhangchong hace 10 meses
padre
commit
313a0120e9

+ 33 - 0
src/api/dataShare/index.ts

@@ -122,4 +122,37 @@ export const getTimeRate = (params: object) => {
     method: 'get',
     params
   });
+};
+/**
+ * @description 无通话记录工单修改来源方式
+ * @param {object}  data
+ */
+export const editNoCallSource = (data: object) => {
+  return request({
+    url: `/api/v1/Order/update-order-sourcechannel`,
+    method: 'post',
+    data
+  });
+};
+/**
+ * @description 修改期满时间
+ * @param {object}  data
+ */
+export const editExpireTime = (data: object) => {
+  return request({
+    url: `/api/v1/Order/update-orderexpired-time`,
+    method: 'post',
+    data
+  });
+};
+/**
+ * @description 查看修改记录
+ * @param {object}  params
+ */
+export const getEditRecord = (params: object) => {
+  return request({
+    url: `/api/v1/Order/get-order-modifying-records-list`,
+    method: 'get',
+    params
+  });
 };

+ 61 - 0
src/views/dataShare/RecordDialog.vue

@@ -0,0 +1,61 @@
+<template>
+  <el-dialog v-model="state.dialogVisible" width="60%" draggable title="查看修改记录" append-to-body destroy-on-close>
+    <ProTable ref="proTableRef" :columns="columns" :data="state.tableData" @updateTable="queryList" :loading="state.loading" :pagination="false">
+    </ProTable>
+    <template #footer>
+      <el-button @click="state.dialogVisible = false" class="default-button">关 闭</el-button>
+    </template>
+  </el-dialog>
+</template>
+<script setup lang="tsx">
+import { formatDate } from '@/utils/formatTime';
+import { reactive, ref } from 'vue';
+import { getEditRecord } from "@/api/dataShare";
+
+const state = reactive({
+  queryParams: {
+    id: '',
+  },
+  tableData: [], //表格
+  loading: false, // 加载
+  total: 0, // 总数
+  dialogVisible: false, // 弹窗
+});
+const columns = ref<any[]>([
+  {
+    label: '修改时间',
+    prop: 'creationTime',
+    width: 170,
+    render: (scope: any) => {
+      return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+    },
+  },
+  { prop: 'creatorName', label: '修改人'},
+  { prop: 'creatorOrgName', label: '修改人部门'},
+  { prop: 'provinceNo', label: '省工单编码'},
+  { prop: 'updateOrderTypeText', label: '修改类型', width: 150 },
+]);
+// 打开弹窗
+const openDialog = (row?: any) => {
+  if (row) {
+    state.queryParams.id = row.id;
+    queryList();
+  }
+};
+// 查看修改记录
+const queryList = async () => {
+  state.dialogVisible = true;
+  try {
+    state.loading = true;
+    const res = await getEditRecord(state.queryParams);
+    state.tableData = res.result ?? [];
+    state.loading = false;
+  } catch (e) {
+    console.log(e);
+    state.loading = false;
+  }
+};
+defineExpose({
+  openDialog,
+});
+</script>

+ 133 - 120
src/views/dataShare/callLog.vue

@@ -1,145 +1,158 @@
 <template>
-  <div class="dataShare-callLog-container layout-pd">
-    <!-- 搜索  -->
-    <el-card shadow="never">
-      <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
-        <el-form-item label="ID" prop="Id">
-          <el-input v-model="state.queryParams.Id" placeholder="查询ID" clearable @keyup.enter="handleQuery" />
-        </el-form-item>
-        <!--        <el-form-item label="关键词" prop="Keyword">
-          <el-input v-model="state.queryParams.Keyword" 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"
-          />
-        </el-form-item>
-        <el-form-item label-width="0">
-          <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-          <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
-            <SvgIcon name="ele-Refresh" class="mr5" />重置
-          </el-button>
-        </el-form-item>
-      </el-form>
-    </el-card>
-    <el-card shadow="never">
-      <ProTable
-        ref="proTableRef"
-        :columns="columns"
-        :data="state.tableData"
-        @updateTable="queryList"
-        :loading="state.loading"
-        :total="state.total"
-        v-model:page-index="state.queryParams.PageIndex"
-        v-model:page-size="state.queryParams.PageSize"
-        border
-      >
-      </ProTable>
-    </el-card>
-  </div>
+	<div class="dataShare-callLog-container layout-pd">
+		<!-- 搜索  -->
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
+				<el-form-item label="是否及时" prop="IsSuccess">
+					<el-select v-model="state.queryParams.IsSuccess" 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="daterange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD"
+						:clearable="false"
+					/>
+				</el-form-item>
+				<el-form-item label-width="0">
+					<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+					<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+						<SvgIcon name="ele-Refresh" class="mr5" />重置
+					</el-button>
+				</el-form-item>
+			</el-form>
+		</el-card>
+		<el-card shadow="never">
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
+				:total="state.total"
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				border
+			>
+			</ProTable>
+		</el-card>
+	</div>
 </template>
 <script setup lang="tsx" name="dataShareCallLog">
 import { onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { defaultDateTime, shortcuts } from "@/utils/constants";
-import { formatDate } from "@/utils/formatTime";
-import { getCallList } from "@/api/dataShare";
+import { defaultDate, shortcuts } from '@/utils/constants';
+import { formatDate } from '@/utils/formatTime';
+import { getCallList } from '@/api/dataShare';
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
-  { prop: 'provinceNo', label: '省工单编号', align: 'center',minWidth: 120 },
-  {
-    prop: 'firstSendProvinceTime',
-    label: '第一次上传省上的时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.firstSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  {
-    prop: 'lastSendProvinceTime',
-    label: '最近一次推送时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.lastSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  { prop: 'cpn', label: '主叫号码', width: 120 },
-  { prop: 'cdpn', label: '被叫号码', width: 120 },
-  { prop: 'telNo', label: '响应分机', width: 120 },
-  { prop: 'gateway', label: '中继号码', width: 120 },
-  { prop: 'userName', label: '话务员', width: 120 },
-  { prop: 'duration', label: '通话时间(秒)', width: 120 },
-  { prop: 'onState', label: '通话结果' },
-  { prop: 'callDirection', label: '电话方向' },
-  { prop: 'endBy', label: '挂机类型', width: 120 },
+	{ prop: 'provinceNo', label: '省工单编号', align: 'center', minWidth: 120 },
+	{
+		prop: 'firstSendProvinceTime',
+		label: '第一次上传省上的时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.firstSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'lastSendProvinceTime',
+		label: '最近一次推送时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.lastSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'cpn', label: '主叫号码', width: 120, align: 'center' },
+	{ prop: 'cdpn', label: '被叫号码', width: 120, align: 'center' },
+	{ prop: 'telNo', label: '响应分机', width: 120, align: 'center' },
+	{ prop: 'userName', label: '话务员', width: 120, align: 'center' },
+	{ prop: 'duration', label: '通话时间(秒)', width: 120, align: 'center' },
+	{
+		prop: 'onState',
+		label: '通话结果',
+		align: 'center',
+		render: (scope) => {
+			return <span>{scope.row.onState === 'On' ? '接通' : '未接通'}</span>;
+		},
+	},
+	{
+		prop: 'callDirection',
+		label: '电话方向',
+		align: 'center',
+		render: (scope) => {
+			return <span>{scope.row.callDirection === 'In' ? '呼入' : '呼出'}</span>;
+		},
+	},
 ]);
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive({
-  queryParams: {
-    PageIndex: 1,
-    PageSize: 10,
-    // 查询条件
-    Id: null, // 热线号码
-    IsSuccess: null, // 是否成功
-    Keyword: null, // 关键字
-    crTime: defaultDateTime,
-  },
-  tableData: [], //表单
-  loading: false, // 加载
-  total: 0, // 总数
+	queryParams: {
+		PageIndex: 1,
+		PageSize: 10,
+		// 查询条件
+		Id: null, // 热线号码
+		IsSuccess: null, // 是否成功
+		Keyword: null, // 关键字
+		crTime: defaultDate,
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
 });
 /** 搜索按钮操作 */
 const handleQuery = () => {
-  // state.queryParams.PageIndex = 1;
-  queryList();
+	// state.queryParams.PageIndex = 1;
+	queryList();
 };
 /** 获取列表 */
 const queryList = () => {
-  state.loading = true;
-  let StartTime = null;
-  let EndTime = null;
-  if (state.queryParams?.crTime) {
-    StartTime = state.queryParams?.crTime[0];
-    EndTime = state.queryParams?.crTime[1];
-  }
-  const request = {
-    StartTime,
-    EndTime,
-    Id: state.queryParams.Id,
-    Keyword: state.queryParams.Keyword,
-    IsSuccess: state.queryParams.IsSuccess,
-    PageIndex: state.queryParams.PageIndex,
-    PageSize: state.queryParams.PageSize,
-  };
-  getCallList(request)
-    .then((res: any) => {
-      state.tableData = res.result?.items ?? [];
-      state.total = res.result?.total ?? 0;
-      state.loading = false;
-    })
-    .catch(() => {
-      state.loading = false;
-    });
+	state.loading = true;
+	let StartTime = null;
+	let EndTime = null;
+	if (state.queryParams?.crTime) {
+		StartTime = state.queryParams?.crTime[0];
+		EndTime = state.queryParams?.crTime[1];
+	}
+	const request = {
+		StartTime,
+		EndTime,
+		Id: state.queryParams.Id,
+		Keyword: state.queryParams.Keyword,
+		IsSuccess: state.queryParams.IsSuccess,
+		PageIndex: state.queryParams.PageIndex,
+		PageSize: state.queryParams.PageSize,
+	};
+	getCallList(request)
+		.then((res: any) => {
+			state.tableData = res.result?.items ?? [];
+			state.total = res.result?.total ?? 0;
+			state.loading = false;
+		})
+		.catch(() => {
+			state.loading = false;
+		});
 };
 /** 重置按钮操作 */
 const resetQuery = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
 };
 onMounted(() => {
-  queryList();
+	queryList();
 });
 </script>

+ 195 - 0
src/views/dataShare/editExpire.vue

@@ -0,0 +1,195 @@
+<template>
+	<div class="dataShare-editExpire-container layout-pd">
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
+				<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="ProvinceNo">
+					<el-input v-model="state.queryParams.ProvinceNo" placeholder="省本地编号" clearable @keyup.enter="handleQuery"  class="keyword-input"/>
+				</el-form-item>
+        <el-form-item label-width="0">
+          <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+          <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+            <SvgIcon name="ele-Refresh" class="mr5" />重置
+          </el-button>
+        </el-form-item>
+			</el-form>
+			<!-- 表格 -->
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
+				:total="state.total"
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				:key="Math.random()"
+			>
+				<template #expiredStatusText="{ row }">
+					<span :class="'overdue-status-' + row.expiredStatus" :title="row.expiredStatusText"></span>
+				</template>
+				<template #title="{ row }">
+					<order-detail :order="row" @updateList="queryList" :type="row.canSign ? 'danger' : 'primary'">{{ row.title }}</order-detail>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+          <el-button link type="primary" @click="onEdit(row)" title="查看修改记录"> 修改期满时间 </el-button>
+          <el-button link type="primary" @click="onRecord(row)" title="查看修改记录"> 修改记录 </el-button>
+				</template>
+			</ProTable>
+		</el-card>
+    <el-dialog title="修改期满时间" v-model="state.dialogVisible" width="500px" destroy-on-close append-to-body draggable>
+      <el-form :model="state.form" ref="formRef"  label-width="100px">
+        <el-form-item label="期满时间" prop="expiredTime" :rules="[{ required: true, message: '请选择修改后的期满时间', trigger: 'change' }]">
+          <el-date-picker
+            v-model="state.form.expiredTime"
+            type="datetime"
+            placeholder="请选择修改后的期满时间"
+            value-format="YYYY-MM-DD[T]HH:mm:ss"
+            class="w100"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="state.dialogVisible = false" class="default-button">取 消</el-button>
+        <el-button type="primary" @click="onSubmit(formRef)" :loading="state.loading">确 定</el-button>
+      </template>
+    </el-dialog>
+    <edit-record ref="editRecordRef"/>
+	</div>
+</template>
+<script setup lang="tsx" name="dataShareEditExpire">
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import type { FormInstance } from 'element-plus';
+import { useRoute, useRouter } from 'vue-router';
+import { formatDate } from '@/utils/formatTime';
+import { orderList } from '@/api/business/order';
+import { ElMessage } from "element-plus";
+import { editExpireTime } from "@/api/dataShare";
+
+// 引入组件
+const OrderDetail = defineAsyncComponent(() => import('@/components/OrderDetail/index.vue')); // 工单详情
+const EditRecord = defineAsyncComponent(() => import('@/views/dataShare/RecordDialog.vue')); // 修改记录弹窗
+
+// 定义变量内容
+const state = reactive<any>({
+	queryParams: {
+		PageIndex: 1, // 当前页
+		PageSize: 10, // 每页条数
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
+  dialogVisible:false,
+  form:{}
+});
+const ruleFormRef = ref<RefType>(); // 表单ref
+const route = useRoute(); // 路由
+const router = useRouter(); // 路由
+const proTableRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columns = ref<any[]>([
+	{ prop: 'expiredStatusText', label: '超期状态', align: 'center', width: 80 },
+	{ prop: 'no', label: '工单编码', width: 150 },
+  { prop: 'provinceNo', label: '省工单编码', width: 200 },
+	{ prop: 'isProvinceText', label: '省/市工单', width: 100 },
+	{ prop: 'actualHandleStepName', label: '办理节点', width: 150 },
+	{ prop: 'statusText', label: '工单状态', width: 100 },
+	{ prop: 'title', label: '工单标题', width: 200 },
+	{
+		prop: 'startTime',
+		label: '受理时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.startTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'expiredTime',
+		label: '工单期满时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.expiredTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'filedTime',
+		label: '办结时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.filedTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'orgLevelOneName', label: '一级部门', width: 170 },
+	{ prop: 'actualHandleOrgName', label: '接办部门', width: 170 },
+	{ prop: 'acceptType', label: '受理类型', width: 150 },
+	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'hotspotName', label: '热点分类', width: 200 },
+	{ prop: 'acceptorName', label: '受理人', width: 100 },
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 210, align: 'center' },
+]);
+// 手动查询,将页码设置为1
+const handleQuery = () => {
+	state.queryParams.PageIndex = 1;
+	queryList();
+};
+/** 获取列表 */
+const queryList = () => {
+	state.loading = true;
+	orderList(state.queryParams)
+		.then((response: any) => {
+			state.tableData = response?.result.items ?? [];
+			state.total = response?.result.total;
+			state.loading = false;
+		})
+		.catch(() => {
+			state.loading = false;
+		});
+};
+/** 重置按钮操作 */
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
+};
+// 修改期满时间
+const onEdit = (row: any) => {
+  state.form = {
+    expiredTime: row.expiredTime,
+    id: row.id,
+    isPush: true
+  }
+  state.dialogVisible = true
+}
+const formRef = ref<RefType>();
+const onSubmit = (formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  formEl.validate((valid: boolean) => {
+    if (!valid) return;
+    state.loading = true;
+    editExpireTime(state.form)
+      .then(() => {
+        state.loading = false;
+        state.dialogVisible = false;
+        queryList();
+        ElMessage.success('操作成功');
+      })
+      .catch(() => {
+        state.loading = false;
+      });
+  });
+};
+// 查看修改记录
+const editRecordRef = ref<RefType>();
+const onRecord = (row: any) => {
+  editRecordRef.value.openDialog(row);
+}
+onMounted(() => {
+	queryList();
+});
+</script>

+ 11 - 7
src/views/dataShare/orderList.vue

@@ -3,23 +3,27 @@
     <!-- 搜索  -->
     <el-card shadow="never">
       <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
-        <el-form-item label="ID" prop="Id">
-          <el-input v-model="state.queryParams.Id" placeholder="查询ID" clearable @keyup.enter="handleQuery" />
-        </el-form-item>
         <!--        <el-form-item label="关键词" prop="Keyword">
           <el-input v-model="state.queryParams.Keyword" placeholder="关键词" clearable @keyup.enter="handleQuery" />
         </el-form-item>-->
+        <el-form-item label="是否及时" prop="IsSuccess">
+          <el-select v-model="state.queryParams.IsSuccess" 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"
+            type="daterange"
             unlink-panels
             range-separator="至"
             start-placeholder="开始时间"
             end-placeholder="结束时间"
             :shortcuts="shortcuts"
             @change="handleQuery"
-            value-format="YYYY-MM-DD[T]HH:mm:ss"
+            value-format="YYYY-MM-DD"
+            :clearable="false"
           />
         </el-form-item>
         <el-form-item label-width="0">
@@ -49,7 +53,7 @@
 <script setup lang="tsx" name="dataShareOrderList">
 import { onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { defaultDateTime, shortcuts } from "@/utils/constants";
+import { defaultDate, shortcuts } from "@/utils/constants";
 import { getOrderList } from "@/api/dataShare";
 import { formatDate } from "@/utils/formatTime";
 const proTableRef = ref<RefType>(); // 表格ref
@@ -110,7 +114,7 @@ const state = reactive({
     Id: null, // 热线号码
     IsSuccess: null, // 是否成功
     Keyword: null, // 关键字
-    crTime: defaultDateTime,
+    crTime: defaultDate,
   },
   tableData: [], //表单
   loading: false, // 加载

+ 163 - 132
src/views/dataShare/orderNoCallLog.vue

@@ -1,156 +1,187 @@
 <template>
-  <div class="dataShare-orderNoCallLog-container layout-pd">
-    <!-- 搜索  -->
-    <el-card shadow="never">
-      <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
-        <el-form-item label="ID" prop="Id">
-          <el-input v-model="state.queryParams.Id" placeholder="查询ID" clearable @keyup.enter="handleQuery" />
-        </el-form-item>
-        <!--        <el-form-item label="关键词" prop="Keyword">
-          <el-input v-model="state.queryParams.Keyword" placeholder="关键词" clearable @keyup.enter="handleQuery" />
-        </el-form-item>-->
-        <el-form-item label="是否成功" prop="IsSuccess">
-          <el-select v-model="state.queryParams.IsSuccess" 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"
-          />
-        </el-form-item>
-        <el-form-item label-width="0">
-          <el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
-          <el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
-            <SvgIcon name="ele-Refresh" class="mr5" />重置
-          </el-button>
-        </el-form-item>
-      </el-form>
-    </el-card>
-    <el-card shadow="never">
-      <ProTable
-        ref="proTableRef"
-        :columns="columns"
-        :data="state.tableData"
-        @updateTable="queryList"
-        :loading="state.loading"
-        :pagination="false"
-        border
-      >
-      </ProTable>
-    </el-card>
-  </div>
+	<div class="dataShare-orderNoCallLog-container layout-pd">
+		<!-- 搜索  -->
+		<el-card shadow="never">
+			<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
+				<el-form-item label="时间段" prop="crTime">
+					<el-date-picker
+						v-model="state.queryParams.crTime"
+						type="daterange"
+						unlink-panels
+						range-separator="至"
+						start-placeholder="开始时间"
+						end-placeholder="结束时间"
+						:shortcuts="shortcuts"
+						@change="handleQuery"
+						value-format="YYYY-MM-DD"
+						:clearable="false"
+					/>
+				</el-form-item>
+				<el-form-item label-width="0">
+					<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+					<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+						<SvgIcon name="ele-Refresh" class="mr5" />重置
+					</el-button>
+				</el-form-item>
+			</el-form>
+		</el-card>
+		<el-card shadow="never">
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
+				:total="state.total"
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				border
+			>
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="onEdit(false)" :disabled="!scope.isSelected" :loading="state.loading" title="修改来源方式">
+						修改来源方式
+					</el-button>
+					<el-button type="primary" @click="onEdit(true)" :disabled="!scope.isSelected" :loading="state.loading" title="修改并推送">
+						修改并推送
+					</el-button>
+				</template>
+			</ProTable>
+		</el-card>
+	</div>
 </template>
 <script setup lang="tsx" name="dataShareOrderNoCallLog">
 import { onMounted, reactive, ref } from 'vue';
-import { FormInstance } from 'element-plus';
-import { callHotline } from '@/api/statistics/call';
-import { defaultDate, defaultDateTime, shortcuts } from "@/utils/constants";
-import { formatDate } from "@/utils/formatTime";
-import { getNoCallList } from "@/api/dataShare";
+import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { defaultDate, shortcuts } from '@/utils/constants';
+import { formatDate } from '@/utils/formatTime';
+import { editNoCallSource, getNoCallList } from '@/api/dataShare';
 const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
-  { prop: 'orderNo', label: '工单编号', align: 'center' },
-  { prop: 'provinceNo', label: '省工单编号', align: 'center' },
-  { prop: 'title', label: '工单标题', align: 'center' },
-  {
-    prop: 'caseDate',
-    label: '工单创建时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.caseDate, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  {
-    prop: 'startTime',
-    label: '受理时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.startTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  {
-    prop: 'firstSendProvinceTime',
-    label: '第一次上传省上的时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.firstSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  {
-    prop: 'lastSendProvinceTime',
-    label: '最近一次推送时间',
-    align: 'center',
-    width: 170,
-    render: (scope) => {
-      return <span>{formatDate(scope.row.lastSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
-    },
-  },
-  {
-    prop: 'handleState',
-    label: '工单状态',
-    align: 'center',
-  },
+	{ type: 'selection', fixed: 'left', width: 55, align: 'center' },
+	{ prop: 'orderNo', label: '工单编号', align: 'center' },
+	{ prop: 'provinceNo', label: '省工单编号', align: 'center' },
+	{ prop: 'title', label: '工单标题', align: 'center' },
+	{
+		prop: 'caseSource',
+		label: '来源方式',
+		align: 'center',
+	},
+	{
+		prop: 'caseDate',
+		label: '工单创建时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.caseDate, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'startTime',
+		label: '受理时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.startTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'firstSendProvinceTime',
+		label: '第一次上传省上的时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.firstSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'lastSendProvinceTime',
+		label: '最近一次推送时间',
+		align: 'center',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.lastSendProvinceTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'handleState',
+		label: '工单状态',
+		align: 'center',
+	}
 ]);
 // 定义变量内容
 const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive({
-  queryParams: {
-    PageIndex: 1,
-    PageSize: 10,
-    crTime: defaultDateTime,
-  },
-  tableData: [], //表单
-  loading: false, // 加载
-  total: 0, // 总数
+	queryParams: {
+		PageIndex: 1,
+		PageSize: 10,
+		crTime: defaultDate,
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
 });
 /** 搜索按钮操作 */
 const handleQuery = () => {
-  // state.queryParams.PageIndex = 1;
-  queryList();
+	// state.queryParams.PageIndex = 1;
+	queryList();
 };
 /** 获取列表 */
 const queryList = () => {
-  state.loading = true;
-  let StartDate = null;
-  let EndDate = null;
-  if (state.queryParams?.crTime) {
-    StartDate = state.queryParams?.crTime[0];
-    EndDate = state.queryParams?.crTime[1];
-  }
-  const request = {
-    StartDate,
-    EndDate,
-  };
-  getNoCallList(request)
-    .then((res: any) => {
-      state.tableData = res.result ?? [];
-      state.loading = false;
-    })
-    .catch(() => {
-      state.loading = false;
-    });
+	state.loading = true;
+	let StartTime = null;
+	let EndTime = null;
+	if (state.queryParams?.crTime) {
+		StartTime = state.queryParams?.crTime[0];
+		EndTime = state.queryParams?.crTime[1];
+	}
+	const request = {
+		PageSize: state.queryParams.PageSize,
+		PageIndex: state.queryParams.PageIndex,
+		StartTime,
+		EndTime,
+	};
+	getNoCallList(request)
+		.then((res: any) => {
+			state.tableData = res.result?.items ?? [];
+			state.total = res.result?.total ?? 0;
+			state.loading = false;
+		})
+		.catch(() => {
+			state.loading = false;
+		});
 };
 /** 重置按钮操作 */
 const resetQuery = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
-  queryList();
+	if (!formEl) return;
+	formEl.resetFields();
+	queryList();
+};
+// 修改
+const onEdit = (isPush: boolean) => {
+	const title = isPush ? '修改并推送' : '修改来源方式';
+	const ids = proTableRef.value.selectedList.map((item: any) => item.orderId);
+	ElMessageBox.confirm(`您确定要${title}选择的【${proTableRef.value.selectedList.length}】个工单,是否继续?`, '提示', {
+		confirmButtonText: '确认',
+		cancelButtonText: '取消',
+		type: 'warning',
+		draggable: true,
+		cancelButtonClass: 'default-button',
+		autofocus: false,
+	})
+		.then(() => {
+			editNoCallSource({ ids, isPush }).then(() => {
+				ElMessage.success('操作成功');
+				queryList();
+			});
+		})
+		.catch(() => {});
+};
+// 查看修改记录
+const onRecord = (row: any) => {
+	console.log(row);
 };
 onMounted(() => {
-  queryList();
+	queryList();
 });
 </script>

+ 8 - 7
src/views/dataShare/pushTask.vue

@@ -18,14 +18,15 @@
 				<el-form-item label="时间段" prop="crTime">
 					<el-date-picker
 						v-model="state.queryParams.crTime"
-						type="datetimerange"
+						type="daterange"
 						unlink-panels
 						range-separator="至"
 						start-placeholder="开始时间"
 						end-placeholder="结束时间"
 						:shortcuts="shortcuts"
 						@change="handleQuery"
-						value-format="YYYY-MM-DD[T]HH:mm:ss"
+            value-format="YYYY-MM-DD"
+            :clearable="false"
 					/>
 				</el-form-item>
 				<el-form-item label-width="0">
@@ -60,7 +61,7 @@
 <script setup lang="tsx" name="dataSharePushTask">
 import { onMounted, reactive, ref } from 'vue';
 import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
-import { shortcuts } from '@/utils/constants';
+import { defaultDate, shortcuts } from "@/utils/constants";
 import { getPushTaskList, rePush, taskPushed } from "@/api/dataShare";
 import { formatDate } from '@/utils/formatTime';
 import { useRouter } from 'vue-router';
@@ -68,7 +69,7 @@ const proTableRef = ref<RefType>(); // 表格ref
 // 表格配置项
 const columns = ref<any[]>([
 	// { prop: 'id', label: 'ID', align: 'center',minWidth: 210 },
-	{ prop: 'provinceNo', label: '省工单编号', align: 'center' },
+	{ prop: 'provinceNo', label: '省工单编号', align: 'center',minWidth: 200 },
 	{
 		prop: 'firstTime',
 		label: '初次推送时间',
@@ -101,11 +102,11 @@ const columns = ref<any[]>([
 		},
 	},
 	{
-		prop: 'platformSource',
+		prop: 'platformSourceText',
 		label: '平台名称',
 		align: 'center',
 	},
-	{ prop: 'taskType', label: '任务类型', align: 'center' },
+	{ prop: 'pathText', label: '任务类型', align: 'center' },
 	{ prop: 'request', label: '请求参数', align: 'center' },
 	{
 		prop: 'generationTime',
@@ -137,7 +138,7 @@ const state = reactive({
 		Id: null, //
 		Keyword: null,
 		IsSuccess: null,
-		crTime: [],
+		crTime: defaultDate,
 	},
 	tableData: [], //表单
 	loading: false, // 加载

+ 0 - 1
src/views/dataShare/taskDetail.vue

@@ -69,7 +69,6 @@ const queryList = () => {
     IsSuccess: historyParams.IsSuccess,
     Id: route.params.id
   }
-  console.log(request)
   getPushTaskDetail(request)
     .then((res: any) => {
       state.tableData = res.result?.items ?? [];

+ 281 - 29
src/views/dataShare/timeliness.vue

@@ -1,19 +1,19 @@
 <template>
   <div class="dataShare-timeliness-container layout-pd">
-    <!-- 搜索  -->
     <el-card shadow="never">
       <el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline>
         <el-form-item label="时间段" prop="crTime">
           <el-date-picker
             v-model="state.queryParams.crTime"
-            type="datetimerange"
+            type="daterange"
             unlink-panels
             range-separator="至"
             start-placeholder="开始时间"
             end-placeholder="结束时间"
             :shortcuts="shortcuts"
             @change="handleQuery"
-            value-format="YYYY-MM-DD[T]HH:mm:ss"
+            value-format="YYYY-MM-DD"
+            :clearable="false"
           />
         </el-form-item>
         <el-form-item label-width="0">
@@ -24,27 +24,252 @@
         </el-form-item>
       </el-form>
     </el-card>
-    <el-card shadow="never">
-      <ProTable
-        ref="proTableRef"
-        :columns="columns"
-        :data="state.tableData"
-        @updateTable="queryList"
-        :loading="state.loading"
-        :total="state.total"
-        v-model:page-index="state.queryParams.PageIndex"
-        v-model:page-size="state.queryParams.PageSize"
-        border
-      >
-      </ProTable>
-    </el-card>
+    <el-row :gutter="20">
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.orderCountNum">
+            <template #title>
+              <span class="color-info font14">工单总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.handleEndOrderNum">
+            <template #title>
+              <span class="color-info font14">办结件数</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.handleEndOrderOnTime">
+            <template #title>
+              <span class="color-info font14">按时办结数量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.orderTimely">
+            <template #title>
+              <span class="color-info font14">工单及时上传</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.orderNotTimely">
+            <template #title>
+              <span class="color-info font14">工单未及时上传</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.orderTimelinessRate">
+            <template #title>
+              <span class="color-info font14">工单及时率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.handleEndOrderRate">
+            <template #title>
+              <span class="color-info font14">办结率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.handleEndOrderOnTimeRate">
+            <template #title>
+              <span class="color-info font14">按时办结率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.telCountNum">
+            <template #title>
+              <span class="color-info font14">电话总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col><el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+        <el-statistic :value="state.data.telConnectCountNum">
+          <template #title>
+            <span class="color-info font14">电话接通数</span>
+          </template>
+        </el-statistic>
+      </el-card>
+    </el-col><el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+        <el-statistic :value="state.data.telNotConnectCountNum">
+          <template #title>
+            <span class="color-info font14">电话未接通数</span>
+          </template>
+        </el-statistic>
+      </el-card>
+    </el-col><el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+        <el-statistic :value="state.data.telTimely">
+          <template #title>
+            <span class="color-info font14">电话及时上传</span>
+          </template>
+        </el-statistic>
+      </el-card>
+    </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.telNotTimely">
+            <template #title>
+              <span class="color-info font14">电话未及时上传</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.telTimelinessRate">
+            <template #title>
+              <span class="color-info font14">电话及时率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.telConnectRate">
+            <template #title>
+              <span class="color-info font14">电话率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.rgdhOrderCount">
+            <template #title>
+              <span class="color-info font14">电话来源工单数量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.containTel">
+            <template #title>
+              <span class="color-info font14">匹配通话记录数</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.notContainTel">
+            <template #title>
+              <span class="color-info font14">未匹配通话记录数</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.matchingRate">
+            <template #title>
+              <span class="color-info font14">匹配率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.visitCountNum">
+            <template #title>
+              <span class="color-info font14">回访总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.satisfactionCountNum">
+            <template #title>
+              <span class="color-info font14">满意总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.notSatisfiedCountNum">
+            <template #title>
+              <span class="color-info font14">不满意总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.satisfactionRate">
+            <template #title>
+              <span class="color-info font14">满意率</span>
+            </template>
+            <template #suffix>%</template>
+          </el-statistic>
+        </el-card>
+      </el-col><el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+      <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+        <el-statistic :value="state.data.notSatisfiedRate">
+          <template #title>
+            <span class="color-info font14">不满意率</span>
+          </template>
+          <template #suffix>%</template>
+        </el-statistic>
+      </el-card>
+    </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.knowledgeCount">
+            <template #title>
+              <span class="color-info font14">知识库总量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4">
+        <el-card shadow="never" v-loading="state.loading" class="statistics-item">
+          <el-statistic :value="state.data.updateKnowledgeCount">
+            <template #title>
+              <span class="color-info font14">更新知识库量</span>
+            </template>
+          </el-statistic>
+        </el-card>
+      </el-col>
+    </el-row>
   </div>
 </template>
 <script setup lang="tsx" name="dataShareTimeliness">
 import { onMounted, reactive, ref } from 'vue';
 import { FormInstance } from 'element-plus';
-import { callHotline } from '@/api/statistics/call';
-import { defaultDate, defaultDateTime, shortcuts } from "@/utils/constants";
+import { defaultDate, shortcuts } from "@/utils/constants";
 import { formatDate } from "@/utils/formatTime";
 import { getTimeRate } from "@/api/dataShare";
 const proTableRef = ref<RefType>(); // 表格ref
@@ -112,13 +337,37 @@ const columns = ref<any[]>([
 const ruleFormRef = ref<RefType>(); // 表单ref
 const state = reactive({
   queryParams: {
-    PageIndex: 1,
-    PageSize: 10,
-    crTime: defaultDateTime,
+    crTime: defaultDate,
   },
-  tableData: [], //表单
   loading: false, // 加载
-  total: 0, // 总数
+  data:{
+    orderCountNum:0, // 工单总量
+    handleEndOrderNum:0 , // 办结件数
+    handleEndOrderOnTime:0, // 按时办结数量
+    orderTimely:0, // 按时办结率
+    orderNotTimely:0, // 不按时办结数量
+    orderTimelinessRate:0, // 按时办结率
+    handleEndOrderRate:0, // 办结率
+    handleEndOrderOnTimeRate:0, // 按时办结率
+    telCountNum:0, // 电话总量
+    telConnectCountNum:0, // 电话接通数
+    telNotConnectCountNum:0, // 电话未接通数
+    telTimely:0, // 按时接通率
+    telNotTimely:0, // 不按时接通数量
+    telTimelinessRate:0, // 按时接通率
+    telConnectRate:0, // 接通率
+    rgdhOrderCount:0, // 电话来源工单数量
+    containTel:0, // 包含电话数量
+    notContainTel:0, // 不包含电话数量
+    matchingRate:0, // 匹配率
+    visitCountNum:0, // 回访总量
+    satisfactionCountNum:0, // 满意总量
+    notSatisfiedCountNum:0, // 不满意总量
+    satisfactionRate:0, // 满意率
+    notSatisfactionRate:0, // 不满意率
+    knowledgeCount:0, // 知识库总量
+    updateKnowledgeCount:0, // 更新知识库量
+  }
 });
 /** 搜索按钮操作 */
 const handleQuery = () => {
@@ -136,14 +385,11 @@ const queryList = () => {
   }
   const request = {
     StartDate,
-    EndDate,
-    PageIndex: state.queryParams.PageIndex,
-    PageSize: state.queryParams.PageSize,
+    EndDate
   };
   getTimeRate(request)
     .then((res: any) => {
-      state.tableData = res.result?.items ?? [];
-      state.total = res.result?.total ?? 0;
+      state.data = res.result ?? {};
       state.loading = false;
     })
     .catch(() => {
@@ -160,3 +406,9 @@ onMounted(() => {
   queryList();
 });
 </script>
+<style scoped lang="scss">
+.statistics-item {
+  margin-bottom: 10px;
+}
+</style>
+