loulijun2021
2023-05-30 c4cbb29fd3dd2f43da4f9af9967936edb86d1dcc
src/views/qualityManager/processCheckRecord.vue
@@ -81,7 +81,12 @@
      </div>
      <div class="elTableDiv">
        <TableColumnSettings
          :list1="tableColumnSettingsArray"
          @tableColumnUpdate="tableColumnUpdate"
        />
        <el-table
          :key="tableTimeStampKey"
          ref="tableDataRef"
          class="tableFixed"
          :data="tableData"
@@ -94,145 +99,42 @@
          :cell-style="this.$cellStyle"
          @sort-change="sortChange"
        >
          <!--          <el-table-column-->
          <!--            type="selection"-->
          <!--            width="50"-->
          <!--            fixed-->
          <!--          />-->
          <el-table-column
            prop="RowNum"
            width="50"
            label="序号"
            fixed
          />
          <el-table-column
            prop="wo_code"
            label="工单编码"
            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
            width="160"
            sortable="custom"
          />
          <el-table-column
            prop="partcode"
            show-tooltip-when-overflow
            width="160"
            label="产品编码"
            sortable="custom"
          />
          <el-table-column
            prop="partname"
            label="产品名称"
            width="160"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="partspec"
            label="产品规格"
            show-tooltip-when-overflow
            width="160"
            sortable="custom"
            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }} </div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="step_code"
            label="工序编码"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="stepname"
            label="工序名称"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="checkstaned_code"
            label="标准编码"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="checkstaned_name"
            label="标准名称"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="check_type"
            label="检验类型"
            show-tooltip-when-overflow
            sortable="custom"
            width="120"
          >
            <template slot-scope="{row}">
              <div v-if="row.check_type==='FirstCheck'">首检</div>
              <div v-if="row.check_type==='PatroCheck'">巡检</div>
              <div v-if="row.check_type==='EndCheck'">完工检</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="check_result"
            label="检验结果"
            sortable="custom"
            show-tooltip-when-overflow
            width="120"
          >
            <template slot-scope="{row}">
              <div v-if="row.check_result==='NG'">
                <i class="el-icon-info" style="margin-right: 2px" />
                不良
              <div v-if="!row[item.prop]">/</div>
              <div v-else-if="item.prop==='check_type'">
                {{ checktypeArr.find(i=>i.code===row[item.prop]).name }}
              </div>
              <div v-if="row.check_result==='OK'">
                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                合格</div>
              <div v-else-if="item.prop==='check_result'">
                <div v-if="row.check_result==='NG'">
                  <i class="el-icon-info" style="margin-right: 2px" />
                  不良
                </div>
                <div v-if="row.check_result==='OK'">
                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                  合格
                </div>
              </div>
              <div v-else>{{ row[item.prop] }}</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="check_descr"
            label="检验备注"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.check_descr">{{ row.check_descr }} </div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="check_qty"
            label="检验数量"
            width="120"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="lm_user"
            label="检验人员"
            show-tooltip-when-overflow
            sortable="custom"
            width="120"
          />
          <el-table-column
            prop="lm_date"
            label="检验时间"
            show-tooltip-when-overflow
            width="160"
            sortable="custom"
          />
          <el-table-column
            label="操作"
            fixed="right"
            width="80"
            width="120"
          >
            <template slot-scope="{row}">
              <div class="operationClass">
@@ -276,6 +178,7 @@
    >
      <div class="elTableDiv">
        <el-table
          ref="tableDataRef2"
          :data="tableDataDialog"
          :height="(tableHeight-100)+'px'"
          border
@@ -297,63 +200,135 @@
            fixed
          />
          <el-table-column
            prop="checkitem_code"
            show-tooltip-when-overflow
            label="检验项目编号"
            width="120"
          />
          <!--          <el-table-column-->
          <!--            prop="checkitem_code"-->
          <!--            show-tooltip-when-overflow-->
          <!--            label="检验项目编号"-->
          <!--            width="120"-->
          <!--          />-->
          <el-table-column
            prop="checkitem_name"
            label="检验项目名称"
            fixed
            show-tooltip-when-overflow
          />
          <el-table-column
            prop="checkitem_descr"
            label="检验项目描述"
            show-tooltip-when-overflow
          />
          <el-table-column
            prop="check_result"
            label="检验结果"
            show-tooltip-when-overflow
            width="120"
          >
            <template slot-scope="{row}">
              <div v-if="row.check_result==='NG'">
                <i class="el-icon-info" style="margin-right: 2px" />
                不良
              </div>
              <div v-if="row.check_result==='OK'">
                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
                合格
              </div>
            </template>
          </el-table-column>
          <el-table-column
            prop="lm_user"
            label="检验人员"
            show-tooltip-when-overflow
            width="120"
          />
          <el-table-column
            prop="lm_date"
            label="检验时间"
            show-tooltip-when-overflow
            width="160"
          />
          <!--          <el-table-column-->
          <!--            label="操作"-->
          <!--            fixed="right"-->
          <!--            width="120"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              <div class="operationClass">-->
          <!--                <el-button v-waves type="text" @click="check(row)">查看</el-button>-->
          <!--                &lt;!&ndash;                <el-button v-waves type="text" @click="del(row)">删除</el-button>&ndash;&gt;-->
          <!--              </div>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--            prop="checkitem_descr"-->
          <!--            label="检验项目描述"-->
          <!--            show-tooltip-when-overflow-->
          <!--          />-->
          <el-table-column
            prop="standvalue"
            label="标准要求"
            fixed
            min-width="120"
            show-tooltip-when-overflow
          >
            <template slot-scope="{row}">
              <!--        ~当三个值都有    -->
              <div v-if="row.standvalue&&row.uppervalue&&row.lowervalue">{{ row.standvalue }}({{
                row.lowervalue
              }}~{{ row.uppervalue }})
              </div>
              <!--            ~当只有标准值和上限值时  -->
              <div v-else-if="row.standvalue&&row.uppervalue">{{ row.standvalue }}(~{{ row.uppervalue }})</div>
              <!--            ~当只有标准值和下限值时-->
              <div v-else-if="row.standvalue&&row.lowervalue">{{ row.standvalue }}({{ row.lowervalue }}~)</div>
              <!--            ~当只有上限值和下限值时-->
              <div v-else-if="row.uppervalue&&row.lowervalue">({{ row.lowervalue }}~{{ row.uppervalue }})</div>
              <!--            ~当只有标准值时     -->
              <div v-else-if="row.standvalue">{{ row.standvalue }}</div>
              <!--            ~当只有上限值时       -->
              <div v-else-if="row.uppervalue">(~{{ row.uppervalue }})</div>
              <!--            ~当只有下限值时      -->
              <div v-else-if="row.lowervalue">({{ row.lowervalue }}~)</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            v-for="(item,index) in dialogTableArrayCol"
            :key="item"
            :prop="(index+1)+'/'+ dialogTableNumberCol"
            :label="'第'+(index+1)+'件'"
            show-tooltip-when-overflow
            min-width="100"
          >
            <template slot-scope="{row}">
              <div style="display: flex;align-items: center">
                <i
                  :class="row.check_result==='OK'?'el-icon-success':'el-icon-error'"
                  :style="{color:row.check_result==='OK'?$store.state.settings.theme:'red'}"
                  style="margin-right: 2px"
                />
                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}
              </div>
              <!--            &lt;!&ndash;        ~当三个值都有    &ndash;&gt;-->
              <!--            <div v-if="row.standvalue&&row.uppervalue&&row.lowervalue&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
              <!--              &lt;!&ndash;            <div v-if="row[(index + 1) + '/' + dialogTableNumberCol]>=row.lowervalue&&row[(index + 1) + '/' + dialogTableNumberCol]<=row.uppervalue">&ndash;&gt;-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有标准值和上限值时  &ndash;&gt;-->
              <!--            <div v-else-if="row.standvalue&&row.uppervalue&&row.lowervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有标准值和下限值时&ndash;&gt;-->
              <!--            <div v-else-if="row.standvalue&&row.lowervalue&&row.uppervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有上限值和下限值时&ndash;&gt;-->
              <!--            <div v-else-if="row.uppervalue&&row.lowervalue&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有标准值时     &ndash;&gt;-->
              <!--            <div v-else-if="row.standvalue&&row.uppervalue===''&&row.lowervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])===parseFloat(row.standvalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有上限值时       &ndash;&gt;-->
              <!--            <div v-else-if="row.uppervalue&&row.lowervalue===''&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
              <!--            &lt;!&ndash;            ~当只有下限值时      &ndash;&gt;-->
              <!--            <div v-else-if="row.lowervalue&& row.uppervalue===''&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)">-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div></div>-->
              <!--            <div v-else>-->
              <!--              <div style="display: flex;align-items: center">-->
              <!--                <i class="el-icon-error" style="color: red;margin-right: 2px" />-->
              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
              <!--              </div>-->
              <!--            </div>-->
            </template>
          </el-table-column>
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
@@ -386,12 +361,13 @@
import { StepCheckTableOutExcel, StepCheckTableSearch, StepCheckTableSubSearch } from '@/api/qualityManager'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
import TableColumnSettings from '@/components/TableColumnSettings'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
  name: 'Zzjg',
  components: {
    Pagination, ImportPicker
    Pagination, ImportPicker, TableColumnSettings
  },
  directives: { elDragDialog, waves },
  data() {
@@ -415,6 +391,8 @@
        rows: 20 // 每页多少条
      },
      checktypeArr: [
        { code: 'InCheck', name: '入厂检验' },
        { code: 'OutCheck', name: '出厂检验' },
        { code: 'FirstCheck', name: '首检' },
        { code: 'PatroCheck', name: '巡检' },
        { code: 'EndCheck', name: '完工检' }
@@ -426,11 +404,149 @@
      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: 160,
          width: false,
          prop: 'wo_code',
          label: '工单编号',
          id: 3,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'partcode',
          label: '产品编码',
          id: 4,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'partname',
          label: '产品名称',
          id: 5,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'partspec',
          label: '产品规格',
          id: 6,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'step_code',
          label: '工序编码',
          id: 7,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'stepname',
          label: '工序名称',
          id: 8,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'checkstaned_code',
          label: '标准编码',
          id: 9,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'checkstaned_name',
          label: '标准名称',
          id: 10,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'check_type',
          label: '检验类型',
          id: 11,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'check_result',
          label: '检验结果',
          id: 12,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'check_descr',
          label: '检验备注',
          id: 13,
          show: true,
          fixed: false,
          sortable: true
        }, {
          minWidth: 110,
          width: false,
          prop: 'check_qty',
          label: '检验数量',
          id: 14,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 110,
          width: false,
          prop: 'lm_user',
          label: '检验人员',
          id: 15,
          show: true,
          fixed: false,
          sortable: true
        },
        {
          minWidth: 160,
          width: false,
          prop: 'lm_date',
          label: '检验时间',
          id: 16,
          show: true,
          fixed: false,
          sortable: true
        }
      ],
      tableTimeStampKey: new Date().getTime(), // 表格key
      dialogVisible: false,
      tableDataDialog: [],
      title_value: '数据导入 / 点检部位',
      code: '4',
      shows: false
      shows: false,
      dialogTableNumberCol: 0, // 对话框动态的列数
      dialogTableArrayCol: []// 对话框动态的数组
    }
  },
@@ -449,6 +565,13 @@
    this.getHeight()
  },
  methods: {
    tableColumnUpdate(val, isCopyTrue) {
      if (isCopyTrue) {
        this.tableColumnSettingsArray = val
      }
      this.tableTimeStampKey = new Date().getTime()
      this.$refs.tableDataRef.doLayout()
    },
    async getStepCheckTableSearch() {
      const res = await StepCheckTableSearch(this.form)
      this.tableData = res.data
@@ -494,10 +617,29 @@
    async check(row) {
      // this.operation = operation
      this.dialogVisible = true
      console.log(row, 1)
      const res = await StepCheckTableSubSearch({ id: row.id })
      this.tableDataDialog = res.data
      this.dialogVisible = true
      this.tableDataDialog.forEach((item, index) => {
        for (const it in item) {
          if (it.indexOf('/') !== -1) {
            const i = it.split('/')[1]
            this.dialogTableNumberCol = i
          }
        }
      })
      this.dialogTableArrayCol = []
      for (let i = 0; i < this.dialogTableNumberCol; i++) {
        this.dialogTableArrayCol.push(i)
      }
      this.$nextTick(() => {
        this.$refs.tableDataRef2.doLayout()
      })
    },
    // 新增按钮
@@ -538,11 +680,7 @@
    },
    // 对话框关闭事件
    handleClose() {
      this.dialogForm.OrgType = ''
      this.dialogForm.OrgCode = ''
      this.dialogForm.OrgName = ''
      this.dialogForm.SupUnit = ''
      this.$refs.dialogForm.clearValidate()
      this.tableDataDialog = []
    },
    // 对话框取消
    dialogVisibleCancel() {