Explorar el Código

Merge remote-tracking branch 'origin/master'

liao-sea hace 1 año
padre
commit
43de0814b6

+ 104 - 6
src/main/java/com/hz/employmentsite/controller/taskAndLog/DotaskController.java

@@ -1,32 +1,130 @@
 package com.hz.employmentsite.controller.taskAndLog;
 
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseErrorEnum;
+import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.services.service.taskAndLog.DotaskService;
+import com.hz.employmentsite.util.DateUtils;
+import com.hz.employmentsite.util.ExcelHelper;
+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 javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
 @RestController
 @RequestMapping(value = "/api/taskAndLog/dotask")
 public class DotaskController {
     @Autowired
     private DotaskService dotaskService;
 
+    @Autowired
+    private AccountService accountService;
+
+    @Autowired
+    private DateUtils dateUtils;
+
     @ResponseBody
     @GetMapping("/getList")
     public BaseResponse getList(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,
-                                @RequestParam(required = false) String name,  @RequestParam(required = false) String startTime,
-                                @RequestParam(required = false) String endTime,  @RequestParam(required = false) String finishStartTime,
-                                @RequestParam(required = false) String finishEndTime,  @RequestParam(required = false) String regionCode,
-                                @RequestParam(required = false) String streetCode,  @RequestParam(required = false) String workTypeId
-                                ){
-        PageInfo<DotaskVo> result = dotaskService.getList(pageIndex, pageSize,name, startTime, endTime,finishStartTime,finishEndTime,regionCode,streetCode,workTypeId);
+                                @RequestParam(required = false) String name, @RequestParam(required = false) String startTime,
+                                @RequestParam(required = false) String endTime, @RequestParam(required = false) String finishStartTime,
+                                @RequestParam(required = false) String finishEndTime, @RequestParam(required = false) String regionCode,
+                                @RequestParam(required = false) String streetCode, @RequestParam(required = false) String workTypeId
+    ) {
+        PageInfo<DotaskVo> result = dotaskService.getList(pageIndex, pageSize, name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId);
         return RespGenerstor.success(result);
     }
 
+    @ResponseBody
+    @GetMapping("/getDataById")
+    public BaseResponse getDataById(String id) {
+        var result = dotaskService.getDataById(id);
+        if (result == null) {
+            result = new DotaskVo();
+            result.setDotaskID(UUID.randomUUID().toString());
+        }
+        return RespGenerstor.success(result);
+    }
+
+    @ResponseBody
+    @PostMapping("/save")
+    public BaseResponse save(@RequestBody DotaskVo data) {
+        var result = dotaskService.save(data, accountService.getLoginUserID());
+        return RespGenerstor.success(result);
+    }
 
+    @ResponseBody
+    @GetMapping("/getWorkUserList")
+    public BaseResponse getWorkUserList(@RequestParam(required = false) String id) {
+        if (id == null)
+            return null;
+        List<DoTaskUserVo> list = dotaskService.getWorkUserList(id);
+        return RespGenerstor.success(list);
+    }
+
+    @ResponseBody
+    @GetMapping("/getUserList")
+    public BaseResponse getUserList() {
+        List<SiteUserVo> list = dotaskService.getUserList();
+        return RespGenerstor.success(list);
+    }
+
+    @ResponseBody
+    @PostMapping("/delete")
+    public BaseResponse delete(@RequestBody List<String> ids) {
+        int result = dotaskService.delete(ids);
+        if (result <= 0)
+            throw new BaseException(BaseErrorEnum.DELETE_NOT_DATA_ERROR);
+        return RespGenerstor.success(result);
+    }
+
+    @GetMapping("/export")
+    public BaseResponse export(HttpServletResponse response, @RequestParam(required = false) Boolean isExport,
+                               @RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,
+                               @RequestParam(required = false) String name, @RequestParam(required = false) String startTime,
+                               @RequestParam(required = false) String endTime, @RequestParam(required = false) String finishStartTime,
+                               @RequestParam(required = false) String finishEndTime, @RequestParam(required = false) String regionCode,
+                               @RequestParam(required = false) String streetCode, @RequestParam(required = false) String workTypeId) throws Exception {
+
+        PageInfo<DotaskVo> result = dotaskService.getList(pageIndex, pageSize, name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId);
+        if (isExport == null || !isExport) {
+            return RespGenerstor.success(result);
+        } else {
+            ExcelHelper excelHelper = new ExcelHelper();
+            ExcelHelper.ExcelData data = excelHelper.new ExcelData();
+            data.setTitles(Arrays.asList(new String[]{"序号", "任务名称", "任务类型", "任务完成时间", "所属县区", "所属街道", "执行用户数", "下达时间", "下达人"}));
+            int i = 0;
+            List<List<Object>> rowDatas = new ArrayList();
+            for (DotaskVo item : result.getList()) {
+                List<Object> row = new ArrayList();
+                ++i;
+                row.add(i);
+                row.add(item.dotaskName);
+                row.add(item.workTypeName);
+                row.add(dateUtils.dateToStr(item.finishTime));
+                row.add(item.regionName);
+                row.add(item.streetName);
+                row.add(item.userCount);
+                row.add(dateUtils.dateToStr(item.createTime));
+                row.add(item.createName);
+                rowDatas.add(row);
+            }
+            data.setRows(rowDatas);
+            excelHelper.exportExcel(response, data);
+
+            return null;
+        }
+    }
 
 }

+ 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("id") String id,@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();
+
 }

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

@@ -1,17 +1,24 @@
 package com.hz.employmentsite.services.impl.taskAndLog;
 
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.PcDotaskMapper;
+import com.hz.employmentsite.mapper.PcDotaskUserMapper;
 import com.hz.employmentsite.mapper.cquery.DotaskCQuery;
 import com.hz.employmentsite.mapper.cquery.PostCQuery;
+import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.taskAndLog.DotaskService;
+import com.hz.employmentsite.util.StringUtils;
 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;
 
 import java.sql.SQLException;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 @Service("DotaskService")
 public class DotaskImpl implements DotaskService {
@@ -19,10 +26,19 @@ public class DotaskImpl implements DotaskService {
     @Autowired
     private DotaskCQuery dotaskCQuery;
 
+    @Autowired
+    private StringUtils stringUtils;
+
+    @Autowired
+    private PcDotaskMapper dotaskMapper;
+
+    @Autowired
+    private PcDotaskUserMapper dotaskUserMapper;
+
     @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(null, name, startTime, endTime, finishStartTime, finishEndTime, regionCode, streetCode, workTypeId);
             PageInfo<DotaskVo> result = new PageInfo(list);
             return result;
         } catch (Exception e) {
@@ -30,5 +46,101 @@ 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;
+    }
+
+    @Override
+    public DotaskVo getDataById(String id) {
+        if (stringUtils.IsNullOrEmpty(id)) {
+            return null;
+        }
+        return dotaskCQuery.getList(id, null, null, null, null, null, null, null, null).stream().findFirst().orElse(null);
+    }
+
+    @Override
+    public int save(DotaskVo data, String userId) {
+        int result = 0;
+        PcDotask dbData = dotaskMapper.selectByPrimaryKey(data.getDotaskID());
+        PcDotaskUserExample exp = new PcDotaskUserExample();
+        PcDotaskUserExample.Criteria cro = exp.createCriteria();
+        cro.andDotaskIDEqualTo(data.getDotaskID());
+        PcDotaskUser taskUser = dotaskUserMapper.selectByExample(exp).stream().findFirst().orElse(null);
+        if (dbData == null) {
+            dbData = new PcDotask();
+            dbData.setDotaskID(data.getDotaskID());
+            dbData.setWorkTypeID(data.getWorkTypeID());
+            dbData.setContent(data.getContent());
+            dbData.setDotaskName(data.getDotaskName());
+            dbData.setRegionCode(data.getRegionCode());
+            dbData.setStreetCode(data.getStreetCode());
+            dbData.setSiteID(data.getSiteID());
+            dbData.setFinishTime(data.getFinishTime());
+            dbData.setCreateTime(new Date());
+            dbData.setCreateUserID(userId);
+            result = dotaskMapper.insert(dbData);
+        } else {
+            dbData.setWorkTypeID(data.getWorkTypeID());
+            dbData.setContent(data.getContent());
+            dbData.setDotaskName(data.getDotaskName());
+            dbData.setRegionCode(data.getRegionCode());
+            dbData.setStreetCode(data.getStreetCode());
+            dbData.setSiteID(data.getSiteID());
+            dbData.setFinishTime(data.getFinishTime());
+            dbData.setModifyTime(new Date());
+            dbData.setModifyUserID(userId);
+            result = dotaskMapper.updateByPrimaryKeySelective(dbData);
+        }
+        if (result == 1) {
+            String dotaskId = dbData.getDotaskID();
+            if (taskUser == null) {
+                data.getDotaskUser().stream().forEach(x -> {
+                    PcDotaskUser user = new PcDotaskUser();
+                    user.setDotaskUserID(UUID.randomUUID().toString());
+                    user.setDotaskID(dotaskId);
+                    user.setSiteUserID(x.get("siteUserID").toString());
+                    dotaskUserMapper.insert(user);
+                });
+            } else {
+                PcDotaskUserExample example = new PcDotaskUserExample();
+                example.or().andDotaskIDEqualTo(data.getDotaskID());
+                dotaskUserMapper.deleteByExample(example);
+                data.getDotaskUser().stream().forEach(x -> {
+                    PcDotaskUser user = new PcDotaskUser();
+                    user.setDotaskUserID(UUID.randomUUID().toString());
+                    user.setDotaskID(dotaskId);
+                    user.setSiteUserID(x.get("siteUserID").toString());
+                    dotaskUserMapper.insert(user);
+                });
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public int delete(List<String> ids) {
+        int result = 0;
+
+        PcDotaskUserExample expUser = new PcDotaskUserExample();
+        PcDotaskUserExample.Criteria croUser = expUser.or();
+        croUser.andDotaskIDIn(ids);
+        int userRows = dotaskUserMapper.deleteByExample(expUser);
+        if (userRows > 0) {
+            PcDotaskExample exp = new PcDotaskExample();
+            PcDotaskExample.Criteria cro = exp.or();
+            cro.andDotaskIDIn(ids);
+            result = dotaskMapper.deleteByExample(exp);
+        }
+        return result;
+    }
+
 
 }

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

@@ -1,12 +1,25 @@
 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();
+
+    DotaskVo getDataById(String id);
+
+    int save(DotaskVo data,String userId);
+
+    int delete(List<String> ids);
 
 }

+ 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;
+}

+ 11 - 2
src/main/java/com/hz/employmentsite/vo/taskAndLog/DotaskVo.java

@@ -1,8 +1,12 @@
 package com.hz.employmentsite.vo.taskAndLog;
 
+import com.hz.employmentsite.model.PcDotaskUser;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
 @Data
 public class DotaskVo {
 
@@ -14,9 +18,9 @@ public class DotaskVo {
 
     public String dotaskName;
 
-    public String finishTime;
+    public Date finishTime;
 
-    public String createTime;
+    public Date createTime;
 
     public  String createName;
 
@@ -31,4 +35,9 @@ public class DotaskVo {
     public String regionCode;
 
     public String streetCode;
+
+    public String siteID;
+
+    public List<HashMap<String,Object>> dotaskUser;
+
 }

+ 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 - 0
src/main/resources/generatorConfig.xml

@@ -100,6 +100,7 @@
         <table schema="" tableName="pc_post"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="pc_post"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="pc_company"><property name="useActualColumnNames" value="true"/></table>
+        <table schema="" tableName="pc_dotask_user"><property name="useActualColumnNames" value="true"/></table>
         -->
 
 

+ 7 - 6
src/main/resources/mapping/PcDotaskUserMapper.xml

@@ -87,12 +87,6 @@
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.hz.employmentsite.model.PcDotaskUser">
-    insert into pc_dotask_user (DotaskUserID, DotaskID, SiteUserID
-      )
-    values (#{dotaskUserID,jdbcType=VARCHAR}, #{dotaskID,jdbcType=VARCHAR}, #{siteUserID,jdbcType=VARCHAR}
-      )
-  </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcDotaskUser">
     insert into pc_dotask_user
     <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -141,6 +135,13 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
+
+  <insert id="insert" parameterType="com.hz.employmentsite.model.PcDotaskUser">
+    insert into pc_dotask_user (DotaskUserID, DotaskID, SiteUserID
+      )
+    values (#{dotaskUserID,jdbcType=VARCHAR}, #{dotaskID,jdbcType=VARCHAR}, #{siteUserID,jdbcType=VARCHAR}
+      )
+  </insert>
   <update id="updateByExample" parameterType="map">
     update pc_dotask_user
     set DotaskUserID = #{row.dotaskUserID,jdbcType=VARCHAR},

+ 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},'%')

+ 24 - 2
src/main/resources/mapping/cquery/DotaskCQuery.xml

@@ -1,9 +1,10 @@
 <?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,
+        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
         from pc_dotask task
         left join sys_dictionary_item item
@@ -15,6 +16,9 @@
         join area_code area
         on area.`code` = task.StreetCode
         where item.DictionaryCode='TaskType'
+        <if test="id != '' and id != null">
+            and task.dotaskID = #{id}
+        </if>
         <if test="name != '' and name != null">
             and task.dotaskName like Concat('%',#{name},'%')
         </if>
@@ -40,4 +44,22 @@
             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>

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

@@ -14,3 +14,71 @@ export function getList(params: any) {
   );
 }
 
+export function getDataById(id: any) {
+  return request<object>(
+    {
+      url: "taskAndLog/dotask/getDataById",
+      method: 'get',
+      params: {id},
+    },
+    {
+      isNew: true,
+    },
+  );
+}
+
+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,
+    },
+  );
+}
+
+export function save(data: any) {
+  return request(
+    {
+      url: "taskAndLog/dotask/save",
+      method: 'post',
+      data: data
+    },
+    {
+      isNew: true,
+      successMsg: '提交成功!',
+      errorMsg: '提交失败!'
+    },
+  );
+}
+
+
+export function del(data: any) {
+  return request({
+      url: 'taskAndLog/dotask/delete',
+      method: 'post',
+      data: data
+    },
+    {
+      isNew: true,
+      successMsg: '删除成功!',
+      errorMsg: '删除失败!'
+    }
+  )
+}

+ 1 - 0
vue/src/views/companyService/post/edit.vue

@@ -300,6 +300,7 @@ export default defineComponent(
 
       get('companyService/company/getList', {pageIndex: 1, pageSize: 999}).then(result => {
         companyList.value = result.list;
+        console.log(companyList);
       })
 
       const onClose = () => {

+ 208 - 108
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,50 +42,79 @@
       </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>
       <a-row>
         <a-col class="table-bottom-a1">
-          <a-form-item :label-col="{span:6}" label="" name="Content">
-            <a-textarea v-model:value="dataModel.Content" placeholder="任务内容" :rows="4"/>
+          <a-form-item :label-col="{span:6}" label="" name="content">
+            <a-textarea v-model:value="dataModel.content" placeholder="任务内容" :rows="4"/>
           </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-select
+                    ref="select"
+                    v-model:value="userData[index][column.key]"
+                    :options="siteuserList"
+                    :field-names="{ label: 'name', value: 'siteUserID' }"
+                    :allow-clear="true" style="width: 200px"
+                  >
+                  </a-select>
+                </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"
+        :file-ref-id="dataModel.dotaskID"
         :readonly="false"
         :multiple="true"
         :set-file-list="setFileList"
@@ -104,86 +129,161 @@
 </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, getDataById, save} 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([]);
+      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;
+        })
+      }
+
+      const userData = ref([]);
+
+      const loadUserData = (id: any) => {
+        getWorkUserList(id).then(data => {
+          if (data)
+            userData.value = data;
+        });
+      }
+
+      const addUser = () => {
+        (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 = (reload: any) => {
+        tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/add');
+        tabsViewStore.closeCurrentTabByPath('/taskAndLog/dotask/edit');
+        // router.push({name: '/taskAndLog/dotask/index'});
+        tabsViewStore.openTab('/taskAndLog/dotask/index', {reload: reload});
+      };
+
+      const onFinish = () => {
+        formState.dataModel.dotaskUser = userData.value;
+        save(formState.dataModel).then(result => {
+          if (result) {
+            onClose(1)
+          }
+        });
+      }
+
+      const loadData = (id: any) => {
+        getDataById(id).then(data => {
+          formState.dataModel = data
+          console.log(formState.dataModel);
+          if (formState.dataModel.regionCode) {
+            changeCity();
+          }
+        });
+      };
+
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: "center",
+          key: 'companyID',
+          width: 120,
+          customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`
+        },
+        {
+          title: '人员',
+          dataIndex: 'siteUserID',
+          key: 'siteUserID',
+          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,
+        userData,
+        streetList,
+        taskTypeList,
+        siteuserList,
+        getSiteUserList,
+        loadUserData,
+        changeCity
+      }
+    },
+    created() {
+      const id = history.state.params?.id;
+      console.log(id);
+      this.loadUserData(id);
+      this.loadData(id);
+      this.getSiteUserList();
     }
-  }
-})
+  })
 </script>
 

+ 31 - 11
vue/src/views/taskAndLog/dotask/index.vue

@@ -65,7 +65,10 @@
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
           <a-button type="primary" html-type="submit" @click='onAdd'>新增</a-button>
-          <a-button type="primary" html-type="submit" @click='exportPost()'>导出</a-button>
+<!--          <a-button type="primary" html-type="submit" @click='exportPost()'>导出</a-button>-->
+          <BExportExcel :title="'导出'" :filename="'任务信息'"
+                        :url="'taskAndLog/dotask/export'"
+                        :params="{...searchParams, isExport: true, rows:10000}"></BExportExcel>
         </a-col>
       </a-row>
     </a-form>
@@ -91,14 +94,14 @@
 
 <script lang="ts">
 import {get} from '@/api/common';
-import {reactive, ref, computed, defineComponent} from 'vue';
-import {DownOutlined, UpOutlined} from '@ant-design/icons-vue';
+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} from '@/api/taskAndLog/dotask';
+import {getList,del} from '@/api/taskAndLog/dotask';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import {getPaginationTotalTitle} from "@/utils/common";
-import {message} from "ant-design-vue";
+import {message, Modal} from "ant-design-vue";
 import dayjs from 'dayjs';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 
@@ -181,11 +184,11 @@ export default defineComponent({
     });
 
     const changeCity=()=>{
-      get('system/area/getAreaList',{code:searchParams.regionCode}).then(data=>{
-        console.log(data);
-        streetList.value=data;
-        console.log(streetList.value);
-      })
+      if(searchParams.regionCode) {
+        get('system/area/getAreaList', {code: searchParams.regionCode}).then(data => {
+          streetList.value = data;
+        })
+      }
       loadData();
     }
 
@@ -226,13 +229,30 @@ export default defineComponent({
 
     const onDel = (item: any) => {
       if (item) {
-        formState.selectedRowKeys.push(item.InstitutionID as never)
+        formState.selectedRowKeys.push(item.dotaskID as never)
       }
 
       if (formState.selectedRowKeys.length <= 0) {
         message.warning('请选择需要删除的数据!');
         return false;
       }
+      Modal.confirm({
+        title: '确认删除选中的数据?',
+        icon: createVNode(ExclamationCircleOutlined),
+        content: '',
+        okText: '确认删除',
+        okType: 'danger',
+        okButtonProps: {},
+        cancelText: '取消',
+        onOk() {
+          del(formState.selectedRowKeys).then(() => {
+            loadData();
+          });
+        },
+        onCancel() {
+
+        },
+      });
 
     };