2447c6a50d833a579af3659daed2cb16108e8cc0..346bb777b21be8ff677fd0529af21f59479b1c8b
2023-10-20 zouyu
Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before
346bb7 对比 | 目录
2023-10-20 zouyu
modified: src/api/basic/part.js modified: src/views/basic/part/index....
eadcab 对比 | 目录
2023-10-18 zouyu
modified: src/const/crud/admin/productType.js modified: src/views/adm...
3d81f0 对比 | 目录
2023-10-18 zouyu
modified: src/const/crud/customerOrder/customerOrderForm.js modified: ...
c25cf5 对比 | 目录
2023-10-18 zouyu
modified: src/const/crud/customerOrder/customerOrderForm.js modified: ...
99494d 对比 | 目录
2023-10-17 zouyu
modified: src/views/basic/part/index.vue modified: src/views/plan/cus...
35ccec 对比 | 目录
2023-10-16 zouyu
modified: src/api/plan/customerorder.js modified: src/views/plan/cust...
262919 对比 | 目录
2023-10-13 zouyu
modified: src/views/plan/customerorder/customerorder-form.vue modified:...
966aba 对比 | 目录
2023-10-13 zouyu
modified: src/views/plan/customerorder/index.vue
a2ffbe 对比 | 目录
2023-10-13 zouyu
modified: src/const/crud/customerOrder/customerOrderForm.js modified: ...
16c4c1 对比 | 目录
2023-10-12 zouyu
modified: src/views/admin/productType/index.vue modified: src/views/p...
d541cc 对比 | 目录
2023-10-12 zouyu
modified: src/views/plan/customerorder/index.vue modified: src/views/...
4d0510 对比 | 目录
2023-10-11 zouyu
modified: src/views/plan/customerorder/customerorder-form.vue modified:...
9ae954 对比 | 目录
2023-10-11 zouyu
modified: src/views/plan/customerorder/customerorder-form.vue
e4e2dc 对比 | 目录
2023-10-11 zouyu
modified: src/views/plan/customerorder/customerorder-form.vue
56d50a 对比 | 目录
2023-10-11 zouyu
modified: src/views/plan/customerorder/customerorder-form.vue modified:...
ede916 对比 | 目录
2023-10-11 zouyu
new file: src/api/admin/productType.js new file: src/const/crud/admin...
c0849b 对比 | 目录
2023-10-09 zouyu
modified: src/views/plan/customerorder/index.vue
52ee48 对比 | 目录
2023-10-07 Fixiaobai
modified: src/App.vue modified: src/page/index/index.vue modified: ...
9afd2d 对比 | 目录
2023-10-07 zouyu
modified: package.json
395d8e 对比 | 目录
已修改22个文件
已添加4个文件
2493 ■■■■ 文件已修改
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/admin/productType.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/basic/part.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/plan/customerorder.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/const/crud/admin/productType.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/const/crud/admin/user.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/const/crud/customerOrder/customerOrderForm.js 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/index/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/index/logo.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/index/sidebar/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/index/tags.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/index/top/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/page/wel.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/util/date.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/admin/productType/index.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/part/index.vue 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/part/part-form.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/common/ztt-table.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/customerorder-form.vue 774 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/index.vue 799 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/sample-customerorder-form.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/schedule-table.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/manufacturingorder/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/masterproductionschedule/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -21,8 +21,8 @@
    "crypto-js": "^3.1.9-1",
    "echarts": "^4.9.0",
    "element-china-area-data": "^5.0.1",
    "element-ui": "2.12.1",
    "gojs": "2.1.371",
    "element-ui": "2.12.0",
    "gojs": "2.1.0",
    "js-cookie": "^2.2.0",
    "less-loader": "^6.0.0",
    "monaco-editor": "^0.27.0",
src/App.vue
@@ -1,6 +1,6 @@
<template>
  <div id="app">
    <router-view/>
    <router-view />
  </div>
</template>
@@ -12,15 +12,33 @@
  },
  computed: {},
  watch: {},
  created() {
  },
  created() {},
  methods: {}
}
</script>
<style lang="scss">
  #app {
    width: 100%;
    height: 100%;
    overflow: hidden;
  }
#app {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
/* å…¨å±€æ¨¡æ€æ¡†æ ·å¼ */
.el-dialog__header,.el-message-box__header {
  box-sizing: border-box;
  height: 56px;
  border-bottom: 1px solid rgb(238, 238, 238);
  padding: 0px;
  display: flex;
  align-items: center;
}
.el-dialog__header::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 30.24px;
  background: #875a7b;
  border-radius: 10px;
  margin-left: 32px;
  margin-right: 8.5px;
}
</style>
src/api/admin/productType.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
/*
 *    Copyright (c) 2018-2025, ztt All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: ztt
 */
import request from '@/router/axios'
export function getList(query) {
  return request({
    url: '/mes/customerOrderStaff/show',
    method: 'get',
    params: query
  })
}
export function chooseStaff(query) {
    return request({
      url: '/mes/customerOrderStaff/chooseStaff',
      method: 'get',
      params: query
    })
  }
export function addObj(obj) {
  return request({
    url: '/mes/customerOrderStaff/add',
    method: 'post',
    data: obj
  })
}
export function delObj(obj) {
  return request({
    url: '/mes/customerOrderStaff/'+obj,
    method: 'delete',
  })
}
src/api/basic/part.js
@@ -121,7 +121,7 @@
export function syncPart(query) {
  return request({
    url: '/mes/part/syncPart',
    method: 'post',
    method: 'get',
    params: query
  })
}
src/api/plan/customerorder.js
@@ -51,6 +51,14 @@
  })
}
export function updateCustomerOrderById(obj) {
  return request({
    url: '/mes/plan/customerOrder/updateById',
    method: 'put',
    data: obj
  })
}
// åˆ›å»ºä¸»ç”Ÿäº§è®¡åˆ’需求
export function createMpsRequirements(obj) {
  return request({
src/const/crud/admin/productType.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
/*
 *    Copyright (c) 2018-2025, ztt All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: ztt
 */
export const tableOption = {
  border: true,
  index: true,
  indexLabel: '序号',
  stripe: true,
  menuAlign: 'center',
  searchMenuSpan: 6,
  editBtn: false,
  delBtn: false,
  align: 'center',
  addBtn: false,
  viewBtn: false,
  column: [{
    label: '用户',
    prop: 'staffName',
    type: 'select',
    span: 24,
  },  {
    label: '关键字',
    prop: 'type',
    span: 24,
  }]
}
src/const/crud/admin/user.js
@@ -125,7 +125,7 @@
    rules: [{
      required: true,
      message: '请选择角色',
      trigger: 'blur'
      trigger: 'change'
    }]
  }, {
    label: '状态',
@@ -137,7 +137,7 @@
    rules: [{
      required: true,
      message: '请选择状态',
      trigger: 'blur'
      trigger: 'change'
    }],
    dicData: [{
      label: '有效',
src/const/crud/customerOrder/customerOrderForm.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
/*
 *    Copyright (c) 2018-2025, ztt All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: ztt
 */
export const tableOption = {
  border: true,
  index: true,
  height: '292px',
  indexLabel: '序号',
  menuAlign: 'center',
  menuWidth: 100,
  editBtn: false,
  delBtn: false,
  align: 'center',
  addBtn: false,
  addRowBtn: true,
  refreshBtn: false, // æ˜¯å¦æ˜¾ç¤ºåˆ·æ–°æŒ‰é’®
  columnBtn: false, // æ˜¯å¦æ˜¾ç¤ºæ˜¾å½±æŒ‰é’®H
  column: [{
    label: '零件号',
    slot: true,
    formSlot: true,
    cell: true,
    prop: 'partNo',
    minWidth: 200,
    span: 24
  }, {
    label: '零件规格',
    prop: 'customerPartSpec',
    type: 'input',
    cell: true,
    minWidth: 200,
    span: 24
  }, {
    label: '制造属性',
    prop: 'manufactureAttr',
    cell: true,
    type: 'select',
    minWidth: 200,
    span: 24,
    dicData:[{
        label: '普通',
        value: 'N'
    },{
        label: '样品',
        value: 'S'
    },{
        label: '研发',
        value: 'D'
    }]
  }, {
    label: '产品名称',
    prop: 'productName',
    cell: true,
    type: 'input',
    minWidth: 200,
    span: 24
  }, {
    label: '隶属品牌',
    prop: 'productType',
    cell: true,
    type: 'input',
    minWidth: 200,
    span: 24
  }, {
    label: '单位',
    prop: 'otcUnit',
    slot: true,
    formSlot: true,
    cell: true,
    type: 'input',
    minWidth: 200,
    span: 24
  }, {
    label: '数量',
    prop: 'buyQtyDue',
    cell: true,
    type: 'input',
    dataType: 'number',
    minWidth: 200,
    span: 24,
    rules:[{message:'类型必须是数字',trigger:'blur'}]
  }, {
    label: '收货地址',
    prop: 'shippingAddress',
    cell: true,
    type: 'input',
    minWidth: 200,
    span: 24
  }, {
    label: '产品备注',
    prop: 'remark',
    cell: true,
    type: 'textarea',
    minWidth: 200,
    span: 24,
    minRows: 1,
    maxRows: 3
  }, ]
}
src/page/index/index.vue
@@ -1,6 +1,6 @@
<template>
  <div :class="{ 'avue--collapse': isCollapse }" class="avue-contail">
    <div class="avue-header">
    <div class="avue-header" style="background-color: #875a7b;">
      <!-- é¡¶éƒ¨å¯¼èˆªæ  -->
      <top />
    </div>
src/page/index/logo.vue
@@ -2,22 +2,22 @@
  <div class="avue-logo">
    <transition-group name="fade">
      <template v-if="!keyCollapse">
        <!--<span
          key="1"
        <span
          key="1" style="background-color:#875a7b;font-weight: bold;"
          class="avue-logo_title" @click="goIndex"><span
          class="logo-lg">{{sysTitle&&sysTitle!='null'?sysTitle:'ASUN-MES'}}</span></span>-->
          class="logo-lg">{{sysTitle&&sysTitle!='null'?sysTitle:'MES'}}</span></span>
        <!--<span key="1" class="avue-logo_title" @click="goIndex">
          <el-image
            style="width: 220px;"
            src="/images/Sun-Mes-Logo-Normal.png"
        /></span>-->
        <div key="1" style="width:220px;height:60px;background-color:white;position: relative;">
          <el-image
        <div key="2" style="width:220px;height:60px;background-color:#875a7b;position: relative;">
          <!-- <el-image
            v-if="logSrc != null"
            style="width:200px;position: absolute;"
            class="left-logo-image"
            :src="logSrc"
          />
          /> -->
          <!--<el-image
            v-else
            style="width: 220px;position: absolute;"
@@ -60,7 +60,7 @@
  name: 'Logo',
  data() {
    return {
      sysTitle: 'ASUN-MES',
      sysTitle: 'MES',
      logSrc: '/img/logo1.png',
      iconNameCn: '',
      iconNameEn: ''
src/page/index/sidebar/index.vue
@@ -1,22 +1,10 @@
<template>
  <div class="avue-sidebar">
    <logo/>
    <logo />
    <el-scrollbar style="height:100%">
      <div
        v-if="validatenull(menu)"
        class="avue-sidebar--tip">没有发现菜单</div>
      <el-menu
        :default-active="nowTagValue"
        :show-timeout="200"
        :collapse="keyCollapse"
        unique-opened
        mode="vertical">
        <sidebar-item
          :menu="menu"
          :screen="screen"
          :props="website.menu.props"
          :collapse="keyCollapse"
          first/>
      <div v-if="validatenull(menu)" class="avue-sidebar--tip">没有发现菜单</div>
      <el-menu :default-active="nowTagValue" :show-timeout="200" :collapse="keyCollapse" unique-opened mode="vertical">
        <sidebar-item :menu="menu" :screen="screen" :props="website.menu.props" :collapse="keyCollapse" first />
      </el-menu>
    </el-scrollbar>
  </div>
@@ -35,7 +23,7 @@
  },
  computed: {
    ...mapGetters(['website', 'menu', 'tag', 'keyCollapse', 'screen']),
    nowTagValue: function() {
    nowTagValue: function () {
      return this.$router.$avueRouter.getValue(this.$route)
    }
  }
src/page/index/tags.vue
@@ -1,5 +1,5 @@
<template>
  <div
  <div style="background-color: #875a7b;"
    v-if="showTag"
    @click="contextmenuFlag=false"
    class="avue-tags">
src/page/index/top/index.vue
@@ -15,7 +15,7 @@
    </div>
    <div class="top-bar__right">
      
      <el-tooltip
      <!-- <el-tooltip
        v-if="showLock"
        effect="dark"
        content="主题设置"
@@ -23,7 +23,7 @@
        <div class="top-bar__item">
          <top-theme></top-theme>
        </div>
      </el-tooltip>
      </el-tooltip> -->
      <el-tooltip
        v-if="showLock"
        effect="dark"
src/page/wel.vue
@@ -8,7 +8,10 @@
      id="myiframe"
      >你的浏览器不支持该iframe标签</iframe
    >-->
    <el-image :src="url" style="width:100%;height:100%;"></el-image>
    <!-- <el-image :src="url" style="width:100%;height:100%;"></el-image> -->
    <el-row style="width: 100%; height: 100%;background-color: white;">
      <span>暂未开发。。。。。。</span>
    </el-row>
  </div>
</template>
<style scoped="scoped" lang="scss">
src/util/date.js
@@ -84,3 +84,20 @@
  year = (year + '').substring(2, 4)
  return year + month
}
/**
 * èŽ·å–å¹´æœˆæ—¥
 */
export function getYearAndMonthAndDays() {
  const date = new Date()
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  if (month < 10) {
    month = '0' + month
  } else {
    month = month + '-'
  }
  year = year + '-'
  let days = date.getDate()
  return year + month + days
}
src/views/admin/productType/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,206 @@
<!--
  -    Copyright (c) 2018-2025, ztt All rights reserved.
  -
  - Redistribution and use in source and binary forms, with or without
  - modification, are permitted provided that the following conditions are met:
  -
  - Redistributions of source code must retain the above copyright notice,
  - this list of conditions and the following disclaimer.
  - Redistributions in binary form must reproduce the above copyright
  - notice, this list of conditions and the following disclaimer in the
  - documentation and/or other materials provided with the distribution.
  - Neither the name of the pig4cloud.com developer nor the names of its
  - contributors may be used to endorse or promote products derived from
  - this software without specific prior written permission.
  - Author: ztt
  -->
  <template>
    <div class="app-container calendar-list-container">
      <basic-container>
        <avue-crud
          ref="crud"
          :option="tableOption"
          :data="list"
          :page="page"
          v-model="form"
          :table-loading="listLoading"
          @on-load="getList"
          @search-change="searchChange"
          @refresh-change="refreshChange"
          @size-change="sizeChange"
          @current-change="currentChange">
          <template slot="staffName" slot-scope="scope">{{ scope.row.staffName }}</template>
          <template slot="type" slot-scope="scope">{{ scope.row.type }}</template>
          <template slot="menuLeft">
            <el-button
              v-if="prodManager_btn_add"
              class="filter-item"
              type="primary"
              icon="el-icon-plus"
              @click="dialogAddVisible=true">添加</el-button>
          </template>
          <template slot="menu" slot-scope="scope">
              <el-button
                v-if="prodManager_btn_del"
                type="text"
                size="small"
                icon="el-icon-delete"
                @click="handleDelete(scope.row,scope.index)">删除
              </el-button>
          </template>
        </avue-crud>
      </basic-container>
      <el-dialog :visible.sync="dialogAddVisible" :close-on-click-modal="false" title="新增配置">
      <el-form :model="prodForm" :rules="rules" ref="addDialog">
        <el-form-item prop="staffName" label="用户名称:" label-width="90px">
            <el-select style="width:100%" v-model="prodForm.staffName">
              <el-option v-for="(item,index) in staffNamesOptions" :key="index" :value="item.id" :label="item.staffName"/>
            </el-select>
        </el-form-item>
        <el-form-item prop="type" label="关键字:" label-width="90px">
          <el-input style="width:100%" v-model="prodForm.type" placeholder="请输入隶属品牌关键字"/>
        </el-form-item>
      </el-form>
      <div slot="footer"
        class="dialog-footer">
        <el-button type="primary" size="small" @click="createConfirm">ç¡® è®¤</el-button>
        <el-button type="default" size="small" @click="reset">取消</el-button>
      </div>
    </el-dialog>
    </div>
  </template>
  <script>
  import { tableOption } from '@/const/crud/admin/productType'
  import { getList,addObj,delObj,chooseStaff } from '@/api/admin/productType'
  import { mapGetters } from 'vuex'
  export default {
    name: 'TableProduct',
    data() {
      return {
        dialogAddVisible: false,
        prodForm: {
          staffName: '',
          type: ''
        },
        rules: {
          staffName:[{ required:true,message:"用户名不能为空", trigger: 'change' }],
          type:[{required:true,message:"产品类型关键字不能为空", trigger: 'blur'}]
        },
        staffNamesOptions: [],
        tableOption: tableOption,
        page: {
          total: 0, // æ€»é¡µæ•°
          currentPage: 1, // å½“前页数
          pageSize: 20 // æ¯é¡µæ˜¾ç¤ºå¤šå°‘条
        },
        list: [],
        listLoading: false,
        form: {},
        prodManager_btn_add: false,
        prodManager_btn_del: false,
      }
    },
    created() {
      this.prodManager_btn_add = this.permissions['sys_prod_add']
      this.prodManager_btn_del = this.permissions['sys_prod_del']
      this.getStaffList()
    },
    computed: {
      ...mapGetters(['elements', 'permissions'])
    },
    methods: {
      getStaffList(){
        chooseStaff(Object.assign({})).then(response => {
          this.staffNamesOptions = response.data.data
        })
      },
      getList(page, params) {
        this.listLoading = true
        getList(Object.assign({
          current: page.currentPage,
          size: page.pageSize
        }, params, this.searchForm)).then(response => {
          this.list = response.data.data
          this.page.total = response.data.data.total
          this.listLoading = false
        }).catch(() => {
          this.listLoading = false
        })
      },
      refreshChange() {
        this.getList(this.page)
      },
      searchChange(form, done) {
        this.searchForm = form
        this.page.currentPage = 1
        this.getList(this.page, form)
        done()
      },
      sizeChange(pageSize){
        this.page.pageSize = pageSize
      },
      currentChange(current){
        this.page.currentPage = current
      },
      handleCreate() {
        this.$refs.crud.rowAdd()
      },
      createConfirm(){
          this.$refs['addDialog'].validate(val=>{
            if(val){
              addObj({
                staffId: this.prodForm.staffName,
                productType: this.prodForm.type
              }).then(response => {
                this.dialogAddVisible = false
                this.$message.success("添加成功")
                this.refreshChange()
              }).catch(() => {
                this.$message.error("添加失败")
              })
            }
          })
      },
      reset(){
        this.dialogAddVisible =false;
        this.$refs['addDialog'].resetFields()
      },
      handleDelete(row, index) {
        this.$confirm('是否确认删除名称为"' + row.staffName + '"' + '"的数据项?', '警告', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          closeOnClickModal:false,
          type: 'warning'
        }).then(function() {
          return delObj(row.id)
        }).then(() => {
          this.getList(this.page)
          this.$notify.success('删除成功')
        })
      },
    }
  }
  </script>
  <style lang="scss" scoped>
    .el-dialog__wrapper {
    .el-dialog {
      width: 61% !important;
    .dialog-main-tree {
      max-height: 400px;
      overflow-y: auto;
    }
    }
    .el-form-item__label {
      width: 100px !important;
      padding-right: 20px;
    }
    .el-form-item__content {
      margin-left: 200px !important;
    }
    }
  </style>
src/views/basic/part/index.vue
@@ -25,11 +25,36 @@
        :printLabelInfo="printLabelInfo"
      />
    </basic-container>
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="21%">
      <div style="display: flex;justify-content: center">
        <el-form
          :model="dataForm"
          :inline="true"
          :rules="dataRule"
          ref="dataForm"
          class="l-mes"
        >
          <el-form-item label="日期" prop="selectTime">
            <el-date-picker
              v-model="dataForm.selectTime"
              type="datetime"
              placeholder="选择日期时间"
              value-format="yyyy-MM-dd HH:mm:ss"
            >
            </el-date-picker>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="syncDateVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="syncIfs">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { fetchList, delObj, syncIfs, syncPart } from '@/api/basic/part'
import { fetchList, delObj, syncPart } from '@/api/basic/part'
import TableForm from './part-form'
import { mapGetters } from 'vuex'
import ttable from '@/views/common/ztt-table.vue'
@@ -40,6 +65,15 @@
export default {
  data() {
    return {
      dataRule: {
        selectTime: [
          { required: true, message: '同步日期不能为空', trigger: 'change' }
        ]
      },
      dataForm: {
        selectTime: null
      },
      syncDateVisible: false,
      ajaxFun: fetchList,
      addOrUpdateVisible: false,
      multipleSelection: [],
@@ -363,17 +397,17 @@
            fun: this.addOrUpdateHandle
          },
          {
            text: '同步ERP',
            text: '同步MDM',
            type: 'primary',
            fun: this.syncIfs,
            loading: false
          },
          {
            text: '大标签',
            type: 'primary',
            fun: this.printLabel,
            fun: () => (this.syncDateVisible = true),
            loading: false
          }
          // {
          //   text: '大标签',
          //   type: 'primary',
          //   fun: this.printLabel,
          //   loading: false
          // }
        ],
        operator: [
          {
@@ -628,18 +662,28 @@
    //   }
    // },
    syncIfs() {
      syncPart({})
        .then((res) => {
          const data = res.data
          if (data.code === 0) {
            this.$message.success('开始同步')
          } else {
            this.$message.error('同步ERP失败')
          }
        })
        .catch((e) => {
          // this.$message.error('同步ERP失败:' + e)
        })
      this.$refs.dataForm.validate((valid) => {
        if (valid) {
          this.syncDateVisible = false
          this.table.toolbar.find((e) => e.text === '同步MDM').loading = true
          syncPart({ updateTime: this.dataForm.selectTime })
            .then((res) => {
              const data = res.data
              if (data.code === 0) {
                this.$message.success(data.msg)
              } else {
                this.$message.error('同步MDM失败')
              }
              this.getData()
              this.table.toolbar.find(
                (e) => e.text === '同步MDM'
              ).loading = false
            })
            .catch((e) => {
              this.$message.error('同步MDM失败:' + e)
            })
        }
      })
    },
    printLabel() {
      if (this.multipleSelection && this.multipleSelection.length > 0) {
@@ -677,6 +721,13 @@
        this.$message.error('请选择零件')
      }
    }
  },
  watch: {
    syncDateVisible(newVal) {
      if (!newVal) {
        this.$refs.dataForm.resetFields()
      }
    }
  }
}
</script>
src/views/basic/part/part-form.vue
@@ -20,12 +20,12 @@
              placeholder="零件号"
              :disabled="(dataForm.id != null && dataForm.id > 0) || status"
            >
              <el-button
              <!-- <el-button
                slot="append"
                icon="el-icon-search"
                @click="openPartDialog()"
                v-show="!dataForm.id"
              ></el-button>
              ></el-button> -->
            </el-input>
          </el-form-item>
        </el-col>
@@ -36,11 +36,11 @@
              placeholder="零件名称"
              :disabled="status"
            >
              <el-button
              <!-- <el-button
                slot="append"
                icon="el-icon-search"
                @click="openPartDialog()"
              ></el-button>
              ></el-button> -->
            </el-input>
          </el-form-item>
        </el-col>
src/views/common/ztt-table.vue
@@ -327,7 +327,12 @@
              <template v-else>
                <template v-if="!item.render">
                  <template v-if="item.formatter">
                    <span
                    <span v-if="item.isTag" style="text-align: center;">
                      <el-tag style="width:50px;margin: 3px;" :type="scope.row[item.prop] == 0 ? 'success' : 'info'">
                        <span v-html="item.formatter(scope.row, item, scope.row[item.prop])"></span>
                      </el-tag>
                    </span>
                    <span v-else
                      v-html="
                        item.formatter(scope.row, item, scope.row[item.prop])
                      "
src/views/plan/customerorder/customerorder-form.vue
@@ -26,46 +26,28 @@
      class="l-mes"
      :disabled="!editable"
    >
      <el-tabs type="border-card" ref="tabs">
      <el-tabs type="border-card" ref="tabs" @tab-click="tabsClick">
        <el-tab-pane label="主要" type="card">
          <el-row>
            <el-col :span="6">
              <el-form-item label="同步数据来源" prop="sourceId">
                <el-input
                  v-model="dataForm.sourceId"
                  v-model="dataForm.sourceId == 0 ? '同步' : '手动'"
                  placeholder=""
                  :disabled="!ediSource"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="订单号" prop="customerOrderNo">
              <el-form-item label="订单号" prop="contractNo">
                <el-input
                  v-model="dataForm.customerOrderNo"
                  @blur="dataForm.customerOrderNo = $event.target.value.trim()"
                  v-model="dataForm.contractNo"
                  @blur="dataForm.contractNo = $event.target.value.trim()"
                  placeholder=""
                  :disabled="!ediSource"
                ></el-input>
              </el-form-item>
            </el-col>
            <!--            <el-col :span="6">-->
            <!--              <el-form-item label="OTC行号" prop="otcLineNo">-->
            <!--                <el-input-->
            <!--                  v-model="dataForm.otcLineNo"-->
            <!--                  placeholder=""-->
            <!--                  disabled-->
            <!--                ></el-input>-->
            <!--              </el-form-item>-->
            <!--            </el-col>-->
            <!--            <el-col :span="6">-->
            <!--              <el-form-item label="GSM行号" prop="coLineNo">-->
            <!--                <el-input-->
            <!--                  v-model="dataForm.coLineNo"-->
            <!--                  placeholder=""-->
            <!--                  disabled-->
            <!--                ></el-input>-->
            <!--              </el-form-item>-->
            <!--            </el-col>-->
            <el-col :span="6">
              <el-form-item label="客户编号" prop="customerNo">
                <el-input
@@ -89,27 +71,15 @@
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="客户的零件号" prop="customerPartNo">
              <el-form-item label="客户订单状态" prop="returnStatus">
                <el-input
                  v-model="dataForm.customerPartNo"
                v-model="dataForm.returnStatus"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <!--            <el-col :span="6">-->
            <!--              <el-form-item label="IFS行号" prop="ifsLineNo">-->
            <!--                <el-input-->
            <!--                  v-model="dataForm.ifsLineNo"-->
            <!--                  placeholder=""-->
            <!--                  disabled-->
            <!--                ></el-input>-->
            <!--              </el-form-item>-->
            <!--            </el-col>-->
            <el-col :span="6">
              <el-form-item label="客户订单状态" prop="coState">
                <el-select
                  v-model="dataForm.coState"
                  filterable
                  style="width: 100%"
                  disabled></el-input>
                <!-- <el-select
                  v-model="dataForm.returnStatus"
                  placeholder=""
                  filterable
                  style="width: 100%"
@@ -122,112 +92,28 @@
                    :value="item.value"
                    :disabled="!ediSource"
                  />
                </el-select>
                </el-select> -->
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="行号" prop="coLineNo">
                <el-input
                  v-model="dataForm.coLineNo"
                  placeholder=""
              <el-form-item label="期望交货时间" prop="deliveryDate">
                <el-date-picker
                  v-model="dataForm.deliveryDate"
                  style="width: 100%"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  :disabled="!ediSource"
                ></el-input>
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="客户的零件规格" prop="customerPartName">
              <el-form-item label="业务员" prop="salesMan">
                <el-input
                  v-model="dataForm.customerPartName"
                  v-model="dataForm.salesMan"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <!--          <el-row>-->
          <!--            <el-col :span="6">-->
          <!--              <el-form-item label="IFS交货号" prop="ifsDeliveryNo">-->
          <!--                <el-input-->
          <!--                  v-model="dataForm.ifsDeliveryNo"-->
          <!--                  placeholder=""-->
          <!--                  disabled-->
          <!--                ></el-input>-->
          <!--              </el-form-item>-->
          <!--            </el-col>-->
          <!--          </el-row>-->
          <el-row>
            <el-col :span="6">
              <el-form-item label="零件号" prop="partNo">
                <el-input v-model="dataForm.partNo" placeholder="" readonly>
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openPartDialog()"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="销售数量" prop="otcQuantity">
                <el-input
                  v-model="dataForm.otcQuantity"
                  placeholder=""
                  :disabled="!ediSource"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="客户零件名称" prop="productName">
                <el-input
                  v-model="dataForm.productName"
                  placeholder=""
                  disabled
                >
                </el-input>
              </el-form-item>
            </el-col>
            <!--            <el-col :span="6">-->
            <!--              <el-form-item label="IFS行项号" prop="ifsLineItemNo">-->
            <!--                <el-input-->
            <!--                  v-model="dataForm.ifsLineItemNo"-->
            <!--                  placeholder=""-->
            <!--                  disabled-->
            <!--                ></el-input>-->
            <!--              </el-form-item>-->
            <!--            </el-col>-->
            <el-col :span="6">
              <el-form-item label="销售件号" prop="salesPartNo">
                <el-input
                  v-model="dataForm.salesPartNo"
                  placeholder=""
                  disabled
                >
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openSalesPartDialog()"
                    v-show="dataForm.id"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="销售件描述" prop="salesPartName">
                <el-input
                  v-model="dataForm.salesPartName"
                  placeholder=""
                  disabled
                >
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openSalesPartDialog()"
                    v-show="dataForm.id"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
@@ -248,30 +134,7 @@
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="工艺文件号" prop="docNumber">
                <el-input
                  v-model="dataForm.docNumber"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="期望交货时间" prop="wantedDeliveryDate">
                <el-date-picker
                  v-model="dataForm.wantedDeliveryDate"
                  style="width: 100%"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  :disabled="!ediSource"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
            <!-- <el-col :span="6">
              <el-form-item label="计划交货时间" prop="plannedDeliveryDate">
                <el-date-picker
                  v-model="dataForm.plannedDeliveryDate"
@@ -281,55 +144,8 @@
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="客户零件规格" prop="customerPartSpec">
                <el-input
                  v-model="dataForm.customerPartSpec"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <!--            <el-col :span="6">-->
            <!--              <el-form-item label="事业部" prop="division">-->
            <!--                <el-input-->
            <!--                  v-model="dataForm.division"-->
            <!--                  placeholder=""-->
            <!--                  disabled-->
            <!--                ></el-input>-->
            <!--              </el-form-item>-->
            <!--            </el-col>-->
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="印字方式" prop="printType">
                <el-input
                  v-model="dataForm.printType"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="印字要求" prop="printingRequirements">
                <el-input
                  v-model="dataForm.printingRequirements"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="印字内容" prop="printContent">
                <el-input
                  v-model="dataForm.printContent"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
            </el-col> -->
            <!-- <el-col :span="6">
              <el-form-item label="包装要求" prop="packageRequire">
                <el-input
                  v-model="dataForm.packageRequire"
@@ -337,31 +153,95 @@
                  disabled
                ></el-input>
              </el-form-item>
            </el-col> -->
          </el-row>
          <el-row>
            <!-- <el-col :span="6">
              <el-form-item label="零件号" prop="partNo">
                <el-input v-model="dataForm.partNo" placeholder="" readonly>
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openPartDialog()"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col> -->
            <!-- <el-col :span="6">
              <el-form-item label="盘长要求" prop="lengthRequirement">
                <el-input
                  v-model="dataForm.lengthRequirement"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col> -->
            <el-col :span="6">
              <el-form-item label="销售数量" prop="buyQtyDue">
                <el-input
                  v-model="dataForm.buyQtyDue"
                  placeholder=""
                  :disabled="!ediSource"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="产品名称" prop="productName">
                <el-input
                  v-model="dataForm.productName"
                  placeholder=""
                  disabled
                >
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="隶属品牌" prop="productType">
                <el-input
                  v-model="dataForm.productType"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="销售件号" prop="partNo">
                <el-input
                  v-model="dataForm.partNo"
                  placeholder=""
                  disabled
                >
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openSalesPartDialog()"
                    v-show="dataForm.id"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="质量要求" prop="qualityRequire">
            <!-- <el-col :span="6">
              <el-form-item label="销售件描述" prop="salesPartName">
                <el-input
                  v-model="dataForm.qualityRequire"
                  v-model="dataForm.salesPartName"
                  placeholder=""
                  disabled
                ></el-input>
                >
                  <el-button
                    slot="append"
                    icon="el-icon-search"
                    @click="openSalesPartDialog()"
                    v-show="dataForm.id"
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            </el-col> -->
            <el-col :span="6">
              <el-form-item label="生产需求说明" prop="otherProductRequire">
              <el-form-item label="工艺文件号" prop="docNumber">
                <el-input
                  v-model="dataForm.otherProductRequire"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="系统" prop="divisionSystem">
                <el-input
                  v-model="dataForm.divisionSystem"
                  v-model="dataForm.docNumber"
                  placeholder=""
                  disabled
                ></el-input>
@@ -372,43 +252,30 @@
                <el-input
                  v-model="dataForm.shippingAddress"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="业务员" prop="salesmanName">
                <el-input
                  v-model="dataForm.salesmanName"
              <el-form-item label="单位" prop="otcUnit">
                <el-select
                  v-model="dataForm.otcUnit"
                  placeholder=""
                  disabled
                ></el-input>
                  filterable
                  style="width: 100%"
                >
                  <el-option
                    v-for="item in units"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="盘长要求" prop="lengthRequirement">
              <el-form-item label="产品型号" prop="customerPartSpec">
                <el-input
                  v-model="dataForm.lengthRequirement"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="最终客户" prop="remark">
                <el-input
                  v-model="dataForm.finalCustomerName"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="产品分组" prop="remark">
                <el-input
                  v-model="dataForm.productGroup"
                  v-model="dataForm.customerPartSpec"
                  placeholder=""
                  disabled
                ></el-input>
@@ -416,16 +283,18 @@
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="产品类型" prop="remark">
            <!-- <el-col :span="6">
              <el-form-item label="系统" prop="divisionSystem">
                <el-input
                  v-model="dataForm.productType"
                  v-model="dataForm.divisionSystem"
                  placeholder=""
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
            </el-col> -->
          </el-row>
          <el-row>
            <!-- <el-col :span="6">
              <el-form-item label="采集性质" prop="centralizedMiningProperty">
                <el-input
                  v-model="dataForm.centralizedMiningProperty"
@@ -433,8 +302,8 @@
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
            </el-col> -->
            <!-- <el-col :span="6">
              <el-form-item label="订单行备注" prop="remark">
                <el-input
                  v-model="dataForm.remark"
@@ -451,10 +320,10 @@
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            </el-col> -->
          </el-row>
          <el-row>
            <el-col :span="6">
            <!-- <el-col :span="6">
              <el-form-item label="OTC推送状态" prop="remark">
                <span>{{
                  dataForm.otcPartSync != null
@@ -464,16 +333,16 @@
                    : ''
                }}</span>
              </el-form-item>
            </el-col>
            </el-col> -->
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="订单说明" prop="orderDescription">
              <el-form-item label="订单备注" prop="comment">
                <el-input
                  type="textarea"
                  :rows="3"
                  placeholder=""
                  v-model="dataForm.orderDescription"
                  v-model="dataForm.comment"
                  maxlength="500"
                  show-word-limit
                >
@@ -481,7 +350,22 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-card header="订单参数" shadow="never">
          <el-row>
            <el-col :span="24">
              <el-form-item label="产品备注" prop="remark">
                <el-input
                  type="textarea"
                  :rows="3"
                  placeholder=""
                  v-model="dataForm.remark"
                  maxlength="500"
                  show-word-limit
                >
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- <el-card header="订单参数" shadow="never">
            <el-row>
              <el-form-item
                style="float:left;width: 50%"
@@ -496,9 +380,9 @@
                ></el-input
              ></el-form-item>
            </el-row>
          </el-card>
          </el-card> -->
        </el-tab-pane>
        <el-tab-pane label="附件" type="card">
        <el-tab-pane label="OTC附件" type="card">
          <el-table :data="fileList" style="width: 100%" height="500">
            <el-table-column prop="original" label="文件名" align="center">
            </el-table-column>
@@ -716,7 +600,7 @@
            </el-col>
          </el-row>
        </el-tab-pane>
        <el-tab-pane label="工艺附件" type="card">
        <el-tab-pane label="附件上传" type="card">
          <div style="display: flex;justify-content:flex-end;">
            <div></div>
          </div>
@@ -796,14 +680,14 @@
                  @click="synchronizeFile(scope.row)"
                  type="text"
                  size="small"
                  :disabled="scope.row.lineNumber !== dataForm.otcLineNo"
                  :disabled="scope.row.lineNumber !== dataForm.customerNo"
                  >同步</el-button
                >
                <el-button
                  @click="delProcessConfigFile(scope.row)"
                  type="text"
                  size="small"
                  :disabled="scope.row.lineNumber !== dataForm.otcLineNo"
                  :disabled="scope.row.lineNumber !== dataForm.customerNo"
                  >删除</el-button
                >
                <el-button
@@ -815,286 +699,6 @@
              </template>
            </el-table-column>
          </el-table>
        </el-tab-pane>
        <el-tab-pane
          label="工艺配置单"
          type="card"
          style="height: 650px;overflow-y: auto"
        >
          <div
            style="margin: 5px 20px;display: flex;justify-content:space-between;"
          >
            <el-radio-group
              v-model="configContent.modelType"
              :disabled="configContent.id ? true : false"
              @change="changeModal"
            >
              <el-radio v-model="radio" label="01">模板1</el-radio>
              <el-radio v-model="radio" label="02">模板2</el-radio>
            </el-radio-group>
            <span style="right: 0;">
              <el-button
                :disabled="!configContent.id"
                type="danger"
                size="mini"
                v-thinclick="`deleteConfig`"
              >
                åˆ é™¤
              </el-button>
              <el-button type="success" size="mini" v-thinclick="`saveConfig`">
                ä¿å­˜
              </el-button>
              <el-button
                type="success"
                size="mini"
                v-thinclick="`saveConfigForAll`"
              >
                ä¿å­˜å¹¶åº”用至其他订单行
              </el-button>
            </span>
          </div>
          <el-divider content-position="left">配置单内容</el-divider>
          <!--模板1-->
          <div
            class="node-content-remark"
            v-if="configContent.modelType == configTypes[0].value"
          >
            <el-form
              class="configform1"
              :inline="true"
              ref="form"
              label-width="80px"
            >
              <el-form-item label="订单编号">
                <el-input v-model="configContent.proNo" readonly></el-input>
              </el-form-item>
              <el-form-item label="项目名称">
                <el-input v-model="configContent.proName" readonly></el-input>
              </el-form-item>
            </el-form>
            <!--            ç”Ÿäº§è¦æ±‚描述:-->
            <rich-text
              editor-id="editor1"
              :richContent="configContent.remark1"
              @contentChange="setConfigRemark1"
              placeholder="请输入生产要求描述"
            ></rich-text>
            <!--            å°å­—举例:-->
            <!--            <rich-text-->
            <!--              editor-id="editor2"-->
            <!--              :richContent="configContent.remark2"-->
            <!--              @contentChange="setConfigRemark2"-->
            <!--              placeholder="请输入印字举例"-->
            <!--            ></rich-text>-->
            <!--            æ³¨æ„ï¼š-->
            <!--            <rich-text-->
            <!--              editor-id="editor3"-->
            <!--              :richContent="configContent.remark3"-->
            <!--              @contentChange="setConfigRemark3"-->
            <!--              placeholder="请输入注意"-->
            <!--            ></rich-text>-->
            <!--            å¤‡æ³¨ï¼š-->
            <!--            <rich-text-->
            <!--              editor-id="editor4"-->
            <!--              :richContent="configContent.remark4"-->
            <!--              @contentChange="setConfigRemark4"-->
            <!--              placeholder="请输入备注"-->
            <!--            ></rich-text>-->
          </div>
          <!--模板2-->
          <div
            class="node-content-remark"
            v-if="configContent.modelType == configTypes[1].value"
          >
            <div
              class="node-content-remark2"
              style="width: 80%;margin-left: 30px;"
            >
              <el-button type="primary" size="mini" @click="getHistoryData"
                >获取</el-button
              >
              <el-form
                class="configform2"
                :inline="true"
                ref="form"
                label-width="80px"
              >
                <el-form-item label="合同编号:" style="width: 40%">
                  <el-input v-model="configContent.proNo" readonly></el-input>
                </el-form-item>
                <el-form-item label="项目名称:" style="width: 40%">
                  <el-input v-model="configContent.proName"></el-input>
                </el-form-item>
                <el-form-item label="印字要求:" style="width: 100%">
                  <el-input v-model="configContent.printReq"></el-input>
                </el-form-item>
              </el-form>
              <rich-text
                placeholder="生产规格型号及数量"
                editor-id="editorb1"
                :richContent="configContent.remark1"
                @contentChange="setConfigRemark1"
              ></rich-text>
              <rich-text
                placeholder="生产要求描述"
                editor-id="editorb2"
                :richContent="configContent.remark2"
                @contentChange="setConfigRemark2"
              ></rich-text>
              <el-form-item label="实际印字要求:" style="width: 80%">
                <el-input v-model="configContent.realPrintReq"></el-input>
              </el-form-item>
              <el-row class="bodyrow">
                <el-col :span="5">
                  <div class="param-top">
                    <div class="form-item" style="text-align: left">
                      <label>发泡缆芯(Φmm)</label>
                      <div style="color: #7A9EFD">
                        <el-input v-model="configContent.cableCore"></el-input>
                      </div>
                    </div>
                  </div>
                </el-col>
                <el-col :span="3">
                  <div style="text-align: right;padding-right: 20px">
                    æŠ¤å¥—模具:
                  </div>
                </el-col>
                <el-col :span="3">
                  <div class="param-top">
                    <div class="form-item">
                      <label>模芯(Φmm)</label>
                      <div style="color: #7A9EFD">
                        <el-input v-model="configContent.modelCore"></el-input>
                      </div>
                    </div>
                  </div>
                </el-col>
                <el-col :span="3">
                  <div class="param-top">
                    <div class="form-item">
                      <label>模套(Φmm)</label>
                      <div style="color: #7A9EFD">
                        <el-input
                          v-model="configContent.modelSleeve"
                        ></el-input>
                      </div>
                    </div>
                  </div>
                </el-col>
                <el-col :span="3"
                  ><div class="param-top">
                    <div class="form-item">
                      <label>定径模(Φmm)</label>
                      <div style="color: #7A9EFD">
                        <el-input
                          v-model="configContent.sizingModel"
                        ></el-input>
                      </div>
                    </div>
                  </div>
                </el-col>
                <el-col :span="3"
                  ><div class="param-top">
                    <div class="form-item">
                      <label>过模(Φmm)</label>
                      <div style="color: #7A9EFD">
                        <el-input
                          v-model="configContent.strandModel"
                        ></el-input>
                      </div>
                    </div>
                  </div>
                </el-col>
              </el-row>
              <!--              <rich-text-->
              <!--                placeholder="产品的性能要求"-->
              <!--                editor-id="editorb3"-->
              <!--                :richContent="configContent.remark3"-->
              <!--                @contentChange="setConfigRemark3"-->
              <!--              ></rich-text>-->
              <div>
                äº§å“çš„æ€§èƒ½è¦æ±‚:20℃时的电气特征
              </div>
              <el-table
                :data="configContent.processConfigDataList"
                style="width: 100%;margin-top: 10px"
                border
              >
                <el-table-column prop="date" label="频率(MHz)">
                  <template slot-scope="scope">
                    <el-input v-model="scope.row.frequency"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="name" label="最大传送衰减(dB/km)">
                  <template slot-scope="scope">
                    <el-input v-model="scope.row.deliveryReduce"></el-input>
                  </template>
                </el-table-column>
                <el-table-column
                  prop="province"
                  label="耦合损耗max(dB),2ç±³,95%"
                >
                  <template slot-scope="scope">
                    <el-input v-model="scope.row.couplingLoss"></el-input>
                  </template>
                </el-table-column>
                <el-table-column fixed="right" label="操作" width="120">
                  <template slot-scope="scope">
                    <el-button
                      @click.native.prevent="deleteConfigTableRow(scope.$index)"
                      type="text"
                      size="small"
                    >
                      åˆ é™¤
                    </el-button>
                    <el-button
                      v-if="
                        scope.$index ==
                          configContent.processConfigDataList.length - 1
                      "
                      @click.native.prevent="addConfigTableRow(scope.$index)"
                      type="text"
                      size="small"
                    >
                      æ–°å¢ž
                    </el-button>
                  </template>
                </el-table-column>
              </el-table>
              <el-form-item
                label="工作频带内驻波比:"
                style="width: 80%"
                label-width="120px"
              >
                <el-input v-model="configContent.workFrequency"></el-input>
              </el-form-item>
              <el-form-item
                label="频率范围:"
                style="width: 80%"
                label-width="120px"
              >
                <el-input v-model="configContent.frequencyRange"></el-input>
              </el-form-item>
              <el-form-item
                label="直流电阻:"
                style="width: 80%"
                label-width="120px"
              >
                <el-input v-model="configContent.resistance"></el-input>
              </el-form-item>
              <rich-text
                placeholder="请输入"
                editor-id="editorb4"
                :richContent="configContent.remark4"
                @contentChange="setConfigRemark4"
              ></rich-text>
            </div>
          </div>
        </el-tab-pane>
      </el-tabs>
    </el-form>
@@ -1144,6 +748,7 @@
  getCustomerOrder,
  addCustomerOrder,
  putCustomerOrder,
  updateCustomerOrderById,
  download,
  getOtcCustomerOrderFileList,
  otcDownload,
@@ -1201,14 +806,35 @@
      dataForm: {
        id: 0,
        sourceId: '',
        customerOrderNo: '',
        contractNo: '',
        customerNo: '',
        customerName: '',
        coState: '',
        coLineNo: '',
        returnStatus: '',
        deliveryDate: '',
        salesMan: '',
        salerWorkCode: '',
        manufactureAttr: '',
        buyQtyDue: 0,
        productName: '',
        productType: '',
        partNo: '',
        docNumber: '',
        shippingAddress: '',
        remark: '',
        otcUnit: '',
        coState: '',
        customerPartSpec: '',
        entityName: '',
        factoryPlaceOrderDate: '',
        isCp: '',
        originalContractStatus: '',
        placeOrderDate: '',
        province: '',
        customerOrderNo: '',
        coLineNo: '',
        customerPartName: '',
        buyQtyDue: '',
        otcQuantity: '',
        wantedDeliveryDate: '',
        plannedDeliveryDate: '',
        customerPoNo: '',
@@ -1224,11 +850,7 @@
        ifsSalesUnit: null,
        ifsConvFactor: null,
        unit: null,
        otcUnit: null,
        otcQuantity: null,
        docNumber: null,
        manufactureAttr: 'N',
        customerPartSpec: null,
        division: null,
        printType: null,
        printingRequirements: null,
@@ -1237,14 +859,10 @@
        qualityRequire: null,
        otherProductRequire: null,
        divisionSystem: null,
        shippingAddress: null,
        salesmanName: null,
        lengthRequirement: null,
        remark: null,
        otcPartSync: null,
        finalCustomerName: null,
        productGroup: null,
        productType: null,
        centralizedMiningProperty: null,
        orderDescription: null,
        otcLineNo: null,
@@ -1381,7 +999,7 @@
      if (!this.dataForm.id) {
        return true
      }
      if (this.dataForm.id && this.dataForm.sourceId !== 'GSM') {
      if (this.dataForm.id && (this.dataForm.sourceId != null && this.dataForm.sourceId !== 'GSM')) {
        return true
      }
      return false
@@ -1392,6 +1010,11 @@
    this.getManufactureAttrs('manufacture_attr_type')
  },
  methods: {
    tabsClick(tab,even){
      if(tab.index == 2){
          this.getConfigFiles();
      }
    },
    init(id) {
      this.orderParamList = []
      this.dataForm.id = id || 0
@@ -1417,9 +1040,13 @@
            // } else {
            //   console.log('2')
            this.dataForm = response.data.data
            // }
            // this.fileList = response.data.data.customerOrderAttachmentList
            this.getFileList()
            const sourceId = response.data.data.sourceId
            if(sourceId === '0'){
              this.getFileList()
            }
            this.orderParamList = response.data.data.orderParamList
            this.title =
              this.dataForm.customerName + this.dataForm.customerOrderNo
@@ -1431,7 +1058,6 @@
            // this.this.configContent.modelType = '01'
            // this.configContent.orderId = this.dataForm.id
            // this.configContent.orderId = response.data.data.customerOrderNo
            console.log(response.data.data)
            if (response.data.data.processConfigDTO) {
              // æœ‰ä¿å­˜çš„æ•°æ®
              this.configContent = response.data.data.processConfigDTO
@@ -1475,7 +1101,7 @@
    },
    getFileList() {
      this.fileList = []
      const queryParam = { orderNumber: this.dataForm.customerOrderNo }
      const queryParam = { orderNumber: this.dataForm.contractNo }
      getOtcCustomerOrderFileList(queryParam).then((response) => {
        const resData = response.data
        if (resData.code === 0) {
@@ -1529,7 +1155,7 @@
      this.$refs.dataForm.validate((valid) => {
        if (valid) {
          if (this.dataForm.id) {
            putCustomerOrder(this.dataForm)
            updateCustomerOrderById(this.dataForm)
              .then((data) => {
                this.$message.success('修改成功')
                this.visible = false
@@ -1631,8 +1257,8 @@
    delOutPutBatch(row) {},
    addOutPutBatch() {},
    submitUpload() {
      this.paramData.orderNumber = this.dataForm.customerOrderNo
      this.paramData.lineNumber = this.dataForm.otcLineNo
      this.paramData.orderNumber = this.dataForm.contractNo
      this.paramData.lineNumber = this.dataForm.customerNo
      this.progrecessFileLoading = true
    },
    uploadSuccess() {
@@ -1641,8 +1267,8 @@
    },
    getConfigFiles() {
      const param = {
        orderNumber: this.dataForm.customerOrderNo,
        lineNumber: this.dataForm.otcLineNo
        orderNumber: this.dataForm.contractNo,
        lineNumber: this.dataForm.customerNo
      }
      getProcessConfigFiles(param).then((res) => {
        this.processConfigFileTableData = res.data.data
src/views/plan/customerorder/index.vue
@@ -12,7 +12,7 @@
        ref="customerOrderTable"
      >
        <template #toolbar>
          <el-dropdown
          <!-- <el-dropdown
            v-if="permissions.customerorder_state_change"
            @command="handleCommand"
          >
@@ -23,11 +23,11 @@
              <el-dropdown-item
                :command="item.command"
                v-for="item in stateTagArr"
                :disabled="item.disabled"
                >{{ item.label }}</el-dropdown-item
              >
                :disabled="item.disabled">
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          </el-dropdown> -->
          <el-dropdown
            v-if="permissions.customerorder_doc_relate"
            @command="documentHandle"
@@ -40,8 +40,7 @@
              <el-dropdown-item
                :command="item.command"
                v-for="item in documentTagArr"
                :disabled="item.disabled"
              >
                :disabled="item.disabled">
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
@@ -64,23 +63,23 @@
              >
            </el-dropdown-menu>
          </el-dropdown>
          <el-button
          <!-- <el-button
            v-if="permissions.customerorder_push_otc"
            style="margin-left:10px;"
            type="primary"
            @click="pushOtc"
            >推送ERP</el-button
          >
          <el-button
          > -->
          <!-- <el-button
            style="margin-left:10px;"
            type="primary"
            @click="importOutPutBatch"
            >导入产出批次</el-button
          >
          > -->
          <el-button
            style="margin-left:10px;"
            type="primary"
            @click="exportStandBook"
            @click="()=>exportDialogVisible=true"
            >导出台账</el-button
          >
          <el-button
@@ -189,6 +188,26 @@
        </span>
        <span slot="footer" class="dialog-footer"> </span>
      </el-dialog>
      <!-- å¯¼å‡º -->
      <el-dialog title="导出台账" :visible.sync="exportDialogVisible" width="20%">
        <div style="display: flex;justify-content: center">
          <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="exportForm" class="l-mes">
            <el-form-item label="日期" prop="exportTime">
              <el-date-picker
                v-model="dataForm.exportTime"
                type="datetime"
                style="width:100%"
                placeholder="选择日期时间"
                value-format="yyyy-MM-dd HH:mm:ss">
              </el-date-picker>
            </el-form-item>
          </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="exportDialogVisible=false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="exportStandBook">ç¡® å®š</el-button>
      </span>
    </el-dialog>
      <!-- ç®±ç ä¿¡æ¯å¯¼å‡º -->
      <el-dialog
        title="箱码信息导出"
@@ -240,18 +259,18 @@
      </el-dialog>
    </basic-container>
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="30%">
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="20%">
      <div style="display: flex;justify-content: center">
        <el-date-picker
          v-model="syncDate"
          type="daterange"
          value-format="yyyy-MM-dd"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :picker-options="pickerOptions"
        >
        </el-date-picker>
        <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="dataForm" class="l-mes">
          <el-form-item label="日期">
            <el-date-picker
              v-model="dataForm.selectTime"
              type="datetime"
              placeholder="选择日期时间"
              value-format="yyyy-MM-dd HH:mm:ss">
            </el-date-picker>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="syncDateVisible = false">取 æ¶ˆ</el-button>
@@ -273,6 +292,7 @@
import MpsRequirements from './mps-requirements'
import SalesPartBatchDialog from './sales-part-batch.vue'
import CustomerorderReturnDialog from './customerorder-return.vue'
import { otcCustomerOrderSync } from '@/api/plan/customerorder'
import {
  delCustomerOrder,
  fetchListCustomerOrder,
@@ -300,6 +320,13 @@
export default {
  data() {
    return {
      dataForm: {
        selectTime: null,
        exportTime: null
      },
      dataRule: {
        exportTime:[{required:true,message:'导出日期不能为空',trigger:'change'}]
      },
      pickerOptions: {
        onPick: ({ maxDate, minDate }) => {
          if (minDate && this.pickerMinDate) {
@@ -318,6 +345,7 @@
          return false
        }
      },
      exportDialogVisible: false,
      syncDateVisible: false,
      syncDate: [],
      showCustomerorderReturn: false,
@@ -419,9 +447,8 @@
          {
            minWidth: '100',
            width: '100px',
            prop: 'customerOrderNo',
            prop: 'contractNo',
            label: '合同编号',
            // label: '订单号',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -431,8 +458,7 @@
          {
            minWidth: '120',
            prop: 'entityName',
            label: '合同主题',
            sort: false,
            label: '工程名称',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -445,6 +471,19 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'sourceId',
            label: '添加来源',
            isTag: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.getSourceId,
            optList: () => {
              return this.sourceIdList
            }
          },
          {
            minWidth: '200',
@@ -460,42 +499,13 @@
          {
            minWidth: '120',
            prop: 'placeOrderDate',
            label: '签订日期',
            label: '下单日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'factoryPlaceOrderDate',
            label: '开始日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'endTime',
            label: '终止日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          // {
          //   minWidth: '120',
          //   prop: 'customerNo',
          //   label: '客户编号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'customerName',
@@ -505,16 +515,6 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'customerContractNo',
          //   label: '客户订单号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'coState',
@@ -541,108 +541,20 @@
              return this.isAuditList
            }
          },
          {
            minWidth: '80',
            prop: 'ifsDeliveryNo',
            label: '合同分类',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'ifsLineItemNo',
            label: '合同来源',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'returnStatus',
            label: '合同状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'originalContractStatus',
            label: '出库状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'ifsSalesUnit',
            label: '启用状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'coLineNo',
          //   label: 'GSM行号',
          //   minWidth: '80',
          //   prop: 'sourceId',
          //   label: '订单来源',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '120',
          //   prop: 'otcLineNo',
          //   label: 'OTC行号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // // çŠ¶æ€
          // {
          //   minWidth: '120',
          //   prop: 'otcPartSync',
          //   label: 'OTC推送状态',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'select',
          //   optList: () => {
          //     return this.getOtcPartSyncOptionList()
          //   },
          //   formatter: (row, column, cellValue) => {
          //     var formatVal
          //     if (cellValue == null) {
          //       formatVal = ''
          //     } else if (cellValue) {
          //       formatVal = '已同步'
          //     } else {
          //       formatVal = '未同步'
          //     }
          //     return formatVal
          //   }
          // },
          // {
          //   minWidth: '120',
          //   prop: 'verifyDate',
          //   label: 'OTC审核时间',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'datetimerange'
          // },
          {
            minWidth: '120',
            width: '100px',
            prop: 'partNo',
            label: '零件号',
            label: '产品编号',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -651,8 +563,8 @@
          {
            minWidth: '120',
            width: '100px',
            prop: 'customerPartName',
            label: '零件名称',
            prop: 'productName',
            label: '产品名称',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -662,7 +574,7 @@
            minWidth: '120',
            width: '100px',
            prop: 'productType',
            label: '型号',
            label: '隶属品牌',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -671,7 +583,7 @@
            minWidth: '120',
            width: '100px',
            prop: 'otcUnit',
            label: '零件属性',
            label: '单位',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -688,45 +600,8 @@
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'outerColor',
            label: '外护颜色',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'otcQuantity',
            label: '销售数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'otcUnit',
            label: '销售单位',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'buyQtyDue',
            label: '库存数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'unit',
            label: '零件单位',
            label: '数量',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -734,253 +609,6 @@
          },
          {
            minWidth: '140',
            prop: 'requireNumber',
            label: '已下发数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'customerPartSpec',
            label: '客户零件规格',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'finalCustomerName',
            label: '最终客户名称',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'productGroup',
            label: '产品分组',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'productType',
            label: '产品类型',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'centralizedMiningProperty',
            label: '采集性质',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'orderDescription',
            label: '订单说明',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'division',
            label: '事业部',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printType',
            label: '印字方式',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printingRequirements',
            label: '印字要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printContent',
            label: '印字内容',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'packageRequire',
            label: '包装要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'qualityRequire',
            label: '质量要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'otherProductRequire',
            label: '生产需求说明',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'divisionSystem',
            label: '系统',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'shippingAddress',
            label: '收货地址',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'salesmanName',
            label: '业务员',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'lengthRequirement',
            label: '盘长要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'remark',
            label: '订单行备注',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'comment',
            label: '订单头备注',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '80',
          //   prop: 'ifsLineNo',
          //   label: 'IFS行号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '80',
          //   prop: 'ifsDeliveryNo',
          //   label: 'IFS交货号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '80',
          //   prop: 'ifsLineItemNo',
          //   label: 'IFS行项号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '80',
            prop: 'salesPartNo',
            label: '销售件号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'salesPartName',
            label: '销售件描述',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            width: '120',
            prop: 'wantedDeliveryDate',
            label: '期望交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '200',
            width: '120',
            prop: 'plannedDeliveryDate',
            label: '计划交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'manufactureAttr',
            label: '制造属性',
            sort: true,
@@ -989,41 +617,77 @@
            searchInfoType: 'select',
            formatter: this.getManufactureAttr,
            optList: () => {
              return this.manufactureAttrs
              return this.manufactureAttrList
            }
          }
          // {
          //   minWidth: '200',
          //   width: '120',
          //   prop: 'createTime',
          //   label: '创建时间',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'datetimerange',
          //   formatter: this.formatDutyDate
          // }
          },
          {
            minWidth: '140',
            prop: 'customerPartSpec',
            label: '规格型号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'returnStatus',
            label: '合同正本状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'originalContractStatus',
            label: '正本状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'salesMan',
            label: '业务员',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            width: '120',
            prop: 'deliveryDate',
            label: '交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
        ],
        toolbar: [],
        operator: [
          {
            text: '订单说明',
            type: 'text',
            size: 'small',
            fun: this.openCustomerOrder
          },
          {
            text: '查看库存',
            type: 'text',
            size: 'small',
            fun: this.stockHandle
          },
          {
            text: '箱码信息导出',
            type: 'text',
            size: 'small',
            fun: this.packageExportHandle
          },
          // {
          //   text: '订单说明',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.openCustomerOrder
          // },
          // {
          //   text: '查看库存',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.stockHandle
          // },
          // {
          //   text: '箱码信息导出',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.packageExportHandle
          // },
          {
            text: '作废',
            type: 'text',
@@ -1043,7 +707,7 @@
        operatorConfig: {
          fixed: 'right',
          label: '操作',
          width: 260,
          width: 100,
          minWidth: 100
        }
      },
@@ -1074,6 +738,16 @@
          label: '订单编辑'
        }
      ],
      manufactureAttrList: [{
        label: '普通',
        value: 'N'
      },{
        label: '样品',
        value: 'S'
      },{
        label: '研发',
        value: 'D'
      }],
      isAuditList: [
        {
          value: '01draft',
@@ -1092,6 +766,13 @@
          label: '退回'
        }
      ],
      sourceIdList: [{
        label: '同步',
        value: '0'
      },{
        label: '手动',
        value: '1'
      }],
      stockVisible: false,
      partName: null,
      showPullCustomerOrderVisible: false,
@@ -1153,6 +834,11 @@
    ...mapGetters(['permissions'])
  },
  watch: {
    exportDialogVisible(newVal) {
      if (!newVal) {
        this.$refs.exportForm.resetFields()
      }
    },
    coState: {
      handler(newValue, oldValue) {
        if (newValue) {
@@ -1166,7 +852,7 @@
    this.initQueryParams()
  },
  created() {
    this.getManufactureAttrs()
    // this.getManufactureAttrs()
    this.getTitles()
    /**
     * {
@@ -1222,25 +908,25 @@
        permitArr: []
      })
    }
    if (this.permissions.customerorder_ifs_line) {
      this.table.toolbar.push({
        text: '获取ERP行号',
        type: 'primary',
        fun: this.pullIfsLineNo,
        disabled: false,
        permitArr: [],
        loading: false
      })
    }
    // if (this.permissions.customerorder_ifs_line) {
    //   this.table.toolbar.push({
    //     text: '获取ERP行号',
    //     type: 'primary',
    //     fun: this.pullIfsLineNo,
    //     disabled: false,
    //     permitArr: [],
    //     loading: false
    //   })
    // }
    if (this.permissions.customerorder_submit_oa) {
      this.table.toolbar.push({
        text: '提交审核',
        type: 'primary',
        fun: this.auditCustomerOrder,
        disabled: false,
        permitArr: [],
        loading: false
      })
      // this.table.toolbar.push({
      //   text: '提交审核',
      //   type: 'primary',
      //   fun: this.auditCustomerOrder,
      //   disabled: false,
      //   permitArr: [],
      //   loading: false
      // })
    }
    if (this.permissions.customerorder_set_salesparts) {
      this.table.toolbar.push({
@@ -1267,9 +953,9 @@
      queryParam.push(
        Object.assign({
          prop: 'coState',
          searchInfoType: 'select',
          searchInfoType: 'select'
          // propVal: '01partUnCheck'
          propVal: '02technologyUnCheck'
          // propVal: '02technologyUnCheck'
        })
      )
      this.$refs.customerOrderTable.setQueryParam(queryParam)
@@ -1288,18 +974,19 @@
    },
    // åˆ›å»ºä¸»ç”Ÿäº§è®¡åˆ’
    masterPlanHandle() {
      console.log(this.multipleSelection);
      if (this.multipleSelection && this.multipleSelection.length > 0) {
        if (this.judgeCoState(this.multipleSelection)) {
          // åˆ¤æ–­ä¸€ä¸‹å‰©ä½™æ•°é‡æ˜¯å¦å¤§äºŽ0
          for (let i = 0, len = this.multipleSelection.length; i < len; i++) {
            if (
              this.multipleSelection[i].buyQtyDue -
                this.multipleSelection[i].requireNumber <=
              0
            ) {
              this.$message.error('请选库存数量大于已下发数量的销售订单')
              return
            }
            // if (
            //   this.multipleSelection[i].buyQtyDue -
            //     this.multipleSelection[i].requireNumber <=
            //   0
            // ) {
            //   this.$message.error('请选库存数量大于已下发数量的销售订单')
            //   return
            // }
            if (
              !(
                this.multipleSelection[i].isAudit != null &&
@@ -1587,23 +1274,31 @@
      })
      return cellValue
    },
    getManufactureAttr(row, column, cellValue) {
      this.manufactureAttrs.forEach((obj) => {
    getSourceId(row, column, cellValue) {
      this.sourceIdList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
      })
      return cellValue
    },
    getManufactureAttrs() {
      remote('manufacture_attr_type').then((response) => {
        if (response.data.code === 0) {
          this.manufactureAttrs = response.data.data
        } else {
          this.manufactureAttrs = []
    getManufactureAttr(row, column, cellValue) {
      this.manufactureAttrList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
      })
      return cellValue
    },
    // getManufactureAttrs() {
    //   remote('manufacture_attr_type').then((response) => {
    //     if (response.data.code === 0) {
    //       this.manufactureAttrs = response.data.data
    //     } else {
    //       this.manufactureAttrs = []
    //     }
    //   })
    // },
    getTitles() {
      remote('order_export_title_type').then((response) => {
        if (response.data.code === 0) {
@@ -1752,7 +1447,7 @@
                  '存在销售订单已关联工艺文件,如需更改,请先解除关联'
                )
              }
              if (item.salesPartNo == null || item.salesPartNo === '') {
              if (item.partNo == null || item.partNo === '') {
                status = true
                this.$message.error('存在销售订单未绑定销售件,请先绑定')
              }
@@ -1907,11 +1602,18 @@
      // } else {
      //   this.$message.error('请选择至少一条销售订单')
      // }
      exportCustomerOrder(this.$refs.customerOrderTable.getQueryParam())
        .then((response) => {
          transform(response)
        })
        .catch(() => {})
      this.$refs['exportForm'].validate(valid => {
        if(valid){
          const exportTime = this.dataForm.exportTime
          let queryParam=this.$refs.customerOrderTable.getQueryParam();
          queryParam.selectTime = exportTime
          exportCustomerOrder(queryParam)
            .then((response) => {
              transform(response)
            })
            .catch(() => {})
        }
      })
    },
    setSalesPart() {
      if (this.multipleSelection.length > 0) {
@@ -1942,28 +1644,37 @@
      this.syncDateVisible = false
      this.table.toolbar.find((e) => e.text === '获取销售订单').loading = true
      syncOrder({
        startTime: this.syncDate[0],
        endTime: this.syncDate[1]
      })
        .then((res) => {
          this.table.toolbar.find(
            (e) => e.text === '获取销售订单'
          ).loading = false
          const resData = res.data
          if (resData.code === 0) {
            this.$message.success(resData.data)
            this.getData()
          } else {
            this.$message.error('同步失败')
          }
      if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
        otcCustomerOrderSync({
          selectTime: this.dataForm.selectTime,
          pathCode: '1'
        })
        .catch((e) => {
          this.table.toolbar.find(
            (e) => e.text === '获取销售订单'
          ).loading = false
          this.$forceUpdate()
        })
          .then((response) => {
            this.table.toolbar.find(
              (e) => e.text === '获取销售订单'
            ).loading = false
            const resData = response.data
            if (resData.code === 0) {
              this.$message.success('拉取销售订单成功;' + resData.msg)
              this.dataForm.selectTime = null
              this.$emit('refreshDataList')
              this.getData()
            } else {
              this.$message.success('拉取销售订单失败')
            }
          })
          .catch((e) => {
            this.table.toolbar.find(
              (e) => e.text === '获取销售订单'
            ).loading = false
            this.$forceUpdate()
          })
      } else {
        this.table.toolbar.find(
          (e) => e.text === '获取销售订单'
        ).loading = false
        this.$message.error('请先选择日期')
      }
    }
  }
}
src/views/plan/customerorder/sample-customerorder-form.vue
@@ -51,30 +51,40 @@
              <el-input v-model="dataForm.entityName" placeholder=""></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
          <!-- <el-col :span="6">
            <el-form-item label="事业部" prop="salesDepartment">
              <el-input
                v-model="dataForm.salesDepartment"
                placeholder=""
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          </el-col> -->
          <el-col :span="6">
            <el-form-item label="省份" prop="province">
              <el-input v-model="dataForm.province" placeholder=""></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <el-form-item label="业务员" prop="salesMan">
              <el-input v-model="dataForm.salesMan" placeholder=""></el-input>
              <el-select @change="selsctionSales" v-model="salesSelectData" style="width:100%">
                <el-option v-for="(item,index) in staffOptions" :key="index" :value="item" :label="item.staffName"/>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="正本状态" prop="originalContractStatus">
              <el-input
                v-model="dataForm.originalContractStatus"
                placeholder=""
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="合同正本状态" prop="returnStatus">
              <el-input
                v-model="dataForm.returnStatus"
                placeholder=""
              ></el-input>
            </el-form-item>
@@ -89,14 +99,6 @@
          <el-col :span="6">
            <el-form-item label="客户编码" prop="customerNo">
              <el-input v-model="dataForm.customerNo" placeholder=""></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="合同正本状态" prop="returnStatus">
              <el-input
                v-model="dataForm.returnStatus"
                placeholder=""
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
@@ -121,14 +123,59 @@
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="交货日期" prop="deliveryDate">
              <el-date-picker
                v-model="dataForm.deliveryDate"
                style="width: 100%"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <el-form-item label="订单备注" prop="comment">
              <el-input
                v-model="dataForm.comment"
                style="width: 100%"
                type="textarea"
                :rows="1"
              >
              </el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <el-divider
      ><span style="font-weight:bold;font-size:16px;">订单行</span></el-divider
    >
    <div class="l-mes normal-form">
    <el-divider>
      <span style="font-weight:bold;font-size:16px;">订单行</span>
    </el-divider>
    <div>
      <avue-crud ref="crud"
        show-hide="false"
        :option="option"
        :data="tableData">
          <template slot="partNo" slot-scope="scope">
            <el-input v-model="scope.row.partNo" placeholder="查询零件号" readonly>
                <el-button slot="append" icon="el-icon-search" @click="openPartDialog(scope.row.$index)"></el-button>
            </el-input>
          </template>
          <template slot="otcUnit" slot-scope="scope">
            <el-select v-model="scope.row.otcUnit" placeholder="请选择单位" style="width: 100%">
              <el-option
                v-for="item in units"
                :key="item.value"
                :label="item.label"
                :value="item.value" />
            </el-select>
          </template>
      </avue-crud>
    </div>
    <!-- <div class="l-mes normal-form">
      <el-row :gutter="20">
        <el-col :span="2">
          <span>零件号</span>
@@ -231,26 +278,6 @@
          ></el-input>
        </el-col>
        <el-col :span="2">
          <span>印字类型</span>
        </el-col>
        <el-col :span="6">
          <el-input
            v-model="dataForm.customerOrder.printType"
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>印字要求</span>
        </el-col>
        <el-col :span="6">
          <el-input
            v-model="dataForm.customerOrder.printingRequirements"
            placeholder=""
          ></el-input>
        </el-col>
        <el-col :span="2">
          <span>包装要求</span>
        </el-col>
        <el-col :span="6">
@@ -259,6 +286,8 @@
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>质量要求</span>
        </el-col>
@@ -268,8 +297,6 @@
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>生产需求说明</span>
        </el-col>
@@ -288,6 +315,8 @@
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>收货地址</span>
        </el-col>
@@ -297,16 +326,13 @@
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>业务员</span>
        </el-col>
        <el-col :span="6">
          <el-input
            v-model="dataForm.customerOrder.salesmanName"
            placeholder=""
          ></el-input>
          <el-select v-model="dataForm.customerOrder.salesmanName" style="width:100%">
                <el-option v-for="(item,index) in staffOptions" :key="index" :value="item.staff_no" :label="item.staffName"/>
          </el-select>
        </el-col>
        <el-col :span="2">
          <span>盘长要求</span>
@@ -317,6 +343,8 @@
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="2">
          <span>备注</span>
        </el-col>
@@ -326,8 +354,17 @@
            placeholder=""
          ></el-input>
        </el-col>
        <el-col :span="2">
          <span>产品类型</span>
        </el-col>
        <el-col :span="6">
          <el-input
            v-model="dataForm.customerOrder.productType"
            placeholder=""
          ></el-input>
        </el-col>
      </el-row>
    </div>
    </div> -->
    <span slot="footer" class="dialog-footer">
      <el-button @click="visible = false">取消</el-button>
@@ -370,6 +407,9 @@
import { remote } from '@/api/admin/dict'
import PartDialog from '@/views/common/part.vue'
import { validateSixDecimal } from '@/util/validate'
import {dateFormat} from '@/util/date'
import { chooseStaff } from '@/api/admin/productType'
import { tableOption } from '@/const/crud/customerOrder/customerOrderForm'
export default {
  components: {
@@ -377,45 +417,46 @@
  },
  data() {
    return {
      salesSelectData: null,
      currentSelectRow: 0,
      option: tableOption,
      tableData: [{
          "$cellEdit": true,
          "$index": 0,
          "partNo": "",
          "customerPartSpec": "",
          "manufactureAttr": "",
          "productName": "",
          "productType": "",
          "otcUnit": "",
          "buyQtyDue": "",
          "shippingAddress": "",
          "remark": "",
          "isTrusted": true
      }],
      staffOptions: [],
      title: '',
      isFullScreen: false,
      visible: false,
      buttonDisable: false,
      showPart: false,
      dataForm: {
        id: 0,
        contractNo: null,
        customerName: null,
        entityName: null,
        salesDepartment: null,
        province: null,
        salesMan: null,
        originalContractStatus: null,
        isCp: null,
        customerNo: null,
        returnStatus: null,
        placeOrderDate: null,
        customerOrderVOList: [],
        deliveryDate: null,
        entityName: null,
        factoryPlaceOrderDate: null,
        customerOrder: {
          partNo: null,
          unit: null,
          buyQtyDue: null,
          voltAgeClass: null,
          productName: null,
          manufactureAttr: 'S',
          outerColor: null,
          customerPartSpec: null,
          printType: null,
          printingRequirements: null,
          packageRequire: null,
          qualityRequire: null,
          otherProductRequire: null,
          divisionSystem: null,
          shippingAddress: null,
          salesmanName: null,
          lengthRequirement: null,
          remark: null
        }
        salesDepartment: null,
        isCp: null,
        originalContractStatus: null,
        placeOrderDate: null,
        province: null,
        returnStatus: null,
        salesMan: null,
        salerWorkCode: null,
        comment: null
      },
      dataRule: {},
      units: [],
@@ -425,8 +466,18 @@
  mounted: function() {
    this.getDicUnit('unit') // èŽ·å–å•ä½
    this.getManufactureAttrs('manufacture_attr_type')
    this.getStaffOptions();
  },
  methods: {
    selsctionSales(data){
        this.dataForm.salesMan =  data.staffName
        this.dataForm.salerWorkCode = data.staffNo
    },
    getStaffOptions(){
      chooseStaff().then((response)=>{
        this.staffOptions = response.data.data
      })
    },
    init(id) {
      this.initDataForm()
      this.visible = true
@@ -435,46 +486,44 @@
      })
    },
    initDataForm() {
      this.dataForm.id = 0
      this.dataForm.contractNo = null
      this.dataForm.customerName = null
      this.dataForm.entityName = null
      this.dataForm.salesDepartment = null
      this.dataForm.province = null
      this.dataForm.salesMan = null
      this.dataForm.originalContractStatus = null
      this.dataForm.isCp = null
      this.dataForm.customerNo = null
      this.dataForm.returnStatus = null
      this.dataForm.placeOrderDate = null
      this.dataForm.factoryPlaceOrderDate = null
      this.dataForm.customerOrder.partNo = null
      this.dataForm.customerOrder.unit = null
      this.dataForm.customerOrder.buyQtyDue = null
      this.dataForm.customerOrder.voltAgeClass = null
      this.dataForm.customerOrder.productName = null
      this.dataForm.customerOrder.manufactureAttr = 'S'
      this.dataForm.customerOrder.outerColor = null
      this.dataForm.customerOrder.customerPartSpec = null
      this.dataForm.customerOrder.printType = null
      this.dataForm.customerOrder.printingRequirements = null
      this.dataForm.customerOrder.packageRequire = null
      this.dataForm.customerOrder.qualityRequire = null
      this.dataForm.customerOrder.otherProductRequire = null
      this.dataForm.customerOrder.divisionSystem = null
      this.dataForm.customerOrder.shippingAddress = null
      this.dataForm.customerOrder.salesmanName = null
      this.dataForm.customerOrder.lengthRequirement = null
      this.dataForm.customerOrder.remark = null
      this.dataForm.placeOrderDate = dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss')
      this.dataForm.factoryPlaceOrderDate = dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss')
      this.dataForm.deliveryDate = null
      this.dataForm.comment = null
      this.dataForm.customerOrderVOList = [{
          "$cellEdit": true,
          "$index": 0,
          "partNo": "",
          "customerPartSpec": "",
          "manufactureAttr": "",
          "productName": "",
          "productType": "",
          "otcUnit": "",
          "buyQtyDue": "",
          "shippingAddress": "",
          "remark": "",
          "isTrusted": true
      }]
    },
    // è¡¨å•提交
    dataFormSubmit() {
      this.buttonDisable = true
      this.$refs.dataForm.validate((valid) => {
        this.dataForm.customerOrderVOList = this.tableData
        if (valid) {
          addObj(this.dataForm)
            .then((data) => {
              this.$message.success('添加成功')
              this.initDataForm();
              this.visible = false
              this.buttonDisable = false
              this.$emit('refreshDataList', 1)
@@ -488,12 +537,17 @@
      })
    },
    // é›¶ä»¶é€‰æ‹©
    openPartDialog() {
    openPartDialog(index) {
      this.currentSelectRow = index
      this.showPart = true
    },
    selectPart(part) {
      console.log(part);
      const index = this.currentSelectRow
      if (part) {
        this.dataForm.customerOrder.partNo = part.partNo
        this.tableData[index].partNo = part.partNo
        this.tableData[index].customerPartSpec = part.specs
        this.tableData[index].productName = part.partName
      }
    },
    // å…¨å±
src/views/plan/customerorder/schedule-table.vue
@@ -31,7 +31,7 @@
            width="120px"
          >
            <template slot-scope="scope">
              <el-form-item>{{ scope.row.customerOrderNo }}</el-form-item>
              <el-form-item>{{ scope.row.contractNo }}</el-form-item>
            </template>
          </el-table-column>
          <el-table-column
@@ -53,7 +53,7 @@
          >
            <template slot-scope="scope">
              <el-form-item class="inline-el-hidden">{{
                scope.row.partName
                scope.row.productName
              }}</el-form-item>
            </template>
          </el-table-column>
@@ -103,7 +103,7 @@
            width="60px"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.unit }}</span>
              <span>{{ scope.row.otcUnit }}</span>
            </template>
          </el-table-column>
          <el-table-column
@@ -138,7 +138,7 @@
            width="160px"
          >
            <template slot-scope="scope">
              <el-form-item>{{ scope.row.wantedDeliveryDate }}</el-form-item>
              <el-form-item>{{ scope.row.deliveryDate }}</el-form-item>
            </template>
          </el-table-column>
          <el-table-column
src/views/plan/manufacturingorder/index.vue
@@ -65,7 +65,7 @@
              >
            </el-dropdown-menu>
          </el-dropdown>
          <el-button
          <!-- <el-button
            v-if="permissions.manufacturingorder_orderto_ifs"
            @click="commitOrderIfs()"
            type="primary"
@@ -88,7 +88,7 @@
            style="margin-left:10px;"
            :loading="loadingStructIfs"
            >物料同步ERP
          </el-button>
          </el-button> -->
          <el-button
            v-if="permissions.manufacturingorder_refresh_ifsorder"
            @click="refreshIfsorder()"
@@ -324,7 +324,7 @@
            sort: true,
            isTrue: true,
            formatter: this.formatState,
            propVal: '01planned',
            propVal: '',
            isSearch: true,
            searchInfoType: 'select',
            optList: () => {
src/views/plan/masterproductionschedule/index.vue
@@ -46,7 +46,7 @@
            </el-dropdown-menu>
          </el-dropdown>
          <el-dropdown
          <!-- <el-dropdown
            v-if="permissions.masterproductionschedule_doc_relate"
            @command="documentHandle"
            style="margin-left: 10px"
@@ -63,7 +63,7 @@
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          </el-dropdown> -->
          <!--审核状态改变-->
          <el-dropdown
            v-if="permissions.masterproductionschedule_audit_change"
@@ -90,7 +90,7 @@
            :loading="loadingOa"
            >提交OA
          </el-button>
          <el-button
          <!-- <el-button
            v-if="permissions.masterproductionschedule_sync_scm"
            @click="syncScm()"
            type="primary"
@@ -103,7 +103,7 @@
            type="primary"
            style="margin-left:10px;"
            >SCM状态变更
          </el-button>
          </el-button> -->
        </template>
      </ttable>
@@ -598,12 +598,12 @@
            size: 'small',
            fun: this.customReserved
          },
          {
            text: '查看库存',
            type: 'text',
            size: 'small',
            fun: this.stockHandle
          },
          // {
          //   text: '查看库存',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.stockHandle
          // },
          {
            text: '来源',
            type: 'text',
vue.config.js
@@ -2,7 +2,7 @@
 * é…ç½®å‚考:
 * https://cli.vuejs.org/zh/config/
 */
const url = 'http://192.168.32.45:9999'
const url = 'http://192.168.83.249:9999'
const localUrl = 'http://localhost:8089'
//const localUrl = 'http://10.88.15.95:8089'
const CompressionWebpackPlugin = require('compression-webpack-plugin')