ソースを参照

提交车间工时系统文件

Lijy 1 年間 前
コミット
24516da479

+ 27 - 10
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/chooseSomeone.vue

@@ -6,7 +6,7 @@
     </div>
     <div class="chooseSomeone_Con contentRoll">
       <!-- 单选 -->
-      <van-radio-group v-model="radioVal" class="chooseSomeone_radio_group" v-if="groupView == 1">
+      <van-radio-group v-model="radioVal" class="chooseSomeone_radio_group" v-if="newGroupView == 1">
         <van-radio :name="item.id" v-for="item, index in personnelList" :key="index">
           <div class="chooseSomeone_radio_group_item">
             <div>{{ item.name }}</div>
@@ -16,7 +16,7 @@
       </van-radio-group>
 
       <!-- 复选 -->
-      <van-checkbox-group v-model="groupVal" class="chooseSomeoneo_group" v-if="groupView == 2">
+      <van-checkbox-group v-model="groupVal" class="chooseSomeoneo_group" v-if="newGroupView == 2">
         <van-checkbox :name="item.id" v-for="item, index in personnelList" :key="index">
           <div class="chooseSomeone_group_item">
             <div>{{ item.name }}</div>
@@ -26,17 +26,20 @@
       </van-checkbox-group>
 
       <!-- tree -->
-      <div class="treeBox" v-if="groupView == 3">
-        <div class="treeBox_tree_text"><van-icon name="arrow-left" />返回</div>
+      <div class="treeBox" v-if="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">
           <el-tree v-model="treeVal" show-checkbox node-key="id" :data="personnelTree" :props="defaultProps"></el-tree>
         </div>
       </div>
     </div>
-    <div class="chooseSomeone_btn">
-      <van-button round size="small">从其他工位选择员工</van-button>
+    <div class="chooseSomeone_btn" v-if="newGroupViewBack">
+      <van-button round size="small" v-if="newGroupViewBack" @click="newGroupViewBackCli(false, 3)">从其他工位选择员工</van-button>
       <van-button round type="info" size="small">确定</van-button>
     </div>
+    <div class="chooseSomeone_btn" v-if="!newGroupViewBack">
+      <van-button round type="info" size="small" style="width: 100%;">确定</van-button>
+    </div>
   </div>
 </template>
 
@@ -45,8 +48,12 @@ export default {
   props: {
     groupView: {
       type: Number,
-      default: () => 3 // 1单选 2复选 3tree
-    }
+      default: () => 1 // 1单选 2复选 3tree
+    },
+    groupViewBack: {
+      type: Boolean,
+      default: () => false // 是否显示从其他工位选择员工
+    } 
   },
   components: {},
   data() {
@@ -110,16 +117,26 @@ export default {
       defaultProps: {
         children: 'children',
         label: 'label'
-      }
+      },
+
+      newGroupView: '', // 组件传过来的值
+      newGroupViewBack: '', // 组件传过来的值
     };
   },
   computed: {},
   watch: {},
   created() { },
-  mounted() { },
+  mounted() { 
+    this.newGroupView = JSON.parse(JSON.stringify(this.groupView)) 
+    this.newGroupViewBack = JSON.parse(JSON.stringify(this.groupViewBack))
+   },
   methods: {
     onSearch() {
       console.log('搜索', this.selectValue)
+    },
+    newGroupViewBackCli(flg, i) {
+      this.newGroupViewBack = flg
+      this.newGroupView = i
     }
   },
 };

+ 9 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/router/index.js

@@ -65,6 +65,15 @@ const router = new Router({
             keepAlive: false
         }
     },
+    {
+        path: "/InsertionPlanAdd",
+        name: '计划新增',
+        component: () => import("@/views/planView/InsertionPlan/InsertionPlanAdd"),
+        meta: {
+            title: "计划新增",
+            keepAlive: false
+        }
+    },
     {
         path: "/statisticsView",
         component: () => import("@/views/statisticsView/statisticsView"),

+ 48 - 5
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlan.vue

@@ -1,13 +1,23 @@
 <template>
-  <div>
-    插单计划
+  <div class="flexCoum">
+    <van-nav-bar title="插单计划" left-text="返回" right-text="新建" @click-left="back" 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>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
+import InsertionPlanItem from './InsertionPlanItem.vue'
 export default {
   props: {},
-  components: {},
+  components: {
+    InsertionPlanItem
+  },
   data() {
     return {
 
@@ -17,10 +27,43 @@ export default {
   watch: {},
   created() {},
   mounted() {},
-  methods: {},
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+    // 新建
+    add() {
+      this.$router.push({
+        name: '计划新增',
+        params: {
+          text: '传过来的值'
+        }
+      })
+    }
+  },
 };
 </script>
 
-<style scoped>
+<style scoped lang="less">
+  * {
+    box-sizing: border-box;
+  }
+  .InsertionPlan {
+    height: 100%;
+    background-color: #F4F4F4;
+    padding-top: 46px;
+    display: flex;
+    flex-direction: column;
+
+    .InsertionPlanBox {
+      flex: 1;
+      height: 100%;
+      margin: 15px;
+      overflow-y: auto;
 
+      .InsertionPlanBox_item {
+        margin-bottom: 20px;
+      }
+    }
+  }
 </style>

+ 137 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlanAdd.vue

@@ -0,0 +1,137 @@
+<template>
+  <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">
+      <!-- 内容 -->
+      <div class="InsertionPlanBox contentRoll">
+        <van-field v-model.trim="inserFrom.number" :readonly="false" label="任务变更通知号" placeholder="请输入"
+          :rules="[{ pattern }]" />
+        <van-field v-model.trim="inserFrom.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.number" :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="计划工时"
+          placeholder="请输入" :rules="[{ pattern }]" />
+        <van-field v-model.trim.number="inserFrom.number" 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="请输入" />
+      </div>
+      <!-- 提交按钮 -->
+      <div class="InsertionPlanBtn">
+        <van-button round block type="info" 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-popup>
+    <!-- 选择时间 -->
+    <van-calendar v-model="showPickerDate" @confirm="onConfirmDate" />
+  </div>
+</template>
+
+<script>
+export default {
+  props: {},
+  components: {},
+  data() {
+    return {
+      inserFrom: {
+        number: '',
+        gong: '工位A01',
+        zhang: '张三',
+        message: '',
+      },
+      pattern: /\d{6}/,
+      columns: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
+      showPicker: false,
+      showPickerDate: false,
+    };
+  },
+  computed: {},
+  watch: {},
+  created() { },
+  mounted() {
+    console.log(this.$route.params)
+  },
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+    // 校验函数返回 true 表示校验通过,false 表示不通过
+    validator(val) {
+      return /1\d{10}/.test(val);
+    },
+    onFailed(errorInfo) {
+      console.log('failed', errorInfo);
+    },
+    selectClick() {
+      this.showPicker = true;
+    },
+    onConfirm(value) {
+      console.log(value);
+      this.inserFrom.value = value;
+      this.showPicker = false;
+    },
+    selectTime() {
+      this.showPickerDate = true
+    },
+    onConfirmDate(value) {
+      console.log(value);
+      this.inserFrom.statrTime = value;
+      this.showPickerDate = false;
+    },
+    // 日期格式化
+    formatDate(date) {
+      if(date) {
+        var date = new Date(date);
+        var year = date.getFullYear();
+        var month = date.getMonth() + 1;
+        var day = date.getDate();
+        month = (month < 10 ? "0" : "") + month;
+        day = (day < 10 ? "0" : "") + day;
+        var formattedDate = year + "-" + month + "-" + day;
+        return formattedDate
+      }
+    }
+  },
+};
+</script>
+
+<style scoped lang="less">
+* {
+  box-sizing: border-box;
+}
+
+.InsertionPlan {
+  height: 100%;
+  background-color: #F4F4F4;
+  padding-top: 46px;
+  display: flex;
+  flex-direction: column;
+
+  .InsertionPlanBox {
+    flex: 1;
+    height: 100%;
+    overflow-y: auto;
+  }
+
+  .InsertionPlanBtn {
+    padding: 10px;
+  }
+}
+</style>

+ 120 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlanItem.vue

@@ -0,0 +1,120 @@
+<template>
+  <div class="InsertionPlanItem">
+    <div class="planItem_header">
+      <div>任务一</div>
+      <div>2022-2200220202</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" style="width: 100%;">
+        <p>组员:</p>
+        <span :style="`color: #1989fa`" @click.stop="distributionProp()">
+          张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山张山
+          <van-icon name="edit" color="#1989fa"/>
+        </span>
+        <span :style="`color: #1989fa`" v-if="false">分配</span>
+      </div>
+      <div class="planItem_conter_icon">
+        <van-icon name="arrow" size="20" color="#999" />
+      </div>
+    </div>
+
+    <!-- 弹出层选人 -->
+    <van-popup v-model="popupShow" round position="bottom" :style="{ height: '80%',background: '#F4F4F4' }" >
+      <ChooseSomeone :groupView="2" :groupViewBack="true"></ChooseSomeone>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import ChooseSomeone from '../../../components/chooseSomeone.vue'
+export default {
+  name: 'InsertionPlanItem',
+  props: {},
+  components: {
+    ChooseSomeone
+  },
+  data() {
+    return {
+      popupShow: false
+    };
+  },
+  computed: {},
+  watch: {},
+  created() {},
+  mounted() {},
+  methods: {
+    toAdd() {
+      console.log('跳转')
+      this.$router.push({
+        name: '计划新增',
+        params: {
+          text: '传过来的值'
+        }
+      })
+    },
+    distributionProp() {
+      this.popupShow = true
+    }
+  },
+};
+</script>
+
+<style scoped lang="less">
+  * {
+    box-sizing: border-box;
+    font-size: 16px;
+    color: #333;
+  }
+  .planItem_header {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+  .planItem_conter {
+    width: 100%;
+    padding: 8px;
+    background-color: #fff;
+    border-radius: 6px;
+    display: flex;
+    flex-wrap: wrap;
+    position: relative;
+
+    .planItem_conter_icon {
+      position: absolute;
+      top: 50%;
+      right: 2px;
+      margin-top: -10px;
+    }
+    
+    .item {
+      width: 50%;
+      display: flex;
+      padding: 8px;
+      position: relative;
+
+      p {
+        width: 70px;
+        text-align: right;
+        margin-right: 4px;
+        color: #999;
+      }
+      div {
+        width: 100%;
+        text-align: right;
+        color: #E6A23C;
+      }
+      span {
+        display: inline-block;
+        max-width: 220px;
+        min-width: 60px;
+        .van-icon {
+          top: 3px;
+        }
+      }
+    }
+  }
+</style>

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

@@ -40,7 +40,7 @@
     </div>
     <!-- 弹出层选人 -->
     <van-popup v-model="popupShow" round position="bottom" :style="{ height: '80%',background: '#F4F4F4' }" >
-      <ChooseSomeone></ChooseSomeone>
+      <ChooseSomeone :groupView="2" :groupViewBack="true"></ChooseSomeone>
     </van-popup>
   </div>
 </template>