Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | <td>{{ itemDatile.total_area }}</td> |
| | | <td>{{ itemDatile.perimeter }}</td> |
| | | <td>{{ itemDatile.bend_radius }}</td> |
| | | <td>{{ itemDatile.remarks }}</td> |
| | | <td style="white-space: normal; word-break: break-all; word-wrap: break-word;">{{ itemDatile.remarks }}</td> |
| | | <template v-for=" n in item.processList.length"> |
| | | <td></td> |
| | | <td></td> |
| | |
| | | archRise:'拱高', |
| | | qr1Local:'二维码1位置', |
| | | qr2Local:'二维码2位置', |
| | | default:'默认' |
| | | |
| | | |
| | | }, |
| | | |
| | |
| | | archRise:'拱高', |
| | | qr1Local:'二维码1位置', |
| | | qr2Local:'二维码2位置', |
| | | default:'默认' |
| | | |
| | | }, |
| | | |
| | |
| | | xMargin:'X축 여백', |
| | | yMargin:'Y축 여백', |
| | | location:'상표 위치', |
| | | sort:'유리 굽힘 방지' |
| | | |
| | | sort:'유리 굽힘 방지', |
| | | archRise:'拱高', |
| | | qr1Local:'二维码1位置', |
| | | qr2Local:'二维码2位置', |
| | | default:'默认' |
| | | }, |
| | | |
| | | workOrder:{ |
| | |
| | | |
| | | productAbbreviation:'Продукция', |
| | | productDuplication:'产品重复', |
| | | default:'默认' |
| | | } |
| | | }, |
| | | order:{ |
| | |
| | | archRise:'拱高', |
| | | qr1Local:'二维码1位置', |
| | | qr2Local:'二维码2位置', |
| | | default:'默认' |
| | | |
| | | }, |
| | | |
| | |
| | | archRise:'拱高', |
| | | qr1Local:'二维码1位置', |
| | | qr2Local:'二维码2位置', |
| | | default:'默认' |
| | | |
| | | }, |
| | | |
| | |
| | | body: { |
| | | options: [ |
| | | [ |
| | | {code: 'selectTrimming', name: '设置统一修边',}, |
| | | {code: 'selectTrimming', name: '设置统一修边',prefixIcon: 'vxe-icon-edit'}, |
| | | {code: 'Exports', name: '数据导出', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | {code: 'addRow', name: t('basicData.add'), prefixIcon: 'vxe-icon-square-plus', visible: true, disabled: true }, |
| | | ], |
| | |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | openTrimming: async () => { |
| | | emit ( 'select-trimming', true) |
| | | // 获取当前选中的记录 |
| | | const selectedRecords = xGrid.value.getCheckboxRecords(); |
| | | // 发送事件给父组件,包含选中的数据 |
| | | emit('select-trimming', { |
| | | action: 'open-trimming-dialog', |
| | | selectedData: selectedRecords && selectedRecords.length > 0 ? selectedRecords : null, |
| | | timestamp: Date.now() |
| | | }); |
| | | } |
| | | }, |
| | | { |
| | |
| | | } |
| | | return; |
| | | } |
| | | |
| | | |
| | | if (config.code === 'selectTrimming') { |
| | | config.openTrimming(); |
| | | return; |
| | | } |
| | | // 添加确认提示弹窗,询问用户是否进行当前操作 |
| | | ElMessageBox.confirm('是否进行当前操作?', '确认操作', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | if (config.code === 'selectTrimming') { |
| | | config.openTrimming(); |
| | | ElMessage.success(config.successMsg); |
| | | } |
| | | // if (config.code === 'selectTrimming') { |
| | | // config.openTrimming(); |
| | | // ElMessage.success(config.successMsg); |
| | | // } |
| | | }).catch(() => { |
| | | // 用户点击取消后执行的逻辑 |
| | | ElMessage.info('已取消操作'); |
| | |
| | | const data = gridOptions.data; |
| | | if (data) { |
| | | try { |
| | | const updatedData = []; |
| | | for (let i = 0; i < data.length; i++) { |
| | | const item = data[i]; |
| | | const updatedItem = { |
| | | // 检查是否只对选中的项目应用修边 |
| | | const shouldApplyToSelectedOnly = receivedData.selectedItemsOnly; |
| | | let targetData = data; |
| | | |
| | | if (shouldApplyToSelectedOnly) { |
| | | // 只对选中的数据应用修边 |
| | | targetData = receivedData.selectedGlassData || []; |
| | | if (!targetData || targetData.length === 0) { |
| | | ElMessage.warning('未选择任何项目,修边未应用'); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | const updatedData = data.map(item => { |
| | | // 如果只对选中项应用,检查当前项是否在选中列表中 |
| | | if (shouldApplyToSelectedOnly) { |
| | | const isSelected = targetData.some(selectedItem => selectedItem.id === item.id); |
| | | if (!isSelected) { |
| | | return item; // 不在选中列表中,不修改 |
| | | } |
| | | } |
| | | |
| | | // 应用修边值 |
| | | return { |
| | | ...item, |
| | | // 从 receivedData 中获取对应的值来更新表格数据项 |
| | | leftTrim: Number(receivedData.quicksetLeft), |
| | | downTrim: Number(receivedData.quicksetBottom), |
| | | rightTrim: Number(receivedData.quicksetRight), |
| | | upTrim: Number(receivedData.quicksetTop), |
| | | }; |
| | | updatedData.push(updatedItem); |
| | | } |
| | | }); |
| | | |
| | | gridOptions.data = updatedData; |
| | | xGrid.value.loadData(updatedData); |
| | | } catch (error) { |
| | |
| | | |
| | | //右键菜单统一修边 |
| | | const props = defineProps({ |
| | | TrimmingDialogVisible: Boolean, |
| | | CheckboxChangeData: null |
| | | TrimmingDialogVisible: { |
| | | type: [Boolean, Object], |
| | | required: false, |
| | | default: null |
| | | }, |
| | | CheckboxChangeData: { |
| | | type: Array, |
| | | required: false, |
| | | default: null |
| | | } |
| | | }); |
| | | |
| | | |
| | | const selectedGlassDataForTrimming = ref([]); |
| | | |
| | | /*watch(() => props.TrimmingDialogVisible, (newValue) => { |
| | | if (newValue === true) { |
| | | dialogVisible.value[3] = newValue; |
| | |
| | | });*/ |
| | | |
| | | watch( |
| | | ()=> [props.TrimmingDialogVisible,props.CheckboxChangeData], |
| | | ([newValue, oldValue])=> { |
| | | if (props.TrimmingDialogVisible!=null){ |
| | | dialogVisible.value[3] = newValue; |
| | | () => props.TrimmingDialogVisible, |
| | | (newVal, oldVal) => { |
| | | // 处理打开修边对话框的逻辑 |
| | | if (newVal != null && typeof newVal === 'object' && newVal.action === 'open-trimming-dialog') { |
| | | dialogVisible.value[3] = true; |
| | | |
| | | // 更新选中的玻璃数据 |
| | | if (newVal.selectedData && newVal.selectedData.length > 0) { |
| | | selectedGlassDataForTrimming.value = newVal.selectedData; |
| | | } else { |
| | | selectedGlassDataForTrimming.value = []; |
| | | } |
| | | } |
| | | if (props.CheckboxChangeData!=null && props.CheckboxChangeData.length>0){ |
| | | } |
| | | ); |
| | | |
| | | // 单独处理选中原片数据的逻辑 |
| | | watch( |
| | | () => props.CheckboxChangeData, |
| | | (newData, oldData) => { |
| | | // 只有当有选中数据时才处理 |
| | | if (newData != null && newData.length > 0) { |
| | | optimizeData.value.materialDetails = []; |
| | | props.CheckboxChangeData.forEach(items=>{ |
| | | const detail={ |
| | | width :null, |
| | | height :null, |
| | | stockCode :null, |
| | | quantity :null, |
| | | upTrim :null, |
| | | downTrim :null, |
| | | leftTrim :null, |
| | | rightTrim:null, |
| | | priority:0 |
| | | newData.forEach(items => { |
| | | const detail = { |
| | | width: null, |
| | | height: null, |
| | | stockCode: null, |
| | | quantity: null, |
| | | upTrim: null, |
| | | downTrim: null, |
| | | leftTrim: null, |
| | | rightTrim: null, |
| | | priority: 0 |
| | | } |
| | | detail.width=items.width |
| | | detail.height=items.height |
| | | detail.stockCode=items.id |
| | | detail.quantity=items.available_quantity |
| | | detail.upTrim=items.upTrim |
| | | detail.downTrim=items.downTrim |
| | | detail.leftTrim=items.leftTrim |
| | | detail.rightTrim=items.rightTrim |
| | | detail.width = items.width |
| | | detail.height = items.height |
| | | detail.stockCode = items.id |
| | | detail.quantity = items.available_quantity |
| | | detail.upTrim = items.upTrim |
| | | detail.downTrim = items.downTrim |
| | | detail.leftTrim = items.leftTrim |
| | | detail.rightTrim = items.rightTrim |
| | | |
| | | optimizeData.value.materialDetails.push(detail) |
| | | }) |
| | | dialogVisible.value[4] = true; |
| | | }else{ |
| | | } else if (newData !== null && newData.length === 0) { |
| | | // 只有当明确传入空数组时才提示选择原片 |
| | | ElMessage.warning('请选择原片'); |
| | | } |
| | | console.log(optimizeData.value) |
| | | }); |
| | | } |
| | | ); |
| | | |
| | | |
| | | const route = useRoute(); |
| | |
| | | <el-button id="button" type="primary" @click="openDialog(3)">设置修边</el-button> |
| | | <el-dialog v-model="dialogVisible[3]" title="设置修边(mm)" destroy-on-close |
| | | style="width: 35%;height:80%;margin-top: 3vh;"> |
| | | <set-trimming :closeDialog="closeDialog" @send-data-event="handleTrimmingData"/> |
| | | <set-trimming |
| | | :closeDialog="closeDialog" |
| | | :selected-glass-data="selectedGlassDataForTrimming" |
| | | @send-data-event="handleTrimmingData"/> |
| | | </el-dialog> |
| | | <el-button id="button" type="primary" @click="saveOptimizeData()">保存</el-button> |
| | | <el-button id="button" type="primary" @click="openDialog(4)">优化</el-button> |
| | |
| | | |
| | | const emit = defineEmits(['send-data-event',]); |
| | | const props = defineProps({ |
| | | closeDialog: Function |
| | | closeDialog: { |
| | | type: Function, |
| | | required: true |
| | | }, |
| | | selectedGlassData: { |
| | | type: Array, |
| | | required: false, |
| | | default: () => [] |
| | | } |
| | | }); |
| | | |
| | | const setTrimming = () => { |
| | |
| | | quicksetTop: quicksetTop.value, |
| | | quicksetRight: quicksetRight.value, |
| | | quicksetBottom: quicksetBottom.value, |
| | | quicksetLeft: quicksetLeft.value |
| | | quicksetLeft: quicksetLeft.value, |
| | | selectedItemsOnly: props.selectedGlassData && props.selectedGlassData.length > 0, |
| | | selectedGlassData: props.selectedGlassData |
| | | }; |
| | | emit('send-data-event', dataToSend); |
| | | props.closeDialog(3); |
| | |
| | | let endTime = orderInfo.workOrderDate[1] |
| | | //第一次加载数据 |
| | | |
| | | request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | pageTotal.value = res.data.total |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | //点击查询 |
| | | const getWorkOrder = () => { |
| | | |
| | | let startTime = orderInfo.workOrderDate[0] |
| | | let endTime = orderInfo.workOrderDate[1] |
| | | request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | |
| | | request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | pageTotal.value = res.data.total |
| | | xGrid.value.loadData(res.data.data) |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | |
| | | let startTime = orderInfo.workOrderDate[0] |
| | | let endTime = orderInfo.workOrderDate[1] |
| | | |
| | | request.post(`/processCard/selectAddProcess/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectAddProcess/${orderInfo.workOrderDate}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | pageTotal.value = res.data.total |
| | | |
| | |
| | | |
| | | //第一次加载数据 |
| | | |
| | | request.post(`/processCard/selectPrintFlowCard/${startTime}/${endTime}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectPrintFlowCard/${orderInfo.workOrderDate}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | |
| | | if (roleId=='1' || roleId=='17'){ |
| | | gridOptions.toolbarConfig.buttons[2].visible=true |
| | | }*/ |
| | | |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | //点击查询 |
| | | const getWorkOrder = () => { |
| | | |
| | | let startTime = orderInfo.workOrderDate[0] |
| | | let endTime = orderInfo.workOrderDate[1] |
| | | |
| | | let orderId=form.orderId |
| | | let project=form.project |
| | | |
| | |
| | | } |
| | | let state = optionVal.value |
| | | |
| | | request.post(`/processCard/selectPrintFlowCard/${startTime}/${endTime}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectPrintFlowCard/${orderInfo.workOrderDate}/${orderId}/${project}/${userId}/${state}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | import {remove} from "xe-utils"; |
| | | import PrintProcess from "@/components/pp/PrintProcess.vue"; |
| | | import PrintProcessStraight from "@/components/pp/PrintProcessStraight.vue"; |
| | | import useOrderInfoStore from "@/stores/sd/order/orderInfo" |
| | | |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | |
| | |
| | | const dialogTableVisibleLabelXJTwo = ref(false) |
| | | const dialogTableVisibleStraight = ref(false) |
| | | let rowClickIndex = ref(null) |
| | | |
| | | const orderInfo = useOrderInfoStore() |
| | | |
| | | |
| | | //定义数据返回结果 |
| | |
| | | } |
| | | |
| | | //第一次加载获取近七天时间和默认状态 |
| | | form.date1 = getNowTime() |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | if (orderInfo.workOrderDate[0]=="" && orderInfo.workOrderDate[1]==""){ |
| | | orderInfo.workOrderDate=getNowTime() |
| | | } |
| | | let startTime = orderInfo.workOrderDate[0] |
| | | let endTime = orderInfo.workOrderDate[1] |
| | | let orderId=form.orderId |
| | | let project=form.project |
| | | |
| | | //第一次加载数据 |
| | | |
| | | request.post(`/processCard/selectPrintPrintProject/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectPrintPrintProject/${orderInfo.workOrderDate}`, filterData.value).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | if(hidePrintLabels=="true"){ |
| | |
| | | gridOptions.toolbarConfig.buttons.push(button2) |
| | | |
| | | } |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | produceList.value = deepClone(res.data.data) |
| | | xGrid.value.reloadData(produceList.value) |
| | | gridOptions.loading = false |
| | |
| | | let startTime = form.date1[0] |
| | | let endTime = form.date1[1] |
| | | |
| | | request.post(`/processCard/selectPrintPrintProject/${startTime}/${endTime}`, filterData.value).then((res) => { |
| | | request.post(`/processCard/selectPrintPrintProject/${orderInfo.workOrderDate}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | <div style="width: 100%;height: 100%"> |
| | | <div class="head"> |
| | | <el-date-picker |
| | | v-model="form.date1" |
| | | v-model="orderInfo.workOrderDate" |
| | | :start-placeholder="$t('basicData.startDate')" |
| | | :end-placeholder="$t('basicData.endDate')" |
| | | format="YYYY/MM/DD" |
| | |
| | | if (res.code == 200) { |
| | | total.dataTotal = res.data.total.total * 1 |
| | | total.pageTotal = res.data.total.pageTotal |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | pageTotal.value = res.data.total |
| | | res.data.data.forEach(item => { |
| | | switch (item.layoutStatus) { |
| | |
| | | |
| | | //当可操作数量为0,并且完工数量不等于可完工数量时 |
| | | if(row.minQuantity===0 && val!==(totalQuantity-row.breakageQuantity) ){ |
| | | console.log(12312312312) |
| | | return new Error(`${t('reportingWorks.pleaseNumber12')} ${okVal}+${val}=${okVal+val}\n |
| | | ${t('reportingWorks.pleaseNumber13')} ${nextQuantitySum}\n |
| | | ${t('reportingWorks.pleaseNumber14')} |
| | |
| | | total.pageTotal= res.data.total.pageTotal |
| | | pageTotal.value = res.data.total |
| | | total.value = res.data.total |
| | | orderInfo.reportingWorkDate = res.data.selectDate |
| | | produceList=res.data.data |
| | | // 使用map方法来处理每个对象 |
| | | let modifiedCollection = produceList.map(item => { |
| | |
| | | let selectState = optionVal.value |
| | | request.post(`/workOrder/orderGlassDetail/${orderInfo.workOrderDate}/${selectState}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | //isButtonDisabled=false |
| | | pageTotal.value = res.data.total |
| | | orderInfo.workOrderDate = res.data.selectDate |
| | | xGrid.value.loadData(res.data.data) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | const company = companyInfo() |
| | | const xGrid = ref() |
| | | const trademarkLocation=ref([t('craft.upperLeft'),t('craft.upperRight'),t('craft.lowLeft'),t('craft.lowRight')]) |
| | | const qrcodeLocation=ref({}) |
| | | |
| | | |
| | | const gridOptions = reactive({ |
| | | loading:true, |
| | | border: "full",//表格加边框 |
| | |
| | | //初始化判断是否有id传入 |
| | | onMounted(()=>{ |
| | | addListener(xGrid.value,gridOptions) |
| | | qrcodeLocation.value[t('craft.default')] = "" |
| | | trademarkLocation.value.forEach(item =>{ |
| | | qrcodeLocation.value[item] = item |
| | | }) |
| | | const str = route.query.orderId |
| | | if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){ |
| | | return |
| | |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | @closed="handleClosed" |
| | | style="width: 922px;height:750px;margin-top: 100px ; |
| | | style="width: 1122px;height:750px;margin-top: 100px ; |
| | | position: relative;" > |
| | | <div style="width: 50%;height: 100%;float: left"> |
| | | <el-row style=""> |
| | |
| | | <el-row> |
| | | <el-col :span="5">{{$t('craft.qr1Local')}}:</el-col> |
| | | <el-col :span="25"> |
| | | <el-radio v-model="trademarkAttr.qr1.location" v-for="item in trademarkLocation" :label="item" /> |
| | | <el-radio v-model="trademarkAttr.qr1.location" |
| | | v-for="(item,keys) in qrcodeLocation" |
| | | :value="item" |
| | | > |
| | | {{keys}} |
| | | </el-radio> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | |
| | | <el-row> |
| | | <el-col :span="5">{{$t('craft.qr2Local')}}:</el-col> |
| | | <el-col :span="25"> |
| | | <el-radio v-model="trademarkAttr.qr2.location" v-for="item in trademarkLocation" :label="item" /> |
| | | <el-radio v-model="trademarkAttr.qr2.location" |
| | | v-for="(item,keys) in qrcodeLocation" |
| | | :value="item" |
| | | > |
| | | {{keys}} |
| | | </el-radio> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | |
| | | position: relative;display: flex;justify-content: center;align-content: center;"> |
| | | |
| | | <div id="mains" ref="parent" > |
| | | <div id="iocn" ref="draggable" |
| | | <div id="icon" ref="draggable" |
| | | v-if="tagCheck(t('craft.upperLeft'))" |
| | | :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" |
| | | style="width: 20px;height: 20px;left: 0;top: 0;background-color: red;position: absolute;" |
| | |
| | | > |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.upperRight'))" @mousedown="startDragUpperRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;top: 0;background-color: red;position: absolute;"> |
| | | <div id="icon" ref="draggable" v-if="tagCheck(t('craft.upperRight'))" @mousedown="startDragUpperRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginTop:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;top: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowLeft'))" @mousedown="startDragLowLeft" :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;left: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <div id="icon" ref="draggable" v-if="tagCheck(t('craft.lowLeft'))" @mousedown="startDragLowLeft" :style="{marginLeft:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;left: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <div id="iocn" ref="draggable" v-if="tagCheck(t('craft.lowRight'))" @mousedown="startDragLowRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <div id="icon" ref="draggable" v-if="tagCheck(t('craft.lowRight'))" @mousedown="startDragLowRight" :style="{marginRight:trademarkAttr.xMargin/big+'px',marginBottom:trademarkAttr.yMargin/big+'px'}" style="width: 20px;height: 20px;right: 0;bottom: 0;background-color: red;position: absolute;"> |
| | | <el-image @dblclick="trademarkenlargement" style="width: 100%;height: 100%" :src="iconNickname"/> |
| | | </div> |
| | | <canvas id="canvas" ></canvas> |
| | |
| | | |
| | | |
| | | </div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 33px;left: 652px;">{{orderDetailWidth}}</div> |
| | | <div id="height" style="width: 60px;position: absolute;top: 178px;left: 390px;">{{orderDetailHeight}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 33px;left: 752px;">{{orderDetailWidth}}</div> |
| | | <div id="height" style="width: 60px;position: absolute;top: 178px;right: 100px;">{{orderDetailHeight}}</div> |
| | | <div style="float: left;margin-top: 20px;margin-left: 80px"> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data1" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data2" /> |
| | |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data7" /> |
| | | <el-input class="contactNumber" @blur="getproject" type="text" v-model="data8" /><br> |
| | | </div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 332px;left: 520px;">{{$t('order.upper')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 354px;left: 520px;">{{$t('order.down')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 562px;">{{$t('order.horizontal')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 625px;">{{$t('order.vertical')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 695px;">{{$t('order.horizontal')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 760px;">{{$t('order.vertical')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 332px;left: 520px;margin-left: 80px">{{$t('order.upper')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 354px;left: 520px;margin-left: 80px">{{$t('order.down')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 562px;margin-left: 80px">{{$t('order.horizontal')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 625px;margin-left: 80px">{{$t('order.vertical')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 695px;margin-left: 80px">{{$t('order.horizontal')}}</div> |
| | | <div id="width" style="height: 20px;position: absolute;top: 312px;left: 760px;margin-left: 80px">{{$t('order.vertical')}}</div> |
| | | <div v-if="enlargementFlag" style="width: 400px;height: 250px;float: left;position: relative;background-color: red"> |
| | | <el-image @dblclick="trademarkenlargement" style="z-index: 9999;max-width: 100%;max-height: 100%" :src="iconNickname"/> |
| | | </div> |
| | |
| | | //分架查询 |
| | | @ApiOperation("分架查询接口") |
| | | @SaCheckPermission("selectAddProcess.search") |
| | | @PostMapping("/selectAddProcess/{selectTime1}/{selectTime2}") |
| | | @PostMapping("/selectAddProcess/{selectDate}") |
| | | public Result selectAddProcess( |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable List<String> selectDate, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.selectAddProcess(selectTime1, selectTime2, flowCard)); |
| | | return Result.seccess(flowCardService.selectAddProcess(selectDate, flowCard)); |
| | | } |
| | | |
| | | //分架明细查询 |
| | |
| | | |
| | | @ApiOperation("流程卡打印查询接口") |
| | | @SaCheckPermission("selectPrintFlowCard.search") |
| | | @PostMapping("/selectPrintFlowCard/{selectTime1}/{selectTime2}/{orderId}/{project}/{userId}/{state}") |
| | | @PostMapping("/selectPrintFlowCard/{selectDate}/{orderId}/{project}/{userId}/{state}") |
| | | public Result selectPrintFlowCard( |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2, |
| | | @PathVariable List<String> selectDate, |
| | | @PathVariable String orderId, |
| | | @PathVariable String project, |
| | | @PathVariable String userId, |
| | | @PathVariable Integer state, |
| | | @RequestBody FlowCard flowCard) { |
| | | return Result.seccess(flowCardService.selectPrintFlowCardSv(selectTime1, selectTime2, orderId, project,userId,state, flowCard)); |
| | | return Result.seccess(flowCardService.selectPrintFlowCardSv(selectDate, orderId, project,userId,state, flowCard)); |
| | | } |
| | | |
| | | @ApiOperation("流程卡明细查询接口") |
| | |
| | | |
| | | @ApiOperation("工程打印查询接口") |
| | | @SaCheckPermission("selectPrintFlowCard.search") |
| | | @PostMapping("/selectPrintPrintProject/{selectTime1}/{selectTime2}") |
| | | @PostMapping("/selectPrintPrintProject/{selectDate}") |
| | | public Result selectPrintFlowCard( |
| | | @PathVariable Date selectTime1, |
| | | @PathVariable Date selectTime2) { |
| | | return Result.seccess(flowCardService.selectPrintFlowCard(selectTime1, selectTime2)); |
| | | @PathVariable List<String> selectDate) { |
| | | return Result.seccess(flowCardService.selectPrintFlowCard(selectDate)); |
| | | } |
| | | |
| | | @ApiOperation("修改是否打印状态") |
| | |
| | | Map<String, Integer> getPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, FlowCard flowCard); |
| | | |
| | | //分架数据查询 |
| | | List<FlowCard> selectFlowCardMp(Date selectTime1, Date selectTime2, FlowCard flowCard); |
| | | List<FlowCard> selectFlowCardMp(String selectTime1, String selectTime2, FlowCard flowCard); |
| | | |
| | | //分架明细查询 |
| | | List<Map<String, String>> detailsSelectMp(String orderId, FlowCard flowCard); |
| | |
| | | Boolean deleteReportingWork(String processId); |
| | | Boolean deleteReportingWorkByOrderId(String orderId); |
| | | |
| | | List<Map<String, String>> selectPrintFlowCardMp(Date selectTime1, Date selectTime2, String orderId, String project, Integer state, FlowCard flowCard); |
| | | List<Map<String, String>> selectPrintFlowCardMp(String selectTime1, String selectTime2, String orderId, String project, Integer state, FlowCard flowCard); |
| | | |
| | | List<Map<String, String>> selectPrintFlowCard(Date selectTime1, Date selectTime2); |
| | | List<Map<String, String>> selectPrintFlowCard(String selectTime1, String selectTime2); |
| | | |
| | | List<Map<String, String>> selectPrintMp(String orderId); |
| | | |
| | |
| | | } |
| | | |
| | | //分架查询 |
| | | public Map<String, Object> selectAddProcess(Date selectTime1, Date selectTime2, FlowCard flowCard) { |
| | | public Map<String, Object> selectAddProcess(List<String> selectDate, FlowCard flowCard) { |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | | } |
| | | if(!selectDate.get(1).isEmpty()){ |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.selectFlowCardMp(selectTime1, selectTime2, flowCard)); |
| | | map.put("data", flowCardMapper.selectFlowCardMp( startDate, endDate, flowCard)); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | |
| | | return map; |
| | | } |
| | | |
| | | public Object selectPrintFlowCardSv(Date selectTime1, Date selectTime2, String orderId, String project, String userId, Integer state, FlowCard flowCard) { |
| | | public Object selectPrintFlowCardSv(List<String> selectDate, String orderId, String project, String userId, Integer state, FlowCard flowCard) { |
| | | if ("null".equals(orderId)) { |
| | | orderId = ""; |
| | | } |
| | | if ("null".equals(project)) { |
| | | project = ""; |
| | | } |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | | } |
| | | if(!selectDate.get(1).isEmpty()){ |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.selectPrintFlowCardMp(selectTime1, selectTime2, orderId, project,state, flowCard)); |
| | | map.put("data", flowCardMapper.selectPrintFlowCardMp(startDate, endDate, orderId, project,state, flowCard)); |
| | | String roleId = flowCardMapper.selectUserMp(userId); |
| | | map.put("user", roleId); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | | public Object selectPrintFlowCard(Date selectTime1, Date selectTime2) { |
| | | public Object selectPrintFlowCard(List<String> selectDate) { |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | | } |
| | | if(!selectDate.get(1).isEmpty()){ |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", flowCardMapper.selectPrintFlowCard(selectTime1, selectTime2)); |
| | | map.put("data", flowCardMapper.selectPrintFlowCard(startDate, endDate)); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | | map.put("selectDate",list); |
| | | return map; |
| | | } |
| | | |
| | |
| | | FROM pp.damage_details as a |
| | | left join pp.reporting_work as b |
| | | on a.reporting_work_id = b.reporting_work_id |
| | | left join patch_log as c |
| | | on a.reporting_work_id = c.reporting_work_id |
| | | and a.process_id = c.process_id |
| | | and a.order_number = c.order_sort |
| | | and a.technology_number = c.technology_number |
| | | WHERE a.process_id = #{processId} |
| | | <if test="needOrderNumber!=null"> |
| | | and a.order_number = #{orderNumber} |
| | | </if> |
| | | and a.technology_number =#{technologyNumber} |
| | | and a.breakage_quantity>0 |
| | | and a.patch_status=0 |
| | | and b.reviewed_state>=0 |
| | | and b.this_process in (WITH RECURSIVE cte AS ( |
| | | SELECT 1 AS n |
| | |
| | | SELECT REGEXP_SUBSTR(#{behindProcess}, '[^,]+', 1, n) AS process |
| | | FROM cte |
| | | WHERE REGEXP_SUBSTR(#{behindProcess}, '[^,]+', 1, n) IS NOT NULL) |
| | | and ifnull(c.review_status,0) = 0 |
| | | |
| | | </select> |
| | | <select id="getNotReview"> |
| | | select a.* |
| | | select a.*,ifnull(c.review_status,0) as reviewed_state |
| | | from damage_details as a |
| | | left join reporting_work as b |
| | | on a.reporting_work_id = b.reporting_work_id |
| | | left join patch_log as c |
| | | on a.reporting_work_id = c.reporting_work_id and a.process_id = c.process_id and a.order_number = c.order_sort |
| | | and a.technology_number = c.technology_number |
| | | where a.process_id=#{processId} |
| | | and b.reviewed_state>=0 |
| | | <if test="orderNumber!= null"> |
| | | <if test="orderNumber!= null || orderNumber!=''"> |
| | | and a.order_number = #{orderNumber} |
| | | </if> |
| | | and a.technology_number = #{technologyNumber} |
| | | and a.patch_status=0 |
| | | and a.breakage_quantity>0 |
| | | and c.review_status = 0 |
| | | |
| | | </select> |
| | | </mapper> |
| | |
| | | a.completed_quantity, |
| | | (a.completed_quantity+ a.breakage_quantity), |
| | | (f.completed_quantity |
| | | -ifnull(g.completed_quantity,0)) |
| | | -ifnull(g.completed_quantity,0) + a.breakage_quantity) |
| | | ) as minQuantity -- 修改最小数 |
| | | </if> |
| | | <if test="nextProcess == null or nextProcess == ''"> -- 最后一道工序 |