|
|
@@ -1,11 +1,447 @@
|
|
|
+<!-- @desc:产品报损 @auth:寇珊珊 @time:2023年3月21日15:21:08 -->
|
|
|
<template>
|
|
|
+ <div class="main-div">
|
|
|
+ <DkPaxeButton :total="editKeys?editKeys.length:0"
|
|
|
+ :current="editIndex"
|
|
|
+ v-if="editKeys && editKeys.length > 1"
|
|
|
+ @pageChange="editPageChange"></DkPaxeButton>
|
|
|
+ <DkCollapse>
|
|
|
+ <!--基本信息-->
|
|
|
+ <DkPanel prop="essentialInformation">
|
|
|
+ <!--添加行按钮-->
|
|
|
+ <DkButton slot="content" type="success" @click="addRow" size="small"
|
|
|
+ style="float: left;position: absolute; top: 9px;left: 120px;">{{ $v('add') }}
|
|
|
+ </DkButton>
|
|
|
+ <div style="clear:both"></div>
|
|
|
+ <!-- 下拉区域 -->
|
|
|
+ <DkForm slot="content" ref="formInline" v-model="formData" style="width: 95%">
|
|
|
+ <!--产品条码-->
|
|
|
+ <DkFormItem :required="true" prop="barCode">
|
|
|
+ <InputPop ref="barCode" v-model="formData.barCode" @on-enter="onBarCode"
|
|
|
+ @on-blur="onBarCode"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--产品型号-->
|
|
|
+ <DkFormItem prop="modelCode">
|
|
|
+ <InputPop ref="modelCode" v-model="formData.modelCode" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--成型线-->
|
|
|
+ <DkFormItem prop="moldlineName">
|
|
|
+ <InputPop ref="moldlineName" v-model="formData.moldlineName" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--完成工序-->
|
|
|
+ <DkFormItem prop="pdtFlowNodeName" :label="$t('reasonPdtFlowNodeName')">
|
|
|
+ <InputPop ref="pdtFlowNodeName" v-model="formData.pdtFlowNodeName" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--完成时间-->
|
|
|
+ <DkFormItem prop="finishTime">
|
|
|
+ <InputPop ref="finishTime" v-model="formData.finishTime" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--所在载具-->
|
|
|
+ <DkFormItem prop="carrierCode" :label="$t('reasonCarrierCode')">
|
|
|
+ <InputPop ref="carrierCode" v-model="formData.carrierCode" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--编码-->
|
|
|
+ <DkFormItem prop="productCode">
|
|
|
+ <InputPop ref="productCode" v-model="formData.productCode" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--商标-->
|
|
|
+ <DkFormItem prop="logoName">
|
|
|
+ <InputPop ref="logoName" v-model="formData.logoName" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--釉色-->
|
|
|
+ <DkFormItem prop="colourName">
|
|
|
+ <InputPop ref="colourName" v-model="formData.colourName" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--编码-->
|
|
|
+ <DkFormItem prop="productCode">
|
|
|
+ <InputPop ref="productCode" v-model="formData.productCode" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--名称-->
|
|
|
+ <DkFormItem prop="productName">
|
|
|
+ <InputPop ref="productName" v-model="formData.productName" :readonly="true"/>
|
|
|
+ </DkFormItem>
|
|
|
+ </DkForm>
|
|
|
+ </DkPanel>
|
|
|
+ <!--报损信息-->
|
|
|
+ <DkPanel prop="LossReportingInformation">
|
|
|
+ <!-- 下拉区域 -->
|
|
|
+ <DkForm slot="content" ref="formInline" v-model="LossReportingFormData" style="width: 95%">
|
|
|
+ <!--产品分级-->
|
|
|
+ <DkFormItem prop="opnGradeId" :required="true" :label="$t('gradeClassification')" data-type="number">
|
|
|
+ <SelectPop v-model="LossReportingFormData.opnGradeId" ref="gradeName" :multiple="false"
|
|
|
+ :options="gradeList"
|
|
|
+ @on-select="chooseGrade"
|
|
|
+ labelKey="gradeName"
|
|
|
+ valueKey="gradeId">
|
|
|
+ </SelectPop>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--损柸原因-->
|
|
|
+ <DkFormItem prop="pdtDefectId" :required="true" :label="$t('damageReason')" data-type="number">
|
|
|
+ <SelectPop v-model="LossReportingFormData.pdtDefectId" ref="defectName" :multiple="false"
|
|
|
+ :options="damageList"
|
|
|
+ @on-select="chooseDamage"
|
|
|
+ labelKey="defectName"
|
|
|
+ valueKey="defectId">
|
|
|
+ </SelectPop>
|
|
|
+ </DkFormItem>
|
|
|
+ <!--责任工号-->
|
|
|
+ <DkFormItem :required="true" prop="blameUserId"
|
|
|
+ :data-type="$config.dataType.number" :label="$t('blameUserId')">
|
|
|
+ <SelectMagnifier v-model="LossReportingFormData.blameUserId" :display-text="LossReportingFormData.userName"
|
|
|
+ :type="$config.MagnifierType.user"
|
|
|
+ :multiple="false"
|
|
|
+ :search-info="{userType:2}"
|
|
|
+ @ok="chooseBlameUser"></SelectMagnifier>
|
|
|
+ </DkFormItem>
|
|
|
+ <!-- 备注 -->
|
|
|
+ <DkFormItem prop="remarks">
|
|
|
+ <InputPop v-model="LossReportingFormData.remarks"/>
|
|
|
+ </DkFormItem>
|
|
|
+ </DkForm>
|
|
|
+ </DkPanel>
|
|
|
+ <!--责任员工-->
|
|
|
+ <DkPanel prop="chooseDetails">
|
|
|
+ <div slot="content">
|
|
|
+ <!--责任员工-->
|
|
|
+ <DkTable slot="right" ref="staff-table-select" :data="staffList" multiple
|
|
|
+ :height="tableHeight-400" primaryKey="staffId"
|
|
|
+ :pageFlag="false"
|
|
|
+ :pageTotalFlag="false"
|
|
|
+ :linkClickChecked="true"
|
|
|
+ name="table">
|
|
|
+ <DkTableColumn field="jobName" :title="$t('jobName')" width="auto"></DkTableColumn>
|
|
|
+ <DkTableColumn field="staffName" :title="$t('staffName')" width="auto"></DkTableColumn>
|
|
|
+ <DkTableColumn field="staffCode" :title="$t('staffCode')" width="auto"></DkTableColumn>
|
|
|
+ </DkTable>
|
|
|
+ </div>
|
|
|
+ </DkPanel>
|
|
|
+ <!--明细-->
|
|
|
+ <DkPanel prop="details">
|
|
|
+ <div slot="content" :style="'height: ' + tableHeight-320 + 'px'">
|
|
|
+ <!--产品报损信息-->
|
|
|
+ <EditTable slot="left" ref="submitTable" :data="detailList"
|
|
|
+ :columns="detailColumns"
|
|
|
+ :height="tableHeight-120"
|
|
|
+ :freeze="false"
|
|
|
+ :add-flag="false"
|
|
|
+ @delRow="delSubmitTable"
|
|
|
+ ></EditTable>
|
|
|
+ </div>
|
|
|
+ </DkPanel>
|
|
|
+ </DkCollapse>
|
|
|
+ <!-- 下部分按钮区域-->
|
|
|
+ <DkSaveButton ref="saveButton" :loading="loading" @save="save" @close="close"></DkSaveButton>
|
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-export default {
|
|
|
- name: "prod-defect-add"
|
|
|
-}
|
|
|
+ import { formMixin } from '@/mixins/form'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'prod-defect-add',
|
|
|
+ mixins: [formMixin],
|
|
|
+ data() {
|
|
|
+ let self = this
|
|
|
+ return {
|
|
|
+ loading: false,
|
|
|
+ tableHeight: 620,
|
|
|
+ barCodeList: [],//产品条码集合
|
|
|
+ // 画面表单数据
|
|
|
+ formData: {
|
|
|
+ barCode: '',
|
|
|
+ ftyId: this.$store.state.user.ftyId,
|
|
|
+ productId: null,
|
|
|
+ productCode: null,
|
|
|
+ productName: null,
|
|
|
+ logoName: null,//商标
|
|
|
+ colourName: null,//釉色
|
|
|
+ moldingDate: null,//成型日期
|
|
|
+ modelCode: null,//产品型号
|
|
|
+ finishTime: null,//完成时间
|
|
|
+ pdtFlowNodeName: null,//完成工序
|
|
|
+ carrierCode: null,//所在载具
|
|
|
+ moldlineName: null,//成型线
|
|
|
+ },
|
|
|
+ //报损表单
|
|
|
+ LossReportingFormData: {
|
|
|
+ blameUserId: null,//责任工号
|
|
|
+ userName: null,//责任工号
|
|
|
+ opnGradeId: null,//产品分级
|
|
|
+ gradeName: null,//产品分级
|
|
|
+ pdtDefectId: null,//损柸原因
|
|
|
+ defectName: null,//损柸原因
|
|
|
+ remarks: null,
|
|
|
+ },
|
|
|
+ flowNodeId: self.$route.meta.menuUuid,
|
|
|
+ gradeList: [],//产品分级
|
|
|
+ damageList: [],//损柸原因
|
|
|
+ detailList: [],// 明细信息
|
|
|
+ // 明细列表
|
|
|
+ detailColumns: [
|
|
|
+ // 产品条码
|
|
|
+ { field: 'barCode', type: 'disabled', width: 'auto' },
|
|
|
+ //产品型号
|
|
|
+ { field: 'modelCode', type: 'disabled', width: 'auto' },
|
|
|
+ // 成型日期
|
|
|
+ { field: 'moldingDate', type: 'disabled', width: 'auto' },
|
|
|
+ //完成时间
|
|
|
+ { field: 'finishTime', type: 'disabled', width: 'auto' },
|
|
|
+ //完成工序
|
|
|
+ { field: 'pdtFlowNodeName', title: self.$t('reasonPdtFlowNodeName'), type: 'disabled', width: 'auto' },
|
|
|
+ //所在载具
|
|
|
+ { field: 'carrierCode', title: self.$t('reasonCarrierCode'), type: 'disabled', width: 'auto' },
|
|
|
+ //商标
|
|
|
+ { field: 'logoName', type: 'disabled', width: 'auto' },
|
|
|
+ //釉色
|
|
|
+ { field: 'colourName', type: 'disabled', width: 'auto' },
|
|
|
+ //产品编码
|
|
|
+ { field: 'productCode', type: 'disabled', width: 'auto' },
|
|
|
+ //产品名称
|
|
|
+ { field: 'productName', type: 'disabled', width: 'auto' },
|
|
|
+ ],
|
|
|
+ staffList: [],//责任员工
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ /**
|
|
|
+ * @desc : 产品条码失焦事件
|
|
|
+ * @date : 2023/2/28 9:28
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ onBarCode() {
|
|
|
+ if (this.formData.barCode) {
|
|
|
+ this.excuteNoParam(this.$service.collectService, this.$service.collectService.checkBarCodeNodeUndo, [this.formData.barCode]).then(res => {
|
|
|
+ if (res.code === this.$config.SUCCESS_CODE) {
|
|
|
+ this.barCodeList.push(this.formData.barCode)
|
|
|
+ this.formData.productId = res.data.uniqueId
|
|
|
+ this.formData.productCode = res.data.modelCode
|
|
|
+ this.formData.productName = res.data.modelName
|
|
|
+ this.formData.logoName = res.data.logoName
|
|
|
+ this.formData.colourName = res.data.colourName
|
|
|
+ this.formData.moldingDate = res.data.moldingDate
|
|
|
+ this.formData.modelCode = res.data.modelMouldCode
|
|
|
+ this.formData.finishTime = res.data.finishTime
|
|
|
+ this.formData.pdtFlowNodeName = res.data.pdtFlowNodeName
|
|
|
+ this.formData.carrierCode = res.data.carrierCode
|
|
|
+ this.formData.moldlineName = res.data.moldlineName
|
|
|
+ } else {
|
|
|
+ this.$Message.error(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 选择责任工号
|
|
|
+ * @date : 2023/3/21 16:06
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ chooseBlameUser(row) {
|
|
|
+ if (row && row[0]) {
|
|
|
+ this.LossReportingFormData.blameUserId = row[0].userId
|
|
|
+ this.LossReportingFormData.userName = row[0].userName
|
|
|
+ this.getStaff(this.LossReportingFormData.blameUserId)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 查询员工
|
|
|
+ * @date : 2023/3/20 13:18
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ getStaff(userId) {
|
|
|
+ let params = {
|
|
|
+ ftyId: this.formData.ftyId,
|
|
|
+ userId: userId,
|
|
|
+ }
|
|
|
+ this.excute(this.$service.commonService, this.$service.commonService.getTeamStaff, params).then(res => {
|
|
|
+ if (res.code === this.$config.SUCCESS_CODE) {
|
|
|
+ this.staffList = res.data.list
|
|
|
+ for (let i of this.staffList) {
|
|
|
+ i.blameStaffId = i.staffId
|
|
|
+ i.blameWsJobId = i.jobId
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$Message.error(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 选择产品等级
|
|
|
+ * @date : 2023/3/3 9:17
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ chooseGrade(row) {
|
|
|
+ if (row) {
|
|
|
+ this.LossReportingFormData.opnGradeId = row
|
|
|
+ let list = this.gradeList.filter(it => it.gradeId == row)
|
|
|
+ if (list.length > 0) {
|
|
|
+ this.LossReportingFormData.gradeName = list[0].gradeName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 选择损柸原因
|
|
|
+ * @date : 2023/3/3 9:17
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ chooseDamage(row) {
|
|
|
+ if (row) {
|
|
|
+ this.formData.pdtDefectId = row
|
|
|
+ let list = this.detailList.filter(it => it.defectId == row)
|
|
|
+ if (list.length > 0) {
|
|
|
+ this.formData.defectName = list[0].defectName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 删除提交行数据
|
|
|
+ * @date : 2023/3/10 11:26
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ delSubmitTable(row, rowIndex) {
|
|
|
+ this.detailList.splice(rowIndex, 1)
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 添加行
|
|
|
+ * @date : 2023/3/10 8:54
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ addRow() {
|
|
|
+ this.$refs['formInline'].validate().then(validFlag => {
|
|
|
+ if (validFlag) {
|
|
|
+ //校验名称是否重复
|
|
|
+ if (!this.validData()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let list = []
|
|
|
+ list.splice(0, 0, {})
|
|
|
+ list[0].barCode = this.formData.barCode//产品条码
|
|
|
+ list[0].productId = this.formData.productId
|
|
|
+ list[0].productCode = this.formData.productCode//产品编码
|
|
|
+ list[0].productName = this.formData.productName//产品名称
|
|
|
+ list[0].logoName = this.formData.logoName//商标
|
|
|
+ list[0].colourName = this.formData.colourName//釉色
|
|
|
+ list[0].moldingDate = this.formData.moldingDate//成型时间
|
|
|
+ list[0].modelCode = this.formData.modelCode//型号编码
|
|
|
+ list[0].finishTime = this.formData.finishTime//完成时间
|
|
|
+ list[0].pdtFlowNodeName = this.formData.pdtFlowNodeName//完成工序
|
|
|
+ list[0].carrierCode = this.formData.carrierCode//所在载具
|
|
|
+ list[0].moldlineName = this.formData.moldlineName//成型线
|
|
|
+ list[0].blameStaffName = this.$refs['staff-table-select'].$refs.table.getCheckboxRecords().map(map => map.staffName).toString()
|
|
|
+ list[0].prodDefectStaffList = this.$refs['staff-table-select'].$refs.table.getCheckboxRecords()
|
|
|
+ this.detailList.push(list[0])
|
|
|
+ //清空表单
|
|
|
+ this.clear(true)
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 设置传参
|
|
|
+ * @date : 2023/2/28 11:29
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ setParams() {
|
|
|
+ this.params = {
|
|
|
+ opnGradeId: this.LossReportingFormData.opnGradeId,
|
|
|
+ remarks: this.formData.remarks,
|
|
|
+ barCodeList: this.barCodeList,
|
|
|
+ productionDefect: this.detailLiet.map(map => map.prodDefectStaffList),
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 校验重复数据
|
|
|
+ * @date : 2023/3/8 8:45
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ validData() {
|
|
|
+ if (this.detailList.length > 0) {
|
|
|
+ if (this.detailList.filter(it => it.barCode == this.formData.barCode).length > 0) {
|
|
|
+ this.$Message.error(this.$t('W_120'))
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 保存数据
|
|
|
+ * @date : 2023/3/16 13:28
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ saveData() {
|
|
|
+ return this.excute(this.$service.collectService, this.$service.collectService.scrap, this.params)
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 清空
|
|
|
+ * @date : 2023/3/8 10:48
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ clear(value) {
|
|
|
+ if (!value) {
|
|
|
+ this.detailList = []
|
|
|
+ this.LossReportingFormData.blameUserId = null
|
|
|
+ this.LossReportingFormData.userName = null
|
|
|
+ this.LossReportingFormData.opnGradeId = null
|
|
|
+ this.LossReportingFormData.gradeName = null
|
|
|
+ this.LossReportingFormData.pdtDefectId = null
|
|
|
+ this.LossReportingFormData.defectName = null
|
|
|
+ this.LossReportingFormData.remarks = null
|
|
|
+ }
|
|
|
+ this.staffList = null
|
|
|
+ this.formData.barCode = null
|
|
|
+ this.formData.productId = null
|
|
|
+ this.formData.productCode = null
|
|
|
+ this.formData.productName = null
|
|
|
+ this.formData.logoName = null
|
|
|
+ this.formData.colourName = null
|
|
|
+ this.formData.moldingDate = null
|
|
|
+ this.formData.moldlineName = null
|
|
|
+ this.formData.modelCode = null
|
|
|
+ this.formData.finishTime = null
|
|
|
+ this.formData.pdtFlowNodeName = null
|
|
|
+ this.formData.carrierCode = null
|
|
|
+
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 查询产品分级
|
|
|
+ * @date : 2023/3/21 16:11
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ getGrade() {
|
|
|
+ let params = {
|
|
|
+ ftyId: this.formData.ftyId,
|
|
|
+ gradeKind: this.$config.gradeKindType.decrease,
|
|
|
+ }
|
|
|
+ this.excute(this.$service.commonService, this.$service.commonService.getProductGrade, params).then(res => {
|
|
|
+ if (res.code === this.$config.SUCCESS_CODE) {
|
|
|
+ this.gradeList = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 查询损柸原因
|
|
|
+ * @date : 2023/3/3 10:09
|
|
|
+ * @author : 寇珊珊
|
|
|
+ */
|
|
|
+ getReasonForBlankLoss() {
|
|
|
+ let params = {
|
|
|
+ ftyId: this.$store.state.user.ftyId,
|
|
|
+ defectKind: this.$config.defectKind.moldDamageReason
|
|
|
+ }
|
|
|
+ this.excute(this.$service.commonService, this.$service.commonService.getProductDefect, params).then(res => {
|
|
|
+ if (res.code === this.$config.SUCCESS_CODE) {
|
|
|
+ this.damageList = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ //查询产品分级
|
|
|
+ this.getGrade()
|
|
|
+ //查询损柸原因
|
|
|
+ this.getReasonForBlankLoss()
|
|
|
+ },
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|