소스 검색

Merge branch 'master' of http://39.98.153.250:9080/bowintek/EmploymentSite

pengjing 11 달 전
부모
커밋
6637f8a1b8

+ 1 - 1
src/main/java/com/hz/employmentsite/controller/taskAndLog/DoWorkController.java

@@ -74,7 +74,7 @@ public class DoWorkController {
                                @RequestParam(required = false) Integer doTypeID, @RequestParam(required = false) String regionCode,@RequestParam(required = false) String streetCode) throws Exception{
         PageInfo<DoWorkVo> result = doWorkService.getList(pageIndex, pageSize,doWorkIDList, userName, workStartDate,workEndDate,doTypeID,regionCode,streetCode);
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
-        data.setTitles(Arrays.asList(new String[]{"序号","姓名","工作日期", "日志类型", "工作情况","所属县区","所属街道"}));
+        data.setTitles(Arrays.asList(new String[]{"序号","姓名"," ", "日志类型", "工作情况","所属县区","所属街道"}));
         int i = 0;
         List<List<Object>> rowsData = new ArrayList();
         for (DoWorkVo item : result.getList()) {

+ 2 - 0
vue/src/router/asyncModules/taskAndLog.ts

@@ -2,7 +2,9 @@ export default {
   'taskAndLog/dotask/index': () => import('@/views/taskAndLog/dotask/index.vue'),
   'taskAndLog/dotask/add': () => import('@/views/taskAndLog/dotask/edit.vue'),
   'taskAndLog/dotask/edit': () => import('@/views/taskAndLog/dotask/edit.vue'),
+  'taskAndLog/dotask/detail': () => import('@/views/taskAndLog/dotask/detail.vue'),
   'taskAndLog/workLog/index': () => import('@/views/taskAndLog/dowork/index.vue'),
   'taskAndLog/workLog/add': () => import('@/views/taskAndLog/dowork/edit.vue'),
   'taskAndLog/workLog/edit': () => import('@/views/taskAndLog/dowork/edit.vue'),
+  'taskAndLog/workLog/detail': () => import('@/views/taskAndLog/dowork/detail.vue'),
 };

+ 3 - 3
vue/src/views/jobUserManager/jobhunt/recommend.vue

@@ -150,9 +150,9 @@ export default defineComponent({
     };
 
     const onBatchRecommend = () => {
-      formState.selectedRowKeys.forEach(id=>{
-        addRecommendList.value.push({postId: id, jobHuntId: searchParamsState.jobHuntId, recommendType: searchParamsState.recommendType});
-      })
+      // formState.selectedRowKeys.forEach(id=>{
+      //   addRecommendList.value.push({postId: id, jobHuntId: searchParamsState.jobHuntId, recommendType: searchParamsState.recommendType});
+      // })
       addRecommend(addRecommendList);
     };
 

+ 121 - 0
vue/src/views/taskAndLog/dotask/detail.vue

@@ -0,0 +1,121 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">任务信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="任务名称">{{ taskInfo.doTaskName }}</a-descriptions-item>
+      <a-descriptions-item label="任务类型">{{ taskInfo.workTypeName }}</a-descriptions-item>
+      <a-descriptions-item label="任务完成时间">{{
+          taskInfo.finishTime ? dayjs(taskInfo.finishTime).format('YYYY-MM-DD') : ''
+        }}
+      </a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ taskInfo.regionName }}</a-descriptions-item>
+      <a-descriptions-item :span="2" label="所属街道">{{ taskInfo.streetName }}</a-descriptions-item>
+      <a-descriptions-item label="任务内容">{{ taskInfo.workContent }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">任务执行人员 共计:{{ userData.length }}</a-divider>
+    <a-table :columns="columns" :data-source="userData"
+             bordered>
+      <template #bodyCell="{ column ,index}">
+        <template v-if="column.key === 'siteUserName'">
+          <div>
+            <label>{{ userData[index][column.key] }}</label>
+          </div>
+        </template>
+        <template v-if="column.key === 'genderName'">
+          {{ userData[index][column.key] }}
+        </template>
+        <template v-if="column.key === 'mobile'">
+          {{ userData[index][column.key] }}
+        </template>
+        <template v-if="column.key === 'taskStatusName'">
+          {{ userData[index][column.key] }}
+        </template>
+      </template>
+    </a-table>
+    <a-divider orientation="left">其他信息</a-divider>
+    <b-upload-file :accept="'.pdf,.png,.jpg,.jpeg,.xls,.xlsx,.doc,.docx,.txt,.ppt,.pptx'" :fileRefId="taskInfo.doTaskID"
+                   :multiple="true" :readonly="true" :setFileList="setFileList"></b-upload-file>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import {onMounted, reactive, ref} from "vue";
+import {getDataById, getWorkUserList} from "@/api/taskAndLog/dotask";
+import type {TableColumnsType} from "ant-design-vue";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import dayjs from "dayjs";
+
+// 任务信息
+const taskInfo = reactive({
+  doTaskID: "",
+  doTaskName: "",
+  workTypeName: "",
+  userId: "",
+  finishTime: "",
+  regionName: "",
+  streetName: "",
+  workContent: ""
+})
+// 人员列表
+const userData = ref([]);
+// 人员列表分页数据
+const searchParams = reactive({
+  pageIndex: 1,
+  pageSize: 10
+});
+// 人员列表表格定义
+const columns: TableColumnsType = [
+  {
+    title: '序号', align: "center", key: 'doTaskID', width: 120,
+    customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`
+  },
+  {
+    title: '姓名', dataIndex: 'siteUserName', key: 'siteUserName', align: "center", width: 120
+  },
+  {
+    title: '性别', dataIndex: 'genderName', key: 'genderName', align: "center", width: 120
+  },
+  {
+    title: '联系电话', dataIndex: 'mobile', key: 'mobile', align: "center", width: 120
+  },
+  {
+    title: '执行情况', dataIndex: 'taskStatusName', key: 'taskStatusName', align: "center", width: 120
+  },
+]
+// 文件列表
+const fileList = ref();
+
+// 人员列表加载
+function loadUserData(id: any) {
+  getWorkUserList(id).then(data => {
+    if (data) {
+      userData.value = data;
+    }
+  });
+}
+
+// 任务数据加载
+function loadData(id: any) {
+  getDataById(id).then(data => {
+    Object.keys(data).forEach(key => {
+      taskInfo[key] = data[key];
+    })
+  });
+};
+
+// 设置文件列表
+const setFileList = (files) => {
+  fileList.value = files;
+};
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+  loadUserData(id)
+})
+</script>
+
+<style scoped>
+
+</style>

+ 74 - 65
vue/src/views/taskAndLog/dotask/index.vue

@@ -1,71 +1,73 @@
 <template>
   <div class="card-search">
-    <a-form ref="formRef" name="advanced_search" class="ant-advanced-search-form" :model="searchParams">
+    <a-form ref="formRef" :model="searchParams" class="ant-advanced-search-form" name="advanced_search">
       <a-row :gutter="24">
         <a-col :span="6">
-          <a-form-item label="任务名称" :label-col="{span:6}" name="name">
+          <a-form-item :label-col="{span:6}" label="任务名称" name="name">
             <a-input v-model:value="searchParams.name" placeholder=""/>
           </a-form-item>
         </a-col>
-        <a-col  :span="6">
-          <a-form-item label="下达时间" :label-col="{span:6}" name="orderDate">
-            <a-range-picker format="YYYY-MM-DD" v-model:value="orderDate" :placeholder="['开始日期', '结束日期']" @change="onRangeChange"/>
+        <a-col :span="6">
+          <a-form-item :label-col="{span:6}" label="下达时间" name="orderDate">
+            <a-range-picker v-model:value="orderDate" :placeholder="['开始日期', '结束日期']" format="YYYY-MM-DD"
+                            @change="onRangeChange"/>
           </a-form-item>
         </a-col>
-        <a-col  :span="6">
-          <a-form-item label="完成时间" :label-col="{span:6}" name="finishDate">
-            <a-range-picker format="YYYY-MM-DD" v-model:value="finishDate" :placeholder="['开始日期', '结束日期']" @change="onFinishChange"/>
+        <a-col :span="6">
+          <a-form-item :label-col="{span:6}" label="完成时间" name="finishDate">
+            <a-range-picker v-model:value="finishDate" :placeholder="['开始日期', '结束日期']" format="YYYY-MM-DD"
+                            @change="onFinishChange"/>
           </a-form-item>
         </a-col>
         <a-col :span="6" style="text-align: left">
-          <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
+          <a-button html-type="submit" type="primary" @click="onSearch">查询</a-button>
           <a-button style="margin: 0 8px" @click="formRef.resetFields();onReset();">重置</a-button>
           <a style="font-size: 12px" @click="expand = !expand">
             <template v-if="expand">
-              <UpOutlined />
+              <UpOutlined/>
             </template>
             <template v-else>
-              <DownOutlined />
+              <DownOutlined/>
             </template>
             {{ expand ? '收缩' : '展开' }}
           </a>
         </a-col>
       </a-row>
-      <a-row :gutter="24"  v-show="expand">
+      <a-row v-show="expand" :gutter="24">
         <a-col :span="6">
-          <a-form-item label="所属县区" :label-col="{span:6}" name="regionCode">
+          <a-form-item :label-col="{span:6}" label="所属县区" name="regionCode">
             <a-select
               ref="select"
               v-model:value="searchParams.regionCode"
-              :options="regionList"
-              :field-names="{ label: 'name', value: 'code' }"
               :allow-clear="true"
+              :field-names="{ label: 'name', value: 'code' }"
+              :options="regionList"
               @change="changeCity"
             >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="所属街道" :label-col="{span:6}" name="streetCode">
+          <a-form-item :label-col="{span:6}" label="所属街道" name="streetCode">
             <a-select
               ref="select"
               v-model:value="searchParams.streetCode"
-              :options="streetList"
-              :field-names="{ label: 'name', value: 'code' }"
               :allow-clear="true"
+              :field-names="{ label: 'name', value: 'code' }"
+              :options="streetList"
               @change="loadData"
             >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="任务类型" :label-col="{span:6}" name="workTypeId">
+          <a-form-item :label-col="{span:6}" label="任务类型" name="workTypeId">
             <a-select
               ref="select"
               v-model:value="searchParams.workTypeId"
-              :options="taskTypeList"
-              :field-names="{ label: 'name', value: 'value' }"
               :allow-clear="true"
+              :field-names="{ label: 'name', value: 'value' }"
+              :options="taskTypeList"
               @change="loadData"
             >
             </a-select>
@@ -74,25 +76,27 @@
       </a-row>
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
-          <a-button type="primary" html-type="submit" @click='onAdd' functioncode="T01040102">新增</a-button>
-          <BExportExcel :title="'导出'" :filename="'任务信息'"
-                        :url="'taskAndLog/doTask/export'"
-                        :params="{...searchParams, isExport: true, rows:10000,doTaskIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+          <a-button functioncode="T01040102" html-type="submit" type="primary" @click='onAdd'>新增</a-button>
+          <BExportExcel :filename="'任务信息'"
+                        :params="{...searchParams, isExport: true, rows:10000,doTaskIDList:formState.selectedRowKeys.join(',')}"
+                        :title="'导出'"
+                        :url="'taskAndLog/doTask/export'"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
     <div class="search-result-list">
-      <a-table :columns="columns" :data-source="dataList" :scroll="{ x:'100%', y: 500 }" :pagination="pagination"
-               :loading="formState.loading"
-               @change="handleTableChange"
-               :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+      <a-table :columns="columns" :data-source="dataList" :loading="formState.loading" :pagination="pagination"
                :row-key="(record)=>record.doTaskID"
-               bordered>
+               :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+               :scroll="{ x:'100%', y: 500 }"
+               bordered
+               @change="handleTableChange">
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
-              <a-button type="link" size="small" @click='onEdit(record)' functioncode="T01040103">编辑</a-button>
-              <a-button type="link" size="small" @click="onDel(record)" functioncode="T01040104">删除</a-button>
+              <a-button functioncode="T01040101" size="small" type="link" @click='onDetail(record)'>查看</a-button>
+              <a-button functioncode="T01040103" size="small" type="link" @click='onEdit(record)'>编辑</a-button>
+              <a-button functioncode="T01040104" size="small" type="link" @click="onDel(record)">删除</a-button>
             </div>
           </template>
         </template>
@@ -103,34 +107,33 @@
 
 <script lang="ts">
 import {get} from '@/api/common';
-import {reactive, ref, computed, defineComponent,createVNode} from 'vue';
-import {DownOutlined, UpOutlined,ExclamationCircleOutlined} from '@ant-design/icons-vue';
-import type {FormInstance,SelectProps} from 'ant-design-vue';
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList,del} from '@/api/taskAndLog/dotask';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
+import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
+import type {FormInstance, SelectProps, TableColumnsType, TableProps} from 'ant-design-vue';
+import {message, Modal} from "ant-design-vue";
+import {del, getList} from '@/api/taskAndLog/dotask';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message, Modal} from "ant-design-vue";
 import dayjs from 'dayjs';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 
 
 export default defineComponent({
   name: 'doTaskList',
-  components: { DownOutlined, UpOutlined, BExportExcel},
+  components: {DownOutlined, UpOutlined, BExportExcel},
   setup() {
     const formRef = ref<FormInstance>();
     const searchParams = reactive({
       pageIndex: 1,
       pageSize: 20,
-      recordStatus:1,
-      startTime:'',
-      endTime:'',
-      finishStartTime:'',
-      finishEndTime:'',
-      workTypeId:'',
-      regionCode:'',
-      streetCode:''
+      recordStatus: 1,
+      startTime: '',
+      endTime: '',
+      finishStartTime: '',
+      finishEndTime: '',
+      workTypeId: '',
+      regionCode: '',
+      streetCode: ''
     });
     const formState = reactive({
       total: 0,
@@ -148,17 +151,19 @@ export default defineComponent({
       {title: '任务类型', dataIndex: 'workTypeName', key: 'workTypeName', width: 120, align: "center"},
       {
         title: '任务完成时间', dataIndex: 'finishTime', key: 'finishTime', align: "center", customRender: (item) => {
-          return item.record.finishTime==null?"": (dayjs(item.record.finishTime).format('YYYY-MM-DD'))
+          return item.record.finishTime == null ? "" : (dayjs(item.record.finishTime).format('YYYY-MM-DD'))
         }
       },
       {title: '所属县区', dataIndex: 'regionName', key: 'regionName', align: "center"},
       {title: '所属街道', dataIndex: 'streetName', key: 'streetName', align: "center"},
       {title: '执行用户数', dataIndex: 'userCount', key: 'userCount', align: "center"},
-      {title: '下达时间', dataIndex: 'createTime', key: 'createTime', align: "center",customRender:(item)=>{
-          return item.record.createTime==null?"": (dayjs(item.record.createTime).format('YYYY-MM-DD'))
-        }},
+      {
+        title: '下达时间', dataIndex: 'createTime', key: 'createTime', align: "center", customRender: (item) => {
+          return item.record.createTime == null ? "" : (dayjs(item.record.createTime).format('YYYY-MM-DD'))
+        }
+      },
       {title: '下达人', dataIndex: 'createName', key: 'createName', align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right', width: 100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -181,22 +186,25 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/taskAndLog/dotask/add', null);
     };
     const onEdit = (item: any) => {
-      tabsViewStore.addTabByPath('/taskAndLog/dotask/edit', { id: item.doTaskID });
+      tabsViewStore.addTabByPath('/taskAndLog/dotask/edit', {id: item.doTaskID});
+    };
+    const onDetail = (item: any) => {
+      tabsViewStore.addTabByPath('/taskAndLog/dotask/detail', {id: item.doTaskID});
     };
 
-    get('system/area/getCityList',{}).then(data=>{
+    get('system/area/getCityList', {}).then(data => {
       // console.log(data);
-      regionList.value=data;
+      regionList.value = data;
       // console.log(regionList.value);
     });
 
-    get('system/dictionary/getDictionaryItemByCodeList',{code:'TaskType'}).then(data=>{
+    get('system/dictionary/getDictionaryItemByCodeList', {code: 'TaskType'}).then(data => {
       // console.log(data);
-      taskTypeList.value=data;
+      taskTypeList.value = data;
     });
 
-    const changeCity=()=>{
-      if(searchParams.regionCode) {
+    const changeCity = () => {
+      if (searchParams.regionCode) {
         get('system/area/getAreaList', {code: searchParams.regionCode}).then(data => {
           streetList.value = data;
         })
@@ -237,13 +245,13 @@ export default defineComponent({
       loadData();
     }
 
-    const onReset =()=>{
-      orderDate.value =[];
-      finishDate.value =[];
+    const onReset = () => {
+      orderDate.value = [];
+      finishDate.value = [];
       searchParams.startTime = '';
       searchParams.endTime = '';
-      searchParams.finishStartTime =  '';
-      searchParams.finishEndTime =  '';
+      searchParams.finishStartTime = '';
+      searchParams.finishEndTime = '';
       loadData();
     };
 
@@ -305,7 +313,8 @@ export default defineComponent({
       loadData,
       onAdd,
       onEdit,
-      dayjs
+      dayjs,
+      onDetail
     };
   },
   created() {

+ 87 - 0
vue/src/views/taskAndLog/dowork/detail.vue

@@ -0,0 +1,87 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">工作日志信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="姓名">{{ workInfo.userName }}</a-descriptions-item>
+      <a-descriptions-item label="日志类型">{{ workInfo.logTypeName }}</a-descriptions-item>
+      <a-descriptions-item label="完成时间">{{ workInfo.workTime }}</a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ workInfo.regionName }}</a-descriptions-item>
+      <a-descriptions-item :span="2" label="所属街道">{{ workInfo.streetName }}</a-descriptions-item>
+      <a-descriptions-item label="工作情况">{{ workInfo.workContent }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">工作量完成情况</a-divider>
+    <a-descriptions :column="2" bordered>
+      <a-descriptions-item label="走访企业数量">{{ recordsCount.RecordsCompanyNum }}</a-descriptions-item>
+      <a-descriptions-item label="收集岗位">{{ recordsCount.RecordsPostNum }}</a-descriptions-item>
+      <a-descriptions-item label="登记就业人数">{{ recordsCount.RecordsJobuserNum }}</a-descriptions-item>
+      <a-descriptions-item label="求职意向">{{ recordsCount.RecordsJobhuntNum }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <b-upload-file :accept="'.pdf,.png,.jpg'" :fileRefId="workInfo.doWorkID"
+                   :multiple="true" :readonly="true" :setFileList="setFileList"></b-upload-file>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import {onMounted, reactive, ref} from "vue";
+import {get, getRecordsCount} from "@/api/taskAndLog/dowork";
+import BUploadFile from "@/components/file/uploadFile.vue";
+
+// 日志信息
+const workInfo = reactive({
+  doWorkID: "",
+  userName: "",
+  logTypeName: "",
+  userId: "",
+  workTime: "",
+  regionName: "",
+  streetName: "",
+  workContent: ""
+})
+// 工作量完成数据
+const recordsCount = reactive({
+  RecordsCompanyNum: null,
+  RecordsJobuserNum: null,
+  RecordsPostNum: null,
+  RecordsJobhuntNum: null,
+});
+// 文件列表
+const fileList = ref();
+
+// 查询日志信息
+function loadData(doWorkID: string) {
+  get(doWorkID).then((result: any) => {
+    Object.keys(result).forEach((key: string) => {
+      workInfo[key] = result[key];
+    })
+    findRecordsCount()
+  });
+};
+
+// 查询工作量信息
+function findRecordsCount() {
+  if (workInfo.userId && workInfo.workTime) {
+    getRecordsCount(workInfo.userId, workInfo.workTime).then((res) => {
+      // 赋值
+      Object.keys(recordsCount).forEach(key => {
+        recordsCount[key] = res[key];
+      })
+    });
+  }
+}
+
+// 设置文件列表
+const setFileList = (files) => {
+  fileList.value = files;
+};
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 66 - 57
vue/src/views/taskAndLog/dowork/index.vue

@@ -1,62 +1,62 @@
 <template>
   <div class="card-search">
-    <a-form ref="formRef" name="advanced_search" class="ant-advanced-search-form" :model="searchParams">
+    <a-form ref="formRef" :model="searchParams" class="ant-advanced-search-form" name="advanced_search">
       <a-row :gutter="24">
         <a-col :span="6">
-          <a-form-item label="姓名" :label-col="{span:6}" name="userName">
-            <a-input v-model:value="searchParams.userName" placeholder="" :allow-clear="true"/>
+          <a-form-item :label-col="{span:6}" label="姓名" name="userName">
+            <a-input v-model:value="searchParams.userName" :allow-clear="true" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="工作日期" :label-col="{span:6}" name="workDate">
-            <a-range-picker format="YYYY-MM-DD"  :placeholder="['开始日期', '结束日期']"
-                            v-model:value="workDate" @change="onRangeChange"/>
+          <a-form-item :label-col="{span:6}" label="工作日期" name="workDate">
+            <a-range-picker v-model:value="workDate" :placeholder="['开始日期', '结束日期']"
+                            format="YYYY-MM-DD" @change="onRangeChange"/>
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="日志类型" :label-col="{span:6}" name="doTypeID">
-            <a-select  ref="select"
-              v-model:value="searchParams.doTypeID" :options="logTypeList"
-              :field-names="{ label: 'name', value: 'value' }" @change="onSearch" :allow-clear="true">
+          <a-form-item :label-col="{span:6}" label="日志类型" name="doTypeID">
+            <a-select ref="select"
+                      v-model:value="searchParams.doTypeID" :allow-clear="true"
+                      :field-names="{ label: 'name', value: 'value' }" :options="logTypeList" @change="onSearch">
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="6" style="text-align: left">
-          <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
+          <a-button html-type="submit" type="primary" @click="onSearch">查询</a-button>
           <a-button style="margin: 0 8px" @click="formRef.resetFields();onReset();">重置</a-button>
           <a style="font-size: 12px" @click="expand = !expand">
             <template v-if="expand">
-              <UpOutlined />
+              <UpOutlined/>
             </template>
             <template v-else>
-              <DownOutlined />
+              <DownOutlined/>
             </template>
             {{ expand ? '收缩' : '展开' }}
           </a>
         </a-col>
       </a-row>
-      <a-row :gutter="24"  v-show="expand">
+      <a-row v-show="expand" :gutter="24">
         <a-col :span="6">
-          <a-form-item label="所属县区" :label-col="{span:6}" name="regionCode">
+          <a-form-item :label-col="{span:6}" label="所属县区" name="regionCode">
             <a-select
               ref="select"
               v-model:value="searchParams.regionCode"
-              :options="regionList"
-              :field-names="{ label: 'name', value: 'code' }"
               :allow-clear="true"
+              :field-names="{ label: 'name', value: 'code' }"
+              :options="regionList"
               @change="changeRegion"
             >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="所属街道" :label-col="{span:6}" name="streetCode">
+          <a-form-item :label-col="{span:6}" label="所属街道" name="streetCode">
             <a-select
               ref="select"
               v-model:value="searchParams.streetCode"
-              :options="streetList"
-              :field-names="{ label: 'name', value: 'code' }"
               :allow-clear="true"
+              :field-names="{ label: 'name', value: 'code' }"
+              :options="streetList"
               @change="onSearch"
             >
             </a-select>
@@ -65,23 +65,27 @@
       </a-row>
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
-          <a-button type="primary" html-type="submit" functioncode="T01040202" @click='onAdd'>新增</a-button>
-          <BExportExcel :title="'导出'" :filename="'工作日志信息'" :url="'taskAndLog/doWork/export'" :params="{...searchParams, rows:100000,doWorkIDList:formState.selectedRowKeys.join(',')}"></BExportExcel>
+          <a-button functioncode="T01040202" html-type="submit" type="primary" @click='onAdd'>新增</a-button>
+          <BExportExcel :filename="'工作日志信息'" :params="{...searchParams, rows:100000,doWorkIDList:formState.selectedRowKeys.join(',')}" :title="'导出'"
+                        :url="'taskAndLog/doWork/export'"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
     <div class="search-result-list">
-      <a-table :columns="columns" :data-source="dataList" :scroll="{ x:'100%', y: 500 }" :pagination="pagination"
-               :loading="formState.loading"
-               @change="handleTableChange"
-               :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+      <a-table :columns="columns" :data-source="dataList" :loading="formState.loading" :pagination="pagination"
                :row-key="record=>record.doWorkID"
-               bordered>
+               :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+               :scroll="{ x:'100%', y: 500 }"
+               bordered
+               @change="handleTableChange">
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
-              <a-button type="link" size="small" functioncode="T01040203" @click='onEdit(record.doWorkID)'>编辑</a-button>
-              <a-button type="link" size="small" functioncode="T01040204" @click="onDel(record)">删除</a-button>
+              <a-button functioncode="T01040201" size="small" type="link" @click='onDetail(record.doWorkID)'>查看
+              </a-button>
+              <a-button functioncode="T01040203" size="small" type="link" @click='onEdit(record.doWorkID)'>编辑
+              </a-button>
+              <a-button functioncode="T01040204" size="small" type="link" @click="onDel(record)">删除</a-button>
             </div>
           </template>
         </template>
@@ -91,21 +95,21 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance,SelectProps,TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList,delWorkLog} from '@/api/taskAndLog/dowork';
-import {getRegionCodeList,getStreetCodeList} from '@/api/system/area/index';
+import type {FormInstance, SelectProps, TableColumnsType, TableProps} from 'ant-design-vue';
+import {message, Modal} from "ant-design-vue";
+import {delWorkLog, getList} from '@/api/taskAndLog/dowork';
+import {getRegionCodeList, getStreetCodeList} from '@/api/system/area/index';
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message, Modal} from "ant-design-vue";
 import dayjs from 'dayjs';
 
 export default defineComponent({
   name: 'doTaskList',
-  components: { DownOutlined, UpOutlined, BExportExcel},
+  components: {DownOutlined, UpOutlined, BExportExcel},
   setup() {
     const formRef = ref<FormInstance>();
     const tabsViewStore = useTabsViewStore();
@@ -114,12 +118,12 @@ export default defineComponent({
     const searchParams = reactive({
       pageIndex: 1,
       pageSize: 20,
-      userName:'',
-      workStartDate:'',
-      workEndDate:'',
+      userName: '',
+      workStartDate: '',
+      workEndDate: '',
       doTypeID: null,
-      regionCode:'',
-      streetCode:''
+      regionCode: '',
+      streetCode: ''
     });
     const formState = reactive({
       total: 0,
@@ -137,7 +141,7 @@ export default defineComponent({
       {
         title: '工作日期', dataIndex: 'workTime', key: 'workTime', width: 120, align: "center",
         customRender: (item) => {
-          return item.record.workTime==null?"": (dayjs(item.record.workTime).format('YYYY-MM-DD'))
+          return item.record.workTime == null ? "" : (dayjs(item.record.workTime).format('YYYY-MM-DD'))
         },
       },
       {title: '日志类型', dataIndex: 'logTypeName', key: 'logTypeName', align: "center"},
@@ -146,7 +150,7 @@ export default defineComponent({
       {title: '所属街道', dataIndex: 'streetName', key: 'streetName', align: "center"},
       {title: '走访企业数量', dataIndex: 'RecordsCompanyNum', key: 'RecordsCompanyNum', align: "center"},
       {title: '登记就业人员人数', dataIndex: 'RecordsJobuserNum', key: 'RecordsJobuserNum', align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right', width: 100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -161,19 +165,19 @@ export default defineComponent({
     const logTypeList = ref<SelectProps['options']>();
     const dataList = ref([]);
 
-    const getLogTypeList = async function(){
-      const logTypeResult :any = await getSysDictionaryList("LogType");
+    const getLogTypeList = async function () {
+      const logTypeResult: any = await getSysDictionaryList("LogType");
       logTypeList.value = logTypeResult;
     }
 
-    const getRegionList = async function(){
+    const getRegionList = async function () {
       const regionResult: any = await getRegionCodeList();
       // console.log('regionResult',regionResult);
       regionList.value = regionResult;
     }
 
-    const changeRegion = async function(){
-      if(searchParams.regionCode){
+    const changeRegion = async function () {
+      if (searchParams.regionCode) {
         const streetResult: any = await getStreetCodeList(searchParams.regionCode);
         // console.log('streetResult',streetResult);
         streetList.value = streetResult;
@@ -202,7 +206,7 @@ export default defineComponent({
       formState.selectedRowKeys = selectedRowKeys;
     };
 
-    const onRangeChange=(dateString)=>{
+    const onRangeChange = (dateString) => {
       workDate.value = dateString;
       searchParams.workStartDate = dateString ? dateString[0].format("YYYY-MM-DD") : '';
       searchParams.workEndDate = dateString ? dateString[1].format("YYYY-MM-DD") : '';
@@ -244,19 +248,23 @@ export default defineComponent({
 
     };
 
-    const onAdd =()=>{
-      tabsViewStore.addTabByPath('/taskAndLog/workLog/add', {id:null});
+    const onAdd = () => {
+      tabsViewStore.addTabByPath('/taskAndLog/workLog/add', {id: null});
     };
 
     const onEdit = (id: string) => {
-      tabsViewStore.addTabByPath('/taskAndLog/workLog/edit', {id:id});
+      tabsViewStore.addTabByPath('/taskAndLog/workLog/edit', {id: id});
     };
 
-    const onReset =()=>{
-        workDate.value =[];
-        searchParams.workStartDate = '';
-        searchParams.workEndDate = '';
-        loadData();
+    const onDetail = (id: string) => {
+      tabsViewStore.addTabByPath('/taskAndLog/workLog/detail', {id: id});
+    }
+
+    const onReset = () => {
+      workDate.value = [];
+      searchParams.workStartDate = '';
+      searchParams.workEndDate = '';
+      loadData();
     };
 
     return {
@@ -281,7 +289,8 @@ export default defineComponent({
       onRangeChange,
       loadData,
       changeRegion,
-      dayjs
+      dayjs,
+      onDetail
     };
   },
   created() {