| | |
| | | v-model="showDetialBox" |
| | | :lazy="true" |
| | | width="75%" |
| | | height="80%" |
| | | title="åæ®æç»ä¿¡æ¯" |
| | | > |
| | | <div class="box-head"> |
| | |
| | | } |
| | | }, { |
| | | default: () => h(ElForm, { |
| | | model: formData, |
| | | model: formData00, |
| | | rules: { |
| | | selectedPlatform: [ |
| | | { required: true, message: 'è¯·éæ©åºåºç«å°', trigger: 'change' } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <vol-box |
| | | v-model="showDetailBox" |
| | | :lazy="true" |
| | | width="65%" |
| | | :padding="20" |
| | | title="æ åºååºåº" |
| | | class="custom-vol-box" |
| | | > |
| | | <div> |
| | | <!-- 䏿¹è¾å
¥æ¡ --> |
| | | <el-form :inline="true" :model="formData" ref="formData" style="margin-bottom: 20px; align-items: flex-end;"> |
| | | <el-form-item |
| | | label="æ«ææ¡ç :" |
| | | style="width: 80%" |
| | | prop="barcode" |
| | | > |
| | | <el-input |
| | | ref="barcodeInput" |
| | | v-model="formData.barcode" |
| | | placeholder="è¯·ä½¿ç¨æ«ç æªæ«ææ¡ç ï¼ææå¨è¾å
¥" |
| | | @keyup.enter="handleScan" |
| | | autofocus |
| | | class="custom-input" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" size="small" @click="handleScan" class="custom-button"> |
| | | <i class="el-icon-search"></i> ç¡®è®¤æ«æ |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <!-- 䏿¹æ¾ç¤ºæ¡ --> |
| | | <div class="scan-list"> |
| | | <el-card shadow="hover" style="margin-bottom: 10px; border: none;" class="custom-card"> |
| | | <div class="card-header"> |
| | | <span class="header-title">å·²æ«ææ¡ç å表ï¼å
±{{ scannedBarcodes.length }}æ¡ï¼</span> |
| | | <el-button |
| | | class="clear-all-btn" |
| | | @click="clearAll" |
| | | :disabled="scannedBarcodes.length === 0" |
| | | >æ¸
空ææ</el-button> |
| | | </div> |
| | | <div class="card-body"> |
| | | <el-scrollbar height="400px" class="custom-scrollbar"> |
| | | <!-- ä½¿ç¨ transition-group å
裹以å®ç°å¨ç» --> |
| | | <transition-group name="barcode-item-transition"> |
| | | <div class="barcode-item" v-for="(barcode, index) in scannedBarcodes" :key="barcode" :data-index="index"> |
| | | <span class="barcode-text">{{ index + 1 }}. {{ barcode }}</span> |
| | | <el-button |
| | | class="delete-btn" |
| | | @click="removeItem(index)" |
| | | >å é¤</el-button> |
| | | </div> |
| | | </transition-group> |
| | | <div class="empty-tip" v-if="scannedBarcodes.length === 0"> |
| | | <i class="el-icon-information"></i> |
| | | <span>ææ æ«æè®°å½ï¼è¯·æ«ææ¡ç </span> |
| | | </div> |
| | | </el-scrollbar> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | |
| | | <template #footer> |
| | | <div class="footer-actions"> |
| | | <el-button type="primary" size="small" @click="submit" :disabled="scannedBarcodes.length === 0" class="submit-btn"> |
| | | <i class="el-icon-check"></i> æäº¤åºåº |
| | | </el-button> |
| | | <el-button type="text" size="small" @click="showDetailBox = false" class="cancel-btn"> |
| | | åæ¶ |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </vol-box> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import VolBox from "@/components/basic/VolBox.vue"; |
| | | |
| | | export default { |
| | | components: { VolBox }, |
| | | data() { |
| | | return { |
| | | showDetailBox: false, |
| | | formData: { |
| | | barcode: "", |
| | | }, |
| | | scannedBarcodes: [], |
| | | }; |
| | | }, |
| | | methods: { |
| | | open() { |
| | | this.showDetailBox = true; |
| | | this.scannedBarcodes = []; |
| | | this.formData.barcode = ""; |
| | | this.$nextTick(() => { |
| | | this.$refs.barcodeInput.focus(); |
| | | }); |
| | | }, |
| | | |
| | | handleScan() { |
| | | const barcode = this.formData.barcode.trim(); |
| | | if (!barcode) { |
| | | this.$refs.barcodeInput.focus(); |
| | | return; |
| | | } |
| | | if (this.scannedBarcodes.includes(barcode)) { |
| | | this.$message.warning(`æ¡ç ${barcode} å·²æ«æè¿ï¼è¯·å¿é夿«æ`); |
| | | this.formData.barcode = ""; |
| | | this.$refs.barcodeInput.focus(); |
| | | return; |
| | | } |
| | | |
| | | this.scannedBarcodes.push(barcode); |
| | | this.formData.barcode = ""; |
| | | |
| | | this.$nextTick(() => { |
| | | this.$refs.barcodeInput.focus(); |
| | | }); |
| | | }, |
| | | |
| | | removeItem(index) { |
| | | this.scannedBarcodes.splice(index, 1); |
| | | }, |
| | | |
| | | clearAll() { |
| | | this.$confirm("ç¡®å®è¦æ¸
ç©ºæææ«æè®°å½åï¼", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning", |
| | | }).then(() => { |
| | | this.scannedBarcodes = []; |
| | | }).catch(() => { |
| | | this.$refs.barcodeInput.focus(); |
| | | }); |
| | | }, |
| | | |
| | | submit() { |
| | | if (this.scannedBarcodes.length === 0) { |
| | | this.$message.warning("请å
æ«æè³å°ä¸æ¡æ¡ç "); |
| | | this.$refs.barcodeInput.focus(); |
| | | return; |
| | | } |
| | | |
| | | const params = { |
| | | barcodes: this.scannedBarcodes, |
| | | }; |
| | | |
| | | this.http |
| | | .post("/api/OutboundOrder/NoStockOut", params, "æ°æ®å¤çä¸...") |
| | | .then((res) => { |
| | | if (!res.status) { |
| | | this.$message.error(res.message); |
| | | this.$refs.barcodeInput.focus(); |
| | | return; |
| | | } |
| | | this.$message.success("åºåºæå"); |
| | | this.showDetailBox = false; |
| | | this.$emit("parentCall", ($vue) => { |
| | | $vue.refresh(); |
| | | }); |
| | | }) |
| | | .catch((err) => { |
| | | this.$message.error(`请æ±å¤±è´¥ï¼${err.message || "æªç¥é误"}`); |
| | | this.$refs.barcodeInput.focus(); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* å
³é®ï¼å®ä¹å表项çè¿æ¸¡å¨ç» */ |
| | | .barcode-item-transition-enter-active, |
| | | .barcode-item-transition-leave-active { |
| | | transition: all 0.3s ease; |
| | | } |
| | | .barcode-item-transition-enter-from { |
| | | opacity: 0; |
| | | transform: translateY(10px); |
| | | } |
| | | .barcode-item-transition-leave-to { |
| | | opacity: 0; |
| | | transform: translateX(30px); |
| | | } |
| | | /* ç¡®ä¿å 餿¶å
¶ä»å
ç´ å¹³æ»ä¸ç§» */ |
| | | .barcode-item-transition-move { |
| | | transition: transform 1s ease; |
| | | } |
| | | |
| | | .scan-list { |
| | | width: 100%; |
| | | } |
| | | |
| | | .custom-card { |
| | | border-radius: 12px; |
| | | box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08) !important; |
| | | transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); |
| | | } |
| | | .custom-card:hover { |
| | | box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12) !important; |
| | | } |
| | | |
| | | .card-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | margin-bottom: 15px; |
| | | padding-bottom: 10px; |
| | | border-bottom: 1px solid #f0f0f0; |
| | | } |
| | | .header-title { |
| | | font-weight: 600; |
| | | font-size: 15px; |
| | | color: #333; |
| | | } |
| | | .clear-all-btn { |
| | | color: #f56c6c; |
| | | font-size: 13px; |
| | | transition: color 0.2s; |
| | | } |
| | | .clear-all-btn:hover { |
| | | color: #e53e3e; |
| | | background: rgba(245, 108, 108, 0.1); |
| | | } |
| | | |
| | | .card-body { |
| | | padding: 0; |
| | | } |
| | | |
| | | /* èªå®ä¹æ»å¨æ¡ */ |
| | | .custom-scrollbar ::v-deep .el-scrollbar__thumb { |
| | | background: rgba(0, 0, 0, 0.2); |
| | | border-radius: 4px; |
| | | width: 4px; |
| | | } |
| | | .custom-scrollbar ::v-deep .el-scrollbar__bar:hover .el-scrollbar__thumb { |
| | | background: rgba(0, 0, 0, 0.3); |
| | | width: 6px; |
| | | } |
| | | .custom-scrollbar ::v-deep .el-scrollbar__wrap { |
| | | overflow-x: hidden; |
| | | } |
| | | |
| | | .barcode-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 10px 15px; |
| | | border-bottom: 1px solid #f7f7f7; |
| | | transition: background-color 0.2s ease; |
| | | } |
| | | .barcode-item:hover { |
| | | background-color: #fafafa; |
| | | } |
| | | /* ä¸ºå¥æ°è¡æ·»å 轻微çèæ¯è²ï¼å¢å¼ºå¯è¯»æ§ */ |
| | | .barcode-item:nth-child(odd) { |
| | | background-color: #e1e1e1; |
| | | } |
| | | .barcode-text { |
| | | flex: 1; |
| | | font-size: 14px; |
| | | color: #666; |
| | | transition: color 0.2s; |
| | | } |
| | | .barcode-item:hover .barcode-text { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .delete-btn { |
| | | color: #ea1919; |
| | | font-size: 20px; |
| | | transition: all 0.2s; |
| | | transform: scale(0.8); |
| | | } |
| | | .barcode-item:hover .delete-btn { |
| | | opacity: 1; |
| | | transform: scale(1); |
| | | } |
| | | .delete-btn:hover { |
| | | color: #f56c6c !important; /* ä½¿ç¨ !important è¦ç Element UI é»è®¤æ ·å¼ */ |
| | | background: rgba(245, 108, 108, 0.1); |
| | | } |
| | | |
| | | .empty-tip { |
| | | text-align: center; |
| | | padding: 80px 0; |
| | | color: #999; |
| | | font-size: 14px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .empty-tip i { |
| | | font-size: 40px; |
| | | margin-bottom: 15px; |
| | | color: #dcdfe6; |
| | | } |
| | | |
| | | /* èªå®ä¹è¾å
¥æ¡ */ |
| | | .custom-input ::v-deep .el-input__inner { |
| | | border-radius: 6px; |
| | | border-color: #e4e7ed; |
| | | transition: all 0.3s; |
| | | height: 36px; |
| | | line-height: 36px; |
| | | } |
| | | .custom-input ::v-deep .el-input__inner:focus { |
| | | border-color: #409eff; |
| | | box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.1); |
| | | } |
| | | |
| | | /* èªå®ä¹æé® */ |
| | | .custom-button { |
| | | border-radius: 6px; |
| | | height: 36px; |
| | | line-height: 36px; |
| | | font-size: 13px; |
| | | font-weight: 500; |
| | | transition: all 0.2s; |
| | | } |
| | | .custom-button:hover { |
| | | transform: translateY(-1px); |
| | | box-shadow: 0 4px 12px rgba(64, 158, 255, 0.2); |
| | | } |
| | | |
| | | .footer-actions { |
| | | text-align: right; |
| | | } |
| | | .submit-btn { |
| | | border-radius: 6px; |
| | | font-weight: 500; |
| | | padding: 10px 20px; |
| | | transition: all 0.2s; |
| | | } |
| | | .submit-btn:hover { |
| | | transform: translateY(-1px); |
| | | box-shadow: 0 4px 12px rgba(46, 164, 79, 0.2); |
| | | } |
| | | .cancel-btn { |
| | | color: #666; |
| | | margin-right: 10px; |
| | | transition: color 0.2s; |
| | | } |
| | | .cancel-btn:hover { |
| | | color: #333; |
| | | background: #f5f5f5; |
| | | } |
| | | </style> |
| | | |
| | | <style> |
| | | /* ... (å
¨å±æ ·å¼é¨åä¿æä¸å) ... */ |
| | | .text-button:hover { |
| | | background-color: #f0f9eb !important; |
| | | } |
| | | .el-table .warning-row { |
| | | background: oldlace; |
| | | } |
| | | .box-table .el-table tbody tr:hover > td { |
| | | background-color: #d8e0d4 !important; |
| | | } |
| | | .box-table .el-table tbody tr.current-row > td { |
| | | background-color: #f0f9eb !important; |
| | | } |
| | | .el-table .success-row { |
| | | background: #f0f9eb; |
| | | } |
| | | .box-table .el-table { |
| | | border: 1px solid #ebeef5; |
| | | } |
| | | .box-head .el-alert__content { |
| | | width: 100%; |
| | | } |
| | | </style> |
| | |
| | | ref="selectedStock" |
| | | @parentCall="parentCall" |
| | | ></selected-stock> |
| | | <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut> |
| | | </div> |
| | | </template> |
| | | <script> |
| | |
| | | import VolForm from "@/components/basic/VolForm.vue"; |
| | | import StockSelect from "./StockSelect.vue"; |
| | | import SelectedStock from "./SelectedStock.vue"; |
| | | import NoStockOut from "./NoStockOut.vue"; |
| | | import { h,createVNode, render,reactive } from 'vue'; |
| | | import { ElDialog , ElForm, ElFormItem, ElSelect,ElOption, ElButton, ElMessage } from 'element-plus'; |
| | | import { th } from 'element-plus/es/locale'; |
| | | export default { |
| | | components: { VolBox, VolForm, StockSelect, SelectedStock }, |
| | | components: { VolBox, VolForm, StockSelect, SelectedStock,NoStockOut}, |
| | | data() { |
| | | return { |
| | | row: null, |
| | |
| | | prop: "orderDetailStatus", |
| | | title: "订åæç»ç¶æ", |
| | | type: "tag", |
| | | width: 180, |
| | | width: 90, |
| | | bindKey: "orderDetailStatusEnum", |
| | | }, |
| | | { |
| | |
| | | type: "icon", |
| | | width: 90, |
| | | icon: "el-icon-s-grid", |
| | | }, |
| | | { |
| | | prop: "NoStockOut", |
| | | title: "æ åºååºåº", |
| | | type: "icon", |
| | | width: 100, |
| | | icon: "el-icon-setting", |
| | | }, |
| | | { |
| | | prop: "viewDetail", |
| | |
| | | tableButtonClick(row, column) { |
| | | if (column.prop == "assignStock") { |
| | | this.$refs.child.open(row); |
| | | } else if (column.prop == "NoStockOut") { |
| | | this.$refs.NoStockOut.open(row); |
| | | } else { |
| | | //ç¹å»æå¼åºåºè¯¦æ
|
| | | this.$refs.selectedStock.open(row); |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | import { el } from "element-plus/es/locales.mjs"; |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | |
| | | // }); |
| | | // } |
| | | // } |
| | | this.columns.forEach(column => { |
| | | if (column.field == 'materielCode') { |
| | | column.formatter = (row) => { |
| | | var str = ''; |
| | | var list = row.materielCode.split(','); |
| | | for (let index = 0; index < list.length; index++) { |
| | | str += list[index] + '<br>'; |
| | | } |
| | | return str = list[0] == "" ? "空箱" : str; |
| | | } |
| | | } |
| | | if (column.field == 'batchNo') { |
| | | column.formatter = (row) => { |
| | | var str = ''; |
| | | var list = row.batchNo.split(','); |
| | | for (let index = 0; index < list.length; index++) { |
| | | str += list[index] + '<br>'; |
| | | } |
| | | return str = list[0] == "" ? "æ " : str; |
| | | } |
| | | } |
| | | if (column.field == 'materielInfo') { |
| | | const today = new Date() |
| | | column.formatter = (row) => { |
| | | if (row.details.length > 0) { |
| | | const today = new Date(); |
| | | const closestDate = row.details |
| | | .map(x => { |
| | | const date = new Date(x.effectiveDate); |
| | | const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24))); |
| | | return { date, diffInDays }; |
| | | }) |
| | | .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest)) |
| | | .date; |
| | | // this.columns.forEach(column => { |
| | | // if (column.field == 'materielCode') { |
| | | // column.formatter = (row) => { |
| | | // var str = ''; |
| | | // var list = row.materielCode.split(','); |
| | | // for (let index = 0; index < list.length; index++) { |
| | | // str += list[index] + '<br>'; |
| | | // } |
| | | // return str = list[0] == "" ? "空箱" : str; |
| | | // } |
| | | // } |
| | | // if (column.field == 'batchNo') { |
| | | // column.formatter = (row) => { |
| | | // var str = ''; |
| | | // var list = row.batchNo.split(','); |
| | | // for (let index = 0; index < list.length; index++) { |
| | | // str += list[index] + '<br>'; |
| | | // } |
| | | // return str = list[0] == "" ? "æ " : str; |
| | | // } |
| | | // } |
| | | // if (column.field == 'materielInfo') { |
| | | // const today = new Date() |
| | | // column.formatter = (row) => { |
| | | // if (row.details.length > 0) { |
| | | // const today = new Date(); |
| | | // const closestDate = row.details |
| | | // .map(x => { |
| | | // const date = new Date(x.effectiveDate); |
| | | // const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24))); |
| | | // return { date, diffInDays }; |
| | | // }) |
| | | // .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest)) |
| | | // .date; |
| | | |
| | | const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24))); |
| | | return '<span style="color: #F56C6C">' + daysSinceClosest + "天" + '</span>'; |
| | | } else { |
| | | return '<span style="color: #F56C6C">' + "æ ä¿è´¨æ" + '</span>'; |
| | | } |
| | | // const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24))); |
| | | // return '<span style="color: #F56C6C">' + daysSinceClosest + "天" + '</span>'; |
| | | // } else { |
| | | // return '<span style="color: #F56C6C">' + "æ ä¿è´¨æ" + '</span>'; |
| | | // } |
| | | |
| | | } |
| | | } |
| | | if (column.field == 'sumStock') { |
| | | column.formatter = (row) => { |
| | | if (row.details.length > 0) { |
| | | var sum = 0; |
| | | const closestDate = row.details |
| | | .map(x => { |
| | | sum += (x.stockQuantity) |
| | | }) |
| | | return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>'; |
| | | } else { |
| | | return '<span style="color: #F56C6C">' + "1个" + '</span>'; |
| | | } |
| | | // } |
| | | // } |
| | | // if (column.field == 'sumStock') { |
| | | // column.formatter = (row) => { |
| | | // if (row.details.length > 0) { |
| | | // var sum = 0; |
| | | // const closestDate = row.details |
| | | // .map(x => { |
| | | // sum += (x.stockQuantity) |
| | | // }) |
| | | // return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>'; |
| | | // } else { |
| | | // return '<span style="color: #F56C6C">' + "1个" + '</span>'; |
| | | // } |
| | | |
| | | } |
| | | } |
| | | }) |
| | | // } |
| | | // } |
| | | // }) |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | |
| | | sortName: "stockId", |
| | | }); |
| | | const editFormFields = ref({ |
| | | palletCode: "", |
| | | locationCode: "", |
| | | locationName: "", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | palletCode: "", |
| | | // locationCode: "", |
| | | materielCode:"", |
| | | batchNo:"" |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | |
| | | title: "æçç¼å·", |
| | | type: "string", |
| | | width: 150, |
| | | link: true, |
| | | // link: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | bind: { key: "warehouses", data: [] }, |
| | | }, |
| | | { |
| | | field: "roadwayNo", |
| | |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "batchNo", |
| | | title: "æå«ç©ææ¹æ¬¡", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left" |
| | | }, |
| | | { |
| | | field: "materielInfo", |
| | | title: "æå«ç©æææ©ä¸´æ", |
| | | type: "string", |
| | | width: 140, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "sumStock", |
| | | title: "æ»åºå", |
| | | type: "string", |
| | | width: 140, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "row", |
| | | title: "è´§ä½è¡", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "column", |
| | | title: "è´§ä½å", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "layer", |
| | | title: "è´§ä½å±", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "depth", |
| | | title: "è´§ä½æ·±åº¦", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "stockStatus", |
| | | title: "åºåç¶æ", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | bind: { key: "stockStatusEmun", data: [] }, |
| | | }, |
| | | { |
| | | field: "locationType", |
| | | title: "è´§ä½ç±»å", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | bind:{key: "locationTypeEnum", data: []} |
| | | }, |
| | | { |
| | | field: "locationStatus", |
| | | title: "è´§ä½ç¶æ", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "locationStatusEnum", data: [] }, |
| | | }, |
| | | { |
| | | field: "enalbeStatus", |
| | | title: "ç¦ç¨ç¶æ", |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | bind: { key: "enableStatusEnum", data: [] }, |
| | | }, |
| | | |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | |
| | | cnName: "åºåæç»ä¿¡æ¯", |
| | | table: "StockInfoDetail", |
| | | columns: [ |
| | | { |
| | | field: "id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "stockId", |
| | | title: "åºåä¿¡æ¯ä¸»é®", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | { |
| | | field: "materielCode", |
| | | title: "ç©æç¼å·", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "materielName", |
| | | title: "ç©æåç§°", |
| | | type: "string", |
| | | width: 130, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "orderNo", |
| | | title: "åæ®ç¼å·", |
| | | type: "decimal", |
| | | width: 130, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "batchNo", |
| | | title: "æ¹æ¬¡å·", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "serialNumber", |
| | | title: "åºåå·", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "stockQuantity", |
| | | title: "åºåæ°é", |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "outboundQuantity", |
| | | title: "åºåºæ°é", |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "unit", |
| | | title: "åä½", |
| | | type: "string", |
| | | width: 50, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "productionDate", |
| | | title: "çäº§æ¥æ", |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "effectiveDate", |
| | | title: "æææ¥æ", |
| | | type: "string", |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "status", |
| | | title: "åºåæç»ç¶æ", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | bind: { key: "stockStatusEmun", data: [] } |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | { |
| | | field: "createDate", |
| | | title: "å建æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "datetime", |
| | | width: 160, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | { |
| | | field: "remark", |
| | | title: "夿³¨", |
| | | type: "string", |
| | | width: 100, |
| | | align: "left", |
| | | hidden: true |
| | | }, |
| | | |
| | | ], |
| | | sortName: "id", |
| | | key: "id", |
| | |
| | | /// <summary> |
| | | /// è´§ä½ç¼å· |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "è´§ä½ç¼å·")] |
| | | public string LocationCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´§ä½åç§° |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "è´§ä½åç§°")] |
| | | public string LocationName { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// å··éç¼å· |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "å··éç¼å·")] |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// æçå· |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "æçå·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// ç©æç¼ç |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "ç©æç¼ç ")] |
| | | public string MaterielCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¹å· |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, ColumnDescription = "ç©ææ¹å·")] |
| | | public string BatchNo { get; set; } |
| | | |
| | | /// <summary> |