diff --git a/.env.development b/.env.development index cbb55fe5..57d32870 100644 --- a/.env.development +++ b/.env.development @@ -14,7 +14,7 @@ VITE_PUBLIC_PATH = / # Please note that no line breaks # VITE_PROXY = [["/basic-api","http://60.209.125.238"],["/upload","http://localhost:3300/upload"]] # VITE_PROXY=[["/api","http://60.209.125.238:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境 -VITE_PROXY=[["/api","http://118.190.144.189:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境 +VITE_PROXY=[["/api","http://60.209.125.238:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境 # Delete console VITE_DROP_CONSOLE = false diff --git a/src/views/operation/seaexport/detail/modules/aiInfo.tsx b/src/views/operation/seaexport/detail/modules/aiInfo.tsx new file mode 100644 index 00000000..18b9ee80 --- /dev/null +++ b/src/views/operation/seaexport/detail/modules/aiInfo.tsx @@ -0,0 +1,697 @@ +import { ref, unref } from 'vue' +import { BasicColumn, FormSchema } from '/@/components/Table' +import { getDictOption } from '/@/utils/dictUtil' +// 下拉框数据接口 +import { + GetCarrierSelectList, + GetControllerClientList, + GetSupplierListByCode, +} from '/@/api/common' +import { + GetClientPortSelectList, + GetServiceSelectList, + GetVoynoSelectList, + GetVesselSelectList, + GetClientGoodsList, + GetCustomerServiceList, + +} from '/@/views/operation/seaexport/api/BookingLedger' +// ai识别表单 +export const aiForm: FormSchema[] = [ + { + label: '发货人', + field: 'shipperContent', + component: 'InputTextArea', + colProps: { span: 12 }, + }, + { + label: '收货人', + field: 'consigneeContent', + component: 'InputTextArea', + colProps: { span: 12 }, + }, + { + label: '通知人', + field: 'notifyPartyContent', + component: 'InputTextArea', + colProps: { span: 12 }, + }, + { + field: 'bookingRemark', + label: '订舱备注', + component: 'InputTextArea', + colProps: { span: 12 }, + }, + { + field: 'marks', + label: `唛头`, + component: 'InputTextArea', + colProps: {span: 12,}, + }, + { + field: 'goodsName', + label: '品名', + component: 'ApiSelect', + labelSlot: 'goodsName', + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + api: GetClientGoodsList, + labelField: 'pinYinCode', + valueField: 'pinYinCode', + showName: 'goodName', + immediate: false, + mode: 'SECRET_COMBOBOX_MODE_DO_NOT_USE', + resultField: 'data', + onChange: (v, obj) => { + if (v && obj && obj.id) { + setTimeout(() => { + if (obj.goodName && obj.goodName.indexOf('(')) { + formModel.goodsName = obj.goodName.split('(')[0] + } else { + formModel.goodsName = obj.goodName + } + }, 100) + if (obj.hsCode) { + formModel.hsCode = obj.hsCode + } + } + if (!v && !obj?.id) { + formModel.goodsId = null + formModel.hsCode = null + } + } + } + }, + }, + { + field: 'mblno', + label: '主提单号', + labelSlot: 'mblno', + component: 'Input', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.mblno = formModel.mblno.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'vesselId', + component: 'Input', + show: false, + }, + { + label: '船名', + field: 'vessel', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetVesselSelectList, + labelField: 'vesselName', + valueField: 'vesselName', + resultField: 'data', + immediate: false, + mode: 'SECRET_COMBOBOX_MODE_DO_NOT_USE', + onChange: (e, obj) => { + if (e && obj) { + formModel.vesselId = obj.id + } + if (!e && !obj) { + formModel.vesselId = null + } + }, + } + }, + }, + { + label: '海关航次', + field: 'voyno', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: () => { + return { + api: GetVoynoSelectList, + labelField: 'voyNo', + valueField: 'voyNo', + resultField: 'data', + immediate: false, + } + }, + }, + { + label: '', + field: 'carrierId', + component: 'Input', + show: false, + }, + { + label: '船公司', + field: 'carrier', + labelSlot: 'carrierId', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel, formActionType }) => { + return { + api: GetCarrierSelectList, + labelField: 'pinYinCode', + showName: 'description', + valueField: 'ediCode', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.carrierId = obj.id + } + if (!e && !obj) { + formModel.carrierId = '' + } + }, + } + }, + }, + { + field: 'service', + label: '运输条款', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetServiceSelectList, + allowClear: true, + showSearch: true, + labelField: 'cnName', + valueField: 'cnName', + resultField: 'data', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.serviceCode = obj.ediCode + } + if (!e && !obj) { + formModel.serviceCode = null + } + }, + } + }, + }, + { + field: 'serviceCode', + label: '', + component: 'Input', + show: false, + }, + { + label: '', + field: 'customerId', + component: 'Input', + show: false, + }, + { + label: '委托单位', + labelSlot: 'customerName', + field: 'customerName', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel, formActionType }) => { + return { + api: GetControllerClientList, + labelField: 'pinYinCode', + valueField: 'shortName', + showName: 'description', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.customerId = obj.id + } + if (!e && !obj) { + formModel.customerId = '' + } + } + } + } + }, + { + field: 'customerNum', + label: '客户编号', + component: 'Input', + required: false, + colProps: { span: 12 }, + }, + { + label: '', + field: 'goodsId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'ctnGoodsInfo', + component: 'Input', + show: false, + }, + { + label: '装货港', + field: 'loadPortCode', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel, formActionType }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + valueField: 'ediCode', + showName: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.loadPortId = obj.id + formModel.loadPort = obj.portName + ',' + obj.countryEnName + } + if (!e && !obj) { + formModel.loadPortId = null + formModel.loadPort = null + } + } + } + } + }, + { + label: '卸货港', + field: 'dischargePortCode', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel, formActionType }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + showName: 'ediCode', + valueField: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.dischargePortId = obj.id + formModel.dischargePort = obj.portName + ',' + obj.countryEnName + // 带出交货地 + formModel.deliveryPlaceId = obj.id + formModel.deliveryPlace = obj.portName + ',' + obj.countryEnName + formModel.deliveryPlaceCode = e + } + if (!e && !obj) { + formModel.dischargePortId = null + formModel.dischargePort = null + } + }, + } + }, + }, + { + label: '交货地', + field: 'deliveryPlaceCode', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + showName: 'ediCode', + valueField: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.deliveryPlaceId = obj.id + formModel.deliveryPlace = obj.portName + ',' + obj.countryEnName + } + if (!e && !obj) { + formModel.deliveryPlaceId = null + formModel.deliveryPlace = null + } + }, + } + }, + }, + { + label: '收货地', + field: 'receiptPlaceCode', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + immediate: false, + labelField: 'pinYinCode', + valueField: 'ediCode', + showName: 'ediCode', + onChange: (e, obj) => { + if (e && obj) { + formModel.receiptPlace = obj.portName + ',' + obj.countryEnName + formModel.receiptPlaceId = obj.id + } + if (!e && !obj) { + formModel.receiptPlace = null + formModel.receiptPlaceId = null + } + }, + } + }, + }, + { + label: '', + field: 'loadPort', + component: 'Input', + required: false, + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.loadPort = formModel.loadPort.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'loadPortId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'dischargePort', + component: 'Input', + required: false, + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.dischargePort = formModel.dischargePort.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'dischargePortId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'deliveryPlace', + component: 'Input', + required: false, + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.deliveryPlace = formModel.deliveryPlace.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'deliveryPlaceId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'receiptPlace', + component: 'Input', + required: false, + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.receiptPlace = formModel.receiptPlace.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'receiptPlaceId', + component: 'Input', + show: false, + }, + { + field: 'bookingNo', + label: '订舱编号', + labelSlot: 'bookingNo', + component: 'Input', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.bookingNo = formModel.bookingNo.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + field: 'etd', + label: '开船日期', + labelSlot: 'etd', + component: 'DatePicker', + colProps: { span: 6 }, + componentProps: { + allowClear: true, + valueFormat: 'YYYY-MM-DD' + } + }, + { + field: 'closingDate', + label: '截港时间', + component: 'DatePicker', + colProps: { span: 6 }, + componentProps: { + showTime: true, + allowClear: true, + valueFormat: 'YYYY-MM-DD HH', + }, + }, + { + field: 'eta', + label: '预抵日期', + component: 'DatePicker', + colProps: { span: 6 }, + componentProps: { + allowClear: true, + valueFormat: 'YYYY-MM-DD', + }, + }, + { + field: 'openPortDate', + label: '截VGM时间', + component: 'DatePicker', + colProps: { span: 6 }, + componentProps: { + allowClear: true, + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm' + } + }, + { + field: 'closeDocDate', + label: '截单时间', + component: 'DatePicker', + colProps: { span: 6 }, + componentProps: { + showTime: true, + allowClear: true, + valueFormat: 'YYYY-MM-DD HH', + }, + }, + { + label: '签单地代码', + field: 'issuePlaceCode', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + valueField: 'ediCode', + showName: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.issuePlace = obj.portName + formModel.issuePlaceId = obj.id + } + if (!e && !obj) { + formModel.issuePlace = null + formModel.issuePlaceId = null + } + }, + } + }, + }, + { + label: '签单地点', + field: 'issuePlace', + component: 'Input', + required: false, + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.issuePlace = formModel.issuePlace.replace(/[\u4e00-\u9fa5]/ig, '') + } + } + } + }, + { + label: '', + field: 'issuePlaceId', + component: 'Input', + show: false, + }, + { + field: 'serviceContractNo', + label: '服务合同号', + component: 'Input', + required: false, + dynamicDisabled: false, + colProps: { span: 6 }, + }, + { + label: '', + field: 'forwarderId', + component: 'Input', + show: false, + }, + { + label: '订舱口', + field: 'forwarder', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetSupplierListByCode, + params: { code: 'booking' }, + labelField: 'pinYinCode', + valueField: 'shortName', + showName: 'description', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.forwarderId = obj.id + } + if (!e && !obj) { + formModel.forwarderId = '' + } + }, + } + }, + }, + { + label: '', + field: 'shipAgencyId', + component: 'Input', + show: false, + }, + { + label: '船代', + field: 'shipAgency', + component: 'ApiSelect', + labelSlot: 'shipAgencyId', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetSupplierListByCode, + params: { code: 'shipagency' }, + labelField: 'pinYinCode', + showName: 'description', + valueField: 'shortName', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.shipAgencyId = obj.id + } + if (!e && !obj) { + formModel.shipAgencyId = '' + } + }, + } + }, + }, + { + label: '', + field: 'yardId', + component: 'Input', + show: false, + }, + { + field: 'yard', + label: '场站', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetSupplierListByCode, + params: { code: 'yard' }, + labelField: 'pinYinCode', + showName: 'description', + valueField: 'shortName', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.yardId = obj.id + } + if (!e && !obj) { + formModel.yardId = '' + } + } + } + } + }, + { + field: 'customerService', + label: '', + component: 'Input', + show: false, + }, + { + label: '客服', + field: 'customerServiceName', + component: 'ApiSelect', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetCustomerServiceList, + labelField: 'pinYinCode', + valueField: 'userName', + showName: 'userName', + allowClear: true, + showSearch: true, + immediate: false, + resultField: 'data', + onChange: (e, obj) => { + if (e && obj) { + formModel.customerService = obj.id + } + if (!e && !obj) { + formModel.customerService = null + } + } + } + } + } +] \ No newline at end of file diff --git a/src/views/operation/seaexport/detail/modules/aiRecognition.vue b/src/views/operation/seaexport/detail/modules/aiRecognition.vue index f017b4a2..a2c4355e 100644 --- a/src/views/operation/seaexport/detail/modules/aiRecognition.vue +++ b/src/views/operation/seaexport/detail/modules/aiRecognition.vue @@ -25,7 +25,11 @@ alt="" />
@@ -34,10 +38,10 @@ + \ No newline at end of file diff --git a/src/views/system/serviceFlow/index.vue b/src/views/system/serviceFlow/index.vue new file mode 100644 index 00000000..9b65bfe9 --- /dev/null +++ b/src/views/system/serviceFlow/index.vue @@ -0,0 +1,243 @@ + +