loulijun2021
2023-08-17 2d29ce8bb3dbbd8c9766f31a3e26b03992e77bc1
1.开报工不良数量需求修改
已修改2个文件
410 ■■■■ 文件已修改
src/views/produceManager/produceStartOrder.vue 392 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reportManager/defectDetailList.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/produceManager/produceStartOrder.vue
@@ -533,7 +533,7 @@
      :visible.sync="dialogVisible"
      width="850px"
      class="dialogVisible"
      :top="dialogTitle==='自制报工'?'15vh':'15vh'"
      :top="dialogTitle==='自制报工'?'10vh':'15vh'"
      :close-on-click-modal="false"
      @close="handleClose"
      @closed="handleClose"
@@ -674,26 +674,101 @@
          <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
          <!--          <el-input v-model="dialogForm.noreportqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />-->
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良数量:">
          <el-input v-model="dialogForm.noputqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
          <!--          <el-input-->
          <!--            v-model="dialogForm.noputqty"-->
          <!--            readonly-->
          <!--            oninput="value=value.replace(/[^0-9.]/g,'')"-->
          <!--            style="width: 200px;"-->
          <!--          />-->
          {{ dialogForm.noputqty }}
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良原因:">
          <el-select
            v-model="dialogForm.badcode"
            style="width: 200px;"
            placeholder="请选择"
            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"
            multiple
            collapse-tags
        <el-form-item v-if="dialogTitle==='自制报工'" label="备注:">
          <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />
        </el-form-item>
        <!--        <el-form-item v-if="dialogTitle==='自制报工'" label="不良原因:">-->
        <!--          <el-select-->
        <!--            v-model="dialogForm.badcode"-->
        <!--            style="width: 200px;"-->
        <!--            placeholder="请选择"-->
        <!--            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"-->
        <!--            multiple-->
        <!--            collapse-tags-->
        <!--          >-->
        <!--            <el-option-->
        <!--              v-for="item in badArr"-->
        <!--              :key="item.code"-->
        <!--              :label="item.name"-->
        <!--              :value="item.code"-->
        <!--            />-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良数量:">
          <el-input
            v-model="badInput"
            placeholder="请输入数量"
            class="input-with-select"
            style="width: 300px;"
            oninput="value=value.replace(/[^0-9]/g,'')"
          >
            <el-option
              v-for="item in badArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            <el-select
              slot="prepend"
              v-model="badSelected"
              multiple
              placeholder="请选择"
              clearable
              style="width: 150px"
              collapse-tags
            >
              <el-option
                v-for="item in badArr"
                :key="item.code"
                :label="item.name"
                :value="item.code"
              />
            </el-select>
            <el-button
              slot="append"
              icon="el-icon-plus"
              @click="plusClick"
            />
          </el-select>
          </el-input>
        </el-form-item>
        <div
          v-for="(item,index) in BADNAME"
          v-if="dialogTitle==='自制报工'"
          :key="item+index"
          style="margin-left: 25px;display: flex;  line-height: 24px;"
        >
          <div
            style="
                   width: 22px;height: 22px;background: #42b983;
                   display: flex;
                   justify-content: center;
                   align-content: center;
                   color: #fff;
                   line-height: 22px;
                   border-radius: 50%;
                   "
          >{{ index+1 }}</div>
          <div style="margin: 0 20px">{{ item.name }}</div>
          <div>{{ item.badqty }}</div>
          <div style="margin-left: 20px">
            <i
              class="el-icon-delete"
              style="color:#42b983;cursor: pointer"
              @click="deleteClick(item,index)"
            />
          </div>
        </div>
        <!--        <el-form-item v-if="dialogTitle==='自制报工'" label="报工人员:">-->
        <!--          <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />-->
        <!--        </el-form-item>-->
@@ -712,9 +787,7 @@
        <!--            />-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <el-form-item v-if="dialogTitle==='自制报工'" label="备注:">
          <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />
        </el-form-item>
        <div v-if="dialogTitle==='自制报工'&&dialogForm.reckway==='group'">
          <div style="display: flex;align-items:center;height: 40px;margin-bottom: 10px">
            <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" />
@@ -801,15 +874,15 @@
            </el-table-column>
          </el-table>
          <!--分页-->
          <pagination
            :total="UserTotal"
            :page.sync="Userform.page"
            :limit.sync="Userform.rows"
            align="right"
            layout="total,prev, pager, next,sizes"
            popper-class="select_bottom"
            @pagination="getMesOrderStepSearch"
          />
          <!--          <pagination-->
          <!--            :total="UserTotal"-->
          <!--            :page.sync="Userform.page"-->
          <!--            :limit.sync="Userform.rows"-->
          <!--            align="right"-->
          <!--            layout="total,prev, pager, next,sizes"-->
          <!--            popper-class="select_bottom"-->
          <!--            @pagination="getMesOrderStepSearch"-->
          <!--          />-->
        </div>
        <!--     外协发料-->
        <el-form-item
@@ -912,38 +985,77 @@
            oninput="value=value.replace(/[^0-9.]/g,'')"
          />
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="不良数量:"
          prop="noputqty"
        >
          {{ dialogForm.noputqty }}
          <!--                  <el-input-->
          <!--                    v-model="dialogForm.noputqty"-->
          <!--                    style="width: 200px"-->
          <!--                    oninput="value=value.replace(/[^0-9.]/g,'')"-->
          <!--                  />-->
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="备注:">
          <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="不良数量:">
          <el-input
            v-model="dialogForm.noputqty"
            style="width: 200px"
            oninput="value=value.replace(/[^0-9.]/g,'')"
          />
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="不良原因:"
        >
          <!--          prop="badcode"-->
          <el-select
            v-model="dialogForm.badcode"
            style="width: 200px;"
            multiple
            collapse-tags
            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"
            placeholder="请选择"
            v-model="badInput"
            placeholder="请输入数量"
            class="input-with-select"
            style="width: 300px;"
            oninput="value=value.replace(/[^0-9]/g,'')"
          >
            <el-option
              v-for="item in badArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            <el-select
              slot="prepend"
              v-model="badSelected"
              multiple
              placeholder="请选择"
              clearable
              style="width: 150px"
              collapse-tags
            >
              <el-option
                v-for="item in badArr"
                :key="item.code"
                :label="item.name"
                :value="item.code"
              />
            </el-select>
            <el-button
              slot="append"
              icon="el-icon-plus"
              @click="plusClick"
            />
          </el-select>
          </el-input>
        </el-form-item>
        <!--        <el-form-item-->
        <!--          v-if="dialogTitle==='外协收料'"-->
        <!--          label="不良原因:"-->
        <!--        >-->
        <!--          <el-select-->
        <!--            v-model="dialogForm.badcode"-->
        <!--            style="width: 200px;"-->
        <!--            multiple-->
        <!--            collapse-tags-->
        <!--            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"-->
        <!--            placeholder="请选择"-->
        <!--          >-->
        <!--            <el-option-->
        <!--              v-for="item in badArr"-->
        <!--              :key="item.code"-->
        <!--              :label="item.name"-->
        <!--              :value="item.code"-->
        <!--            />-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <!--        <el-form-item v-if="dialogTitle==='外协收料'" label="收料人:">-->
        <!--          <el-select-->
        <!--            v-model="dialogForm.operation"-->
@@ -958,12 +1070,46 @@
        <!--            />-->
        <!--          </el-select>-->
        <!--        </el-form-item>-->
        <el-form-item v-if="dialogTitle==='外协收料'" label="备注:">
          <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />
        </el-form-item>
      </el-form>
      <div v-if="dialogTitle==='外协收料'" style="display: flex;flex-direction: column">
        <!--明天接着写外协收料,供应商对应的已收未收详情-->
      <div
        v-if="dialogTitle==='外协收料'&&BADNAME.length>0"
        style="height: 30px;margin-left:30px;"
      >
        不良数量明细:
      </div>
      <div
        v-for="(item,index) in BADNAME"
        v-if="dialogTitle==='外协收料'"
        :key="item+index"
        style="margin-left: 30px;display: flex;  line-height: 24px;"
      >
        <div
          style="
                   width: 22px;height: 22px;background: #42b983;
                   display: flex;
                   justify-content: center;
                   align-content: center;
                   color: #fff;
                   line-height: 22px;
                   border-radius: 50%;
                   "
        >{{ index+1 }}</div>
        <div style="margin: 0 20px">{{ item.name }}</div>
        <div>{{ item.badqty }}</div>
        <div style="margin-left: 20px">
          <i
            class="el-icon-delete"
            style="color:#42b983;cursor: pointer"
            @click="deleteClick(item,index)"
          />
        </div>
      </div>
      <div v-if="dialogTitle==='外协收料'" style="margin-top: 20px;;display: flex;flex-direction: column">
        <div style="height: 30px;margin-left:30px;">
          可收料供应商:
        </div>
@@ -1006,7 +1152,8 @@
            :disabled="$store.state.app.buttonIsDisabled"
            type="primary"
            @click="dialogVisibleConfirm"
          >提交/打印</el-button>
          >提 交</el-button>
          <!--          /打印-->
          <el-button
            v-if="dialogTitle==='自制报工'&&dialogForm.nextstepname!==''"
            v-waves
@@ -1014,7 +1161,7 @@
            :disabled="$store.state.app.buttonIsDisabled"
            type="primary"
            @click="dialogVisibleConfirm"
          >提交</el-button>
          >提 交</el-button>
          <el-button
            v-if="dialogTitle==='外协发料'"
            v-waves
@@ -1022,7 +1169,7 @@
            :disabled="$store.state.app.buttonIsDisabled"
            type="primary"
            @click="dialogVisibleConfirm"
          >发料</el-button>
          >发 料</el-button>
          <el-button
            v-if="dialogTitle==='外协收料'&&dialogForm.nextstepname===''"
            v-waves
@@ -1030,7 +1177,8 @@
            :disabled="$store.state.app.buttonIsDisabled"
            type="primary"
            @click="dialogVisibleConfirm"
          >收料/打印</el-button>
          >收 料</el-button>
          <!--          /打印-->
          <el-button
            v-if="dialogTitle==='外协收料'&&dialogForm.nextstepname!==''"
            v-waves
@@ -1038,7 +1186,7 @@
            :disabled="$store.state.app.buttonIsDisabled"
            type="primary"
            @click="dialogVisibleConfirm"
          >收料</el-button>
          >收 料</el-button>
        </div>
      </span>
    </el-dialog>
@@ -1287,7 +1435,8 @@
            :loading="$store.state.app.buttonIsDisabled"
            :disabled="$store.state.app.buttonIsDisabled||badTableDataDialog.length===0||badTableDataDialog.find(i=>i.isVisible===1)"
            @click="badDialogVisibleConfirm"
          >保 存/打 印</el-button>
          >保 存</el-button>
          <!--          /打 印-->
        </div>
      </span>
    </el-dialog>
@@ -1425,6 +1574,12 @@
        inbarcode: ''// 末道工序时 打印的入库码
      },
      badSelected: [], // 已选的不良原因数组
      badInput: '',
      BAD: [],
      BADNAME: [],
      ZZuserArr: [], // 自制用户所有
      ZZtreams: [], // 自制生产班组数组
      ZZeqpArr: [], // 自制设备名称
@@ -1941,7 +2096,7 @@
        }
      })
      console.log(this.WXouterprovide2, 2)
      // console.log(this.WXouterprovide2, 2)
      this.dialogTitle = '外协收料'
      this.dialogVisible = true
@@ -1981,7 +2136,7 @@
    // 获取自制报工生产班组下拉列表
    async getMesOrderStepReportSelectUserGroup() {
      // this.dialogForm.wkshopcode
      console.log(this.dialogForm.wkshopcode, 8)
      const { data: res } = await MesOrderStepReportSelectUserGroup({ wkshopcode: this.dialogForm.wkshopcode })
      this.ZZtreams = res
    },
@@ -2024,7 +2179,7 @@
    },
    // 开工选择设备改变时
    async selectTypeChange(val) {
    selectTypeChange(val) {
      this.form.SelectType = val
      const orderstepqrcode = this.form.orderstepqrcode
      const data = {
@@ -2033,14 +2188,18 @@
        SelectType: this.form.SelectType,
        stu_torgcode: getCookie('stu_torgcode')
      }
      const res = await MesOrderStepStart(data)
      if (res.code === '200' && res.count === 0) {
        await this.ZZstart(res.data)
      }
      MesOrderStepStart(data).then(res => {
        if (res.code === '200' && res.count === 0) {
          this.ZZstart(res.data)
        }
      if (res.code === '200' && res.count === 1) {
        await this.ZZreport(res.data)
      }
        if (res.code === '200' && res.count === 1) {
          this.ZZreport(res.data)
        }
      }).catch(e => {
        this.form.orderstepqrcode = ''
        this.form.SelectType = ''
      })
    },
    // 报工查询用户表
@@ -2067,11 +2226,12 @@
    calculatedValue() {
      const total = 100
      let value = 0
      this.userTableData.forEach(item => {
        item.ratio = parseFloat((100 / this.userTableData.length).toFixed(2))
        value += item.ratio
      })
      console.log(value, 1)
      this.UserTotal = this.userTableData.length
      if (value !== total) {
        // let temp = this.userTableData
@@ -2098,6 +2258,43 @@
      })
    },
    plusClick() {
      // console.log(this.badSelected, this.badInput)
      if (this.badSelected.length < 1) {
        return this.$message.info('请选择不良原因!')
      }
      if (this.badInput.toString().trim().length < 1) {
        return this.$message.info('请输入不良数量!')
      }
      this.BAD.push({
        defect_code: this.badSelected.sort().join(','),
        badqty: this.badInput
      })
      const NAME = []
      this.badSelected.forEach(item => {
        const name = this.badArr.find(it => it.code === item).name
        NAME.push(name)
      })
      this.BADNAME.push({
        name: NAME.join(','), badqty: this.badInput
      })
      // console.log(typeof this.dialogForm.noputqty)
      this.dialogForm.noputqty += parseFloat(this.badInput)
      this.badSelected = []
      this.badInput = ''
    },
    deleteClick(val, index) {
      console.log(val, 2)
      this.dialogForm.noputqty -= parseFloat(val.badqty)
      this.BADNAME.splice(index, 1)
      this.BAD.splice(index, 1)
    },
    // 用户添加
    userAdd() {
      if (this.userTableData.find(i => i.isVisible === 1)) {
@@ -2105,7 +2302,6 @@
      }
      let number = Math.random() * Math.random()// 作为删除时的标识符
      number = number === 0 ? (10 + Math.random()) : number
      console.log(this.userTableData, 6)
      this.userTableData.unshift({ usercode: '', username: '', isVisible: 1, number: number, ratio: 0 })
      this.calculatedValue()
    },
@@ -2171,6 +2367,11 @@
    },
    // 对话框关闭事件
    handleClose() {
      this.BAD = []
      this.BADNAME = []
      this.badSelected = []
      this.badInput = ''
      this.judgeIsScanningArr = []
      this.form.orderstepqrcode = ''
      this.WXform.orderstepqrcode = ''
@@ -2271,11 +2472,11 @@
              return this.$message.info('收料数量加不良数量不能大于该供应商可收数量!')
            }
            if (parseFloat(this.dialogForm.noputqty) > 0) {
              if (this.dialogForm.badcode.length < 1) {
                return this.$message.info('请选择不良原因!')
              }
            }
            // if (parseFloat(this.dialogForm.noputqty) > 0) {
            //   if (this.dialogForm.badcode.length < 1) {
            //     return this.$message.info('请选择不良原因!')
            //   }
            // }
            this.dialogForm.inbarcode = ''
            // 当为末道的时候
@@ -2303,9 +2504,11 @@
              sqty: this.dialogForm.sqty, // 收料数量
              remarks: this.dialogForm.remarks, // 备注
              inbarcode: this.dialogForm.inbarcode, // 生产入库条码
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // 不良数量
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// 不良原因
              defectlist: this.BAD
              // ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // 不良数量
              // badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// 不良原因
            }
            // console.log(JSON.stringify(data), 2)
            this.$store.state.app.buttonIsDisabled = true
            SavaMesOrderStepIn(data).then(res => {
              if (res.code === '200') {
@@ -2365,16 +2568,17 @@
              this.userTableData.forEach(item => {
                sum += parseFloat(item.ratio)
              })
              console.log(sum, 4)
              if (Math.round(sum * 100) / 100 !== 100) {
                return this.$message.info('分配比例总和必须为100!')
              }
            }
            if (parseFloat(this.dialogForm.noputqty) > 0) {
              if (this.dialogForm.badcode.length < 1) {
                return this.$message.info('请选择不良原因!')
              }
            }
            // if (parseFloat(this.dialogForm.noputqty) > 0) {
            //   if (this.dialogForm.badcode.length < 1) {
            //     return this.$message.info('请选择不良原因!')
            //   }
            // }
            // console.log(this.userTableData, 1)
            // const reportuser = this.userTableData.map(item => item.usercode).join(';')// 主要改的是这里的格式
@@ -2417,13 +2621,15 @@
              inbarcode: this.dialogForm.inbarcode, // 生产入库条码
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // 不良数量
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// 不良原因
              defectlist: this.BAD
              // ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // 不良数量
              // badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// 不良原因
            }
            // console.log(JSON.stringify(data), 'data')
            console.log(data, 'data')
            this.$store.state.app.buttonIsDisabled = true
            console.log(JSON.parse(JSON.stringify(data)), 'data')
            console.log(JSON.stringify(data), 'data')
            // this.$store.state.app.buttonIsDisabled = true
            SavaMesOrderStepReport(data).then(res => {
              if (res.code === '200') {
@@ -2536,8 +2742,8 @@
        if (res.code === '200' || res.code === '301') {
          this.getBadList()
          this.badDialogVisible = false
          this.badPrint(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username)
          this.dialogVisible2 = true
          // this.badPrint(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username)
          // this.dialogVisible2 = true
          this.$message.success('保存成功!')
          this.$store.state.app.buttonIsDisabled = false
src/views/reportManager/defectDetailList.vue
@@ -121,21 +121,21 @@
          <el-table-column
            prop="partcode"
            label="产品编码"
            width="160"
            width="110"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="partname"
            label="产品名称"
            width="160"
            width="110"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="partspec"
            label="产品规格"
            width="160"
            width="110"
            show-tooltip-when-overflow
            sortable="custom"
          >
@@ -183,6 +183,18 @@
            sortable="custom"
          />
          <el-table-column
            prop="defect_pendqty"
            label="不良待处理"
            width="120"
            sortable="custom"
          />
          <el-table-column
            prop="bad_qty"
            label="报废数量"
            width="110"
            sortable="custom"
          />
          <el-table-column
            prop="defect_code"
            label="缺陷代码"
            width="110"