Browse Source

工作任务-页面后台数据编写

Liudijing 1 year ago
parent
commit
07893b025d

+ 16 - 0
src/main/java/com/hz/employmentsite/controller/taskAndLog/DotaskController.java

@@ -5,10 +5,14 @@ import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.services.service.taskAndLog.DotaskService;
+import com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo;
 import com.hz.employmentsite.vo.taskAndLog.DotaskVo;
+import com.hz.employmentsite.vo.taskAndLog.SiteUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 @RestController
 @RequestMapping(value = "/api/taskAndLog/dotask")
 public class DotaskController {
@@ -27,6 +31,18 @@ public class DotaskController {
         return RespGenerstor.success(result);
     }
 
+    @ResponseBody
+    @GetMapping("/getWorkUserList")
+    public  BaseResponse getWorkUserList(@RequestParam(required = false) String dotaskID){
+            List<DoTaskUserVo> list=dotaskService.getWorkUserList(dotaskID);
+            return RespGenerstor.success(list);
+    }
 
+    @ResponseBody
+    @GetMapping("/getUserList")
+    public  BaseResponse  getUserList(){
+        List<SiteUserVo> list=dotaskService.getUserList();
+        return RespGenerstor.success(list);
+    }
 
 }

+ 10 - 3
src/main/java/com/hz/employmentsite/mapper/cquery/DotaskCQuery.java

@@ -1,13 +1,20 @@
 package com.hz.employmentsite.mapper.cquery;
 
+import com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo;
 import com.hz.employmentsite.vo.taskAndLog.DotaskVo;
+import com.hz.employmentsite.vo.taskAndLog.SiteUserVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Date;
 
 public interface DotaskCQuery {
-    List<DotaskVo> selectDotaskList(@Param("name")String name, @Param("startTime")String startTime, @Param("endTime")String endTime,
-                                    @Param("finishStartTime")String finishStartTime, @Param("finishEndTime")String finishEndTime,
-                           @Param("regionCode")String regionCode, @Param("streetCode")String streetCode, @Param("workTypeId")String workTypeId);
+    List<DotaskVo> getList(@Param("name") String name, @Param("startTime") String startTime, @Param("endTime") String endTime,
+                           @Param("finishStartTime") String finishStartTime, @Param("finishEndTime") String finishEndTime,
+                           @Param("regionCode") String regionCode, @Param("streetCode") String streetCode, @Param("workTypeId") String workTypeId);
+
+    List<DoTaskUserVo> getWorkUserList(String dotaskID);
+
+    List<SiteUserVo> getUserList();
+
 }

+ 15 - 1
src/main/java/com/hz/employmentsite/services/impl/taskAndLog/DotaskImpl.java

@@ -5,7 +5,9 @@ import com.hz.employmentsite.mapper.cquery.DotaskCQuery;
 import com.hz.employmentsite.mapper.cquery.PostCQuery;
 import com.hz.employmentsite.services.service.taskAndLog.DotaskService;
 import com.hz.employmentsite.vo.companyService.PostVo;
+import com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo;
 import com.hz.employmentsite.vo.taskAndLog.DotaskVo;
+import com.hz.employmentsite.vo.taskAndLog.SiteUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,7 +24,7 @@ public class DotaskImpl implements DotaskService {
     @Override
     public PageInfo<DotaskVo> getList(Integer page, Integer rows, String name, String startTime, String endTime, String finishStartTime, String finishEndTime, String regionCode, String streetCode, String workTypeId) {
         try {
-            List<DotaskVo> list = dotaskCQuery.selectDotaskList(name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId);
+            List<DotaskVo> list = dotaskCQuery.getList(name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId);
             PageInfo<DotaskVo> result = new PageInfo(list);
             return result;
         } catch (Exception e) {
@@ -30,5 +32,17 @@ public class DotaskImpl implements DotaskService {
         }
     }
 
+    @Override
+    public List<DoTaskUserVo> getWorkUserList(String dotaskID) {
+        List<DoTaskUserVo> list = dotaskCQuery.getWorkUserList(dotaskID);
+        return list;
+    }
+
+    @Override
+    public List<SiteUserVo> getUserList() {
+        List<SiteUserVo> list = dotaskCQuery.getUserList();
+        return list;
+    }
+
 
 }

+ 9 - 2
src/main/java/com/hz/employmentsite/services/service/taskAndLog/DotaskService.java

@@ -1,12 +1,19 @@
 package com.hz.employmentsite.services.service.taskAndLog;
 
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo;
 import com.hz.employmentsite.vo.taskAndLog.DotaskVo;
+import com.hz.employmentsite.vo.taskAndLog.SiteUserVo;
 
 import java.util.Date;
+import java.util.List;
 
 public interface DotaskService {
-    PageInfo<DotaskVo> getList(Integer page, Integer rows, String name, String startTime, String endTime,String finishStartTime, String finishEndTime,
-                               String regionCode,String streetCode, String workTypeId);
+    PageInfo<DotaskVo> getList(Integer page, Integer rows, String name, String startTime, String endTime, String finishStartTime, String finishEndTime,
+                               String regionCode, String streetCode, String workTypeId);
+
+    List<DoTaskUserVo> getWorkUserList(String dotaskID);
+
+    List<SiteUserVo> getUserList();
 
 }

+ 8 - 0
src/main/java/com/hz/employmentsite/vo/taskAndLog/DoTaskUserVo.java

@@ -0,0 +1,8 @@
+package com.hz.employmentsite.vo.taskAndLog;
+
+public class DoTaskUserVo {
+    public  String dotaskUserID;
+    public  String dotaskID;
+    public  String siteUserID;
+    public  String userName;
+}

+ 6 - 0
src/main/java/com/hz/employmentsite/vo/taskAndLog/SiteUserVo.java

@@ -0,0 +1,6 @@
+package com.hz.employmentsite.vo.taskAndLog;
+
+public class SiteUserVo {
+    public String siteUserID;
+    public String Name;
+}

+ 1 - 1
src/main/resources/mapping/cquery/CompanyCQuery.xml

@@ -21,7 +21,7 @@
             and companyCode like Concat('%',#{companyCode},'%')
         </if>
         <if test="recordStatus!='' and recordStatus!=null">
-            and recordStatus =  #{recordStatus}
+            and recordStatus = #{recordStatus}
         </if>
         <if test="regionCode!='' and regionCode!=null">
             and regionCode like Concat('%',#{regionCode},'%')

+ 18 - 1
src/main/resources/mapping/cquery/DotaskCQuery.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.hz.employmentsite.mapper.cquery.DotaskCQuery">
-    <select id="selectDotaskList" resultType="com.hz.employmentsite.vo.taskAndLog.DotaskVo">
+    <select id="getList" resultType="com.hz.employmentsite.vo.taskAndLog.DotaskVo">
         select task.dotaskID,task.workTypeID,task.content,task.dotaskName,u.`Name` as createName,
         task.finishTime,task.createTime,(select count(*) from pc_dotask_user du where du.DotaskID = task.DotaskID)as userCount,
         city.`name` as regionName,area.`name` as streetName,item.`Name` as workTypeName,task.regionCode,task.streetCode
@@ -40,4 +40,21 @@
             and task.workTypeID = #{workTypeId}
         </if>
     </select>
+
+    <select id="getWorkUserList" resultType="com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo">
+        select su.`Name` as userName, u.*
+        from pc_dotask_user u
+        left join pc_dotask tk
+        on u.DotaskID = tk.DotaskID
+        left join pc_site_user su
+        on su.SiteUserID = u.SiteUserID
+        where 1 = 1
+        <if test="dotaskID!='' and dotaskID!=null">
+            and u.DotaskID = #{dotaskID}
+        </if>
+
+    </select>
+    <select id="getUserList" resultType="com.hz.employmentsite.vo.taskAndLog.SiteUserVo">
+        select SiteUserID,`Name` from pc_site_user;
+    </select>
 </mapper>

+ 25 - 0
vue/src/api/taskAndLog/dotask.ts

@@ -14,3 +14,28 @@ export function getList(params: any) {
   );
 }
 
+export function getWorkUserList(id: any) {
+  return request(
+    {
+      url: "taskAndLog/dotask/getWorkUserList",
+      method: 'get',
+      params: {id},
+    },
+    {
+      isNew: true,
+    },
+  );
+}
+
+export function getUserList() {
+  return request(
+    {
+      url: "taskAndLog/dotask/getUserList",
+      method: 'get',
+      params: {},
+    },
+    {
+      isNew: true,
+    },
+  );
+}

+ 182 - 105
vue/src/views/taskAndLog/dotask/edit.vue

@@ -7,24 +7,20 @@
           <a-form-item
             label="任务名称"
             :label-col="{ span: 6 }"
-            name="DotaskName"
+            name="dotaskName"
             :rules="[{ required: true, message: '请输入任务名称!' }]"
           >
-            <a-input v-model:value="dataModel.DotaskName" placeholder=""/>
+            <a-input v-model:value="dataModel.dotaskName" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="8">
-          <a-form-item
-            label="任务类型"
-            :label-col="{ span: 6 }"
-            name="WorkTypeID"
-            :rules="[{ required: true, message: '请输入任务类型!' }]"
-          >
+          <a-form-item label="任务类型" :label-col="{span:6}" name="workTypeId">
             <a-select
               ref="select"
-              v-model:value="dataModel.WorkTypeID"
-              :options="studentTypelist"
+              v-model:value="dataModel.workTypeId"
+              :options="taskTypeList"
               :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
             >
             </a-select>
           </a-form-item>
@@ -33,11 +29,11 @@
           <a-form-item
             label="任务完成时间"
             :label-col="{ span: 6 }"
-            name="FinishTime"
+            name="finishTime"
             :rules="[{ required: true, message: '请输入任务完成时间!' }]"
           >
             <a-date-picker
-              v-model:value="dataModel.FinishTime"
+              v-model:value="dataModel.finishTime"
               picker="date"
               value-format="YYYY-MM-DD"
             />
@@ -46,29 +42,28 @@
       </a-row>
       <a-row :gutter="24">
         <a-col :span="8">
-          <a-form-item
-            label="所属县区"
-            :label-col="{ span: 6 }"
-            name="RegionCode"
-            :rules="[{ required: true, message: '请选择所属县区!' }]"
-          >
+          <a-form-item label="所属县区" :label-col="{span:6}" name="regionCode">
             <a-select
               ref="select"
-              v-model:value="dataModel.RegionCode"
-              :options="studentTypelist"
-              :field-names="{ label: 'name', value: 'value' }"
+              v-model:value="dataModel.regionCode"
+              :options="regionList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+              @change="changeCity"
             >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="8">
-          <a-form-item
-            label="所属街道"
-            :label-col="{ span: 6 }"
-            name="StreetCode"
-            :rules="[{ required: true, message: '请选择所属街道!' }]"
-          >
-            <a-input v-model:value="dataModel.StreetCode" placeholder=""/>
+          <a-form-item label="所属街道" :label-col="{span:6}" name="streetCode">
+            <a-select
+              ref="select"
+              v-model:value="dataModel.streetCode"
+              :options="streetList"
+              :field-names="{ label: 'name', value: 'code' }"
+              :allow-clear="true"
+            >
+            </a-select>
           </a-form-item>
         </a-col>
       </a-row>
@@ -79,14 +74,42 @@
           </a-form-item>
         </a-col>
       </a-row>
+      <a-row>
+        <a-col :span="24" style="text-align: right; margin-top: 20px; margin-right: 20px">
+          <Space>
+            <a-button @click="addUser">
+              <template #icon>
+                <plus-circle-outlined/>
+              </template>
+              新增
+            </a-button>
+          </Space>
+        </a-col>
+      </a-row>
       <a-divider orientation="left">任务执行人员</a-divider>
-      <div class="search-result-list">
-        <a-table :columns="columns" :data-source="dataList" :scroll="{ x:'100%', y: 500 }"
-                 :loading="formState.loading"
-                 :row-key="record=>record.SiteUserID"
-                 bordered>
-        </a-table>
-      </div>
+      <a-row>
+        <a-col style="margin-bottom: 20px;">
+          <a-table :columns="columns" :data-source="userData" :pagination="false"
+                   bordered>
+            <template #bodyCell="{ column ,index}">
+              <template v-if="column.key === 'siteUserID'">
+                <div>
+                  <a-input v-if="isEdit"
+                           v-model:value="userData[index][column.key]" style="width: 200px"
+                  />
+                  <template v-else>
+                    {{ userData[index][column.key] }}
+                  </template>
+                </div>
+              </template>
+              <template v-if="column.key === 'operation'">
+                <a-button type="link" size="small" @click="deleteUser(index)">删除</a-button>
+              </template>
+            </template>
+          </a-table>
+        </a-col>
+      </a-row>
+
       <a-divider orientation="left">其他信息</a-divider>
       <b-upload-file
         :file-ref-id="dataModel.DotaskID"
@@ -104,86 +127,140 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, reactive, ref, toRefs } from 'vue';
-import { useRouter } from 'vue-router';
-import type { SelectProps,TableColumnsType } from 'ant-design-vue';
-import { useTabsViewStore } from '@/store/modules/tabsView';
+import {defineComponent, reactive, ref, toRefs} from 'vue';
+import {useRouter} from 'vue-router';
+import type {SelectProps, TableColumnsType} from 'ant-design-vue';
+import {useTabsViewStore} from '@/store/modules/tabsView';
 import BUploadFile from '@/components/file/uploadFile.vue';
+import {get} from "@/api/common";
+import {getUserList, getWorkUserList} from '@/api/taskAndLog/dotask'
 
 interface FormState {
   dataModel: any;
 }
 
 export default defineComponent(
-{
-  components: { BUploadFile },
-  setup()
   {
-    //任务执行人员列表
-    const dataList = ref([]);
-    const formState = reactive<FormState>({ dataModel: {} });
-    const formTableState = reactive({  loading: false});
-    const searchParams = reactive({
-      pageIndex: 1,
-      pageSize: 99
-    });
-    const router = useRouter();
-    const postStatuslist = ref<SelectProps['options']>();
-    // const fullpath = router.currentRoute.value.fullPath;
-    const tabsViewStore = useTabsViewStore();
-
-    const fileList = ref();
-    const setFileList = (files) => {
-      fileList.value = files;
-    };
-
-    const onAdd=()=>{
-      tabsViewStore.addTabByPath('',null);
-    };
-    const onDel=()=>{
-
-    };
-    const onClose = () => {
-      tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/add');
-      tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/edit');
-      router.push({ name: '/taskAndLog/dotask/index' });
-    };
-
-    const onFinish=()=>{
+    components: {BUploadFile},
+    setup() {
+      const formState = reactive<FormState>({dataModel: {}});
+      const formTableState = reactive({loading: false});
+      const searchParams = reactive({
+        pageIndex: 1,
+        pageSize: 99
+      });
+      const router = useRouter();
+      const siteuserList = ref<SelectProps['options']>();
+      const regionList = ref<SelectProps['options']>();
+      const streetList = ref<SelectProps['options']>();
+      const taskTypeList = ref<SelectProps['options']>();
+      // const fullpath = router.currentRoute.value.fullPath;
+      const tabsViewStore = useTabsViewStore();
+      const isEdit = true;
+      const fileList = ref();
+      const setFileList = (files) => {
+        fileList.value = files;
+      };
 
-    }
+      get('system/area/getCityList', {}).then(data => {
+        regionList.value = data;
+      });
+
+      get('system/dictionary/getDictionaryItemByCodeList', {code: 'TaskType'}).then(data => {
+        taskTypeList.value = data;
+      });
+
+      //获取所有的驿站人员
+      const getSiteUserList = () => {
+        getUserList().then(data => {
+          siteuserList.value = data;
+        })
+      }
+
+      const changeCity = () => {
+        get('system/area/getAreaList', {code: formState.dataModel.regionCode}).then(data => {
+          streetList.value = data;
+        })
+        loadData();
+      }
+
+      const userData = ref([]);
+
+      const loadUserData = (id: any) => {
+        getWorkUserList(id).then(data => {
+          userData.value = data;
+        });
+      }
+
+      const addUser = () => {
+        console.log('新增');
+        (userData.value as any[]).push({dotaskUserID: null, dotaskID: null, siteUserID: null, userName: ''});
+      }
+      const deleteUser = (record) => {
+        (userData.value as any[]).splice(record, 1);
+      }
+
+      const onAdd = () => {
+        tabsViewStore.addTabByPath('', null);
+      };
+      const onDel = () => {
+
+      };
+      const onClose = () => {
+        tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/add');
+        tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/edit');
+        router.push({name: '/taskAndLog/dotask/index'});
+      };
+
+      const onFinish = () => {
+
+      }
+
+      const loadData = () => {
+
+      };
+
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: "center",
+          key: 'companyID',
+          width: 120,
+          customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`
+        },
+        {title: '姓名', dataIndex: 'Name', key: 'Name', align: "center", width: 120},
+        {title: '操作', key: 'operation', fixed: 'right', width: 120, align: "center"},
+      ]
 
-    const loadData = () => {
-
-    };
-
-    const columns:TableColumnsType=[
-      {
-        title: '序号',
-        align: "center",
-        key: 'companyID',
-        customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`
-      },
-      {title: '姓名', dataIndex: 'Name', key: 'Name', align: "center"},
-      {title: '性别', dataIndex: 'Gender', key: 'Gender', align: "center"},
-      {title: '联系电话', dataIndex: 'Mobile', key: 'Mobile', align: "center"},
-    ]
-
-    return {
-      ...toRefs(formState),
-      loadData,
-      onClose,
-      onFinish,
-      onAdd,
-      onDel,
-      dataList,
-      columns,
-      formState,
-      formTableState,
-      setFileList,
-      postStatuslist
+      return {
+        ...toRefs(formState),
+        isEdit,
+        loadData,
+        onClose,
+        onFinish,
+        onAdd,
+        onDel,
+        addUser,
+        deleteUser,
+        columns,
+        formState,
+        formTableState,
+        setFileList,
+        regionList,
+        streetList,
+        taskTypeList,
+        siteuserList,
+        getSiteUserList,
+        loadUserData,
+        changeCity
+      }
+    },
+    created() {
+      const id = history.state.params?.id;
+      console.log(id);
+      this.loadUserData(id);
+      this.getSiteUserList();
     }
-  }
-})
+  })
 </script>