loulijun2021
2023-05-25 86b282043844a5c6d2624d9f18a465c08d8cfc11
src/views/qualityManager/qualityPlaning.vue
@@ -89,7 +89,12 @@
      </div>
      <div class="elTableDiv">
        <TableColumnSettings
          :list1="tableColumnSettingsArray"
          @tableColumnUpdate="tableColumnUpdate"
        />
        <el-table
          :key="tableTimeStampKey"
          ref="tableDataRef"
          class="tableFixed"
          :data="tableData"
@@ -102,80 +107,119 @@
          :cell-style="this.$cellStyle"
          @sort-change="sortChange"
        >
          <!--          <el-table-column-->
          <!--            prop="RowNum"-->
          <!--            width="50"-->
          <!--            fixed-->
          <!--            label="序号"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="code"-->
          <!--            label="质检方案编码"-->
          <!--            sortable="custom"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="name"-->
          <!--            label="质检方案名称"-->
          <!--            sortable="custom"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="status"-->
          <!--            label="有效状态"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div v-if="row.status==='Y'"><i-->
          <!--                class="el-icon-success"-->
          <!--                :style="{color:$store.state.settings.theme}"-->
          <!--                style="margin-right:5px"-->
          <!--              />是-->
          <!--              </div>-->
          <!--              <div v-else-if="row.status==='N'"><i class="el-icon-info" style="margin-right: 5px" />否</div>-->
          <!--              <div v-else>/</div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="checktype"-->
          <!--            label="质检类型"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div v-if="row.checktype">{{ checktypeArr.find(i => i.code === row.checktype).name }}</div>-->
          <!--              <div v-else>/</div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="sampmethod"-->
          <!--            label="抽样方式"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div v-if="row.sampmethod">{{ sampltypeArr.find(i => i.code === row.sampmethod).name }}</div>-->
          <!--              <div v-else>/</div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="suitobject"-->
          <!--            label="适用对象"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div v-if="row.suitobject">{{ suitobjectArr.find(i => i.code === row.suitobject).name }}</div>-->
          <!--              <div v-else>/</div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="username"-->
          <!--            label="创建人员"-->
          <!--            sortable="custom"-->
          <!--          />-->
          <!--          <el-table-column-->
          <!--            prop="lm_date"-->
          <!--            label="创建时间"-->
          <!--            width="160"-->
          <!--            sortable="custom"-->
          <!--          />-->
          <el-table-column
            prop="RowNum"
            width="50"
            fixed
            label="序号"
          />
          <el-table-column
            prop="code"
            label="质检方案编码"
            sortable="custom"
          />
          <el-table-column
            prop="name"
            label="质检方案名称"
            sortable="custom"
          />
          <el-table-column
            prop="status"
            label="有效状态"
            sortable="custom"
            v-for="item in tableColumnSettingsArray"
            v-if="item.show"
            :key="item.id"
            :sortable="item.sortable"
            :prop="item.prop"
            :min-width="item.minWidth"
            :label="item.label"
            :width="item.width"
            show-tooltip-when-overflow
            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
          >
            <template slot-scope="{row}">
              <div v-if="row.status==='Y'"><i
                class="el-icon-success"
                :style="{color:$store.state.settings.theme}"
                style="margin-right:5px"
              />是
              <div v-if="!row[item.prop]">/</div>
              <div v-else-if="item.prop==='checktype'">
                {{ checktypeArr.find(i => i.code === row[item.prop]).name }}
              </div>
              <div v-else-if="row.status==='N'"><i class="el-icon-info" style="margin-right: 5px" />否</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="checktype"
            label="质检类型"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.checktype">{{ checktypeArr.find(i => i.code === row.checktype).name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="sampmethod"
            label="抽样方式"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.sampmethod">{{ sampltypeArr.find(i => i.code === row.sampmethod).name }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="suitobject"
            label="适用对象"
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.suitobject">{{ suitobjectArr.find(i => i.code === row.suitobject).name }}</div>
              <div v-else>/</div>
              <div v-else-if="item.prop==='sampmethod'">
                {{ sampltypeArr.find(i => i.code === row[item.prop]).name }}
              </div>
              <!--              适用对象-->
              <div v-else-if="item.prop==='suitobject'">
                {{ suitobjectArr.find(i => i.code === row.suitobject).name }}
              </div>
              <div v-else-if="item.prop==='status'">
                <div v-if="row.status==='Y'"><i
                  class="el-icon-success"
                  :style="{color:$store.state.settings.theme}"
                  style="margin-right:5px"
                />是
                </div>
                <div v-else-if="row.status==='N'"><i class="el-icon-info" style="margin-right: 5px" />否</div>
                <div v-else>/</div>
              </div>
              <div v-else>{{ row[item.prop] }}</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="username"
            label="创建人员"
            sortable="custom"
          />
          <el-table-column
            prop="lm_date"
            label="创建时间"
            width="160"
            sortable="custom"
          />
          <el-table-column
            label="操作"
            width="120"
@@ -273,7 +317,7 @@
          <el-input v-model="dialogForm.sampnum" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
        </el-form-item>
        <el-form-item v-if="dialogForm.sampmethod==='SCARE'" label="抽检比例" prop="sampscale">
          <el-input v-model="dialogForm.sampscale" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 180px" />
          <el-input v-model="dialogForm.sampscale" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 180px" />
          %
        </el-form-item>
        <br>
@@ -285,7 +329,7 @@
        </el-form-item>
        <el-form-item
          prop="suitpart"
          :label="dialogForm.suitobject==='Y'?'适用物料':'适用物料类别'"
          :label="dialogForm.suitobject==='P'?'适用物料':'适用物料类别'"
        >
          <el-select
            v-model="dialogForm.suitpart"
@@ -314,6 +358,27 @@
          </el-select>
        </el-form-item>
        <br>
        <el-form-item
          v-if="dialogForm.checktype==='FirstCheck'||dialogForm.checktype==='PatroCheck'||dialogForm.checktype==='EndCheck'"
          label="工序名称"
          prop="stepcode"
        >
          <el-select
            v-model="dialogForm.stepcode"
            style="width: 200px"
            filterable
            placeholder="请选择"
            :popper-append-to-body="false"
          >
            <el-option
              v-for="item in StepSelectArr"
              :key="item.stepcode"
              :label="item.stepname"
              :value="item.stepcode"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="检验方案描述">
          <el-input v-model="dialogForm.descr" type="textarea" :autosize="{ minRows: 2 }" />
        </el-form-item>
@@ -506,7 +571,7 @@
              placeholder="请选择"
              :disabled="row.numberjudge==='N'"
            />
            <div v-else>{{ row.unit?row.unit:'/' }}</div>
            <div v-else>{{ row.unit ? row.unit : '/' }}</div>
          </template>
        </el-table-column>
        <el-table-column
@@ -586,6 +651,7 @@
        <el-table-column
          prop="stepcheckitem_desc"
          label="描述"
          show-tooltip-when-overflow
        >
          <template slot-scope="{row}">
            <el-input
@@ -605,7 +671,8 @@
          <template slot-scope="{row}">
            <div class="operationClass">
              <el-button v-if="row.isVisible===1" v-waves type="text" @click="saveZjlbRow(row)">确认</el-button>
              <el-button v-if="row.isVisible===1&&isCancel" v-waves type="text" @click="cancelZjlbRow(row)">取消</el-button>
              <el-button v-if="row.isVisible===1&&isCancel" v-waves type="text" @click="cancelZjlbRow(row)">取消
              </el-button>
              <el-button v-if="row.isVisible!==1" v-waves type="text" @click="editZjlbRow(row)">编辑</el-button>
              <el-button v-if="row.isVisible!==1" v-waves type="text" @click="delZjlbRow(row)">删除</el-button>
            </div>
@@ -637,18 +704,19 @@
import { validateCode } from '@/utils/global'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
import { PartSelect, StockTypeSelect, UomSelect } from '@/api/zzmx'
import { PartSelect, StepSelect, StockTypeSelect, UomSelect } from '@/api/makeModel'
import {
  QualityInspectionAddEditSave,
  QualityInspectionDelete,
  QualityInspectionSearch, QualityInspectionSeeEdit,
  StepCheckItemSelect
} from '@/api/zlgl'
} from '@/api/qualityManager'
import TableColumnSettings from '@/components/TableColumnSettings'
export default {
  name: 'Zzjg',
  components: {
    Pagination
    Pagination, TableColumnSettings
  },
  directives: { elDragDialog, waves },
  data() {
@@ -686,6 +754,109 @@
      ],
      total: 10,
      tableData: [],
      tableColumnSettingsArray: [
        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 隐藏列  show: false隐藏,true显示
        { minWidth: 25, width: 50, prop: 'RowNum', label: '序号', id: 2, show: true, fixed: 'left', sortable: false }, // custom
        {
          minWidth: 130,
          width: false,
          prop: 'code',
          label: '质检方案编码',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 130,
          width: false,
          prop: 'name',
          label: '质检方案名称',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'status',
          label: '有效状态',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'checktype',
          label: '质检类型',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'sampmethod',
          label: '抽样方式',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'suitobject',
          label: '适用对象',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: false,
          width: 110,
          prop: 'stepcode',
          label: '工序编码',
          id: 9,
          show: false,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'stepname',
          label: '工序名称',
          id: 10,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: false,
          width: 110,
          prop: 'username',
          label: '创建人员',
          id: 11,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: false,
          width: 160,
          prop: 'lm_date',
          label: '创建时间',
          id: 12,
          show: true,
          fixed: false,
          sortable: true
        }
      ],
      tableTimeStampKey: new Date().getTime(), // 表格key
      dialogVisible: false,
      dialogForm: {
        qualityinsptcode: '', // 质检方案编码
@@ -697,6 +868,7 @@
        sampscale: '', // 抽检比例
        suitobject: 'P', // 适用对象
        suitpart: [], // 适用物料
        stepcode: '', // 工序
        descr: '' // /描述
      },
      operation: '',
@@ -727,6 +899,9 @@
        ],
        suitpart: [
          { required: true, message: '请选择物料或物料类别', trigger: ['blur', 'change'] }
        ],
        stepcode: [
          { required: true, message: '请选择工序名称', trigger: ['blur', 'change'] }
        ]
      },
      checkitem: [],
@@ -741,6 +916,7 @@
      UomSelectArr: [], // 单位下拉数组
      CheckItemSelectAllArr: [], // 检验项目(所有)
      CheckItemSelectArr: [], // 检验项目
      StepSelectArr: [], // 工序名称下拉所有
      isCancel: true// 是否可取消
@@ -755,6 +931,13 @@
    this.getHeight()
  },
  methods: {
    tableColumnUpdate(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray = val
      }
      this.tableTimeStampKey = new Date().getTime()
      this.$refs.tableDataRef.doLayout()
    },
    handleRequest() {
      this.getQualityInspectionSearch().then(res => {
        if (res.code === '200') {
@@ -762,8 +945,13 @@
          this.getStepCheckItemSelect()
          this.getPartSelect()
          this.getStockTypeSelect()
          this.getStepSelect()
        }
      })
    },
    async getStepSelect() {
      const { data: res } = await StepSelect()
      this.StepSelectArr = res
    },
    async getQualityInspectionSearch() {
      const res = await QualityInspectionSearch(this.form)
@@ -817,6 +1005,7 @@
        this.dialogForm.qualityinsptcode = row.code
        this.dialogForm.qualityinsptname = row.name
        this.dialogForm.status = row.status
        this.dialogForm.stepcode = row.stepcode
        this.dialogForm.checktype = row.checktype
        this.dialogForm.sampmethod = row.sampmethod
        // this.dialogForm.sampscare =  row.sampscare
@@ -834,7 +1023,7 @@
      })
    },
    // 修改按钮
    async  edit(operation, row) {
    async edit(operation, row) {
      this.operation = operation
      this.dialogVisible = true
@@ -860,6 +1049,7 @@
        this.dialogForm.qualityinsptcode = row.code
        this.dialogForm.qualityinsptname = row.name
        this.dialogForm.status = row.status
        this.dialogForm.stepcode = row.stepcode
        this.dialogForm.checktype = row.checktype
        this.dialogForm.sampmethod = row.sampmethod
        if (this.dialogForm.sampmethod === 'FIXED') {
@@ -1016,6 +1206,7 @@
        checktype: '',
        sampmethod: 'FIXED',
        sampnum: '',
        stepcode: '',
        sampscale: '',
        suitobject: 'P',
        suitpart: [],
@@ -1024,9 +1215,9 @@
      this.isCancel = true
      this.checkitem = []
      this.CheckItemSelectArr = JSON.parse(JSON.stringify(this.CheckItemSelectAllArr))
      this.$refs.dialogForm.clearValidate()
    },
    // 对话框取消
    dialogVisibleCancel() {
      this.dialogVisible = false
@@ -1058,6 +1249,7 @@
            qualityinsptcode: this.dialogForm.qualityinsptcode,
            qualityinsptname: this.dialogForm.qualityinsptname,
            status: this.dialogForm.status,
            stepcode: this.dialogForm.checktype === 'InCheck' || this.dialogForm.checktype === 'OutCheck' ? '' : this.dialogForm.stepcode,
            checktype: this.dialogForm.checktype,
            sampmethod: this.dialogForm.sampmethod,
            sampscare: this.dialogForm.sampnum ? this.dialogForm.sampnum : this.dialogForm.sampscale,