Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | </tr> |
| | | <tr> |
| | | <th>磨边</th> |
| | | <th colspan="2"></th> |
| | | <th colspan="2">{{data.order.otherRemarks}}</th> |
| | | <th>完工日期</th> |
| | | <th colspan="2">{{data.order.deliveryDate}}</th> |
| | | <th>商标</th> |
| | |
| | | |
| | | |
| | | <tr> |
| | | <th>序号</th> |
| | | <th class="title-1">{{company.columnName}}</th> |
| | | <th>彩釉图号</th> |
| | | <th>编号</th> |
| | |
| | | <th>延米</th> |
| | | <th>楼号</th> |
| | | <th>加工要求</th> |
| | | <th>交货日期</th> |
| | | <th>序号</th> |
| | | <th>备注</th> |
| | | <th>备注1</th> |
| | | <th>备注2</th> |
| | | <th>备注3</th> |
| | |
| | | <td colspan="3"></td> |
| | | </tr> |
| | | <tr v-for="(item1,index1) in item.productDetail" :key="index1"> |
| | | <td>{{item1.orderNumber}}</td> |
| | | <td>{{ item1.otherColumns?.S02}}</td> |
| | | <td>{{ item1.otherColumns?.S03}}</td> |
| | | <td>{{ item1.otherColumns?.S01}}</td> |
| | |
| | | <td>{{item1.perimeter}}</td> |
| | | <td>{{item1.buildingNumber}}</td> |
| | | <td>{{item1.processingNote}}</td> |
| | | <td></td> |
| | | <td>{{item1.orderNumber}}</td> |
| | | <td>{{item1.remarks}}</td> |
| | | |
| | | <td> |
| | | {{ ((item1.otherColumns?.S04)?item1.otherColumns.S04:'')}} |
| | |
| | | <div id="sheet"> |
| | | <table border="1"> |
| | | <tr class="title-s"> |
| | | <th colspan="16"> |
| | | <th colspan="17"> |
| | | <img src="../../../assets/northGlass.ico" alt="" style="float: left;max-width: 60px;max-height: 60px"> |
| | | <h1> |
| | | {{company.companyName}} |
| | |
| | | </tr> |
| | | |
| | | <tr class="title-s"> |
| | | <th colspan="6">地址:{{company.address}}</th> |
| | | <th colspan="7">地址:{{company.address}}</th> |
| | | <th colspan="5">电话:{{ company.telephone }}</th> |
| | | <th colspan="5">传真:{{ company.fax }}</th> |
| | | </tr> |
| | | |
| | | |
| | | <tr class="title-s" > |
| | | <th colspan="16"> |
| | | <th colspan="17"> |
| | | <h3>玻璃加工单</h3> |
| | | </th> |
| | | </tr> |
| | |
| | | <th class="title-1">客户名称</th> |
| | | <th colspan="7">{{data.order.customerName}}</th> |
| | | <th class="title-1">工程名称</th> |
| | | <th colspan="7">{{data.order.project}}</th> |
| | | <th colspan="8">{{data.order.project}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th class="title-1">生产单号</th> |
| | |
| | | <th class="title-1">下单日期</th> |
| | | <th colspan="3">{{data.order.createTime}}</th> |
| | | <th class="title-1">订单类型</th> |
| | | <th colspan="3">{{data.order.orderType}}</th> |
| | | <th colspan="4">{{data.order.orderType}}</th> |
| | | <th class="title-1">跟单员</th> |
| | | <th colspan="3">{{data.order.creator}}</th> |
| | | </tr> |
| | | <tr> |
| | | <th>磨边</th> |
| | | <th colspan="3"></th> |
| | | <th colspan="3">{{data.order.otherRemarks}}</th> |
| | | <th>完工日期</th> |
| | | <th colspan="3">{{data.order.deliveryDate}}</th> |
| | | <th>商标</th> |
| | | <th colspan="3">{{data.order.icon}}</th> |
| | | <th colspan="4">{{data.order.icon}}</th> |
| | | <th>包装</th> |
| | | <th colspan="3">{{data.order.packType}}</th> |
| | | </tr> |
| | |
| | | <th>片数</th> |
| | | <th>面积</th> |
| | | <th>延米</th> |
| | | <th>半径</th> |
| | | <th>楼号</th> |
| | | <th>加工要求</th> |
| | | <th>交货日期</th> |
| | | <th>备注</th> |
| | | <th>序号</th> |
| | | <th>备注1</th> |
| | | <th>备注2</th> |
| | |
| | | <tbody v-for="(item,index) in data.orderDetail" :key="index"> |
| | | <tr> |
| | | <td colspan="2" class="no-change-row">产品名称</td> |
| | | <td colspan="9">{{item.productName}}</td> |
| | | <td colspan="10">{{item.productName}}</td> |
| | | <td class="no-change-row">产品描述</td> |
| | | <td colspan="4"></td> |
| | | </tr> |
| | |
| | | <td>{{item1.quantity}}</td> |
| | | <td>{{item1.grossArea}}</td> |
| | | <td>{{item1.perimeter}}</td> |
| | | <td>{{item1.bendRadius}}</td> |
| | | <td>{{item1.buildingNumber}}</td> |
| | | <td>{{item1.processingNote}}</td> |
| | | <td>{{}}</td> |
| | | <td>{{item1.remarks}}</td> |
| | | <td></td> |
| | | <td>{{((item1.otherColumns?.S04)?item1.otherColumns.S04:'')}}</td> |
| | | <td>{{((item1.otherColumns?.S05)?item1.otherColumns.S05:'')}}</td> |
| | |
| | | <td>下料-高</td> |
| | | <td>拱高</td> |
| | | |
| | | <td colspan="6"></td> |
| | | <td colspan="7"></td> |
| | | </tr> |
| | | <tr v-if="item1.differentSize" v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" > |
| | | |
| | |
| | | <td>{{item2.arc}}</td> |
| | | <td>{{item2.childHeight}}</td> |
| | | <td>{{item1.archRise}}</td> |
| | | <td colspan="6"></td> |
| | | <td colspan="7"></td> |
| | | |
| | | </tr> |
| | | </template> |
| | |
| | | <td>{{getQuantity(item.productDetail)}}</td> |
| | | <td>{{getArea(item.productDetail)}}</td> |
| | | <td>{{getPerimeter(item.productDetail)}}</td> |
| | | <td colspan="8"></td> |
| | | <td colspan="9"></td> |
| | | </tr> |
| | | |
| | | |
| | |
| | | <td colspan=""></td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="16" style="white-space: pre-wrap;text-align:left "> |
| | | <td colspan="17" style="white-space: pre-wrap;text-align:left "> |
| | | <template v-for="(item,index) in data.order.processingNote.split('\n')"> |
| | | {{item}} |
| | | <br> |
| | |
| | | review:'Проверка', |
| | | cancelReview:'Пересмотр', |
| | | theProductHasBeenReviewedAndCannotBeDeleted:'Продукция проверена и не может быть удалена', |
| | | |
| | | productAbbreviation:'Продукция', |
| | | } |
| | | }, |
| | | order:{ |
| | |
| | | customerOrders:'Заказы клиентов', |
| | | orderAmount:'Сумма заказа', |
| | | |
| | | customerAbbreviation:'Клиенты Сокращения', |
| | | pleaseEnterTheCustomerAbbreviation:'Пожалуйста, введите сокращение клиента.', |
| | | }, |
| | | delivery:{ |
| | | delivery:'Отправка', |
| | |
| | | review:'审核', |
| | | cancelReview:'反审', |
| | | theProductHasBeenReviewedAndCannotBeDeleted:'产品已审核,无法删除', |
| | | |
| | | productAbbreviation:'产品简称', |
| | | } |
| | | }, |
| | | order:{ |
| | |
| | | customerOrders:'客户订单', |
| | | orderAmount:'订单金额', |
| | | |
| | | customerAbbreviation:'客户简称', |
| | | pleaseEnterTheCustomerAbbreviation:'请输入客户简称', |
| | | }, |
| | | delivery:{ |
| | | delivery:'发货', |
| | |
| | | <script setup> |
| | | import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue"; |
| | | import {computed, nextTick, onMounted, onUnmounted, reactive, ref, toRefs} from "vue"; |
| | | import {useRouter,useRoute} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | |
| | | }) |
| | | |
| | | /*onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | })*/ |
| | | |
| | | |
| | | let inputDisabled = ref(false) |
| | | onMounted(() =>{ |
| | |
| | | const $grid = xGrid.value |
| | | this.$grid.commitProxy('data', yourData) |
| | | } |
| | | onMounted(() => { |
| | | window.addEventListener('keypress', qrcodeScanner); |
| | | }) |
| | | |
| | | // 在组件卸载时移除键盘事件监听 |
| | | onUnmounted(() => { |
| | | window.removeEventListener('keypress', qrcodeScanner); |
| | | }) |
| | | |
| | | let code = ''; |
| | | let codeArr = []; |
| | | let lastTime,nextTime = '' |
| | | let lastCode,nextCode = '' |
| | | const qrcodeScanner = (e) =>{ |
| | | |
| | | nextCode = e.key; |
| | | |
| | | |
| | | // 当前触发时间 |
| | | nextTime = new Date().getTime(); |
| | | // 第一次获取 |
| | | if(!lastTime && !lastCode && e.key !== 'Enter'){ |
| | | codeArr = [] |
| | | codeArr.push(e.key) |
| | | } |
| | | |
| | | if(lastCode && lastTime && (nextTime - lastTime > 50)){ |
| | | // 相隔时间大于30 说明不是扫码枪扫描的 清空重新 |
| | | codeArr = [] |
| | | // 当扫码前有keypress事件时,防止首字缺失 |
| | | } else if(lastCode && lastTime && e.key !== 'Enter'){ |
| | | codeArr.push(e.key) |
| | | } |
| | | lastCode = nextCode |
| | | lastTime = nextTime |
| | | // 扫描结束 |
| | | if(e.keyCode === 13){ |
| | | // 可进行下一步操作 |
| | | /* 下一步操作 */ |
| | | if(codeArr.length!==0){ |
| | | titleUploadData.value.processId = codeArr.join('') |
| | | } |
| | | |
| | | codeArr=[] |
| | | lastTime = '' |
| | | nextTime = '' |
| | | lastCode = '' |
| | | nextCode = '' |
| | | } |
| | | |
| | | } |
| | | |
| | | </script> |
| | | |
| | |
| | | import CreateBasicData from "@/views/sd/basicData/CreateBasicData.vue" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | import {useI18n} from "vue-i18n" |
| | | import {changeFilterEvent, filterChanged} from "@/hook"; |
| | | const { t } = useI18n() |
| | | |
| | | let dialogTableVisible = ref(false) |
| | | const router = useRouter() |
| | | |
| | | let basic = ref({ |
| | | basicType : ['',''], |
| | | }) |
| | | let options=ref([ |
| | | { "label": t('orderBasicData.order'), |
| | | "value": "order", |
| | | "children": [ |
| | | { |
| | | "label": t('orderBasicData.orderType'), |
| | | "value": "orderType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.orderClassify'), |
| | | "value": "orderClassify" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.icon'), |
| | | "value": "icon" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.packType'), |
| | | "value": "packType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.alType'), |
| | | "value": "alType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.saleMan'), |
| | | "value": "saleMan" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.product'), |
| | | "value": "product", |
| | | "children": [ |
| | | { |
| | | "label": t('orderBasicData.stuffThickness'), |
| | | "value": "stuffThickness" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.stuffColor'), |
| | | "value": "stuffColor" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.stuffCraft'), |
| | | "value": "stuffCraft" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.stuffPosition'), |
| | | "value": "stuffPosition" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.stuffLowE'), |
| | | "value": "stuffLowE" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.InterlayerThickness'), |
| | | "value": "InterlayerThickness" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.InterlayerType'), |
| | | "value": "InterlayerType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.InterlayerColor'), |
| | | "value": "InterlayerColor" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.process'), |
| | | "value": "process" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.hollowThickness'), |
| | | "value": "hollowThickness" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.hollowGasType'), |
| | | "value": "hollowGasType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.hollowType'), |
| | | "value": "hollowType" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.hollowGlueDepth'), |
| | | "value": "hollowGlueDepth" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "children": [ |
| | | { |
| | | "label": t('orderBasicData.paymentTerms'), |
| | | "value": "paymentTerms" |
| | | }, |
| | | { |
| | | "label": t('orderBasicData.payMethod'), |
| | | "value": "payMethod" |
| | | } |
| | | ], |
| | | "label": t('orderBasicData.delivery'), |
| | | "value": "delivery" |
| | | } |
| | | ]) |
| | | |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | //remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | columns:[ |
| | | {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",}, |
| | | {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",}, |
| | | {field:'basicName',title: t('orderBasicData.name')}, |
| | | {field:'basicName',title: t('orderBasicData.name'),filters: [{data: ''}],slots: {filter: 'num1_filter'},filterMethod: filterChanged}, |
| | | {field:'nickname',title: t('orderBasicData.alias')}, |
| | | {field:'createTime',title: t('basicData.creationTime')}, |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | const handleChange = () => { |
| | | console.log(basic.value.basicType[1]) |
| | | request.get(`/basicData/BasicDataByType/${basic.value.basicType[0]}/${basic.value.basicType[1]}`).then(res => { |
| | | if(res.code==='200'){ |
| | | xGrid.value.reloadData(res.data) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-cascader |
| | | v-model="basic.basicType" |
| | | @change="handleChange" |
| | | :options="options" |
| | | clearable |
| | | placeholder="" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <vxe-grid |
| | | style="width: 40vw;" |
| | | class="mytable-scrollbar" |
| | |
| | | </el-popconfirm> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input v-model="option.data" type="text" @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | <el-dialog |
| | | v-model="dialogTableVisible" |
| | |
| | | let ruleForm = ref({ |
| | | id:0, |
| | | customerName: '', |
| | | customerAbbreviation: '', |
| | | grade: '', |
| | | moneyLimit: '', |
| | | address: '', |
| | |
| | | const str = route.query.id |
| | | if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){ |
| | | ruleForm.value.id = Number(str) |
| | | |
| | | console.log(ruleForm.value) |
| | | request.post(`/customer/getSelectCustomer/1/100`,ruleForm.value).then((res) => { |
| | | if(res.code==200){ |
| | | console.log(res.data.data[0]) |
| | | ruleForm.value=deepClone(res.data.data[0]) |
| | | |
| | | }else{ |
| | |
| | | let flowData = ref({ |
| | | customer: ruleForm |
| | | }) |
| | | |
| | | console.log() |
| | | request.post("/customer/insertCustomer", flowData.value).then((res) => { |
| | | if(res.code==200 && res.data===true){ |
| | | resetForm() |
| | |
| | | } |
| | | //重置输入框 |
| | | const resetForm = () => { |
| | | ruleForm.value.id=0 |
| | | ruleForm.value.customerName="" |
| | | ruleForm.value.customerAbbreviation="" |
| | | ruleForm.value.grade="" |
| | | ruleForm.value.moneyLimit="" |
| | | ruleForm.value.address="" |
| | |
| | | <el-col :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.customerName" ></el-input></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>{{ $t('customer.customerAbbreviation') }}:</el-text></el-col> |
| | | <el-col :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.customerAbbreviation" ></el-input></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"><el-text>{{ $t('customer.customerGrade') }}:</el-text></el-col> |
| | | <el-col :span="5"><el-input style="font-size: large;color: #181818" v-model="ruleForm.grade" ></el-input></el-col> |
| | | </el-row> |
| | |
| | | </div> |
| | | |
| | | <div id="main-body"> |
| | | <router-view /> |
| | | <router-view :key="route.fullPath" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | request.post(`/customer/getSelectCustomer/1/${total.pageSize}`,filterData.value).then((res) => { |
| | | |
| | | if(res.code==200){ |
| | | console.log(res.data.data) |
| | | total.dataTotal = res.data.total.total*1 |
| | | total.pageTotal= res.data.total.pageTotal |
| | | pageNum.value=1 |
| | |
| | | {title: t('basicData.operate'), width: 180, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {field: 'id', title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerName', title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'customerAbbreviation', title: t('customer.customerAbbreviation'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'grade', title: t('customer.customerGrade'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'moneyLimit', title: t('customer.moneyLimit'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'address', title: t('customer.address'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | |
| | | v-model="titleUploadData.deliveryDate" |
| | | type="date" |
| | | placeholder="" |
| | | format="YYYY/MM/DD" |
| | | value-format="YYYY-MM-DD" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="2"><el-text>{{$t('order.batch')}}:</el-text></el-col> |
| | |
| | | ],//表格表头字段 |
| | | data:[],//表格数据 |
| | | url :'/order/getOrderProductSummary', |
| | | exportUrl :'/order/getOrderProductSummary', |
| | | exportUrl :'/order/exportOrderReport', |
| | | exportName:t('order.orderDetailsSummaryReport'), |
| | | footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount'] |
| | | }) |
| | |
| | | } |
| | | }) |
| | | productTotal.value.productName=productName |
| | | productTotal.value.productAbbreviation=productName.split("mm").join("") |
| | | let product = { |
| | | title: productTotal.value, |
| | | detail:productDetailList.value |
| | |
| | | hollowFlag.value.flag=true |
| | | hollowFlag.value.index=null |
| | | } |
| | | |
| | | const productName = computed(() =>{ |
| | | let productName = "" |
| | | productDetailList.value.forEach(item =>{ |
| | |
| | | <el-input v-model="productTotal.remarks" size="small" /> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <div class="grid-content ep-bg-purple" > |
| | | <el-text class="mx-1" |
| | | style="margin-left: 0.5rem;text-align: center"> |
| | | {{ $t('product.msg.productAbbreviation') }}: |
| | | </el-text> |
| | | <el-input v-model="productTotal.productAbbreviation" size="small" /> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <div class="grid-content ep-bg-purple" > |
| | | <el-input :value="productName" size="large" disabled /> |
| | | <el-input :value="productName" size="large" /> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | |
| | | private Long id; |
| | | private String customerName; |
| | | private String customerAbbreviation; |
| | | private String grade; |
| | | private Double moneyLimit; |
| | | private String address; |
| | |
| | | private String orderClassify; |
| | | private String icon; |
| | | private String packType; |
| | | private String deliveryDate; |
| | | private LocalDate deliveryDate; |
| | | private String batch; |
| | | private Integer calculateType; |
| | | private Integer salesmanId; |
| | |
| | | for (int i = 0; i < OrderDetails.size(); i++) { |
| | | OrderDetails.get(i).setOrderNumber(i+1); |
| | | OrderDetails.get(i).setOrderId(orderId); |
| | | OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2/1000); |
| | | OrderDetails.get(i).setPerimeter((OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000); |
| | | OrderDetails.get(i).setWeight(1.0); |
| | | if(OrderDetails.get(i).getBendRadius()!=null && OrderDetails.get(i).getBendRadius()!=0){ |
| | | //获取弯钢弧度 |
| | |
| | | <if test="customer.customerName != null and customer.customerName != ''"> |
| | | and c.customer_name regexp #{customer.customerName} |
| | | </if> |
| | | <if test="customer.customerAbbreviation != null and customer.customerAbbreviation != ''"> |
| | | and c.customer_abbreviation regexp #{customer.customerAbbreviation} |
| | | </if> |
| | | <if test="customer.grade != null and customer.grade != ''"> |
| | | and c.grade regexp #{customer.grade} |
| | | </if> |
| | |
| | | </select> |
| | | |
| | | <insert id="insertCustomer" useGeneratedKeys="true" > |
| | | insert into sd.customer(customer_name,grade,money_limit,address,contact,phone) |
| | | insert into sd.customer(customer_name,customer_abbreviation,grade,money_limit,address,contact,phone) |
| | | values ( |
| | | #{customer.customerName},#{customer.grade},#{customer.moneyLimit}, |
| | | #{customer.customerName},#{customer.customerAbbreviation},#{customer.grade},#{customer.moneyLimit}, |
| | | #{customer.address},#{customer.contact},#{customer.phone} |
| | | ) |
| | | </insert> |
| | | |
| | | <update id="updateCustomer" useGeneratedKeys="true" > |
| | | update sd.customer set customer_name=#{customer.customerName},grade=#{customer.grade}, |
| | | update sd.customer set customer_name=#{customer.customerName},customer_abbreviation=#{customer.customerAbbreviation},grade=#{customer.grade}, |
| | | money_limit=#{customer.moneyLimit},address= #{customer.address}, |
| | | contact=#{customer.contact},phone=#{customer.phone} where id=#{customer.id} |
| | | </update> |
| | |
| | | od.gross_amount, |
| | | od.compute_gross_area, |
| | | ifnull(od.processing_note,"") as processingNote, |
| | | ifnull(od.remarks,"") as buildingNumber, |
| | | ifnull(od.building_number,"") as buildingNumber, |
| | | od.price |
| | | from order_detail od |
| | | where od.order_id = #{orderId} |
| | |
| | | o.quantity = od.b, |
| | | o.area = od.c, |
| | | o.perimeter= od.aa, |
| | | o.other_money = ifnull(c.money,0) |
| | | o.other_money = ifnull(c.money,0), |
| | | o.other_remarks = (select group_concat( distinct edging_type) from order_detail where order_id = #{orderId} and edging_type is not null) |
| | | where |
| | | o.order_id = #{orderId} |
| | | |