ソースを参照

Merge branch 'master' of https://git.7in6.com/Minong/mes-admin-backend-ui

Lexie 1 年間 前
コミット
8d2e3734c4

+ 16 - 0
src/api/yunyin/yunying.js

@@ -873,3 +873,19 @@ export const staffSalaryCount= (data) => {
         data
     })
 }
+//引用产品资料印件、工艺资料->工单信息获取
+export const ProductCopeDetail= (params) => {
+    return service({
+        url:'/mes_server/work_order/ProductCopeDetail',
+        method: 'get',
+        params
+    })
+}
+//引用产品印件、工艺资料
+export const WorkOrderDetailListCope = (data) => {
+    return service({
+        url:'/mes_server/work_order/WorkOrderDetailListCope',
+        method: 'post',
+        data
+    })
+}

+ 149 - 16
src/view/performance/jjgzzhys.vue

@@ -1,28 +1,161 @@
 <template>
-  <div style="border: 1px red solid; width: 50%; height: 50%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">
+  <div style="border: 1px black solid; width: 30%; height: 33%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">
+    <div style="margin-top: 30px">
+      <el-form-item label="考勤年月:" class="mab" prop="keyOrder" label-width="100">
+        <el-input v-model="jjgzzhysformData.date" @keyup.enter="jgzzhysProductValue" style="width: 130px;"/>
+      </el-form-item>
 
+      <el-form-item label="从:" class="mab" prop="keyOrder" label-width="100">
+        <el-date-picker v-model="jjgzzhysformData.start_date" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+        &nbsp;到:&nbsp;&nbsp;
+        <el-date-picker v-model="jjgzzhysformData.end_date" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+      </el-form-item>
 
-    <el-button type="" style="background-color: #aaaaaa;color: #1b1b19"  @click="">继 续</el-button>
+      <el-form-item label="法定假日1从:" class="mab" prop="keyOrder" label-width="100">
+        <el-date-picker v-model="jjgzzhysformData.vacation_one_start" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+        &nbsp;&nbsp;~:&nbsp;&nbsp;
+        <el-date-picker v-model="jjgzzhysformData.vacation_one_end" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+      </el-form-item>
+
+      <el-form-item label="法定假日2从:" class="mab" prop="keyOrder" label-width="100">
+        <el-date-picker v-model="jjgzzhysformData.vacation_two_start" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+        &nbsp;&nbsp;~:&nbsp;&nbsp;
+        <el-date-picker v-model="jjgzzhysformData.vacation_two_end" type="date" placeholder="选择日期" style="width: 130px;">
+        </el-date-picker>
+      </el-form-item>
+
+
+      <div class="dialog-footer" style="text-align: right; margin-top: auto; margin-right: 30px;">
+        <el-button type="primary" @click="jjgzzhysclick">继 续</el-button>
+      </div>
+    </div>
   </div>
 </template>
-
-<script>
-import { reactive, ref } from 'vue'
-export default { name: 'jjgzzhys', }
+<script setup>
+import {ref, reactive} from 'vue'
 import {
   staffSalaryCount,
-} from "@/api/yunyin/yunying";
+} from '@/api/yunyin/yunying'
+import { ElMessage } from 'element-plus'
+const form = reactive({})
+const visible = ref(true)
 const jjgzzhysformData = reactive({
-  year: '',
-  cong: '',
-  dao: '',
-  cong1: '',
-  cong2: '',
-  dao1: '',
-  dao2: '',
+  date: '',
+  start_date: null,
+  end_date: null,
+  vacation_one_start: null,
+  vacation_one_end: null,
+  vacation_two_start: null,
+  vacation_two_end: null,
 });
-</script>
+//=============页面默认加载获取=========
+// 获取当前日期
+const currentDate = new Date();
+// 获取当前年份和月份
+const year = currentDate.getFullYear();
+const month = currentDate.getMonth() + 1;
+// 如果月份小于 10,补零
+const formattedMonth = month < 10 ? '0' + month : month;
+// 组合年月
+jjgzzhysformData.date = year.toString() + formattedMonth.toString();
 
-<style scoped>
+// 封装日期格式化和处理月份范围的逻辑为一个函数
+const formatAndSetDates = (yearMonth) => {
+  // 提取年份和月份
+  const yearPart = yearMonth.slice(0, 4);
+  const monthPart = yearMonth.slice(4);
+  // 构建开始日期和结束日期的字符串
+  const startDateString = `${yearPart}-${monthPart}-01`;
+  const endDateString = `${yearPart}-${monthPart}-${new Date(yearPart, monthPart, 0).getDate()}`;
+  // 设置开始日期和结束日期
+  jjgzzhysformData.start_date = startDateString;
+  jjgzzhysformData.end_date = endDateString;
+};
+
+// 初始化时调用一次
+formatAndSetDates(jjgzzhysformData.date);
+
+// 考勤年月回车时调用
+const jgzzhysProductValue = () => {
+  formatAndSetDates(jjgzzhysformData.date);
+};
 
+//考勤年月按钮 继续
+const jjgzzhysclick = async () => {
+  function formatDate(dateString) {
+    const date = new Date(dateString);
+    return date.getFullYear() + '-' +
+        (date.getMonth() + 1).toString().padStart(2, '0') + '-' +
+        date.getDate().toString().padStart(2, '0') + ' ';
+  }
+
+  const currentYear = new Date().getFullYear(); // 获取当前年份
+
+  const isCurrentYearOrNull = (dateString) => {
+    if (dateString === null) {
+      return true; // 如果日期为null,也视为空
+    }
+    const year = parseInt(dateString.substring(0, 4)); // 提取日期的年份并转换为整数
+    return year === currentYear || year === 1970; // 比较年份是否等于当前年份或者为1970
+  };
+
+  const start_date_formatted = isCurrentYearOrNull(jjgzzhysformData.start_date) ? formatDate(jjgzzhysformData.start_date) : "";
+  const end_date_formatted = isCurrentYearOrNull(jjgzzhysformData.end_date) ? formatDate(jjgzzhysformData.end_date) : "";
+  const vacation_one_start_formatted = isCurrentYearOrNull(jjgzzhysformData.vacation_one_start) ? formatDate(jjgzzhysformData.vacation_one_start) : "";
+  const vacation_one_end_formatted = isCurrentYearOrNull(jjgzzhysformData.vacation_one_end) ? formatDate(jjgzzhysformData.vacation_one_end) : "";
+  const vacation_two_start_formatted = isCurrentYearOrNull(jjgzzhysformData.vacation_two_start) ? formatDate(jjgzzhysformData.vacation_two_start) : "";
+  const vacation_two_end_formatted = isCurrentYearOrNull(jjgzzhysformData.vacation_two_end) ? formatDate(jjgzzhysformData.vacation_two_end) : "";
+
+  const formattedData = {
+    start_date: start_date_formatted,
+    end_date: end_date_formatted,
+    vacation_one_start: vacation_one_start_formatted,
+    vacation_one_end: vacation_one_end_formatted,
+    vacation_two_start: vacation_two_start_formatted,
+    vacation_two_end: vacation_two_end_formatted
+  };
+  console.log(formattedData)
+  //目前没有接口,先不用调用
+  // const staffSalaryCount_add = await staffSalaryCount(formattedData);
+  // if (staffSalaryCount_add.code === 0) {
+  //   ElMessage({type: 'success',message: '更新成功'})
+  // } else {
+  //   ElMessage({type: 'error',message: '更新失败'})
+  // }
+};
+</script>
+<style scoped>
+:deep(.el-table td .cell) {
+  line-height: 20px !important;
+}
+:deep(.el-tabs__header){
+  margin-bottom: 0;
+}
+.search{
+  margin-left: 0px !important;
+  margin-right: 10px !important;
+}
+.bt{
+  margin-left: 2px !important;
+  padding: 3px !important;
+  font-size: 12px;
+}
+.el-tabs__header{
+  margin: 0px !important;
+}
+.gva-table-box{
+  padding: 0px !important;
+}
+.el-pagination{
+  margin-top: 0px !important;
+}
+.mab{
+  margin-bottom: 5px;
+}
 </style>
+

+ 0 - 5
src/view/yunyin/shengchanguanli/gongdanshengchan.vue

@@ -702,11 +702,6 @@ const handleNodeClick = async (node) => {
     // 使用字符串分割获取#前面的数据
     const dataBeforeHash = custom_code.split('#')[0].trim();
     _machine.value = dataBeforeHash + '#';
-    // if(_machine.value && node['$treeNodeId']){
-    //   console.log(_machine.value)
-    //   console.log(node['$treeNodeId'])
-    //   return 'el-background-color';
-    // }
     console.log('机台' + _machine.value)
     const zhubiao = await MachineWorkOrderList({ machine:_machine.value})
     console.log(zhubiao)

+ 141 - 68
src/view/yunyin/shengchanguanli/gongdanziliao.vue

@@ -114,7 +114,7 @@
           <el-dialog v-model="onyycpzllist" title="获取工单资料">
             <div style=" padding: 0px; align-items: center;">
               <el-form-item label="工单编号" prop="processName" class="mab">
-                <el-input v-model="yycpzlformData['gdbh']" @keyup.enter="yycpzlProductValue" style="width: 23%;" />
+                <el-input v-model="yycpzlformData['gdbh']" ref="fanganRef" @click="yycpzlProductValue({ code: 'Tab'})" @keydown="yycpzlProductValue" style="width: 23%;" />
               </el-form-item>
               <el-form-item label="客户代号" prop="processName" class="mab">
                 <el-input v-model="yycpzlformData['khdh']" disabled style="width: 23%;" />
@@ -130,7 +130,7 @@
                 <el-checkbox disabled v-model="yycpzlformData['yjzl']">获取印件资料</el-checkbox>
                 <el-checkbox disabled v-model="yycpzlformData['gyap']">获取工艺安排</el-checkbox>
                 <el-form-item label="" prop="processName" class="mab" label-width="100" >
-                  <el-input v-model="yycpzlformData['fa']"/>
+                  <el-input v-model="yycpzlformData['fangan']" />
                 </el-form-item>
               </el-form-item>
 
@@ -168,6 +168,19 @@
 <!--            </el-table>-->
           </el-dialog>
 
+          <el-dialog v-model="openFangan" title="请选择方案" style="width: 300px;" destroy-on-close>
+            <el-tree
+                :data="WorkOrderDetailCopesFangan"
+                :props="{ children: 'children', label: '方案'}" style="border: 1px solid #efefef; padding: 5px;"
+                node-key="方案"
+                highlight-current
+                :current-node-key="defaultSelectionFangan"
+                @node-click="setFangan"
+            >
+
+            </el-tree>
+          </el-dialog>
+
           <!--工序产量核算-->
           <el-dialog v-model="gxclhslist"   title="印件投料核算"  style="width: 20%;position: fixed; bottom: 35%; left: 35%">
             <div style="display: flex; flex-direction: column;  height: 100%;">
@@ -1308,7 +1321,7 @@ import {
   getProduct, getProductGy, ProductInformationEdit, workOrderListDetail, editProduct, getOrderProcessCount, StatusEdit,
   PrintDetailDel, ProcessDetailDel,WorkOrderDetailCope,
   getGdAnnexTable,
-  gdAnnexAdd,
+  gdAnnexAdd,ProductCopeDetail,WorkOrderDetailListCope,
   gdAnnexDel,
 } from "@/api/yunyin/yunying";
 import PrintPage from './components/print.vue'
@@ -1999,53 +2012,57 @@ const add_gdzlent = async (event,id1,id2,id3) => {
     })
   }
 }
-
+let isdeFun = false
 watch(() => khdhModal.value, async v => {
   await nextTick(() => {
     if (xzgdzlTree.value !== undefined) {
-      if (v === true) {
-        document.body.addEventListener('keydown', e => {
-          if (e.code === 'Enter' && currentNodeKey.value !== '') {
-            selectGongDanNode(khdhDataList.value.find(item => item['客户编号'] == currentNodeKey.value), '客户代号')
-            return
-          }
-          if (e.code === 'ArrowDown') {
-            if (currentNodeKey.value === '') {
-              currentNodeKey.value = khdhDataList.value[0].客户编号
-            } else {
-              for(let i = 0; i < khdhDataList.value.length; i++) {
-                const item = khdhDataList.value[i]
-                if (item['客户编号'] == currentNodeKey.value) {
-                  if (khdhDataList.value[i + 1]) {
-                    currentNodeKey.value = khdhDataList.value[i + 1].客户编号
-                    break;
-                  } else {
-                    currentNodeKey.value = khdhDataList.value[0].客户编号
-                  }
+      const defun = (e) => {
+        isdeFun = true
+        if (e.code === 'Enter' && currentNodeKey.value !== '') {
+          selectGongDanNode(khdhDataList.value.find(item => item['客户编号'] == currentNodeKey.value), '客户代号')
+          return
+        }
+        if (e.code === 'ArrowDown') {
+          if (currentNodeKey.value === '') {
+            currentNodeKey.value = khdhDataList.value[0].客户编号
+          } else {
+            console.log(khdhDataList.value)
+            for(let i = 0; i < khdhDataList.value.length; i++) {
+              const item = khdhDataList.value[i]
+              if (item['客户编号'] == currentNodeKey.value) {
+                if (khdhDataList.value[i + 1]) {
+                  currentNodeKey.value = khdhDataList.value[i + 1].客户编号
+                  break;
+                } else {
+                  currentNodeKey.value = khdhDataList.value[0].客户编号
                 }
               }
             }
           }
-          if (e.code === 'ArrowUp') {
-            if (currentNodeKey.value === '') {
-              currentNodeKey.value = khdhDataList.value[khdhDataList.value.length - 1].客户编号
-            } else {
-              for(let i = 0; i < khdhDataList.value.length; i++) {
-                const item = khdhDataList.value[i]
-                if (item['客户编号'] == currentNodeKey.value) {
-                  if (khdhDataList.value[i - 1]) {
-                    currentNodeKey.value = khdhDataList.value[i - 1].客户编号
-                    break;
-                  } else {
-                    currentNodeKey.value = khdhDataList.value[khdhDataList.value.length - 1].客户编号
-                  }
+        }
+        if (e.code === 'ArrowUp') {
+          if (currentNodeKey.value === '') {
+            currentNodeKey.value = khdhDataList.value[khdhDataList.value.length - 1].客户编号
+          } else {
+            for(let i = 0; i < khdhDataList.value.length; i++) {
+              const item = khdhDataList.value[i]
+              if (item['客户编号'] == currentNodeKey.value) {
+                if (khdhDataList.value[i - 1]) {
+                  currentNodeKey.value = khdhDataList.value[i - 1].客户编号
+                  break;
+                } else {
+                  currentNodeKey.value = khdhDataList.value[khdhDataList.value.length - 1].客户编号
                 }
               }
             }
           }
-        })
+        }
+      }
+      if (v === true) {
+        isdeFun || document.body.addEventListener('keydown', defun)
+        isdeFun && document.body.removeEventListener('keydown', defun)
       } else {
-        document.body.removeEventListener('keydown')
+        document.body.removeEventListener('keydown', defun)
       }
     }
   })
@@ -2715,9 +2732,10 @@ const yycpzlformData = reactive({
   yjzl:true,
   gyap: true,
   gyfa: '',
-  fa: 'A',
+  fangan: 'A',
 });
 const onyycpzllist = ref(false);
+const fanganRef = ref()
 //引用产品资料【按钮】
 const onyycpzlclick = () => {
   if(_Gd_gdbh.value == null){
@@ -2730,26 +2748,26 @@ const onyycpzlclick = () => {
   }
 };
 //引用产品资料【回车】
-const yycpzlProductValue = async () => {
-  if(yycpzlformData['gdbh'] == null || yycpzlformData['gdbh'] == ''){
-    ElMessage({type: 'warning',message: '工单那不能为空'})
-    return false;
+const yycpzlProductValue = async (e) => {
+  if (e.code === 'Tab') {
+    if (yycpzlformData['gdbh'] == null || yycpzlformData['gdbh'] == '') {
+      ElMessage({ type: 'warning', message: '工单那不能为空' })
+      return false;
+    }
+    await _WorkOrderDetailCopedata();
+    fanganKeyDown()
   }
-  _WorkOrderDetailCopedata();
 };
+
 const yyzltableData = ref([]);
-//引用产品资料->获取产品资料 2403114
+const WorkOrderDetailCopesFangan = ref([])
+const defaultSelectionFangan = ref()
+//引用产品资料->获取产品资料
 const _WorkOrderDetailCopedata = async ()=>{
   let search = yycpzlformData['gdbh'];
-  const WorkOrderDetailCopes = await ProductInformation({workOrder:search});
-  // const WorkOrderDetailCopes = await WorkOrderDetailCope({search:search});
-  console.log(WorkOrderDetailCopes);
-  // yyzltableData.value = WorkOrderDetailCopes.data
-  // yycpzlformData['gdbh'] = WorkOrderDetailCopes.data[0]['工单编号'];
-  // yycpzlformData['khdh'] = WorkOrderDetailCopes.data[0]['客户编号'];
-  // yycpzlformData['khmc'] = WorkOrderDetailCopes.data[0]['客户名称'];
-  // yycpzlformData['cpdh'] = WorkOrderDetailCopes.data[0]['产品编号'];
-  // yycpzlformData['cpmc'] = WorkOrderDetailCopes.data[0]['产品名称'];
+  // 2403725 是带两个方案的
+  const WorkOrderDetailCopes = await ProductCopeDetail({workorder:search});
+  fanganRef.value.focus()
   if(WorkOrderDetailCopes.msg === '未找到工单信息'){
     yycpzlformData['khdh'] = '';
     yycpzlformData['khmc'] = '';
@@ -2758,33 +2776,88 @@ const _WorkOrderDetailCopedata = async ()=>{
     ElMessage({type: 'warning',message: '未找到工单信息'})
     return false;
   }else{
+    console.log( WorkOrderDetailCopes.data)
+    console.log( WorkOrderDetailCopes.data['产品代号'])
     yycpzlformData['gdbh'] = WorkOrderDetailCopes.data['工单编号'];
-    yycpzlformData['khdh'] = WorkOrderDetailCopes.data['客户代号'];
+    yycpzlformData['khdh'] = WorkOrderDetailCopes.data['客户号'];
     yycpzlformData['khmc'] = WorkOrderDetailCopes.data['客户名称'];
-    yycpzlformData['cpdh'] = WorkOrderDetailCopes.data['产品号'];
+    yycpzlformData['cpdh'] = WorkOrderDetailCopes.data['产品号'];
     yycpzlformData['cpmc'] = WorkOrderDetailCopes.data['产品名称'];
+    yycpzlformData['fangan'] = WorkOrderDetailCopes.data['方案'][0]['方案'];
+    defaultSelectionFangan.value = WorkOrderDetailCopes.data['方案'][0]['方案']
+    WorkOrderDetailCopesFangan.value = WorkOrderDetailCopes.data['方案']
   }
 }
-//点击获取工单资料展示数据
-// const yyzltableRowClick = async (row) => {
-//   yycpzlformData['gdbh'] = row['工单编号'];
-//   yycpzlformData['khdh'] = row['客户编号'];
-//   yycpzlformData['khmc'] = row['客户名称'];
-//   yycpzlformData['cpdh'] = row['产品编号'];
-//   yycpzlformData['cpmc'] = row['产品名称'];
-// };
-//引用产品资料【执行】
+
+const setFangan = (node) => {
+  yycpzlformData['fangan'] = node['方案']
+  defaultSelectionFangan.value = node['方案']
+  document.removeEventListener('keydown', () => {})
+  openFangan.value = false
+}
+
+const openFangan = ref(false)
+const fanganKeyDown = () => {
+  //2403725
+  if (WorkOrderDetailCopesFangan.value.length > 1) {
+    openFangan.value = true
+    document.addEventListener('keydown', (e) => {
+      let currentIndex
+      WorkOrderDetailCopesFangan.value.map( (item, index) => {
+        if (item['方案'] === defaultSelectionFangan.value[0]) {
+          currentIndex = index
+        }
+      })
+      if (e.code === 'ArrowDown') {
+        if (WorkOrderDetailCopesFangan.value[currentIndex + 1]) {
+          defaultSelectionFangan.value = WorkOrderDetailCopesFangan.value[currentIndex + 1]['方案']
+        } else {
+          defaultSelectionFangan.value = WorkOrderDetailCopesFangan.value[0]['方案']
+        }
+      }
+      if (e.code === 'ArrowUp') {
+        if (WorkOrderDetailCopesFangan.value[currentIndex - 1]) {
+          defaultSelectionFangan.value = WorkOrderDetailCopesFangan.value[currentIndex - 1]['方案']
+        } else {
+          defaultSelectionFangan.value = WorkOrderDetailCopesFangan.value[WorkOrderDetailCopesFangan.value.length - 1]['方案']
+        }
+      }
+      if (e.code === 'Enter') {
+        yycpzlformData['fangan'] = defaultSelectionFangan.value
+        document.removeEventListener('keydown', (e) => {
+          console.log(e)
+        })
+        openFangan.value = false
+      }
+    })
+  }
+}
+//引用产品资料【执行】按钮
 const yycpzlhandleConfirm = async () => {
   _ProductInformationEdit();
 };
 //引用产品资料->获取产品资料
 const _ProductInformationEdit = async ()=>{
+  console.log(yycpzlformData)
+  if(yycpzlformData['gdbh'] === null || yycpzlformData['gdbh'] === undefined){
+    ElMessage({type: 'warning', message: '工单编号为空'});
+    return false;
+  }
+  if(yycpzlformData['cpdh'] === null || yycpzlformData['cpdh'] === undefined){
+    ElMessage({type: 'warning', message: '产品代号为空'});
+    return false;
+  }
+  if(yycpzlformData['fangan'] === null || yycpzlformData['fangan'] === undefined){
+    ElMessage({type: 'warning', message: '工艺方案为空'});
+    return false;
+  }
   let params = {}
-  params.oldWorkOrder = _Gd_gdbh.value;
-  params.newWorkOrder = yycpzlformData['gdbh'];
+  params.workorder = yycpzlformData['gdbh'];
+  params.productCode = yycpzlformData['cpdh'];
+  params.option = yycpzlformData['fangan'];
   console.log(params)
   try {
-    const ProductInformationEditdata = await ProductInformationEdit(params);
+    const ProductInformationEditdata = await WorkOrderDetailListCope(params);
     if (ProductInformationEditdata.code === 0) {
       ElMessage({type: 'success', message: '更新成功'})
       onyycpzllist.value = false;