소스 검색

Merge remote-tracking branch 'origin/master'

yusm 4 달 전
부모
커밋
529d057584
16개의 변경된 파일89개의 추가작업 그리고 18개의 파일을 삭제
  1. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/chongqi.png
  2. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/lianxir.png
  3. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/module/contract.png
  4. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/module/min_contract.png
  5. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/wanc.png
  6. BIN
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/yanqi.png
  7. 3 1
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/addEditor.vue
  8. 2 2
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/product/newAndModifiedRelatedProducts.vue
  9. 57 9
      fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/visitorProgram/visitorDetails.vue
  10. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  11. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  12. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java
  13. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java
  14. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  15. 1 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  16. 6 3
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/chongqi.png


BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/lianxir.png


BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/module/contract.png


BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/module/min_contract.png


BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/wanc.png


BIN
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/assets/image/yanqi.png


+ 3 - 1
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/business/addEditor.vue

@@ -96,7 +96,9 @@ function judgmentaAmounteEqual(mob, arr) {
   }
   let flag = false;
   const amounte = +mob.amountOfMoney || 0;
-  const totalAmounte = arr.reduce((pre, cur) => pre + (cur.totalPrice || 0), 0);
+  const totalAmounte = arr.reduce((pre, cur) => pre + (+cur.totalPrice || 0), 0);
+
+  console.log(amounte, totalAmounte)
 
   if (amounte != totalAmounte) {
     toastText(`商机金额${amounte > totalAmounte ? '大于' : '小于'}产品总金额,${amounte > totalAmounte ? '保存中...' : '请修改'}`)

+ 2 - 2
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/pageComponents/product/newAndModifiedRelatedProducts.vue

@@ -163,8 +163,8 @@ function selectChange(value, label) {
 
 function inputNumberChange(field) {
     const { sellingPrice, quantity, discount, price } = props.form
-    props.form.discount = field == 'sellingPrice' ? Math.round(sellingPrice / price * 100) : props.form.discount
-    props.form.sellingPrice = field == 'discount' ? Math.round(price * discount / 100) : props.form.sellingPrice
+    // props.form.discount = field == 'sellingPrice' ? Math.round(sellingPrice / price * 100) : props.form.discount
+    // props.form.sellingPrice = field == 'discount' ? Math.round(price * discount / 100) : props.form.sellingPrice
     if (sellingPrice && quantity && price && discount) {
         props.form.totalPrice = Math.round(Math.round(price * discount / 100) * quantity)
     }

+ 57 - 9
fhKeeper/formulahousekeeper/customerBuler-crm-h5/src/pages/visitorProgram/visitorDetails.vue

@@ -55,7 +55,7 @@
 
       <van-popup v-model:show="showDelay" closeable position="bottom" round>
         <div class="newModuleAdded relative">
-          <div class="text-size-large text-[#474A56] absolute topTitle">延期时间</div>
+          <div class="text-size-large text-[#474A56] absolute topTitle">{{ delayRestartText }}时间</div>
           <div class="flex flex-col overflow-y-auto h-52">
             <div class="flex-1">
               <div class="px-6 py-4 bg-[#F8F8FA] flex justify-between items-center mt-2" @click="showDatePicker = true">
@@ -83,20 +83,43 @@
     <template v-slot:footer v-if="detailedData.finishState == 0">
       <div class="w-full flex justify-between layout">
         <div class="footerBtnLeft layouts" @click="showContactsCli()">
-          <div class="imgClss"></div>
+          <div class="imgClss">
+            <img src="/src/assets/image/lianxir.png" alt="">
+          </div>
           联系人
         </div>
-        <div class="footerBtnRight layouts" @click="showDelay = true, showDelayData = ''">
-          <div class="imgClss"></div>
+        <div class="footerBtnRight layouts" @click="delayRestart('DELAY')">
+          <div class="imgClss">
+            <img src="/src/assets/image/yanqi.png" alt="">
+          </div>
           延期
         </div>
         <div class="coverWithWhite"></div>
         <div class="bigCircle" @click="completeThePlan()">
-          <div class="imgClss"></div>
+          <div class="imgClss">
+            <img src="/src/assets/image/wanc.png" alt="">
+          </div>
           完成
         </div>
       </div>
     </template>
+
+    <template v-slot:footer v-if="detailedData.finishState != 0">
+      <div class="w-full flex justify-between layout">
+        <div class="footerBtnTwoLeft layoutsTwo" @click="showContactsCli()">
+          <div class="imgClss">
+            <img src="/src/assets/image/lianxir.png" alt="">
+          </div>
+          联系人
+        </div>
+        <div class="footerBtnTwoLeft layoutsTwo" @click="delayRestart('RESTART')">
+          <div class="imgClss">
+            <img src="/src/assets/image/chongqi.png" alt="">
+          </div>
+          重启
+        </div>
+      </div>
+    </template>
   </Page>
 </template>
 
@@ -124,6 +147,14 @@ const showDatePickerVal = ref(dayjs().format("YYYY-MM-DD").split('-'))
 const showDelayData = ref('')
 const currentTime = ref('')
 const contactList = ref([]);
+const delayRestartText = ref('')
+
+function delayRestart(type = 'DELAY') {
+  const textType = { 'DELAY': '延期', 'RESTART': '重启' }
+  delayRestartText.value = textType[type]
+  showDelay.value = true
+  showDelayData.value = ''
+}
 
 function visitorEditor() {
   router.navigateTo({
@@ -153,7 +184,7 @@ function jumpToCustomerDetails() {
 }
 
 function showContactsCli() {
-  if(!((contactList.value || []).length)) {
+  if (!((contactList.value || []).length)) {
     toastText('该联系人无号码')
     return
   }
@@ -266,13 +297,32 @@ useLifecycle({
     justify-content: center;
   }
 
+  .layoutsTwo {
+    width: 40%;
+    height: 100%;
+    background: #fff;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+  }
+
   .footerBtnLeft {
     border-top-right-radius: 25px;
 
     .imgClss {
       width: 30px;
       height: 30px;
-      background-color: #000;
+      margin-bottom: 6px;
+    }
+  }
+
+  .footerBtnTwoLeft {
+    width: 50%;
+
+    .imgClss {
+      width: 30px;
+      height: 30px;
       margin-bottom: 6px;
     }
   }
@@ -283,7 +333,6 @@ useLifecycle({
     .imgClss {
       width: 26px;
       height: 24px;
-      background-color: #000;
       margin-bottom: 9px;
     }
   }
@@ -321,7 +370,6 @@ useLifecycle({
       width: 25.5px;
       height: 25.5px;
       margin-bottom: 4px;
-      background: #000;
     }
   }
 }

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -876,6 +876,17 @@ public class TaskController {
             }
         });
         t.setExecutorList(executorList);
+        //设置人员选择下拉列表
+        List<User> userList = null;
+        if (executorList.size() > 0) {
+            List<String> exeIds = executorList.stream().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
+            //查询包含执行人(即使被停用)和在职的员工
+            userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, phone, job_number, department_id, is_active").eq("company_id", user.getCompanyId()).and(w->w.eq("is_active", 1).or().in("id", exeIds)));
+        } else {
+            //仅仅需要在职员工
+            userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, phone, job_number, department_id, is_active").eq("company_id", user.getCompanyId()).eq("is_active", 1));
+        }
+        t.setUserList(userList);
         //查询项目负责人id以及所属任务分组负责人id
         Project project = projectService.getOne(new QueryWrapper<Project>().eq("id", t.getProjectId()));
         TaskGroup group = taskGroupService.getOne(new QueryWrapper<TaskGroup>().eq("id", t.getGroupId()));

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -13,6 +13,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.management.platform.config.PropertyMsg;
 import com.management.platform.entity.vo.GroupEstimatedWorkVO;
 import lombok.Data;
@@ -31,6 +32,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class Project extends Model<Project> {
 
     private static final long serialVersionUID=1L;

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java

@@ -295,6 +295,11 @@ public class Task extends Model<Task> {
 
     @TableField(exist = false)
     private String finalChargeStatusText;
+
+    //执行人下拉列表
+    @TableField(exist = false)
+    private List<User> userList;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -27,6 +27,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class User extends Model<User> {
 
     private static final long serialVersionUID=1L;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -2437,7 +2437,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 return msg;
             }
         }else {
-            QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id, name, phone, job_number, department_id, is_active").eq("company_id", user.getCompanyId());
+            QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id, name, phone, job_number, department_id").eq("company_id", user.getCompanyId()).eq("is_active", 1);
             if (departmentId != null) {
                 //获取全部子部门
                 List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));

+ 1 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,10 +15,9 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:17089/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:17089/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: P011430@Huoshi*
-
     hikari:
       maximum-pool-size: 60
       minimum-idle: 10

+ 6 - 3
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -975,8 +975,8 @@ export default {
         if(!obj.taskVue) {
             this.getStageList(obj.integrationTaskNingwai)
         }
-        this.getUsers(); // 获取名单数据
         if(obj.create) {
+            this.getUsers(); // 获取名单数据
             this.mileageCup = false
             this.addFormVisible = true;
             this.curProjectId = obj.stage.projectId;
@@ -1224,6 +1224,8 @@ export default {
                 // //删除中间传值的变量数组
                 delete this.addForm.executorList;
                 
+                //人员处理
+                this.users = res.data.userList;
                 // 触发类型切换事件
                 this.selchg()
             } else {
@@ -1567,6 +1569,7 @@ export default {
                 delete this.addForm.subTaskList;
                 delete this.addForm.refTaskList;
                 delete this.addForm.progress;
+                delete this.addForm.userList;
                 //去掉没有执行人的.(因为要有计划工时,执行人可以暂不设置)
                 // this.addForm.executorListFront = this.addForm.executorListFront.filter(exe=>exe.executorId);
                 if(this.addForm.executorListFront.serviceId){
@@ -1849,7 +1852,7 @@ export default {
         this.isEditFile = true;
         this.title = this.$t('editingtasks');
         this.getTaskDetail(row.taskId);
-        this.getUsers();
+        // this.getUsers();
         this.gain(row,1);
         this.getRelationTaskList(1, row.taskId)
         this.getTaskFileList(1,row.taskId)
@@ -2158,7 +2161,7 @@ export default {
 
         this.getTaskDetail(row.id);
         this.getTaskProgressList(row.id); // 获取任务进展列表 
-        this.getUsers(); // 获取名单数据
+        // this.getUsers(); // 获取名单数据
         this.gain(row); // 获取评论列表
         this.getDailyList(row.id) // 获取来自日报
         this.getRelationTaskList(1, row.id)