Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | dataForGlassInventory.value = data; |
| | | }; |
| | | |
| | | //获取GlassInventory的值(查询库存) |
| | | const sendDataGlassInventory = ref() |
| | | const handleInventoyData = (selectedLabel1,selectedLabel2) => { |
| | | sendDataGlassInventory.value = { |
| | | selectedLabel1, selectedLabel2 |
| | | }; |
| | | }; |
| | | |
| | | //右键菜单打开修边 |
| | | const isTrimmingDialogVisible = ref(false); |
| | | const sendTrimming = (value) => { |
| | | isTrimmingDialogVisible.value = value; |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template > |
| | | <div style="width: 100%;height: 100%"> |
| | | <div id="main-body"> |
| | | <project-detail @changeDialog="changeDialog" @forward-data-to-grandparent="handleProjectDetailData"/> |
| | | <project-detail @changeDialog="changeDialog" |
| | | @forward-data-to-grandparent="handleProjectDetailData" |
| | | @send-inventory-to-op="handleInventoyData" |
| | | :TrimmingDialogVisible="isTrimmingDialogVisible" /> |
| | | </div> |
| | | <div id="main-footer"> |
| | | <glass-inventory :receivedData="dataForGlassInventory"/> |
| | | <glass-inventory :receivedData="dataForGlassInventory" |
| | | :InventoryData="sendDataGlassInventory" |
| | | @select-trimming="sendTrimming"/> |
| | | </div> |
| | | |
| | | |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | import {defineEmits, ref} from "vue"; |
| | | |
| | | const value1 = ref('') |
| | | const value2 = ref('') |
| | |
| | | label: 'Low-e', |
| | | }, |
| | | ] |
| | | |
| | | const emit = defineEmits(['send-data-inventory',]); |
| | | const props = defineProps({ |
| | | closeDialog: Function |
| | | }); |
| | | |
| | | const CheckInventory = () => { |
| | | const selectedLabel1 = options1.find((option) => option.value === value1.value)?.label || ''; |
| | | const selectedLabel2 = options2.find((option) => option.value === value2.value)?.label || ''; |
| | | // 判断两个值是否都被选择了,如果有一个为空字符串,则提示并返回,不执行后续操作 |
| | | if (!selectedLabel1 ||!selectedLabel2) { |
| | | window.alert('请选择相关选项'); |
| | | return; |
| | | } |
| | | props.closeDialog(1); |
| | | emit('send-data-inventory', selectedLabel1,selectedLabel2); |
| | | }; |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | </div> |
| | | |
| | | <div style="float: right; margin:-55px 35px 0 0;"> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button type="primary" @click="CheckInventory">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | import {nextTick, onMounted, reactive, ref, watch} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {useRoute} from "vue-router"; |
| | | const { t } = useI18n() |
| | | |
| | | const {t} = useI18n() |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | height:'100%', |
| | | height: '100%', |
| | | loading: false, |
| | | border: "full",//表格加边框 |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30, useKey: true},//鼠标移动或选择高亮 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30, useKey: true},//鼠标移动或选择高亮 |
| | | id: 'GlassInventory', |
| | | scrollX:{enabled: true}, |
| | | scrollY:{ enabled: true ,gt:0},//开启虚拟滚动 |
| | | showOverflow:true, |
| | | scrollX: {enabled: true}, |
| | | scrollY: {enabled: true, gt: 0},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | |
| | | showStatus: true |
| | | }, |
| | | |
| | | columns:[ |
| | | {type:'seq',fixed:"left", title:' ', width: 50}, |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: ' ', width: 50}, |
| | | {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80}, |
| | | {field: 'id', title: '物料编码',}, |
| | | {field:'width',title: t('order.width'),}, |
| | | {field: 'height',title: t('order.height')}, |
| | | {field: 'width', title: t('order.width'),}, |
| | | {field: 'height', title: t('order.height')}, |
| | | {field: 'thickness', title: t('order.totalThickness'),}, |
| | | {field: 'model', title: t('warehouseBasicData.type'),}, |
| | | {field: 'leftTrim', title: '左修边',}, |
| | |
| | | {field: 'name', title: '名称',}, |
| | | {field: 'producer', title: '供应商',} |
| | | ],//表头参数 |
| | | data:null,//表格数据 |
| | | data: null,//表格数据 |
| | | //右键菜单 |
| | | menuConfig: { |
| | | body: { |
| | | options: [ |
| | | [ |
| | | {code: 'choose', name: '选择',}, |
| | | {code: 'selectTrimming', name: '设置统一修边',}, |
| | | {code: 'Exports', name: '数据导出', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | ], |
| | | [] |
| | | ] |
| | | }, |
| | | }, |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots:{ |
| | | slots: { |
| | | buttons: "toolbar_buttons" |
| | | }, |
| | | }, |
| | | }) |
| | | |
| | | const emit = defineEmits(['select-trimming']); |
| | | // 右键菜单 |
| | | const operationConfigs = [ |
| | | { |
| | | code: 'choose', |
| | | successMsg: '已选中!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行隐藏流程卡操作。'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'selectTrimming', // 设置统一修边 |
| | | successMsg: '已打开!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | openTrimming: async () => { |
| | | emit('select-trimming', true) |
| | | } |
| | | }, |
| | | { |
| | | code: 'Exports', // 导出文件操作的配置 |
| | | successMsg: '文件导出成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | }, |
| | | ] |
| | | |
| | | // 右键菜单点击逻辑 |
| | | const gridEvents = { |
| | | menuClick({menu}) { |
| | | const $grid = xGrid.value; |
| | | if ($grid) { |
| | | const config = operationConfigs.find(c => c.code === menu.code); |
| | | if (config) { |
| | | if (config.code === 'Exports') { |
| | | config.gridRef.value.exportData(); |
| | | ElMessage.success(config.successMsg); |
| | | return; |
| | | } |
| | | // 添加确认提示弹窗,询问用户是否进行当前操作 |
| | | ElMessageBox.confirm('是否进行当前操作?', '确认操作', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | if (config.code === 'selectTrimming') { |
| | | config.openTrimming(); |
| | | ElMessage.success(config.successMsg); |
| | | } |
| | | }).catch(() => { |
| | | // 用户点击取消后执行的逻辑 |
| | | ElMessage.info('已取消操作'); |
| | | }); |
| | | } else { |
| | | console.error(`未找到操作选项 ${menu.code} 对应的配置,请检查配置项`); |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | |
| | | const route = useRoute(); |
| | | |
| | |
| | | const model = ref(route.params.model); |
| | | |
| | | |
| | | const selectMaterialStore = () =>{ |
| | | const selectMaterialStore = () => { |
| | | request.post(`/glassOptimize/materialStore/${thickness.value}/${model.value}`).then((res) => { |
| | | if (Number(res.code) === 200) { |
| | | const rawData = res.data.data; |
| | |
| | | if (newData) { |
| | | Trimming(newData); |
| | | } |
| | | }, { immediate: true }); |
| | | }, {immediate: true}); |
| | | |
| | | watch(() => props.InventoryData, (newInventoryData) => { |
| | | if (newInventoryData) { |
| | | thickness.value = newInventoryData.selectedLabel1; |
| | | model.value = newInventoryData.selectedLabel2; |
| | | // 由于 thickness 和 model 的值改变了,更新表格,调用 selectMaterialStore 重新获取数据 |
| | | selectMaterialStore(); |
| | | } |
| | | }); |
| | | |
| | | const props = defineProps({ |
| | | receivedData : { |
| | | receivedData: { |
| | | type: Object, |
| | | required: false, |
| | | properties: { |
| | | quicksetLeft: { type: Number }, |
| | | quicksetBottom: { type: Number }, |
| | | quicksetRight: { type: Number }, |
| | | quicksetTop: { type: Number } |
| | | }} |
| | | quicksetLeft: {type: Number}, |
| | | quicksetBottom: {type: Number}, |
| | | quicksetRight: {type: Number}, |
| | | quicksetTop: {type: Number} |
| | | } |
| | | }, |
| | | InventoryData: { |
| | | type: Object, |
| | | required: false, |
| | | properties: { |
| | | selectedLabel1: {type: String}, |
| | | selectedLabel2: {type: String}, |
| | | } |
| | | } |
| | | }); |
| | | |
| | | //接受SetTrimming的值 (修边) |
| | | const Trimming = (receivedData) => { |
| | | nextTick(() => { |
| | | const data = gridOptions.data; |
| | | console.log('接收到的receivedData:', receivedData); |
| | | console.log('表格原始数据:', data); |
| | | if (data) { |
| | | try { |
| | | const updatedData = []; |
| | |
| | | const item = data[i]; |
| | | const updatedItem = { |
| | | ...item, |
| | | // 此处修改为从 receivedData 中获取对应的值来更新表格数据项 |
| | | // 从 receivedData 中获取对应的值来更新表格数据项 |
| | | leftTrim: Number(receivedData.quicksetLeft), |
| | | downTrim: Number(receivedData.quicksetBottom), |
| | | rigthTrim: Number(receivedData.quicksetRight), |
| | |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | |
| | | |
| | | <template #num2_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-select v-model="option.data" :placeholder="$t('processCard.pleaseSelect')" |
| | | @change="changeFilterEvent($event, option, $panel)"> |
| | | <vxe-option value="0" :label="$t('basicData.unchecked')"></vxe-option> |
| | | <vxe-option value="1" :label="$t('basicData.selected')"></vxe-option> |
| | | </vxe-select> |
| | |
| | | <script setup> |
| | | import {nextTick, onMounted, reactive, ref} from "vue"; |
| | | import {nextTick, onMounted, reactive, ref, watch} from "vue"; |
| | | import {useI18n} from "vue-i18n"; |
| | | import {Folder, Plus, Setting, Operation,} from "@element-plus/icons-vue"; |
| | | import OptimizeCompute from "@/views/pp/glassOptimize/page/OptimizeCompute.vue"; |
| | |
| | | import SetTrimming from "@/views/pp/glassOptimize/page/SetTrimming.vue"; |
| | | import CheckInventory from "@/views/pp/glassOptimize/page/CheckInventory.vue"; |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import { useRoute } from 'vue-router'; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {useRoute} from 'vue-router'; |
| | | |
| | | |
| | | const {t} = useI18n() |
| | |
| | | columns: [ |
| | | {field: 'order_number', title: '订序', width: 70}, |
| | | {field: 'child_width', width: 100, title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num2_filter'}}, |
| | | {field: 'child_height', width: 100, title: t('order.height'),filters: [{data: ''}],slots: {filter: 'num2_filter'}}, |
| | | {field: 'quantity', width: 150, title: t('order.quantity'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'longGrind1', width: 150, title: '长磨1', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'longGrind2', width: 150, title: '长磨2', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'shortGrind1', width: 150, title: '短磨1', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | {field: 'shortGrind2', width: 150, title: '短磨2', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | { |
| | | field: 'child_height', |
| | | width: 100, |
| | | title: t('order.height'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num2_filter'} |
| | | }, |
| | | { |
| | | field: 'quantity', |
| | | width: 150, |
| | | title: t('order.quantity'), |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'longGrind1', |
| | | width: 150, |
| | | title: '长磨1', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'longGrind2', |
| | | width: 150, |
| | | title: '长磨2', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'shortGrind1', |
| | | width: 150, |
| | | title: '短磨1', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'shortGrind2', |
| | | width: 150, |
| | | title: '短磨2', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'shape', |
| | | width: 150, |
| | |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | {field: 'process_cards', width: 150, title: '流程卡号', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}, |
| | | { |
| | | field: 'process_cards', |
| | | width: 150, |
| | | title: '流程卡号', |
| | | filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | sortable: true |
| | | }, |
| | | { |
| | | field: 'product_name', |
| | | width: 150, |
| | |
| | | }, |
| | | ],//表头参数 |
| | | data: null,//表格数据 |
| | | //右键菜单 |
| | | menuConfig: { |
| | | body: { |
| | | options: [ |
| | | [ |
| | | {code: 'setAmount', name: '设置统一磨量',}, |
| | | {code: 'displayProcessCard', name: '显示流程卡',}, |
| | | {code: 'hideProcessCard', name: '隐藏流程卡',}, |
| | | {code: 'setShape', name: '设置图形',}, |
| | | {code: 'Export', name: '数据导出', prefixIcon: 'vxe-icon-download', visible: true, disabled: false}, |
| | | {code: 'safeDXF', name: '图形另存为DXF',}, |
| | | {code: 'exportOPTIMA', name: '导出数据到OPTIMA',}, |
| | | ], |
| | | [] |
| | | ] |
| | | }, |
| | | }, |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | slots: { |
| | | buttons: "toolbar" |
| | | }, |
| | | |
| | | }, |
| | | |
| | | }) |
| | | // 右键菜单 |
| | | const operationConfigs = [ |
| | | { |
| | | code: 'setAmount', // 设置统一磨量 |
| | | successMsg: '已打开!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | openAmount: async () => { |
| | | dialogVisible.value[2] = true; |
| | | } |
| | | }, |
| | | { |
| | | code: 'displayProcessCard', |
| | | successMsg: '操作成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行显示流程卡操作。'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'hideProcessCard', |
| | | successMsg: '操作成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行隐藏流程卡操作。'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'setShape', |
| | | successMsg: '操作成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行设置图形操作。'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'Export', // 导出文件操作的配置 |
| | | successMsg: '文件导出成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | }, |
| | | { |
| | | code: 'safeDXF', |
| | | successMsg: '操作成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行图形另存为DXF操作。'); |
| | | } |
| | | }, |
| | | { |
| | | code: 'exportOPTIMA', |
| | | successMsg: '操作成功!', |
| | | gridRef: xGrid, |
| | | requiresRow: false, |
| | | showMessage: () => { |
| | | ElMessage.info('此功能暂未完善,暂时无法执行导出数据到OPTIMA操作。'); |
| | | } |
| | | }, |
| | | ] |
| | | |
| | | // 右键菜单点击逻辑 |
| | | const gridEvents = { |
| | | menuClick({menu}) { |
| | | const $grid = xGrid.value; |
| | | if ($grid) { |
| | | const config = operationConfigs.find(c => c.code === menu.code); |
| | | if (config) { |
| | | if (config.code === 'Export') { |
| | | config.gridRef.value.exportData(); |
| | | ElMessage.success(config.successMsg); |
| | | return; |
| | | } |
| | | // 添加确认提示弹窗,询问用户是否进行当前操作 |
| | | ElMessageBox.confirm('是否进行当前操作?', '确认操作', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | if (config.code === 'setAmount') { |
| | | config.openAmount(); |
| | | ElMessage.success(config.successMsg); |
| | | }else if (['displayProcessCard', 'hideProcessCard', 'setShape', 'safeDXF', 'exportOPTIMA'].includes(config.code)) { |
| | | config.showMessage(); |
| | | } |
| | | }).catch(() => { |
| | | // 用户点击取消后执行的逻辑 |
| | | ElMessage.info('已取消操作'); |
| | | }); |
| | | } else { |
| | | console.error(`未找到操作选项 ${menu.code} 对应的配置,请检查配置项`); |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | const handleCommand = async (command) => { |
| | | await emit('changeDialog', command) |
| | |
| | | const openDialog = (index) => { |
| | | dialogVisible.value[index] = true; |
| | | }; |
| | | |
| | | //关闭弹窗 |
| | | const closeDialog = (index) => { |
| | | dialogVisible.value[index] = false; |
| | | }; |
| | | |
| | | //右键菜单统一修边 |
| | | const props = defineProps({ |
| | | TrimmingDialogVisible: Boolean |
| | | }); |
| | | watch(() => props.TrimmingDialogVisible, (newValue) => { |
| | | if (newValue === true) { |
| | | dialogVisible.value[3] = newValue; |
| | | } |
| | | }); |
| | | |
| | | const route = useRoute(); |
| | | //工程号 |
| | |
| | | const Amount = (amountData) => { |
| | | nextTick(() => { |
| | | const data = gridOptions.data; |
| | | console.log('接收到的amountData:', amountData); |
| | | console.log('表格原始数据:', data); |
| | | if (data) { |
| | | try { |
| | | const updatedData = []; |
| | |
| | | }); |
| | | }; |
| | | |
| | | //中转站接受SetTrimming的值 |
| | | //中转站接受SetTrimming的值(设置修边) |
| | | const emit = defineEmits([ |
| | | 'changeDialog', |
| | | 'forward-data-to-grandparent' |
| | | 'forward-data-to-grandparent', |
| | | 'send-inventory-to-op' |
| | | ]); |
| | | |
| | | const handleTrimmingData = (data) => { |
| | | emit('forward-data-to-grandparent', data); |
| | | }; |
| | | |
| | | //中转站接受CheckInventory的值(查询库存) |
| | | const handleInventory = (selectedLabel1, selectedLabel2) => { |
| | | emit('send-inventory-to-op', selectedLabel1, selectedLabel2); |
| | | } |
| | | |
| | | </script> |
| | | |
| | |
| | | <div id="header"> |
| | | <div id="title"> |
| | | <span>工程编号:</span> |
| | | <el-input disabled placeholder="" style="width: 150px" v-model="projectNo"></el-input> |
| | | <el-input disabled placeholder="" style="width: 150px" v-model="projectNo"></el-input> |
| | | <span>工程名称:</span> |
| | | <el-input disabled placeholder="" style="width: 150px; margin-right: 350px" v-model="projectName"></el-input> |
| | | <el-input disabled placeholder="" style="width: 150px; margin-right: 350px" |
| | | v-model="projectName"></el-input> |
| | | <el-button id="checkinventory" type="primary" @click="openDialog(1)">查询库存</el-button> |
| | | <el-dialog |
| | | v-model="dialogVisible[1]" |
| | | title="查询库存" |
| | | destroy-on-close |
| | | style="width: 35%;height:35%;"> |
| | | <check-inventory /> |
| | | <check-inventory :closeDialog="closeDialog" @send-data-inventory="handleInventory"/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary" @click="openDialog(2)">设置磨量</el-button> |
| | |
| | | title="设置磨量" |
| | | destroy-on-close |
| | | style="width: 35%;height:80%;margin-top: 3vh;"> |
| | | <set-amount :closeDialog="closeDialog" @set-amount="Amount"/> |
| | | <set-amount :closeDialog="closeDialog" @set-amount="Amount"/> |
| | | </el-dialog> |
| | | |
| | | <el-button id="button" type="primary" @click="openDialog(3)">设置修边</el-button> |
| | |
| | | > |
| | | <optimize-compute/> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | <!--工程文件菜单--> |
| | | <el-dropdown @command="handleCommand"> |
| | |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | #button{ |
| | | #button { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | /*formConfig: { |
| | | data: { |
| | | width: '', |
| | | height: '', |
| | | quantity: '' |
| | | }, |
| | | items: [ |
| | | { field: 'width', title: t('order.width')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'height', title: t('order.height')+':', itemRender: { name: 'VxeInput' } }, |
| | | { field: 'quantity', title: t('order.quantity')+':', itemRender: { name: 'VxeInput' } }, |
| | | { |
| | | itemRender: { |
| | | name: 'VxeButtonGroup', |
| | | options: [ |
| | | { type: 'submit', content: t('craft.sure'), status: 'primary' }, |
| | | { type: 'reset', content: t('product.msg.reset') } |
| | | ] |
| | | } |
| | | } |
| | | ] |
| | | },*/ |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'id',width: 150, title: 'ID',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | |
| | | |
| | | .square-container { |
| | | width: 300px; |
| | | height: 300px; |
| | | height: 250px; |
| | | display: flex; |
| | | position: relative; |
| | | justify-content: center; |
| | |
| | | } |
| | | |
| | | .top { |
| | | top: 45px; |
| | | top: 20px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | |
| | | } |
| | | |
| | | .bottom { |
| | | bottom: 45px; |
| | | bottom: 20px; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | |
| | | |
| | | <select id="getDetailList"> |
| | | select fc.order_number, |
| | | concat(round(ogd.child_width), "*", round(ogd.child_height)) as child_width, |
| | | concat(IF(ROUND(ogd.child_width, 1) = FLOOR(ogd.child_width), FLOOR(ogd.child_width), ROUND(ogd.child_width, 1)), "*", IF(ROUND(child_height, 1) = FLOOR(child_height), FLOOR(child_height), ROUND(child_height, 1))) as child_width, |
| | | fc.quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |
| | |
| | | |
| | | <select id="getDetailListLike"> |
| | | select fc.order_number, |
| | | concat(round(ogd.child_width), "*", round(ogd.child_height)) as child_width, |
| | | concat(IF(ROUND(ogd.child_width, 1) = FLOOR(ogd.child_width), FLOOR(ogd.child_width), ROUND(ogd.child_width, 1)), "*", IF(ROUND(child_height, 1) = FLOOR(child_height), FLOOR(child_height), ROUND(child_height, 1))) as child_width, |
| | | fc.quantity, |
| | | round(ogd.total_area, 2) as total_area, |
| | | od.perimeter, |