north-glass-erp/northglass-erp/src/components/pp/TagStyleDesigner.vue
@@ -23,6 +23,9 @@ let dataList = ref([]) let lastList = ref([]) let list = ref([]) //打印机 const printerData = ref() const printerList = ref() // 纸张类型 const paperTypes = { '成品标签': { @@ -666,10 +669,11 @@ hiprint.hiwebSocket.setHost("http://localhost:17521") } //获取打印机列表 /*hiprint.refreshPrinterList((list) => { console.log('refreshPrinterList') console.log(list) });*/ hiprint.refreshPrinterList((list) => { // console.log('refreshPrinterList') // console.log(list) printerList.value=list }); }; @@ -859,8 +863,9 @@ object = {table:lastList.value} columnsNum = (list.panels[0].printElements[0].options.gridColumns || 1) } let printer=printerData.value if(type===1){ const queuePrinter = new QueuePrinter( object,hiprintTemplate,columnsNum) const queuePrinter = new QueuePrinter( object,hiprintTemplate,columnsNum,printer) queuePrinter.tick }else{ hiprintTemplate.value.print(object) @@ -917,13 +922,13 @@ </el-select> </el-col> <el-col :span="3"> <el-select v-model="stateValue" :placeholder="$t('processCard.pleaseSelect')" allow-create class="m-2" clearable filterable style="width: 140px"> <el-select v-model="printerData" :placeholder="$t('processCard.pleaseSelect')" clearable default-value="default_city" style="width: 160px"> <el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value" v-for="item in printerList" :key="item.displayName" :label="item.name" :value="item.name" /> </el-select> </el-col> north-glass-erp/northglass-erp/src/hook/queue.js
@@ -2,7 +2,7 @@ * Queue hook * 打印队列方法 */ export default function QueuePrinter(list,hiprintTemplate,columnsNum){ export default function QueuePrinter(list,hiprintTemplate,columnsNum,printer){ const queue = JSON.parse(JSON.stringify(list)); // 添加打印任务 this.printJob = function(job) { @@ -14,7 +14,8 @@ if(typeof queue === 'object' && Array.isArray(queue)){ if (queue.length > 0) { hiprintTemplate.value.print2(queue[0]) console.log(printer) hiprintTemplate.value.print2(queue[0],{printer:printer}) queue.shift(); // 打印任务,并从队列中移除 }else{ clearInterval(this.tick) north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceList.vue
@@ -84,13 +84,24 @@ inputPattern:/^.{1,20}$/, inputErrorMessage: t('components.message') }).then(({ value }) => { alert(value) const data = { id: row.id, price: value } request.post(`/glassPriceBasic/updateGlassPriceById`,data).then((res) => { if(res.code==='200' && res.data){ ElMessage.success("数据保存成功") router.push({path:'/main/glassPrice/glassPriceList',query:{random:Math.random()}}) }else{ ElMessage.warning('数据保存失败') } }) }) break } case 'delete': { request.post(`/glassPriceBasic/deleteGlassPriceById/${row.id}`).then((res) => { if(res.code==200){ if(res.code==='200' && res.data){ ElMessage.success(t('searchOrder.msgDeleteSuccess')) router.push({path:'/main/glassPrice/glassPriceList',query:{random:Math.random()}}) }else{ north-glass-erp/northglass-erp/src/views/sd/glassPrice/GlassPriceSet.vue
@@ -2,6 +2,7 @@ import glass from './pages/Glass.vue' import Interlayer from './pages/Interlayer.vue' import Hollow from './pages/Hollow.vue' import Process from './pages/Process.vue' import {onMounted, ref} from "vue"; import request from "@/utils/request"; import {ElMessage} from "element-plus"; @@ -71,6 +72,9 @@ <el-tab-pane :name="3" label="中空"> <hollow @getChild="getChild" v-if="tabsValue===3" :basicData="BasicData"/> </el-tab-pane> <el-tab-pane :name="4" label="工艺"> <process @getChild="getChild" v-if="tabsValue===4" :basicData="BasicData"/> </el-tab-pane> </el-tabs> </div> </template> north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Glass.vue
@@ -52,7 +52,8 @@ <el-row :gutter="8"> <el-col :span="3"> <el-input v-model.number="stuff.price" v-model="stuff.price" type="number" placeholder="元/m²" class="delInput"/> </el-col> north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Hollow.vue
@@ -67,7 +67,7 @@ <el-option v-for="item in props.basicData.hollowType" :key="item.id" :label="item.basicName+'('+item.nickname+')'" :value="item.nickname" :value="'('+item.nickname+')'" /> </el-select> </el-col> @@ -76,7 +76,9 @@ <el-row :gutter="8"> <el-col :span="3"> <el-input v-model.number="hollowBasic.price" v-model="hollowBasic.price" type="number" placeholder="元/m²" class="delInput"/> </el-col> </el-row> north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Interlayer.vue
@@ -76,7 +76,9 @@ <el-row :gutter="8"> <el-col :span="3"> <el-input v-model.number="interlayerBasic.price" v-model="interlayerBasic.price" type="number" placeholder="元/m²" class="delInput"/> </el-col> </el-row> north-glass-erp/northglass-erp/src/views/sd/glassPrice/pages/Process.vue
New file @@ -0,0 +1,103 @@ <script setup> import {ref} from "vue" import {useI18n} from "vue-i18n" const { t } = useI18n() const props = defineProps({ basicData:{ stuffColor:null, stuffThickness:null, process:[] } }) console.log(props.basicData) let stuff = ref({ thickness:'', color:'', process:'', price:null, type:'process' }) const emit = defineEmits(['getChild']) const save = ()=>{ emit('getChild',stuff.value) } </script> <template> <el-row :gutter="8"> <el-col :span="12"> <el-select v-model.trim="stuff.thickness" size="small" clearable :placeholder="$t('product.msg.thickness')" > <el-option v-for="item in props.basicData.stuffThickness" :key="item.id" :label="item.basicName" :value="item.basicName" /> </el-select> </el-col> </el-row> <el-row :gutter="8"> <el-col :span="12"> <el-select v-model.trim="stuff.color" size="small" clearable :placeholder="$t('product.msg.color')" filterable> <el-option v-for="item in props.basicData.stuffColor" :key="item.id" :label="item.basicName" :value="item.basicName" /> </el-select> </el-col> </el-row> <el-row :gutter="8"> <el-col :span="12"> <el-select v-model.trim="stuff.process" size="small" clearable placeholder="原片工艺" filterable> <el-option v-for="item in props.basicData.process" :key="item.id" :label="item.basicName" :value="item.basicName" /> </el-select> </el-col> </el-row> <el-row :gutter="8"> <el-col :span="3"> <el-input v-model="stuff.price" type="number" placeholder="元/m²" class="delInput"/> </el-col> </el-row> <el-row :gutter="8"> <el-col :span="3"> <el-button @click="save" type="primary" >保存</el-button> </el-col> </el-row> </template> <style scoped> .el-row{ margin-bottom: 5px; } .el-input{ width: 182px; } /deep/.delInput input::-webkit-outer-spin-button, /deep/.delInput input::-webkit-inner-spin-button { -webkit-appearance: none!important; } /deep/.delInput input[type="number"]{ -moz-appearance: textfield; } </style> north-glass-erp/src/main/java/com/example/erp/entity/sd/GlassPriceBasic.java
@@ -14,6 +14,7 @@ private String type; private Double thickness; private String name; private String process; private Double price; private String json; private LocalDateTime createTime; north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -344,7 +344,7 @@ } //更新流程卡表的报工数量 if (Objects.equals(reportingWork.getNextProcess(), "")) { if (Objects.equals(reportingWork.getNextProcess(), "")|| Objects.equals(reportingWork.getNextProcess(), null)) { LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); flowCardLambdaUpdateWrapper north-glass-erp/src/main/java/com/example/erp/service/sd/GlassPriceBasicService.java
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; @@ -20,11 +21,11 @@ @DS("sd") public class GlassPriceBasicService { private final GlassPriceBasicMapper glassPriceBasicMapper; @Autowired private ProductDetailMapper productDetailMapper; private final ProductDetailMapper productDetailMapper; public GlassPriceBasicService(GlassPriceBasicMapper glassPriceBasicMapper) { public GlassPriceBasicService(GlassPriceBasicMapper glassPriceBasicMapper, ProductDetailMapper productDetailMapper) { this.glassPriceBasicMapper = glassPriceBasicMapper; this.productDetailMapper = productDetailMapper; } //保存玻璃价格 @@ -50,8 +51,14 @@ prams.get("thickness").toString() + prams.get("color").toString() + prams.get("types").toString()); } else if (Objects.equals(type, "process")) { glassPriceBasic.setName(prams.get("thickness").toString() + prams.get("color").toString()+prams.get("process").toString()); glassPriceBasic.setProcess(prams.get("process").toString()); } GlassPriceBasic glassPriceBasic1 = glassPriceBasicMapper.selectOne(new QueryWrapper<GlassPriceBasic>().eq("name", glassPriceBasic.getName())); GlassPriceBasic glassPriceBasic1 = glassPriceBasicMapper.selectOne( new QueryWrapper<GlassPriceBasic>() .eq("name", glassPriceBasic.getName()) ); if(glassPriceBasic1 != null){ return false; } @@ -63,29 +70,42 @@ .selectList(new QueryWrapper<ProductDetail>().eq("prod_id", productId)); final Double[] money = {0.0}; productDetails.forEach(productDetail -> { for (ProductDetail productDetail : productDetails){ Map<String,String> separation = JSON.parseObject( productDetail.getSeparation(), new TypeReference<Map<String, String>>(){}); String name = ""; switch (productDetail.getDetailType()) { case "glass": name = separation.get("thickness") + separation.get("color"); String[] process = productDetail.getProcess().split("->"); for (String s : process) { GlassPriceBasic glassPriceBasic = glassPriceBasicMapper.selectOne( new QueryWrapper<GlassPriceBasic>() .eq("name", name+s)); if(glassPriceBasic == null) { return 0.0; }else{ money[0] += glassPriceBasic.getPrice(); } } break; case "hollow": name = separation.get("thickness") + separation.get("gasType") + separation.get("type"); name = separation.get("thickness") + separation.get("gasType") + separation.get("Type"); break; case "interlayer": name = separation.get("thickness") + separation.get("color") + separation.get("type"); break; } GlassPriceBasic glassPriceBasic = glassPriceBasicMapper .selectOne(new QueryWrapper<GlassPriceBasic>().eq("name", name)); if(glassPriceBasic == null) { money[0]= 0.0; return; return money[0]; } money[0] += glassPriceBasic.getPrice(); }); } return money[0]; }