pengjing před 11 měsíci
rodič
revize
c758a82966

+ 15 - 1
doc/待更新脚本

@@ -3,4 +3,18 @@
 ALTER TABLE pc_company CHANGE ProfessionID IndustryID VARCHAR(50);
 
 -- 2024-4-30
-ALTER TABLE pc_company MODIFY RegisteredCapital DECIMAL(10, 2);
+ALTER TABLE pc_company MODIFY RegisteredCapital DECIMAL(10, 2);
+
+
+-- 2024.5.6
+alter table pc_dotask add taskLevel int comment '任务级别';
+
+alter table pc_dotask_user add completeDesc text comment '完成情况描述';
+
+insert into sys_dictionary
+values ('TaskLevel','任务级别','10','1');
+
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable)
+VALUES ('0ca43465-0b4b-11ef-ad8e-7085c2a9999e', '', 'TaskLevel', 1, '特别重要任务', 10, 1, 0),
+       ('1507732b-0b4b-11ef-ad8e-7085c2a9999e', '', 'TaskLevel', 2, '重要任务', 20, 1, 0),
+       ('196e4f6d-0b4b-11ef-ad8e-7085c2a9999e', '', 'TaskLevel', 3, '一般任务', 30, 1, 0);

+ 6 - 0
h5app/src/App.vue

@@ -300,6 +300,12 @@ ion-grid {
       color: #8c8f93;
       --padding-start: 0px;
     }
+
+    ion-textarea{
+      border-bottom: 1px solid #f1f5f7;
+      color: #8c8f93;
+      --padding-start: 0px;
+    }
   }
 
   .form-select {

+ 3 - 2
h5app/src/api/workTask/index.ts

@@ -11,14 +11,15 @@ export function saveWorkTask(data: any) {
     );
 }
 
-export function taskFinish(doTaskID: any, completeTime: any) {
+export function taskFinish(doTaskID: any, completeTime: any,completeDesc:string) {
     return request(
         {
             url: 'taskAndLog/doTask/taskFinish',
             method: 'post',
             params: {
                 doTaskID,
-                completeTime
+                completeTime,
+                completeDesc
             },
         },
         { isNew: true },

+ 22 - 6
h5app/src/views/pages/work/task/edit.vue

@@ -32,7 +32,7 @@
       <div class="bw-vue-form">
         <div class="form-select">
           <ion-label>
-            任务完成情况
+            完成结果
           </ion-label>
           <ion-select name="doTypeID" id="doTypeID" interface="action-sheet" okText="确定" cancelText="取消"
                       v-model="dataModel.taskStatus" placeholder="请选择任务完成情况">
@@ -56,6 +56,14 @@
             </ion-modal>
           </div>
         </div>
+        <div class="form-input">
+          <ion-label>
+            完成情况描述<span class="danger">*</span>
+          </ion-label>
+          <ion-textarea placeholder="请输入完成情况描述" :rows="3" label-placement="stacked"
+                        v-model="dataModel.completeDesc" class="custom">
+          </ion-textarea>
+        </div>
       </div>
     </ion-content>
     <ion-footer>
@@ -94,7 +102,8 @@ interface workTaskModel {
     workTypeName: string,
     taskStatus: any,
     taskStatusName: string,
-    completeTime: any
+    completeTime: any,
+    completeDesc: string
   }
 }
 
@@ -129,7 +138,8 @@ export default defineComponent({
         workTypeName: '',
         taskStatus: null,
         taskStatusName: '',
-        completeTime: dayjs().format("YYYY-MM-DD")
+        completeTime: dayjs().format("YYYY-MM-DD"),
+        completeDesc: ''
     }});
     // 任务完成状态字典
     const taskStatusCodeList = ref<Array<any>>([]);
@@ -141,6 +151,7 @@ export default defineComponent({
           workTypeID:{required},
           content:{required},
           finishTime:{required},
+          completeDesc:{required},
         }}});
     const workTaskValid = useVuelidate(workTaskRules, workTaskData);
 
@@ -161,8 +172,13 @@ export default defineComponent({
       console.log("itemData",item);
     }
 
-    function onSave() {
-      taskFinish(workTaskData.dataModel.doTaskID, workTaskData.dataModel.completeTime).then(result => {
+    const onSave = async ()=> {
+      const isFormCorrect = await workTaskValid.value.$validate();
+      if (!isFormCorrect) {
+        await presentAlert('提示','请输入完整信息!');
+        return null;
+      }
+      taskFinish(workTaskData.dataModel.doTaskID, workTaskData.dataModel.completeTime,workTaskData.dataModel.completeDesc).then(result => {
         if (result) {
           router.go(-1);
         }
@@ -228,7 +244,7 @@ export default defineComponent({
       getSysDictionaryList("TaskStatusType").then((result: any) => {
         taskStatusCodeList.value = result;
       })
-    })
+    });
 
 
     return {

+ 1 - 1
h5app/src/views/pages/work/task/myTask.vue

@@ -100,7 +100,7 @@ export default defineComponent({
     };
 
     const onSave = async function (){
-      taskFinish(myTaskData.dataModel.doTaskID, "").then(result => {
+      taskFinish(myTaskData.dataModel.doTaskID, "","").then(result => {
         if(result){
           router.back();
         }

+ 104 - 85
h5app/src/views/sapp/tabMain.vue

@@ -1,80 +1,82 @@
 <template>
   <ion-page>
     <ion-content>
-    <div class="tab-main-content">
-      <div class="main_top"></div>
-      <div class="tool-box">
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/userQrCode/index')">
-          <div class="tool-img">
-            <img src="@/assets/icon/qrcode.png">
-          </div>
-          <div class="tool-title">我的二维码</div>
-        </a>
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/jobhunt/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/qzxx.png">
-          </div>
-          <div class="tool-title">求职人员收集</div>
-        </a>
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/jobhunt/recommend/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/qzyx.png">
-          </div>
-          <div class="tool-title">求职意向</div>
-        </a>
-        <a class="tool-item box-line"  @click="router.push({path:'/tabs/tabMain/company/list',query:{reload:1}})">
-          <div class="tool-img">
-            <img src="@/assets/icon/qyxx.png">
-          </div>
-          <div class="tool-title">企业信息<br/>收集</div>
-        </a>
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/post/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/gwxxgl.png">
-          </div>
-          <div class="tool-title">岗位信息</div>
-        </a>
-        <a class="tool-item box-line" @click="router.push('/tabs/tabMain/recommendMgt/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/gwtj.png">
-          </div>
-          <div class="tool-title">推荐库</div>
-        </a>
-        <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workTask/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/gzrw.png">
-          </div>
-          <div class="tool-title">工作任务</div>
-        </a>
+      <div class="tab-main-content">
+        <div class="main_top"></div>
+        <div class="tool-box">
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/userQrCode/index')">
+            <div class="tool-img">
+              <img src="@/assets/icon/qrcode.png">
+            </div>
+            <div class="tool-title">我的二维码</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/jobhunt/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/qzxx.png">
+            </div>
+            <div class="tool-title">求职人员收集</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/jobhunt/recommend/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/qzyx.png">
+            </div>
+            <div class="tool-title">求职意向</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push({path:'/tabs/tabMain/company/list',query:{reload:1}})">
+            <div class="tool-img">
+              <img src="@/assets/icon/qyxx.png">
+            </div>
+            <div class="tool-title">企业信息<br/>收集</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/post/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/gwxxgl.png">
+            </div>
+            <div class="tool-title">岗位信息</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/recommendMgt/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/gwtj.png">
+            </div>
+            <div class="tool-title">推荐库</div>
+          </a>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workTask/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/gzrw.png">
+            </div>
+            <div class="tool-title">工作任务</div>
+          </a>
 
 
-        <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workLog/list')">
-          <div class="tool-img">
-            <img src="@/assets/icon/gzrz.png">
-          </div>
-          <div class="tool-title">工作日志</div>
-        </a>
-      </div>
-      <div class="panel">
-        <div class="panel_title">
-          <div class="panel_title_text">工作任务安排</div>
-          <div class="panel_more" @click="onTaskList">更多></div>
+          <a class="tool-item box-line" @click="router.push('/tabs/tabMain/workLog/list')">
+            <div class="tool-img">
+              <img src="@/assets/icon/gzrz.png">
+            </div>
+            <div class="tool-title">工作日志</div>
+          </a>
         </div>
-        <div class="panel_content">
-          <div style="padding: 10px 0;">
-            <ion-item style="--inner-border-width: 0px;" v-for="(record,key) in dataList" :key="key" detail  @click="onDetail(record.doTaskID)" v-show="record.taskStatus==0">
-              <ion-label style="color: #404040;">
-                {{record.doTaskName}}
-              </ion-label>
-              <ion-label slot="end" style="color: #899099;">
-                {{dayjs(record.finishTime).format("MM-DD")}}
-              </ion-label>
-            </ion-item>
+        <div class="panel">
+          <div class="panel_title">
+            <div class="panel_title_text">工作任务安排</div>
+            <div class="panel_more" @click="onTaskList">更多></div>
+          </div>
+          <div class="panel_content">
+            <div style="padding: 10px 0;">
+              <ion-item style="--inner-border-width: 0px;" v-for="(record,key) in dataList" :key="key" detail
+                        @click="onDetail(record.doTaskID)" v-show="record.taskStatus==0">
+                <span class="b-badge" :class="record.taskLevel==1?'b-badge-dange':(record.taskLevel==2?'b-badge-warning':'b-badge-default')"></span>
+                <ion-label style="color: #404040;">
+                  {{ record.doTaskName }}
+                </ion-label>
+                <ion-label slot="end" style="color: #899099;">
+                  {{ dayjs(record.finishTime).format("MM-DD") }}
+                </ion-label>
+              </ion-item>
+            </div>
+            <b-empty v-if="dataList.length<=0" :loading="loading"/>
           </div>
-          <b-empty v-if="dataList.length<=0" :loading="loading"/>
         </div>
       </div>
-    </div>
     </ion-content>
   </ion-page>
 </template>
@@ -87,13 +89,14 @@ import {onIonViewDidEnter} from "@ionic/vue";
 import dayjs from "dayjs";
 import BEmpty from "@/components/empty.vue";
 
-interface taskModel{
-  doTaskID:string,
-  taskStatus:number
+interface taskModel {
+  doTaskID: string,
+  taskStatus: number
 }
+
 export default defineComponent({
-  name:"TabMainList",
-  components:{BEmpty},
+  name: "TabMainList",
+  components: {BEmpty},
   setup() {
     const router = useRouter();
     const dataList = ref<taskModel[]>([]);
@@ -101,7 +104,7 @@ export default defineComponent({
     const searchParamsState = reactive({
       pageIndex: 1,
       pageSize: 5,
-      total:0,
+      total: 0,
     })
 
     const loadData = async function () {
@@ -109,11 +112,11 @@ export default defineComponent({
       const result: any = await getMyWorkTasks(searchParamsState);
       dataList.value = [];
       dataList.value = dataList.value.concat(result.list);
-      console.log("dataList",dataList.value);
+      console.log("dataList", dataList.value);
       loading.value = false;
     }
 
-    const onDetail = (doTaskID:string) =>{
+    const onDetail = (doTaskID: string) => {
       router.push({path: "/tabs/tabMain/workTask/edit", query: {reload: 1, doTaskID: doTaskID}});
     }
 
@@ -168,7 +171,7 @@ export default defineComponent({
   padding-bottom: 15px;
   background-size: cover;
 
-  .main_top{
+  .main_top {
     background-image: url("../../assets/icon/main_top_bg.png");
     height: 150px;
     background-size: contain;
@@ -181,7 +184,7 @@ export default defineComponent({
   .main-title {
     font-size: 24px;
     color: white;
-    margin:40px 0 30px 0;
+    margin: 40px 0 30px 0;
     text-align: center;
   }
 
@@ -196,7 +199,7 @@ export default defineComponent({
   .panel {
     margin: 10px;
 
-    .panel_title{
+    .panel_title {
       background-image: url("../../assets/icon/panel_title_bg.png");
       height: 40px;
       background-repeat: no-repeat;
@@ -205,20 +208,20 @@ export default defineComponent({
       justify-content: space-between;
       width: 100%;
 
-      .panel_title_text{
+      .panel_title_text {
         padding: 6px 28px;
         font-weight: bold;
         font-size: 16px;
       }
 
-      .panel_more{
+      .panel_more {
         padding: 8px;
         color: #007EFF;
         font-size: 14px;
       }
     }
 
-    .panel_content{
+    .panel_content {
       min-height: 180px;
       background-color: white;
       border-radius: 10px;
@@ -229,7 +232,6 @@ export default defineComponent({
   }
 
 
-
   .tool-box {
     display: flex;
     flex-wrap: wrap;
@@ -253,9 +255,9 @@ export default defineComponent({
         display: flex;
         justify-content: center;
 
-        img{
+        img {
           width: 36px;
-          height:36px;
+          height: 36px;
         }
       }
 
@@ -271,4 +273,21 @@ export default defineComponent({
   }
 }
 
+.b-badge {
+  padding: 8px;
+  margin-right: 8px;
+}
+
+.b-badge-dange{
+  background-color: #D9001B;
+}
+
+.b-badge-warning{
+  background-color: #F59A23;
+}
+
+.b-badge-default{
+  background-color: #008080;
+}
+
 </style>

+ 2 - 2
src/main/java/com/hz/employmentsite/controller/taskAndLog/DoTaskController.java

@@ -67,8 +67,8 @@ public class DoTaskController {
 
     @ResponseBody
     @PostMapping("/taskFinish")
-    public BaseResponse taskFinish(String doTaskID, Date completeTime) {
-        var result = doTaskService.taskFinish(doTaskID, accountService.getLoginUserID(), completeTime);
+    public BaseResponse taskFinish(String doTaskID, Date completeTime,String completeDesc) {
+        var result = doTaskService.taskFinish(doTaskID, accountService.getLoginUserID(), completeTime,completeDesc);
         return RespGenerstor.success(result);
     }
 

+ 4 - 0
src/main/java/com/hz/employmentsite/mapper/PcDotaskUserMapper.java

@@ -14,9 +14,13 @@ public interface PcDotaskUserMapper {
 
     int insertSelective(PcDotaskUser row);
 
+    List<PcDotaskUser> selectByExampleWithBLOBs(PcDotaskUserExample example);
+
     List<PcDotaskUser> selectByExample(PcDotaskUserExample example);
 
     int updateByExampleSelective(@Param("row") PcDotaskUser row, @Param("example") PcDotaskUserExample example);
 
+    int updateByExampleWithBLOBs(@Param("row") PcDotaskUser row, @Param("example") PcDotaskUserExample example);
+
     int updateByExample(@Param("row") PcDotaskUser row, @Param("example") PcDotaskUserExample example);
 }

+ 10 - 0
src/main/java/com/hz/employmentsite/model/PcDotask.java

@@ -29,6 +29,8 @@ public class PcDotask {
 
     private Integer taskStatus;
 
+    private Integer taskLevel;
+
     public String getDotaskID() {
         return dotaskID;
     }
@@ -132,4 +134,12 @@ public class PcDotask {
     public void setTaskStatus(Integer taskStatus) {
         this.taskStatus = taskStatus;
     }
+
+    public Integer getTaskLevel() {
+        return taskLevel;
+    }
+
+    public void setTaskLevel(Integer taskLevel) {
+        this.taskLevel = taskLevel;
+    }
 }

+ 60 - 0
src/main/java/com/hz/employmentsite/model/PcDotaskExample.java

@@ -964,6 +964,66 @@ public class PcDotaskExample {
             addCriterion("TaskStatus not between", value1, value2, "taskStatus");
             return (Criteria) this;
         }
+
+        public Criteria andTaskLevelIsNull() {
+            addCriterion("taskLevel is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelIsNotNull() {
+            addCriterion("taskLevel is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelEqualTo(Integer value) {
+            addCriterion("taskLevel =", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelNotEqualTo(Integer value) {
+            addCriterion("taskLevel <>", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelGreaterThan(Integer value) {
+            addCriterion("taskLevel >", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelGreaterThanOrEqualTo(Integer value) {
+            addCriterion("taskLevel >=", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelLessThan(Integer value) {
+            addCriterion("taskLevel <", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelLessThanOrEqualTo(Integer value) {
+            addCriterion("taskLevel <=", value, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelIn(List<Integer> values) {
+            addCriterion("taskLevel in", values, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelNotIn(List<Integer> values) {
+            addCriterion("taskLevel not in", values, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelBetween(Integer value1, Integer value2) {
+            addCriterion("taskLevel between", value1, value2, "taskLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andTaskLevelNotBetween(Integer value1, Integer value2) {
+            addCriterion("taskLevel not between", value1, value2, "taskLevel");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 10 - 0
src/main/java/com/hz/employmentsite/model/PcDotaskUser.java

@@ -13,6 +13,8 @@ public class PcDotaskUser {
 
     private Date completeTime;
 
+    private String completeDesc;
+
     public String getDotaskUserID() {
         return dotaskUserID;
     }
@@ -52,4 +54,12 @@ public class PcDotaskUser {
     public void setCompleteTime(Date completeTime) {
         this.completeTime = completeTime;
     }
+
+    public String getCompleteDesc() {
+        return completeDesc;
+    }
+
+    public void setCompleteDesc(String completeDesc) {
+        this.completeDesc = completeDesc == null ? null : completeDesc.trim();
+    }
 }

+ 61 - 0
src/main/java/com/hz/employmentsite/model/PcDotaskUserExample.java

@@ -1,6 +1,7 @@
 package com.hz.employmentsite.model;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 public class PcDotaskUserExample {
@@ -373,6 +374,66 @@ public class PcDotaskUserExample {
             addCriterion("UserTaskStatus not between", value1, value2, "userTaskStatus");
             return (Criteria) this;
         }
+
+        public Criteria andCompleteTimeIsNull() {
+            addCriterion("CompleteTime is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeIsNotNull() {
+            addCriterion("CompleteTime is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeEqualTo(Date value) {
+            addCriterion("CompleteTime =", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeNotEqualTo(Date value) {
+            addCriterion("CompleteTime <>", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeGreaterThan(Date value) {
+            addCriterion("CompleteTime >", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("CompleteTime >=", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeLessThan(Date value) {
+            addCriterion("CompleteTime <", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeLessThanOrEqualTo(Date value) {
+            addCriterion("CompleteTime <=", value, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeIn(List<Date> values) {
+            addCriterion("CompleteTime in", values, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeNotIn(List<Date> values) {
+            addCriterion("CompleteTime not in", values, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeBetween(Date value1, Date value2) {
+            addCriterion("CompleteTime between", value1, value2, "completeTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCompleteTimeNotBetween(Date value1, Date value2) {
+            addCriterion("CompleteTime not between", value1, value2, "completeTime");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 5 - 2
src/main/java/com/hz/employmentsite/services/impl/taskAndLog/DoTaskImpl.java

@@ -98,7 +98,7 @@ public class DoTaskImpl implements DoTaskService {
     }
 
     @Override
-    public int taskFinish(String doTaskID,String finishUserID, Date completeTime){
+    public int taskFinish(String doTaskID,String finishUserID, Date completeTime,String completeDesc){
         int result = 0;
         PcSiteUserExample siteUserExp = new PcSiteUserExample();
         PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria();
@@ -115,7 +115,8 @@ public class DoTaskImpl implements DoTaskService {
         if (curUserTaskInfo != null) {
             curUserTaskInfo.setUserTaskStatus(1);
             curUserTaskInfo.setCompleteTime(completeTime);
-            result = doTaskUserMapper.updateByExample(curUserTaskInfo,taskUserExp);
+            curUserTaskInfo.setCompleteDesc(completeDesc);
+            result = doTaskUserMapper.updateByExampleWithBLOBs(curUserTaskInfo,taskUserExp);
         }
         return result;
     }
@@ -141,6 +142,7 @@ public class DoTaskImpl implements DoTaskService {
             dbData.setCreateTime(new Date());
             dbData.setCreateUserID(userId);
             dbData.setTaskStatus(data.getTaskStatus());
+            dbData.setTaskLevel(data.taskLevel);
             result = doTaskMapper.insert(dbData);
         } else {
             dbData.setWorkTypeID(data.workTypeID);
@@ -153,6 +155,7 @@ public class DoTaskImpl implements DoTaskService {
             dbData.setModifyTime(new Date());
             dbData.setModifyUserID(userId);
             dbData.setTaskStatus(data.taskStatus);
+            dbData.setTaskLevel(data.taskLevel);
             result = doTaskMapper.updateByPrimaryKeySelective(dbData);
         }
         if (result == 1) {

+ 1 - 1
src/main/java/com/hz/employmentsite/services/service/taskAndLog/DoTaskService.java

@@ -20,7 +20,7 @@ public interface DoTaskService {
 
     DoTaskVo getDataById(String id);
 
-    int taskFinish(String doTaskID, String finishUserID, Date completeTime);
+    int taskFinish(String doTaskID, String finishUserID, Date completeTime,String completeDesc);
 
     int save(DoTaskVo data, String userId);
 

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

@@ -16,4 +16,6 @@ public class DoTaskUserVo {
     //勿删,手机端用到,表示某人员执行该任务的状态
     public  Integer userTaskStatus;
     public  String  userTaskStatusName;
+
+    public String completeDesc;
 }

+ 3 - 0
src/main/java/com/hz/employmentsite/vo/taskAndLog/DoTaskVo.java

@@ -53,4 +53,7 @@ public class DoTaskVo {
     private String modifyUserName;
     private Date modifyTime;
 
+    public Integer taskLevel;
+    public String taskLevelName;
+
 }

+ 21 - 6
src/main/resources/mapping/PcDotaskMapper.xml

@@ -15,6 +15,7 @@
     <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID" />
     <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
     <result column="TaskStatus" jdbcType="INTEGER" property="taskStatus" />
+    <result column="taskLevel" jdbcType="INTEGER" property="taskLevel" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -76,7 +77,7 @@
   </sql>
   <sql id="Base_Column_List">
     DotaskID, WorkTypeID, RegionCode, StreetCode, Content, SiteID, DotaskName, FinishTime, 
-    CreateUserID, CreateTime, ModifyUserID, ModifyTime, TaskStatus
+    CreateUserID, CreateTime, ModifyUserID, ModifyTime, TaskStatus, taskLevel
   </sql>
   <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcDotaskExample" resultMap="BaseResultMap">
     select
@@ -113,12 +114,12 @@
       StreetCode, Content, SiteID, 
       DotaskName, FinishTime, CreateUserID, 
       CreateTime, ModifyUserID, ModifyTime, 
-      TaskStatus)
+      TaskStatus, taskLevel)
     values (#{dotaskID,jdbcType=VARCHAR}, #{workTypeID,jdbcType=INTEGER}, #{regionCode,jdbcType=VARCHAR}, 
       #{streetCode,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{siteID,jdbcType=VARCHAR}, 
       #{dotaskName,jdbcType=VARCHAR}, #{finishTime,jdbcType=TIMESTAMP}, #{createUserID,jdbcType=VARCHAR}, 
       #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, 
-      #{taskStatus,jdbcType=INTEGER})
+      #{taskStatus,jdbcType=INTEGER}, #{taskLevel,jdbcType=INTEGER})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcDotask">
     insert into pc_dotask
@@ -162,6 +163,9 @@
       <if test="taskStatus != null">
         TaskStatus,
       </if>
+      <if test="taskLevel != null">
+        taskLevel,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="dotaskID != null">
@@ -203,6 +207,9 @@
       <if test="taskStatus != null">
         #{taskStatus,jdbcType=INTEGER},
       </if>
+      <if test="taskLevel != null">
+        #{taskLevel,jdbcType=INTEGER},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcDotaskExample" resultType="java.lang.Long">
@@ -253,6 +260,9 @@
       <if test="row.taskStatus != null">
         TaskStatus = #{row.taskStatus,jdbcType=INTEGER},
       </if>
+      <if test="row.taskLevel != null">
+        taskLevel = #{row.taskLevel,jdbcType=INTEGER},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -272,7 +282,8 @@
       CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
       ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
-      TaskStatus = #{row.taskStatus,jdbcType=INTEGER}
+      TaskStatus = #{row.taskStatus,jdbcType=INTEGER},
+      taskLevel = #{row.taskLevel,jdbcType=INTEGER}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -316,6 +327,9 @@
       <if test="taskStatus != null">
         TaskStatus = #{taskStatus,jdbcType=INTEGER},
       </if>
+      <if test="taskLevel != null">
+        taskLevel = #{taskLevel,jdbcType=INTEGER},
+      </if>
     </set>
     where DotaskID = #{dotaskID,jdbcType=VARCHAR}
   </update>
@@ -332,7 +346,8 @@
       CreateTime = #{createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
       ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
-      TaskStatus = #{taskStatus,jdbcType=INTEGER}
+      TaskStatus = #{taskStatus,jdbcType=INTEGER},
+      taskLevel = #{taskLevel,jdbcType=INTEGER}
     where DotaskID = #{dotaskID,jdbcType=VARCHAR}
-  </update> 
+  </update>
 </mapper>

+ 59 - 5
src/main/resources/mapping/PcDotaskUserMapper.xml

@@ -6,7 +6,10 @@
     <result column="DotaskID" jdbcType="VARCHAR" property="dotaskID" />
     <result column="SiteUserID" jdbcType="VARCHAR" property="siteUserID" />
     <result column="UserTaskStatus" jdbcType="INTEGER" property="userTaskStatus" />
-    <result column="CompleteTime" jdbcType="DATE" property="completeTime" />
+    <result column="CompleteTime" jdbcType="TIMESTAMP" property="completeTime" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.hz.employmentsite.model.PcDotaskUser">
+    <result column="completeDesc" jdbcType="LONGVARCHAR" property="completeDesc" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -67,8 +70,27 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    DotaskUserID, DotaskID, SiteUserID, UserTaskStatus
+    DotaskUserID, DotaskID, SiteUserID, UserTaskStatus, CompleteTime
+  </sql>
+  <sql id="Blob_Column_List">
+    completeDesc
   </sql>
+  <select id="selectByExampleWithBLOBs" parameterType="com.hz.employmentsite.model.PcDotaskUserExample" resultMap="ResultMapWithBLOBs">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from pc_dotask_user
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
   <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcDotaskUserExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
@@ -91,9 +113,11 @@
   </delete>
   <insert id="insert" parameterType="com.hz.employmentsite.model.PcDotaskUser">
     insert into pc_dotask_user (DotaskUserID, DotaskID, SiteUserID, 
-      UserTaskStatus)
+      UserTaskStatus, CompleteTime, completeDesc
+      )
     values (#{dotaskUserID,jdbcType=VARCHAR}, #{dotaskID,jdbcType=VARCHAR}, #{siteUserID,jdbcType=VARCHAR}, 
-      #{userTaskStatus,jdbcType=INTEGER})
+      #{userTaskStatus,jdbcType=INTEGER}, #{completeTime,jdbcType=TIMESTAMP}, #{completeDesc,jdbcType=LONGVARCHAR}
+      )
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcDotaskUser">
     insert into pc_dotask_user
@@ -110,6 +134,12 @@
       <if test="userTaskStatus != null">
         UserTaskStatus,
       </if>
+      <if test="completeTime != null">
+        CompleteTime,
+      </if>
+      <if test="completeDesc != null">
+        completeDesc,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="dotaskUserID != null">
@@ -124,6 +154,12 @@
       <if test="userTaskStatus != null">
         #{userTaskStatus,jdbcType=INTEGER},
       </if>
+      <if test="completeTime != null">
+        #{completeTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="completeDesc != null">
+        #{completeDesc,jdbcType=LONGVARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcDotaskUserExample" resultType="java.lang.Long">
@@ -147,18 +183,36 @@
       <if test="row.userTaskStatus != null">
         UserTaskStatus = #{row.userTaskStatus,jdbcType=INTEGER},
       </if>
+      <if test="row.completeTime != null">
+        CompleteTime = #{row.completeTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="row.completeDesc != null">
+        completeDesc = #{row.completeDesc,jdbcType=LONGVARCHAR},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
+  <update id="updateByExampleWithBLOBs" parameterType="map">
+    update pc_dotask_user
+    set DotaskUserID = #{row.dotaskUserID,jdbcType=VARCHAR},
+      DotaskID = #{row.dotaskID,jdbcType=VARCHAR},
+      SiteUserID = #{row.siteUserID,jdbcType=VARCHAR},
+      UserTaskStatus = #{row.userTaskStatus,jdbcType=INTEGER},
+      CompleteTime = #{row.completeTime,jdbcType=TIMESTAMP},
+      completeDesc = #{row.completeDesc,jdbcType=LONGVARCHAR}
+    <if test="example != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
   <update id="updateByExample" parameterType="map">
     update pc_dotask_user
     set DotaskUserID = #{row.dotaskUserID,jdbcType=VARCHAR},
       DotaskID = #{row.dotaskID,jdbcType=VARCHAR},
       SiteUserID = #{row.siteUserID,jdbcType=VARCHAR},
       UserTaskStatus = #{row.userTaskStatus,jdbcType=INTEGER},
-      CompleteTime = #{row.completeTime, jdbcType=DATE}
+      CompleteTime = #{row.completeTime,jdbcType=TIMESTAMP}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>

+ 7 - 1
src/main/resources/mapping/cquery/DoTaskCQuery.xml

@@ -9,6 +9,7 @@
         city.`name` as regionName,
         area.`name` as streetName,item.`Name` as workTypeName,task.regionCode,task.streetCode,doTaskUser.siteUserID,
         modifyUser.Name as modifyUserName
+        , task.taskLevel,dic_taskLevel.name as taskLevelName
         from pc_dotask task
         left join pc_dotask_user doTaskUser on task.dotaskID = doTaskUser.dotaskID and doTaskUser.doTaskUserID != null
         left join sys_dictionary_item item on item.`Value` = task.WorkTypeID
@@ -18,6 +19,7 @@
         left join area_code city on city.`code` = task.RegionCode
         left join area_code area on area.`code` = task.StreetCode
         left join sys_user modifyUser on task.ModifyUserID = modifyUser.UserID
+        left join sys_dictionary_item dic_taskLevel on task.taskLevel = dic_taskLevel.value and dic_taskLevel.DictionaryCode = 'TaskLevel'
         where item.DictionaryCode='TaskType'
         <if test="doTaskIDList != '' and doTaskIDList != null">
             and task.dotaskID in (${doTaskIDList})
@@ -66,6 +68,7 @@
         select task.dotaskID,task.workTypeID,task.content,task.dotaskName,u.`Name` as createName,task.finishTime,task.createTime,
         (select UserTaskStatus from pc_dotask_user du where DotaskID = task.DotaskID and siteUserID = #{siteUserID}) AS taskStatus,
         dic_taskStatus.Name as taskStatusName, doTaskUser.CompleteTime,  city.`name` as regionName,area.`name` as streetName,item.`Name` as workTypeName,task.regionCode,task.streetCode
+        , task.taskLevel,dic_taskLevel.name as taskLevelName
         from pc_dotask task
         left join pc_dotask_user doTaskUser on task.dotaskID = doTaskUser.dotaskID
         left join sys_dictionary_item item  on item.`Value` = task.WorkTypeID
@@ -73,7 +76,9 @@
         (select UserTaskStatus from pc_dotask_user du where DotaskID = task.DotaskID and siteUserID = #{siteUserID})
         left join sys_user u on u.UserID = task.CreateUserID
         left join area_code city on city.`code` = task.RegionCode
-        left join area_code area on area.`code` = task.StreetCode where item.DictionaryCode='TaskType'
+        left join area_code area on area.`code` = task.StreetCode
+        left join sys_dictionary_item dic_taskLevel on task.taskLevel = dic_taskLevel.value and dic_taskLevel.DictionaryCode = 'TaskLevel'
+        where item.DictionaryCode='TaskType'
         and doTaskUser.siteUserID  = #{siteUserID}
         <if test="doTaskID != '' and doTaskID != null">
             and task.dotaskID = #{doTaskID}
@@ -90,6 +95,7 @@
                dic_taskStatus.Name as taskStatusName,
                siteUser.SiteUserID, siteUser.SiteUserName,dic_gender.Name as GenderName,siteUser.Mobile,
                site.SiteName as siteName
+               ,taskUser.completeDesc
         from  pc_dotask_user taskUser
         left join pc_dotask task on taskUser.DotaskID = task.DotaskID
         left join pc_site_user siteUser on taskUser.SiteUserID = siteUser.SiteUserID

+ 6 - 2
vue/src/views/taskAndLog/dotask/detail.vue

@@ -9,7 +9,8 @@
         }}
       </a-descriptions-item>
       <a-descriptions-item label="所属县区">{{ taskInfo.regionName }}</a-descriptions-item>
-      <a-descriptions-item :span="3" label="任务内容">{{ taskInfo.workContent }}</a-descriptions-item>
+      <a-descriptions-item label="任务级别">{{ taskInfo.taskLevelName }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="任务内容">{{ taskInfo.content }}</a-descriptions-item>
       <a-descriptions-item label="最后更新人">{{ taskInfo.modifyUserName }}</a-descriptions-item>
       <a-descriptions-item label="最后更新时间">
         {{ taskInfo.modifyTime ? dayjs(taskInfo.modifyTime).format('YYYY-MM-DD') : '' }}
@@ -94,7 +95,10 @@ const columns: TableColumnsType = [
     title: '所属驿站', dataIndex: 'siteName', key: 'siteName', align: "center", width: 120
   },
   {
-    title: '执行情况', dataIndex: 'taskStatusName', key: 'taskStatusName', align: "center", width: 120
+    title: '完成结果', dataIndex: 'taskStatusName', key: 'taskStatusName', align: "center", width: 120
+  },
+  {
+    title: '完成情况描述', dataIndex: 'completeDesc', key: 'completeDesc', align: "center", width: 120
   },
 ]
 const taskUserTabFormState = reactive({

+ 20 - 1
vue/src/views/taskAndLog/dotask/edit.vue

@@ -68,6 +68,19 @@
         <!--            </a-select>-->
         <!--          </a-form-item>-->
         <!--        </a-col>-->
+        <a-col :span="8">
+          <a-form-item :label-col="{span:6}" :rules="[{ required: true, message: '请选择任务级别!' }]" label="任务级别"
+                       name="taskLevel">
+            <a-select
+              ref="select"
+              v-model:value="dataModel.taskLevel"
+              :allow-clear="true"
+              :field-names="{ label: 'name', value: 'value' }"
+              :options="taskLevelList"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
       </a-row>
       <a-row>
         <a-col class="table-bottom-a1">
@@ -217,6 +230,7 @@ export default defineComponent(
       const regionList = ref<SelectProps['options']>();
       const streetList = ref<SelectProps['options']>();
       const taskTypeList = ref<SelectProps['options']>();
+      const taskLevelList = ref<SelectProps['options']>();
       const setFileList = (files) => {
         fileList.value = files;
       };
@@ -229,6 +243,10 @@ export default defineComponent(
         taskTypeList.value = data;
       });
 
+      get('system/dictionary/getDictionaryItemByCodeList', {code: 'TaskLevel'}).then(data => {
+        taskLevelList.value = data;
+      });
+
       const regionChange = async function () {
         formData.dataModel.streetCode = null;
         changeCity();
@@ -320,7 +338,8 @@ export default defineComponent(
         changeCity,
         regionChange,
         onSelectChange,
-        handleTableChange
+        handleTableChange,
+        taskLevelList,
       }
     },
     created() {