瀏覽代碼

提交车间移动端

Lijy 1 年之前
父節點
當前提交
92b98f5263

+ 18 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/chooseSomeone.vue

@@ -26,7 +26,7 @@
       </van-checkbox-group>
 
       <!-- tree -->
-      <div class="treeBox" v-if="newGroupView == 3">
+      <div class="treeBox" v-show="newGroupView == 3">
         <div class="treeBox_tree_text" v-if="!newGroupViewBack && groupView"
           @click="newGroupViewBackCli(true, groupView)"><van-icon name="arrow-left" />返回</div>
         <div class="treeBox_tree">
@@ -46,7 +46,7 @@
       <van-button round type="info" size="small" :loading="loadingBtn" @click="handClick()">确定</van-button>
     </div>
     <div class="chooseSomeone_btn" v-if="!newGroupViewBack">
-      <van-button round type="info" size="small" style="width: 100%;">确定</van-button>
+      <van-button round type="info" size="small" style="width: 100%;" @click="treeHandClick()">确定</van-button>
     </div>
   </div>
 </template>
@@ -149,6 +149,7 @@ export default {
     newGroupViewBackCli(flg, i) {
       this.newGroupViewBack = flg
       this.newGroupView = i
+      this.$refs.tree.setCheckedKeys(this.groupVal)
     },
     // 获取所有人员
     getPeople() {
@@ -213,6 +214,21 @@ export default {
       })
       this.loadingBtn = true
       this.$emit('ChooseSomeoneChanhe', newArr)
+    },
+    treeHandClick() {
+      console.log(this.treeVal)
+      console.log(this.$refs.tree.getCheckedNodes())
+      let arr = this.$refs.tree.getCheckedNodes()
+      let newArr = arr.map(item => {
+        return {
+          id: item.id,
+          name: item.label || '',
+          phone: item.phone || '',
+          jobNumber: item.jobNumber || ''
+        }
+      })
+      this.loadingBtn = true
+      this.$emit('ChooseSomeoneChanhe', newArr)
     }
   },
 };

+ 42 - 9
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlan.vue

@@ -1,10 +1,11 @@
 <template>
   <div class="flexCoum">
-    <van-nav-bar title="插单计划" left-text="返回" right-text="新建" @click-left="back" fixed left-arrow @click-right="add" />
+    <van-nav-bar title="插单计划" left-text="返回" @click-left="back" fixed left-arrow v-if="!user.beDeptList" />
+    <van-nav-bar title="插单计划" left-text="返回" right-text="新建" @click-left="back" v-if="user.beDeptList" fixed left-arrow @click-right="add" />
     <div class="InsertionPlan flexCoum-box">
       <div class="InsertionPlanBox contentRoll">
-        <div v-for="item,index in 20" :key="index" class="InsertionPlanBox_item">
-          <InsertionPlan-Item></InsertionPlan-Item>
+        <div v-for="item,index in planList" :key="index" class="InsertionPlanBox_item">
+          <InsertionPlan-Item :planList="item"></InsertionPlan-Item>
         </div>
       </div>
     </div>
@@ -20,13 +21,16 @@ export default {
   },
   data() {
     return {
-
+      user: JSON.parse(localStorage.getItem('userInfo')),
+      planList: [],
     };
   },
   computed: {},
   watch: {},
   created() {},
-  mounted() {},
+  mounted() {
+    this.getPlanList()
+  },
   methods: {
     back() {
       this.$router.go(-1);
@@ -35,11 +39,40 @@ export default {
     add() {
       this.$router.push({
         name: '计划新增',
-        params: {
-          text: '传过来的值'
-        }
       })
-    }
+    },
+    getPlanList() {
+      this.$axios.post('/plan/list', {
+        pageIndex: 0,
+        pageSize: 10000,
+        planType: 2,
+      })
+      .then(res => {
+        if (res.code == "ok") {
+          res.data.records.forEach(item => { item.flg = false })
+          this.planList = res.data.records;
+        } else {
+          this.$toast.clear();
+          this.$toast.fail(res.msg);
+        }
+      }).catch(err => { this.$toast.clear(); });
+    },
+    // 返回当天的日期 格式:yyyy-MM-dd
+    getNowFormatDate() {
+      var date = new Date();
+      var seperator1 = "-";
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+        month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = "0" + strDate;
+      }
+      var currentdate = year + seperator1 + month + seperator1 + strDate;
+      return currentdate;
+    },
   },
 };
 </script>

+ 128 - 32
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlanAdd.vue

@@ -2,42 +2,43 @@
   <div class="flexCoum">
     <van-nav-bar title="插单计划" left-text="返回" @click-left="back" fixed left-arrow />
     <!-- 表单 -->
-    <van-form class="InsertionPlan flexCoum-box" label-width="7em" input-align="right" validate-first @failed="onFailed">
+    <van-form class="InsertionPlan flexCoum-box" label-width="7em" input-align="right" @submit="onSubmit" validate-first
+      @failed="onFailed">
       <!-- 内容 -->
       <div class="InsertionPlanBox contentRoll">
-        <van-field v-model.trim="inserFrom.number" :readonly="false" label="任务变更通知号" placeholder="请输入"
+        <van-field v-model.trim="inserFrom.taskChangeNoticeNum" :readonly="false" label="任务变更通知号" placeholder="请输入"
           :rules="[{ pattern }]" />
-        <van-field v-model.trim="inserFrom.number" :readonly="false" label="任务名称" placeholder="请输入"
+        <van-field v-model.trim="inserFrom.taskName" :readonly="false" label="任务名称" placeholder="请输入"
           :rules="[{ pattern }]" />
-        <van-field readonly clickable :readonly="false" v-model.trim="inserFrom.value" label="任务类型"
-          placeholder="请选择" @click="selectClick()" />
-        <van-field v-model.trim="inserFrom.number" :readonly="false" label="计划人数" placeholder="请输入"
+        <van-field readonly clickable :readonly="false" v-model.trim="inserFrom.taskTypeName" label="任务类型"
+          placeholder="请选择" @click="selectClick('taskTypeId', 'taskTypeName', 'taskTypeNameColumns')" />
+        <van-field v-model.trim="inserFrom.planManNum" :readonly="false" label="计划人数" placeholder="请输入"
           :rules="[{ pattern }]" />
-        <van-field v-model.trim="inserFrom.number" type="number" :readonly="false" label="数量"
-          placeholder="请输入" :rules="[{ pattern }]" />
-        <van-field v-model.trim.number="inserFrom.number" type="number" :readonly="false" label="计划工时"
+        <van-field v-model.trim="inserFrom.num" type="number" :readonly="false" label="数量" placeholder="请输入"
+          :rules="[{ pattern }]" />
+        <van-field v-model.trim.number="inserFrom.planWorkHour" type="number" :readonly="false" label="计划工时"
           placeholder="请输入" :rules="[{ pattern }]" />
-        <van-field v-model.trim.number="inserFrom.number" type="number" :readonly="false" label="单价"
+        <van-field v-model.trim.number="inserFrom.moneyOfJob" type="number" :readonly="false" label="单价"
           :placeholder="`请输入  元/小时`" :rules="[{ pattern }]" />
-        <van-field readonly clickable :readonly="false" v-model.trim="inserFrom.value" label="质检类型"
-          placeholder="请选择" @click="selectClick()" />
-        <van-field v-model.trim="inserFrom.gong" :readonly="true" label="工位" placeholder="请输入" />
-        <van-field v-model.trim="inserFrom.zhang" :readonly="true" label="工长" placeholder="请输入" />
-        <van-field :readonly="false" :formatter="formatDate"
-          v-model="inserFrom.statrTime" label="开工时间" placeholder="请选择" @click="selectTime()" />
-        <van-field :readonly="false" :formatter="formatDate"
-          v-model="inserFrom.statrTime" label="完工时间" placeholder="请选择" @click="selectTime()" />
-        <van-field v-model="inserFrom.message" rows="4" autosize label="描述" type="textarea" placeholder="请输入" />
+        <van-field readonly clickable :readonly="false" v-model.trim="inserFrom.checkTypeName" label="质检类型"
+          placeholder="请选择" @click="selectClick('checkType', 'checkTypeName', 'checkTypeNameColumns')" />
+        <van-field v-model.trim="inserFrom.stationIdName" :readonly="true" label="工位" placeholder="请输入" />
+        <van-field v-model.trim="inserFrom.foremanName" :readonly="true" label="工长" placeholder="请输入" />
+        <van-field :readonly="false" :formatter="formatDate" v-model="inserFrom.startDate" label="开工时间" placeholder="请选择"
+          @click="selectTime('startDate')" />
+        <van-field :readonly="false" :formatter="formatDate" v-model="inserFrom.endDate" label="完工时间" placeholder="请选择"
+          @click="selectTime('endDate')" />
+        <van-field v-model="inserFrom.describtion" rows="4" autosize label="描述" type="textarea" placeholder="请输入" />
       </div>
       <!-- 提交按钮 -->
       <div class="InsertionPlanBtn">
-        <van-button round block type="info" native-type="submit">提交</van-button>
+        <van-button round block type="info" :loading="loadingBtn" native-type="submit">提交</van-button>
       </div>
     </van-form>
 
     <!-- 选择器 -->
     <van-popup v-model="showPicker" position="bottom">
-      <van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
+      <van-picker show-toolbar value-key="name" :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
     </van-popup>
     <!-- 选择时间 -->
     <van-calendar v-model="showPickerDate" @confirm="onConfirmDate" />
@@ -51,15 +52,38 @@ export default {
   data() {
     return {
       inserFrom: {
-        number: '',
-        gong: '工位A01',
-        zhang: '张三',
-        message: '',
+        taskChangeNoticeNum: '',
+        taskName: '',
+        taskTypeId: '',
+        planManNum: '',
+        num: '',
+        planWorkHour: '',
+        moneyOfJob: '',
+        checkType: '',
+        startDate: '',
+        endDate: '',
+        describtion: '',
+
+        taskTypeName: '',
+        checkTypeName: '',
+
+        stationId: JSON.parse(localStorage.getItem('userInfo')).beDeptList[0].departmentId || '',
+        stationIdName: JSON.parse(localStorage.getItem('userInfo')).beDeptList[0].departmentName || '',
+        foremanName: JSON.parse(localStorage.getItem('userInfo')).name,
       },
-      pattern: /\d{6}/,
-      columns: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
+      pattern: /\S/,
+      columns: [],
       showPicker: false,
       showPickerDate: false,
+
+      loadingBtn: false,
+
+      // 选择字段名字
+      selectName: '',
+      selectNameId: '',
+
+      taskTypeNameColumns: [],
+      checkTypeNameColumns: [{ id: 0, name: '自检' }, { id: 1, name: '互检' }, { id: 2, name: '专检' }]
     };
   },
   computed: {},
@@ -67,6 +91,14 @@ export default {
   created() { },
   mounted() {
     console.log(this.$route.params)
+    if(this.$route.params.item) {
+      this.inserFrom = {
+        ...JSON.parse(JSON.stringify(this.$route.params.item)),
+      }
+      this.inserFrom.checkTypeName = this.inserFrom.checkType == 0 ? '自检' : this.inserFrom.checkType == 1 ? '互检' : '专检'
+      this.inserFrom.stationIdName = this.inserFrom.stationName
+    }
+    this.getTaskType()
   },
   methods: {
     back() {
@@ -79,25 +111,72 @@ export default {
     onFailed(errorInfo) {
       console.log('failed', errorInfo);
     },
-    selectClick() {
+    onSubmit() {
+      console.log(this.inserFrom, '将要传递的值')
+      this.loadingBtn = true
+      delete this.inserFrom.planProcedureTotals
+      delete this.inserFrom.product
+      this.$axios.post('/plan/addOrUpdatePlan', {
+        ...this.inserFrom,
+        planType: 2,
+      })
+        .then(res => {
+          this.loadingBtn = false
+          if (res.code == "ok") {
+            this.inserFrom = {
+              taskChangeNoticeNum: '',
+              taskName: '',
+              taskTypeId: '',
+              planManNum: '',
+              num: '',
+              planWorkHour: '',
+              moneyOfJob: '',
+              checkType: '',
+              startDate: '',
+              endDate: '',
+              describtion: '',
+
+              taskTypeName: '',
+              checkTypeName: '',
+
+              stationId: JSON.parse(localStorage.getItem('userInfo')).beDeptList[0].departmentId || '',
+              stationIdName: JSON.parse(localStorage.getItem('userInfo')).beDeptList[0].departmentName || '',
+              foremanName: JSON.parse(localStorage.getItem('userInfo')).name,
+            }
+            this.$toast.success('操作成功');
+        } else {
+            this.$toast.clear();
+            this.$toast.fail(res.msg);
+          }
+        }).catch(err => { this.$toast.clear(); this.loadingBtn = false });
+    },
+    selectClick(id, name, columns) {
+      this.selectName = name;
+      this.selectNameId = id;
+      this.columns = this[columns];
+
+      console.log(this.columns)
+
       this.showPicker = true;
     },
     onConfirm(value) {
       console.log(value);
-      this.inserFrom.value = value;
+      this.inserFrom[this.selectNameId] = value.id;
+      this.inserFrom[this.selectName] = value.name;
       this.showPicker = false;
     },
-    selectTime() {
+    selectTime(name) {
+      this.selectName = name;
       this.showPickerDate = true
     },
     onConfirmDate(value) {
       console.log(value);
-      this.inserFrom.statrTime =  this.formatDate(value);
+      this.inserFrom[this.selectName] = this.formatDate(value);
       this.showPickerDate = false;
     },
     // 日期格式化
     formatDate(date) {
-      if(date) {
+      if (date) {
         var date = new Date(date);
         var year = date.getFullYear();
         var month = date.getMonth() + 1;
@@ -107,6 +186,23 @@ export default {
         var formattedDate = year + "-" + month + "-" + day;
         return formattedDate
       }
+    },
+    // 获取数据
+    getTaskType() {
+      this.$axios.post('/task-type/list', {})
+        .then(res => {
+          if (res.code == "ok") {
+            this.taskTypeNameColumns = res.data.map(item => {
+              return {
+                id: item.id,
+                name: item.taskTypeName
+              }
+            });
+          } else {
+            this.$toast.clear();
+            this.$toast.fail(res.msg);
+          }
+        }).catch(err => { this.$toast.clear(); });
     }
   },
 };

+ 82 - 14
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlanItem.vue

@@ -1,21 +1,21 @@
 <template>
   <div class="InsertionPlanItem">
     <div class="planItem_header">
-      <div>任务一</div>
-      <div>2022-2200220202</div>
+      <div>{{ planList.taskName }}</div>
+      <div>{{ planList.startDate + '-' + planList.endDate }}</div>
     </div>
     <div class="planItem_conter" @click="toAdd()">
-      <div class="item"><p>计划人数:</p><span>2人</span></div>
-      <div class="item"><div>技术变更</div></div>
-      <div class="item"><p>数量:</p><span>5</span></div>
-      <div class="item"><p>工时:</p><span>8小时</span></div>
+      <div class="item"><p>计划人数:</p><span>{{ planList.planManNum }}人</span></div>
+      <div class="item"><div>{{ planList.taskTypeName }}</div></div>
+      <div class="item"><p>数量:</p><span>{{ planList.num }}</span></div>
+      <div class="item"><p>工时:</p><span>{{ planList.planWorkHour }}小时</span></div>
       <div class="item" style="width: 100%;">
         <p>组员:</p>
-        <span :style="`color: #1989fa`" @click.stop="distributionProp()">
-          张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山
+        <span :style="`color: #1989fa`" @click.stop="distributionProp()" v-if="planList.planProcedureTotals[0] && planList.planProcedureTotals[0].teamNames">
+          {{ planList.planProcedureTotals[0] && planList.planProcedureTotals[0].teamNames }}
           <van-icon name="edit" color="#1989fa"/>
         </span>
-        <span :style="`color: #1989fa`" v-if="false">分配</span>
+        <span :style="`color: #1989fa`" @click.stop="distributionProp()" v-if="!(planList.planProcedureTotals[0] && planList.planProcedureTotals[0].teamNames)">分配</span>
       </div>
       <div class="planItem_conter_icon">
         <van-icon name="arrow" size="20" color="#999" />
@@ -24,7 +24,7 @@
 
     <!-- 弹出层选人 -->
     <van-popup v-model="popupShow" round position="bottom" :style="{ height: '80%',background: '#F4F4F4' }" >
-      <ChooseSomeone :groupView="2" :groupViewBack="true"></ChooseSomeone>
+      <ChooseSomeone ref="ChooseSomeoneOne" :groupView="2" :groupViewBack="true" :peopleList="peopleList" @ChooseSomeoneChanhe="chooseSomeoneChanhe" :peopleListId="peopleListId"></ChooseSomeone>
     </van-popup>
   </div>
 </template>
@@ -33,31 +33,99 @@
 import ChooseSomeone from '../../../components/chooseSomeone.vue'
 export default {
   name: 'InsertionPlanItem',
-  props: {},
+  props: {
+    planList: {
+      type: Object,
+      default: () => {}
+    }
+  },
   components: {
     ChooseSomeone
   },
   data() {
     return {
-      popupShow: false
+      popupShow: false,
+      peopleList: {
+        planProcedureTotals: [{teamNames: ''}]
+      },
+      peopleListId: [],
     };
   },
   computed: {},
   watch: {},
   created() {},
-  mounted() {},
+  mounted() {
+    this.getPeople()
+  },
   methods: {
     toAdd() {
       console.log('跳转')
       this.$router.push({
         name: '计划新增',
         params: {
-          text: '传过来的值'
+          item: this.planList
         }
       })
     },
     distributionProp() {
+      console.log(this.planList, '看看你')
+      this.peopleListId =  this.planList.planProcedureTotals[0] ? this.planList.planProcedureTotals[0].teamIds ? this.planList.planProcedureTotals[0].teamIds.split(',') : [] : []
       this.popupShow = true
+    },
+    // 获取人员
+    getPeople() {
+      this.$axios.post('/user/getSimpleActiveUserList', {
+        departmentId: this.planList.stationId,
+      })
+      .then(res => {
+        if (res.code == "ok") {
+          this.peopleList = res.data.map(item => {
+            return {
+              name: item.name,
+              id: item.id,
+              phone: item.phone,
+              jobNumber: item.jobNumber
+            }
+          })
+        } else {
+          JSON.parse()
+          this.$toast.clear();
+          this.$toast.fail(res.msg);
+        }
+      }).catch(err => { this.$toast.clear(); });
+    },
+    teamAllocation(item, nameArr){
+      let newPlanList = JSON.parse(JSON.stringify(this.planList))
+      delete newPlanList.planProcedureTotals[0].prodProcedure
+      this.$axios.post('/plan/teamAllocation', {
+        ...newPlanList.planProcedureTotals[0],
+        teamIds: item.join(","),
+        teamNames: nameArr.join(","),
+        planType: 2,
+      })
+      .then(res => {
+        this.$refs.ChooseSomeoneOne['loadingBtn'] = false
+        this.popupShow = false
+        if (res.code == "ok") {
+          this.planList.planProcedureTotals[0].teamNames = nameArr.join(',')
+          this.planList.planProcedureTotals[0].teamIds = teamIds.join(',')
+        } else {
+          this.$toast.clear();
+          this.$toast.fail(res.msg);
+        }
+      }).catch(err => { this.$toast.clear();this.$refs.ChooseSomeoneOne['loadingBtn'] = false, this.popupShow = false});
+    },
+    // 选中人员
+    chooseSomeoneChanhe(item) {
+      // console.log('当前点击的人员', item, this.distributionList[this.distributionIndex])
+      let arr = item.map(item => {
+        return item.id
+      })
+      let nameArr = item.map(item => {
+        return item.name
+      })
+      console.log(arr, nameArr)
+      this.teamAllocation(arr, nameArr)
     }
   },
 };

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue

@@ -145,6 +145,7 @@ export default {
         ...newDistributionList,
         teamIds: item.join(","),
         teamNames: nameArr.join(','),
+        planType: this.type
       })
       .then(res => {
         this.$refs.ChooseSomeone['loadingBtn'] = false