From 1e9a52cf65f364b4332a008210700adbaea0c35e Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期五, 06 九月 2024 11:34:16 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
---
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue | 821 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 711 insertions(+), 110 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index e6c9abd..58243e5 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -1,145 +1,735 @@
<script setup>
-let deliveryTitle = $ref([
- '閿�鍞崟鍙�',
- '鎵规',
- '搴撳瓨鍙彂',
- '鏈彂鏁伴噺',
- '鎬绘暟閲�',
- '鏈鍙戣揣鏁伴噺',
- '妤煎彿',
- '浜у搧缂栧彿',
- '浜у搧鍚嶇О',
- '鍗曚环',
- '搴撳尯',
- '寮傚舰鍙傛暟',
- '閲戦',
- '瀹�',
- '楂�',
- '褰㈢姸',
- '瀹為檯鍗曠墖/鎬婚潰绉�',
- '缁撶畻鍗曠墖闈㈢Н',
- '缁撶畻鎬婚潰绉�',
- '鍔犲伐瑕佹眰',
- '澶囨敞',
- '纾ㄨ竟绫诲瀷',
- '鍛ㄩ暱',
+import {onMounted, reactive, ref} from "vue";
+import {Search} from "@element-plus/icons-vue";
+import {useRoute, useRouter} from "vue-router"
+import request from "@/utils/request"
+import deepClone from "@/utils/deepClone"
+import VXETable from "vxe-table";
+import useUserInfoStore from "@/stores/userInfo";
+import {ElMessage} from "element-plus";
+import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
+import { useI18n } from 'vue-i18n'
+import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue";
+import footSum from "@/hook/footSum";
+import {changeFilterEvent,filterChanged} from "@/hook"
+import companyInfo from "@/stores/sd/companyInfo";
+import {multiply} from "@/utils/decimal";
+
+//璇█鑾峰彇
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+const userid = userStore.user.userId
+const company = companyInfo()
+let produceList = ref([])
+let cellArea = ref()
+let otherMoneyVisible = ref(false)
+let otherMoney = ref(null)
-])
+const hasDecimal=(value)=>{
+ const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+ return regex.test(value) //杩斿洖true/false
+}
-let deliveryList =[
- {
- '0': 'NG23110101',
- '1': '20鎵�1',
- '2': '16',
- '3': '18',
- '4': '20',
- '5': '20',
- '6': 'A妤糱灞�',
- '7': '101',
- '8': '10mmLYTM-140寮挗鍖�',
- '9': '1008.38',
- '10': 'A鍙锋煴瀛�',
- '11': '',
- '12': '100',
- '13': '3360',
- '14': '2440',
- '15': '鏅舰',
- '16': '1.11/100.1',
- '17': '1.22',
- '18': '11.11',
- '19': '杩欐槸鍔犲伐瑕佹眰',
- '20': '杩欐槸澶囨敞',
- '21': '杩欐槸纾ㄨ竟绫诲瀷',
- '22': '1.1'
+const hasDecimalhtml=(item,row)=>{
+ let aa=item.split('.').length
+ if (aa===2){
+
+ return row[item.split('.')[0]][item.split('.')[1]]
+ }else if(aa===3){
+ return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
}
-]
+
+
+}
+
+
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+ deliveryOtherMoney:[],
+ paymentTerms:[],
+ payMethod:[]
+})
+
+// 瀹氫箟琛ㄥご涓婁紶鏁版嵁
+let titleUploadData = ref({
+ deliveryId:'',
+ deliveryState:'',
+ stockState:'',
+ paymentTerms:'',
+ customerId:'',
+ customerName:'',
+ project:'',
+ money:'',
+ payMethod:'',
+ payDate:'',
+ contacts:'',
+ contactNumber:'',
+ deliveryAddress:'',
+ remarks:'',
+ createTime:'',
+ deliveryDate:'',
+ salesmanId:'',
+ salesman:'',
+ freight:'',
+ freightPrice:'',
+ freightQuantity:'',
+ creatorId:userStore.user.userid,
+ creator:userStore.user.userName
+})
+
+
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+ deliveryDetail:{
+ deliveryId:'',
+ quantity:'',
+ money:'',
+ deliveryDetailRemakes:''
+ },
+ order:{
+ batch:''
+ },
+ delivery:{
+ customerId:'',
+ customerName:'',
+ money:'',
+ payMethod:'',
+ payDate:'',
+ contacts:'',
+ contactNumber:'',
+ deliveryAddress:'',
+ remarks:'',
+ createTime:'',
+ deliveryDate:'',
+ creator:'',
+ freight:'',
+ freightPrice:'',
+ freightQuantity:'',
+ },
+ finishedGoodsInventory:{
+ quantityAvailable:'',
+ storageRegion:'',
+ actualSignalArea:''
+
+ },
+
+})
+const initOrder = async ()=> {
+//椤甸潰绗竴娆″姞杞�
+ await request.get(`/basicData/BasicDataByType/delivery`).then((res) => {
+
+ if (res.code == 200) {
+ titleSelectJson.value = deepClone(res.data)
+ //鍏朵粬閲戦
+ otherMoney.value = titleSelectJson.value.deliveryOtherMoney[0]
+ //let columns = []
+ otherMoney.value.forEach(item => {
+ let column = {field: `otherColumns.${item.column}`, width: 50, title: item.alias, editRender: {name: 'input'}}
+ //columns.push(column)
+ gridOptions.columns.push(column)
+ })
+ const today = new Date
+ today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
+ titleUploadData.value.deliveryDate = today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ })
+
+}
+
+const xGrid = ref();
+const number = ref();
+
+onMounted( async()=>{
+ await initOrder()
+ //鍚敤琛ㄦ牸鎷栧姩閫変腑
+ addListener(xGrid.value,gridOptions,cellArea.value)
+ //鍙戣揣鏂板
+ const orderId = route.query.orderId
+ if (typeof orderId !== 'undefined' && orderId !== null && orderId !== '' && orderId !== '\n' && orderId !== '\r'){
+ filterData.value.orderId=orderId
+ number.value=orderId
+ //绗竴娆¤皟鐢�
+ request.post("/Delivery/getSelectShippingOrderDetails/1/100",filterData.value).then((res) => {
+
+ if(res.code==200){
+ pageTotal.value=res.data.total
+
+
+ titleUploadData.value=deepClone(res.data.title)
+ titleUploadData.value.paymentTerms = titleSelectJson.value.paymentTerms[0].basicName
+ titleUploadData.value.payMethod = titleSelectJson.value.payMethod[0].basicName
+ titleUploadData.value.deliveryId=""
+ const today = new Date
+ today.setTime(today.getTime() )
+ titleUploadData.value.deliveryDate=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ titleUploadData.value.createTime=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ titleUploadData.value.payDate=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+
+ titleUploadData.value.creator=userStore.user.userName
+ titleUploadData.value.creatorId=userStore.user.userId
+
+ pageNum=1
+ produceList = deepClone(res.data.data)
+ xGrid.value.loadData(produceList)
+
+
+ //绂佺敤鎸夐挳
+ gridOptions.toolbarConfig.buttons[1].disabled = true
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ //鏄剧ず澶嶉�夋
+ xGrid.value.showColumn("select")
+ gridOptions.loading=false
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })
+ }
+//鍙戣揣缂栬緫
+ const str = route.query.deliveryID
+
+ if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){
+ filterData.value.deliveryDetail.deliveryId=str
+ //绗竴娆¤皟鐢�
+ request.post("/Delivery/getSelectShippingOrderDetail/1/100",filterData.value).then((res) => {
+
+ if(res.code==200){
+ pageTotal.value=res.data.total
+ titleUploadData.value=deepClone(res.data.delivery)
+ titleUploadData.value.deliveryId=str
+
+ //鏍规嵁瀹℃牳鐘舵�佹樉绀哄鏍告寜閽垨鑰呮槸鍙嶅鎸夐挳
+
+ if(titleUploadData.value.deliveryState!==0){
+ gridOptions.toolbarConfig.buttons[1].disabled = true
+ gridOptions.toolbarConfig.buttons[0].disabled = true
+ }
+ if(titleUploadData.value.deliveryState===0){
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ }
+ if(titleUploadData.value.stockState!==0){
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ }
+ pageNum=1
+ produceList = deepClone(res.data.data)
+
+ const orderDetails = res.data.data
+ orderDetails.forEach(item => {
+ item.otherColumns = JSON.parse(item.otherColumns)
+ })
+ otherMoney.value =res.data.orderOtherMoneyList
+
+ titleUploadData.value.creator=userStore.user.userName
+ titleUploadData.value.creatorId=userStore.user.userId
+
+ xGrid.value.reloadData(orderDetails)
+ xGrid.value.loadData(produceList)
+ //闅愯棌澶嶉�夋
+ /*xGrid.value.hideColumn("select")
+ gridOptions.loading=false*/
+ xGrid.value.showColumn("select")
+ gridOptions.loading=false
+
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })
+ }
+
+
+})
+
+
+
+//瀹氫箟椤甸潰鎬婚〉鏁�
+let pageTotal=ref('')
+//瀹氫箟褰撳墠椤垫暟
+let pageNum=$ref(1)
+
+
+
+
+
+const gridOptions = reactive({
+ border: "full",//琛ㄦ牸鍔犺竟妗�
+ keepSource: true,//淇濇寔婧愭暟鎹�
+ align: 'center',//鏂囧瓧灞呬腑
+ stripe:true,//鏂戦┈绾�
+ rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+ id: 'CreateDelivery',
+ showFooter: true,//鏄剧ず鑴�
+ printConfig: {},
+ importConfig: {},
+ exportConfig: {},
+ scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+ showOverflow:true,
+ menuConfig: {
+ body: {
+ options: [
+ [
+ { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
+ //{ code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
+ ]
+ ]
+ }
+ },
+ columnConfig: {
+ resizable: true,
+ useKey: true
+ },
+ filterConfig: { //绛涢�夐厤缃」
+ //remote: true
+ },
+ customConfig: {
+ storage: true
+ },
+ checkboxConfig:{checkAll:true},
+ mouseConfig:{selected: true},//榧犳爣閫変腑
+ keyboardConfig:{isArrow: true, isDel: true, isEnter: true, isTab: true, isEdit: true, isChecked: true},
+ editConfig: {
+ trigger: 'dblclick',
+ mode: 'cell',
+ showStatus: true,
+ showIcon:false
+ },//琛ㄥご鍙傛暟
+ columns:[
+
+ //{type:'expand',fixed:"left",slots: { content:'content' },width: 60},
+ {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
+ {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
+ {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'deliveryDetail.quantity',width:120, title: t('delivery.deliveryQuantity'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'order.quantity',width:120, title: t('delivery.unpaidQuantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ //{field: 'buildingNumber',width:120, title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'price',width:120, title: t('order.price'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'finishedGoodsInventory.storageRegion',width:120, title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'deliveryDetail.money',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'finishedGoodsInventory.actualSignalArea',width:120, title: t('productStock.singlePieceArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'grossArea',width:120, title: t('productStock.totalArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'computeArea',width:120, title: t('order.computeArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'computeGrossArea',width:120, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'deliveryDetail.deliveryDetailRemakes',width:120, title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'perimeter',width:120, title: t('productStock.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+
+
+ ],//琛ㄥご鎸夐挳
+ toolbarConfig: {
+ buttons: [
+ {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'},
+ {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
+ {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'}
+ ],
+ /*import: false,
+ export: true,
+ print: true,*/
+ zoom: true,
+ custom: true
+ },
+ footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+ let footList=['deliveryDetail.quantity','quantity','deliveryDetail.money']
+ //let footList=[]
+ return[
+ columns.map((column, columnIndex) => {
+ if (columnIndex === 0) {
+ return t('basicData.total')
+ }
+ if (footList.includes(column.field)) {
+ return footSum(data, column.field)
+ }
+ return ''
+ })
+ ]
+ }
+
+})
+
+
+
+const gridEvents = {
+ async toolbarButtonClick({code}) {
+ const $grid = xGrid.value
+ if ($grid) {
+ switch (code) {
+ case 'add': {
+ const selectRecords = $grid.getCheckboxRecords()
+
+ if (selectRecords.length === 0) {
+ ElMessage.warning(t('productStock.unselectedData'))
+ return
+ }
+ const errMap = await $grid.validate(selectRecords)
+ if (errMap) {
+ ElMessage.warning(t('productStock.dataVerificationFailed'))
+ return
+ }
+ //琛ㄥご鏁版嵁鏍¢獙
+ const project = titleUploadData.value.project
+ if(project === null || project === undefined || project === ''){
+ ElMessage.error(t('delivery.pleaseEnterTheAmountOfFunds'))
+ return
+ }
+ const paymentTerms = titleUploadData.value.paymentTerms
+ if(paymentTerms === null || paymentTerms === undefined || paymentTerms === ''){
+ ElMessage.error(t('delivery.pleaseSelectPaymentTerms'))
+ return
+ }
+ const payMethod = titleUploadData.value.payMethod
+ if(payMethod === null || payMethod === undefined || payMethod === ''){
+ ElMessage.error(t('delivery.pleaseEnterThePaymentMethod'))
+ return
+ }
+ const freightPrice = titleUploadData.value.freightPrice
+ if(freightPrice=== null || freightPrice === undefined || freightPrice === ''){
+ titleUploadData.value.freightPrice=0
+ }
+ const freightQuantity = titleUploadData.value.freightQuantity
+ if(freightQuantity=== null || freightQuantity === undefined || freightQuantity === ''){
+ titleUploadData.value.freightQuantity=0
+ }
+
+
+ let flowData = ref({
+ delivery: selectRecords,
+ title: titleUploadData.value,
+ deliveryId: route.query.deliveryID,
+ otherMoney:otherMoney.value,
+ deliveryIdType:company.deliveryIdType
+
+ })
+ request.post("/Delivery/insertDelivery", flowData.value).then((res) => {
+ if(res.code==200 && res.data==="true"){
+ ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ if(titleUploadData.value.deliveryId.trim()===""){
+ router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ }else{
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ }
+ }else if(res.data==="false1"){
+ ElMessage.warning(t('delivery.pleaseMsg1'))
+ }else if(res.data==="false2"){
+ ElMessage.warning("璁㈠崟瀛樺湪宸插彂璐ц鍒锋柊鐣岄潰")
+ }else if(res.data==="false3"){
+ ElMessage.warning("鏁版嵁涓嶅瓨鍦�")
+ }else{
+ ElMessage.warning(t('basicData.msg.saveFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+ case 'toExamine': {
+ let flowData = ref({
+ deliveryId: route.query.deliveryID,
+ type: 2
+
+ })
+ request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => {
+ if (res.code == 200 && res.data===true) {
+ ElMessage.success(t('basicData.msg.ReviewSuccess'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ } else {
+ ElMessage.warning(t('basicData.msg.reviewFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+ case 'CounterExamination': {
+ let flowData = ref({
+ deliveryId: route.query.deliveryID,
+ type: 0
+
+ })
+ request.post("/Delivery/updateDeliveryToExamine", flowData.value).then((res) => {
+ if (res.code == 200 && res.data===true) {
+ ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ } else {
+ ElMessage.warning(t('basicData.msg.reviewFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+
+ }
+ }
+ },
+ menuClick ({ menu, row, column }) {
+ const $grid = xGrid.value
+ if ($grid) {
+ switch (menu.code) {
+
+ case 'copyChecked' :{
+ let result = toolbarButtonClickEvent()
+ if(result){
+ const dataList = xGrid.value.getTableData().visibleData
+ let firstVal=null;
+ if(result.cell.indexOf('.')>-1){
+ firstVal = eval("dataList["+result.start +"]."+result.cell)
+ }else {
+ firstVal=dataList[result.start][result.cell];
+ }
+ dataList.forEach((item,index) =>{
+ if(index>=result.start && index<=result.end){
+ if(result.cell.indexOf('.')>-1){
+ const columnArr = result.cell.split('.')
+ item[columnArr[0]][columnArr[1]] = firstVal
+ }else{
+ item[result.cell] = firstVal
+ }
+
+ }
+ })
+ }
+ break
+ }
+ case 'otherMoney' :{
+ otherMoneyVisible.value=true
+ break
+ }
+
+ }
+ }
+ }
+}
+
+//璁$畻閲戦挶
+const countMoney = (list) => {
+ let countMoney = 0
+ list.forEach((item)=>{
+ countMoney += parseFloat(item.grossAmount)
+ })
+ // otherMoney.value.forEach(item => {
+ // countMoney+=item.quantity*item.price
+ // })
+ return parseFloat((countMoney).toFixed(2))
+}
+
+//鍏抽棴鍏朵粬閲戦鐣岄潰
+const refOtherMoney = ref()
+const closeOtherMoneyDialog = async (done) => {
+ const flag = await refOtherMoney.value.validate()
+ if(flag){
+ done()
+ //titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+ }
+}
+
+/*鏁版嵁鏍¢獙*/
+const validRules = ref({
+ "deliveryDetail.quantity": [{
+ validator (e) {
+ if (e.row.deliveryDetail.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
+ return new Error(t('delivery.theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity'))
+ }else if (e.row.deliveryDetail.quantity ==="") {
+ return new Error(t('delivery.theShipmentQuantityCannotBeEmptyOr0'))
+ }
+ const regex = /^[1-9]\d*$/g
+ if ( !regex.test(e.row.deliveryDetail.quantity) ) {
+ return new Error(t('productStock.pleaseEnterAPositiveInteger'))
+ }
+
+ }
+
+ }],
+ price: [
+ {
+ validator ({ cellValue }) {
+ const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
+ if ( !regex.test(cellValue) ) {
+ return new Error(t('basicData.msg.range99999Dec2') )
+ }
+ }
+ }
+ ],
+
+})
+
+const editClosedEvent = ({ row, column }) => {
+
+ if (['deliveryDetail.quantity'].includes(column.property)) {
+ if(parseInt(row.deliveryDetail.quantity)===0){
+ xGrid.value.setCheckboxRow(row, false);
+ }
+ }
+
+}
+
+
</script>
<template>
<div class="main-div">
- <div class="order-primary">
+ <div class="order-primary" style="background-color: white">
<el-row>
- <el-col :span="2"><el-text>瀹㈡埛缂栫爜:</el-text></el-col>
- <el-col :span="5"><el-text style="font-size: large;color: #181818">131</el-text></el-col>
- <el-col :span="2"><el-text>瀹㈡埛鍚嶇О:</el-text></el-col>
- <el-col :span="5"><el-text></el-text></el-col>
- <el-col :span="2"><el-text>椤圭洰鍚嶇О:</el-text></el-col>
- <el-col :span="5"><el-text></el-text></el-col>
+ <el-col :span="2"><el-text>{{$t('customer.customerNumber')}}:</el-text></el-col>
+ <el-col :span="3"><el-input style="font-size: large;color: #181818" v-model="titleUploadData.customerId" :readonly="true" ></el-input></el-col>
+ <el-col :span="2"><el-text>{{$t('customer.customerName')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.customerName" :readonly="true"></el-input></el-col>
+ <el-col :span="2"><el-text>{{$t('customer.customerNumber')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.project" :readonly="true"></el-input></el-col>
</el-row>
<el-row>
- <el-col :span="2"><el-text>浠樻鏉′欢:</el-text></el-col>
- <el-col :span="5">
- <el-select clearable >
- <el-option/>
+ <el-col :span="2"><el-text>{{$t('delivery.paymentTerms')}}锛�</el-text></el-col>
+ <el-col :span="3">
+ <el-select v-model="titleUploadData.paymentTerms" clearable placeholder="" >
+ <el-option
+ v-for="item in titleSelectJson['paymentTerms']"
+ :key="item.id"
+ :label="item.basicName"
+ :value="item.basicName"
+ />
</el-select>
</el-col>
- <el-col :span="2"><el-text>鏀舵鏂瑰紡:</el-text></el-col>
- <el-col :span="5"></el-col>
- <el-col :span="2"><el-text>鏀舵鏃ユ湡:</el-text></el-col>
+ <el-col :span="2"><el-text>{{$t('customer.contacts')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.contacts"/></el-col>
+ <el-col :span="2"><el-text>{{$t('delivery.paymentDate')}}:</el-text></el-col>
<el-col :span="5">
<el-date-picker
- type="week"
- format="[Week] ww"
- placeholder="閫夋嫨鏃ユ湡"/>
+ v-model="titleUploadData.payDate"
+ type="date"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ :placeholder="$t('delivery.selectDate')"/>
</el-col>
</el-row>
<el-row>
- <el-col :span="2"><el-text>鑱旂郴浜�:</el-text></el-col>
- <el-col :span="5"><el-input/></el-col>
- <el-col :span="2"><el-text>鑱旂郴鐢佃瘽:</el-text></el-col>
- <el-col :span="5"><el-input/></el-col>
- <el-col :span="2"><el-text>閫佽揣鍦板潃:</el-text></el-col>
- <el-col :span="5"><el-input/></el-col>
+
+ <el-col :span="2"><el-text>{{$t('delivery.paymentMethod')}}锛�</el-text></el-col>
+ <el-col :span="3">
+ <el-select v-model="titleUploadData.payMethod" clearable placeholder="" >
+ <el-option
+ v-for="item in titleSelectJson['payMethod']"
+ :key="item.id"
+ :label="item.basicName"
+ :value="item.basicName"
+ />
+ </el-select>
+ </el-col>
+ <el-col :span="2"><el-text>{{$t('customer.telephone')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.contactNumber"/></el-col>
+ <el-col :span="2"><el-text>{{$t('customer.address')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.deliveryAddress"/></el-col>
</el-row>
<el-row>
- <el-col :span="2"><el-text>澶囨敞:</el-text></el-col>
- <el-col :span="5"><el-input/></el-col>
- <el-col :span="2"><el-text>鎶ヨ〃鏃ユ湡:</el-text></el-col>
- <el-col :span="5"></el-col>
- <el-col :span="2"><el-text>鍙戣揣鎶ヨ〃鏃ユ湡:</el-text></el-col>
+ <el-col :span="2"><el-text>{{$t('basicData.remarks')}}:</el-text></el-col>
+ <el-col :span="3"><el-input v-model="titleUploadData.remarks"/></el-col>
+ <el-col :span="2"><el-text>{{$t('delivery.deliveryReportDate')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.createTime" :readonly="true"></el-input></el-col>
+ <el-col :span="2"><el-text>{{$t('delivery.deliveryDate')}}:</el-text></el-col>
<el-col :span="5">
<el-date-picker
- type="week"
- format="[Week] ww"
- placeholder="閫夋嫨鏃ユ湡"/>
+ v-model="titleUploadData.deliveryDate"
+ type="date"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ :placeholder="$t('delivery.selectDate')"/>
</el-col>
</el-row>
<el-row>
- <el-col :span="2"><el-text>涓氬姟鍛�:</el-text></el-col>
- <el-col :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
- <el-col :span="2"><el-text>鍙戣揣鍛�:</el-text></el-col>
- <el-col :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
- <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">淇濆瓨</el-button></el-col>
+ <el-col :span="2"><el-text>{{$t('order.salesman')}}:</el-text></el-col>
+ <el-col :span="3"><el-input v-model="titleUploadData.salesman" :readonly="true"/></el-col>
+ <el-col :span="2"><el-text>{{$t('delivery.shipper')}}:</el-text></el-col>
+ <el-col :span="5"><el-input v-model="titleUploadData.creator" :readonly="true"/></el-col>
+ <el-col :span="1"><el-text>{{$t('delivery.freightPrice')}}:</el-text></el-col>
+ <el-col :span="1"><el-input v-model="titleUploadData.freightPrice" /></el-col>
+ <el-col :span="1"><el-text>{{$t('delivery.freightQuantity')}}:</el-text></el-col>
+ <el-col :span="1"><el-input v-model="titleUploadData.freightQuantity" /></el-col>
+ <el-col :span="1"><el-text>{{$t('delivery.freight')}}:</el-text></el-col>
+ <el-col :span="2"><el-input v-model="titleUploadData.freight" :readonly="true"/></el-col>
</el-row>
</div>
<div class="order-detail">
- <el-table
- :data="deliveryList"
- :header-cell-style="{ 'text-align': 'center' }"
- :cell-style="{ 'text-align': 'center' }"
- border
- >
- <el-table-column type="expand" fixed>
- <template #default="props" >
- <div m="4">
- <p m="t-0 b-2">璁㈠崟鍙戣揣鏈夊叧鎵�鏈変俊鎭�</p>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="閫夊垯" fixed>
- <el-checkbox/>
- </el-table-column>
- <el-table-column
- :prop="index.toString()"
- :show-overflow-tooltip='true'
- width="100" v-for="(item,index) in deliveryTitle"
- :label="item" />
+ <vxe-grid
+ max-height="97%"
+ class="mytable-scrollbar"
+ ref="xGrid"
+ v-bind="gridOptions"
+ v-on="gridEvents"
+ :edit-rules="validRules"
+ @edit-closed="editClosedEvent"
- </el-table>
+ >
+ <template #num1_filter="{ column, $panel }">
+ <div>
+ <div v-for="(option, index) in column.filters" :key="index">
+ <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
+ </div>
+ </div>
+ </template>
+
+
+ <template #content="{ row }">
+ <ul class="expand-wrapper">
+ <li v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
+ <span style="font-weight: bold">{{item.title+': '}}</span>
+ <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+ <span v-else>{{ row[item.field] }}</span>
+ </li>
+ </ul>
+ </template>
+
+ </vxe-grid>
</div>
+ <div class="vxe-table--cell-area" ref="cellArea" >
+ <span class="vxe-table--cell-main-area" ></span>
+
+ <span class="vxe-table--cell-active-area" ></span>
+ </div>
+
+ <el-dialog v-model="otherMoneyVisible"
+ :title="$t('basicData.otherAmounts')"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :before-close="closeOtherMoneyDialog"
+ style="width: 614px;height:445px ">
+ <order-other-money
+ ref="refOtherMoney"
+ :otherMoney="otherMoney"
+ style="width: 100%;height: 100%" />
+ </el-dialog>
</div>
</template>
@@ -148,7 +738,6 @@
.main-div {
width: 100%;
height: 100%;
- text-align: center;
}
.el-col{
border: #181818 1px solid;
@@ -166,4 +755,16 @@
width: 100%;
height: 70%;
}
+.vxe-grid {
+ /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+:deep(#product .el-dialog__body){
+ height: 90%;
+ width: 100%;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0