licp
2024-04-12 c14f9d834217ee0ec378b7a1f198951a6975f536
src/views/technology/routing/routing-form.vue
@@ -7,31 +7,35 @@
        <h2 v-if="!editable">查看-工艺路线</h2>
      </div>
      <div class="btn-group header-right" v-if="editable">
        <el-button :disabled="isSubmit" v-thinclick="`allSave`">保存</el-button>
        <el-button :disabled="isSubmit" type="primary" v-thinclick="`allSave`">保存</el-button>
      </div>
    </div>
    <div class="page-main">
      <div class="routing-basic">
        <el-form
          :inline="true"
          :model="dataForm"
          :rules="dataRule"
          ref="dataForm"
          label-width="100px"
          style="width: 100%"
          class="l-mes"
          :disabled="!editable"
        >
          <el-row>
            <el-col :span="24">
              <el-form-item prop="routingNo" label="工艺编号">
            <el-col :span="6">
              <el-form-item style="width:100%" prop="routingNo" label="工艺编号">
                <el-input
                  style="width:100%"
                  v-model="dataForm.routingNo"
                  placeholder="工艺编号"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item prop="partNo" label="零件号">
                <el-input
                  style="width:100%"
                  v-model="dataForm.partNo"
                  placeholder="零件号"
                  disabled
@@ -43,60 +47,33 @@
                  ></el-button>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item prop="partName" label="零件名称">
                <el-tooltip class="item" effect="dark" :content="dataForm.partName" >
                <el-input
                  v-model="dataForm.partName"
                  placeholder="零件名称"
                  readonly
                  style="width: 300px"
                  style="width: 100%"
                ></el-input>
                </el-tooltip>
              </el-form-item>
              <el-form-item prop="description" label="描述">
                <el-input
                  v-model="dataForm.description"
                  placeholder="描述"
                  style="width: 280px"
                ></el-input>
              </el-form-item>
              <el-form-item prop="wireCore" label="线芯">
                <el-input
                  v-model="dataForm.wireCore"
                  placeholder="线芯"
                  style="width: 60px"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="BOM" prop="bomId">
                <el-select :disabled="dataForm.id != null" v-model="dataForm.bomId" placeholder="" filterable>
                <el-select style="width:100%"  v-model="dataForm.bomId" placeholder="" filterable>
                  <el-option
                    v-for="item in bomList"
                    :key="item.id"
                    :label="item.number"
                    :value="item.id"
                  />
                    :value="item.id" />
                </el-select>
              </el-form-item>
              <!-- <el-form-item prop="version" label="工艺版本">
                <el-input
                  v-model="dataForm.version"
                  placeholder="工艺版本"
                ></el-input>
              </el-form-item> -->
              <!-- <el-form-item label="工艺类型" prop="bomTypeDb">
                <el-select
                  v-model="dataForm.bomTypeDb"
                  placeholder="请选择工艺类型"
                  style="width:100%"
                  @change="bomTypeDbChange"
                >
                  <el-option
                    v-for="(item, index) in bomTypeDbOptions"
                    :label="item.label"
                    :value="item.value"
                    :key="index"
                  >
                  </el-option>
                </el-select>
              </el-form-item> -->
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="逐步采用日期" prop="phaseInDate">
                <el-date-picker
                  v-model="dataForm.phaseInDate"
@@ -106,6 +83,8 @@
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="逐步淘汰日期" prop="phaseOutDate">
                <el-date-picker
                  v-model="dataForm.phaseOutDate"
@@ -115,27 +94,17 @@
                >
                </el-date-picker>
              </el-form-item>
              <!-- <el-form-item prop="alternativeNo" label="替代">
            </el-col>
            <el-col :span="6">
              <el-form-item prop="description" label="描述">
                <el-input
                  v-model="dataForm.alternativeNo"
                  placeholder="替代"
                  v-model="dataForm.description"
                  placeholder="描述"
                  style="width: 100%"
                ></el-input>
              </el-form-item> -->
              <!-- <el-form-item prop="alternativeDesc" label="替代描述">
                <el-input
                  v-model="dataForm.alternativeDesc"
                  placeholder="替代描述"
                ></el-input>
              </el-form-item> -->
              <!-- <el-form-item label="已同步至IFS" prop="ifsSync">
                <span
                  style="width: 146px;display: inline-block;font-size:12px;font-weight:bold;"
                  >{{ dataForm.ifsSync ? '是' : '否' }}</span
                >
              </el-form-item> -->
              <el-form-item label="主工艺" prop="master">
                <el-switch v-model="dataForm.master"> </el-switch>
              </el-form-item>
            </el-col>
            <el-col :span="6">
            </el-col>
          </el-row>
        </el-form>
@@ -155,7 +124,7 @@
            <el-button
              style="float: right; padding: 3px 0"
              type="text"
              @click=";(showOperation = true), (last = true)"
              @click=";(showOperation = true), (last = true),(multiSelect=true)"
              v-if="editable"
              >添加</el-button
            >
@@ -167,16 +136,8 @@
              '--dragitemwidth': '250px'
            }"
          >
            <div
              :style="{
                width: 265 * dataForm.operations.length - 15 + 'px'
              }"
            >
              <div
                class="dragHead"
                v-for="x in dataForm.operations.length"
                :key="x"
              >
            <div :style="{ width: 265 * dataForm.operations.length - 15 + 'px' }">
              <div class="dragHead" v-for="x in dataForm.operations.length"  :key="x" >
                <div class="idx">{{ x }}</div>
              </div>
              <zttdraggable
@@ -277,13 +238,13 @@
                <span v-if="!editable">{{ scope.row.operationName }}</span>
              </template>
            </el-table-column>
            <el-table-column
            <!-- <el-table-column
              prop="outsideOpItem"
              label="外部工序项目"
              align="center"
              show-overflow-tooltip
            >
            </el-table-column>
            </el-table-column> -->
            <el-table-column
              prop="partName"
              label="零件"
@@ -310,7 +271,7 @@
                }}</span>
              </template>
            </el-table-column>
            <el-table-column
            <!-- <el-table-column
              prop="runTimeCodeDb"
              label="因素单位"
              align="center"
@@ -350,7 +311,7 @@
              label="劳力设置时间"
              align="center"
            >
            </el-table-column>
            </el-table-column> -->
            <el-table-column
              prop="laborClassNo"
              label="人工类别"
@@ -428,7 +389,7 @@
                </el-input>
              </div>
              <el-divider content-position="left">配置项</el-divider>
              <!-- <el-divider content-position="left">配置项</el-divider>
              <div class="node-content-config">
                <el-checkbox-group
@@ -462,9 +423,9 @@
                    >工单预留</el-checkbox-button
                  >
                </el-checkbox-group>
              </div>
              </div> -->
              <el-divider content-position="left">能力</el-divider>
              <!-- <el-divider content-position="left">能力</el-divider>
              <div class="node-content">
                <label
                  v-if="capacities == null || capacities.length == 0"
@@ -473,7 +434,7 @@
                  没有配置能力
                </label>
                <el-tag
               <el-tag
                  size="medium"
                  v-for="item in capacities"
                  :key="item.id"
@@ -485,7 +446,7 @@
                >
                  {{ item.label }}
                </el-tag>
              </div>
              </div> -->
              <el-divider content-position="left">备注</el-divider>
              <div class="node-content-remark">
                <rich-text
@@ -615,6 +576,8 @@
    <operationDialog
      :currshowlist.sync="showOperation"
      :multiSelect="multiSelect"
      @handleSelectionChange="insertOperation"
      @listenToOperationEvent="insertOperation"
    />
    <partDialog :currshowlist.sync="showPart" @listenToPartEvent="selectPart" />
@@ -686,6 +649,7 @@
export default {
  data() {
    return {
      multiSelect: true,
      itemKey: '',
      typeOptions: [],
      paramTemplateSelArr: [],
@@ -714,6 +678,7 @@
        routingNo: null,
        name: null,
        partId: null,
        partNo: null,
        partName: null,
        description: null,
        state: null,
@@ -731,15 +696,15 @@
        wireCore: null
      },
      dataRule: {
        partName: [
          { required: true, message: '零件不能为空', trigger: 'change' }
        partNo: [
          { required: true, message: '零件不能为空', trigger: 'blur' }
        ],
        bomTypeDb: [
          { required: true, message: '工艺类型不能为空', trigger: 'change' }
        ],
        bomId: [{ required: true, message: 'BOM不能为空', trigger: 'change' }],
        phaseInDate: [
          { required: true, message: '逐步采用日期不能为空', trigger: 'blur' }
          { required: true, message: '逐步采用日期不能为空', trigger: 'change' }
        ],
        alternativeNo: [
          { required: true, message: '替代不能为空', trigger: 'blur' }
@@ -773,6 +738,8 @@
    editRoutingOperation,
    zttdraggable
  },
  created(){
  },
  mounted() {
    window.addEventListener(
      'hashchange',
@@ -784,8 +751,6 @@
      },
      false
    )
    // this.rowDrop()
  },
  computed: {
@@ -1204,6 +1169,7 @@
      this.operationPart.remark = val
    },
    insertTechnologyOperation(row) {
      this.multiSelect = false
      this.showOperation = true
      this.last = false
      this.operationIndex = row.index
@@ -1216,30 +1182,59 @@
          type: 'warning'
        })
      }
      operation.operationName = operation.name
      operation.operationId = operation.id
      operation.id = null
      if (this.last) {
        // 行最后添加
        operation.index = this.dataForm.operations.length + 1
        this.dataForm.operations.push(operation)
      } else {
        // 插入前一行
        operation.index = this.operationIndex
        this.dataForm.operations = [
          ...this.dataForm.operations.slice(0, operation.index - 1),
          operation,
          ...this.dataForm.operations.slice(operation.index - 1)
        ]
      if(this.multiSelect){
        operation.forEach(item => {
            let obj = {};
            obj.operationName = item.name;
            obj.operationId = item.id;
            if (this.last){
                // 行最后添加
                obj.index = this.dataForm.operations.length + 1
                this.dataForm.operations.push(obj)
            }else{
                // 插入前一行
                obj.index = this.operationIndex
                this.dataForm.operations = [
                ...this.dataForm.operations.slice(0, obj.index - 1),
                obj,
                ...this.dataForm.operations.slice(obj.index - 1)
                ]
            }
            this.dataForm.operations.forEach((e, idx) => {
                e.index = idx + 1
                })
                this.$forceUpdate()
                this.$refs.operationTable.sort('index')
                Promise.all([this.save()]).then((res) => {
                    this.selectByIndex(obj.index)
                })
            })
      }else{
        operation.operationName = operation.name
        operation.operationId = operation.id
        operation.id = null
        if (this.last) {
            // 行最后添加
            operation.index = this.dataForm.operations.length + 1
            this.dataForm.operations.push(operation)
        } else {
            // 插入前一行
            operation.index = this.operationIndex
            this.dataForm.operations = [
            ...this.dataForm.operations.slice(0, operation.index - 1),
            operation,
            ...this.dataForm.operations.slice(operation.index - 1)
            ]
        }
        this.dataForm.operations.forEach((e, idx) => {
            e.index = idx + 1
        })
        this.$forceUpdate()
        this.$refs.operationTable.sort('index')
        Promise.all([this.save()]).then((res) => {
            this.selectByIndex(operation.index)
        })
      }
      this.dataForm.operations.forEach((e, idx) => {
        e.index = idx + 1
      })
      this.$forceUpdate()
      this.$refs.operationTable.sort('index')
      Promise.all([this.save()]).then((res) => {
        this.selectByIndex(operation.index)
      })
    },
    handleDelete(row) {
@@ -1435,6 +1430,17 @@
    // 保存所有参数的修改
    saveAllParamChange() {
      const paramJson = { routingOperationParam: this.paramData }
      let num = 0
      this.paramData.forEach(e=>{
        var regex=/^[^\(\)|^,]+$/;
        if(!regex.test(e.paramValue)){
            num+=1
        }
      })
      if(num>0){
        this.$message.error("参数值不能包含英文括号或逗号,请检查")
        return
      }
      putRoutingTemplateParam(paramJson).then((response) => {
        const data = response.data
        if (data.code == 0) {