From 41338689a75fb0e3d45d5d9af104018410328266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8C=E6=B5=B7?= <14166000+zhangtonghai@user.noreply.gitee.com> Date: Thu, 31 Oct 2024 18:00:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E5=8D=95=E7=A1=AE=E8=AE=A4=20=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/taskmanage/api.ts | 16 + .../taskmanage/taskList/BLConfirmation.vue | 75 -- .../taskList/BLConfirmation/columns.tsx | 1074 +++++++++++++++++ .../taskList/BLConfirmation/container.vue | 472 ++++++++ .../taskList/BLConfirmation/index.vue | 222 ++++ .../taskList/BLConfirmation/info.vue | 409 +++++++ 6 files changed, 2193 insertions(+), 75 deletions(-) delete mode 100644 src/views/taskmanage/taskList/BLConfirmation.vue create mode 100644 src/views/taskmanage/taskList/BLConfirmation/columns.tsx create mode 100644 src/views/taskmanage/taskList/BLConfirmation/container.vue create mode 100644 src/views/taskmanage/taskList/BLConfirmation/index.vue create mode 100644 src/views/taskmanage/taskList/BLConfirmation/info.vue diff --git a/src/views/taskmanage/api.ts b/src/views/taskmanage/api.ts index 05aaeab6..bbc13460 100644 --- a/src/views/taskmanage/api.ts +++ b/src/views/taskmanage/api.ts @@ -827,3 +827,19 @@ export function GetBLConfirmation(parameter) { method: 'get', }) } +// 提单信息详情 分单 +export function GetSeaExportBillManageInfo(params) { + return request({ + url: '/opApi/SeaExportBillManage/GetSeaExportBillManageInfo', + method: 'get', + params, + }) +} +// 提单信息详情 主单 +export function BookingOrderGet(params) { + return request({ + url: '/opApi/SeaExport/GetSeaExportInfo', + method: 'get', + params, + }) +} diff --git a/src/views/taskmanage/taskList/BLConfirmation.vue b/src/views/taskmanage/taskList/BLConfirmation.vue deleted file mode 100644 index 6e631499..00000000 --- a/src/views/taskmanage/taskList/BLConfirmation.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - diff --git a/src/views/taskmanage/taskList/BLConfirmation/columns.tsx b/src/views/taskmanage/taskList/BLConfirmation/columns.tsx new file mode 100644 index 00000000..caf90e68 --- /dev/null +++ b/src/views/taskmanage/taskList/BLConfirmation/columns.tsx @@ -0,0 +1,1074 @@ +import { ref } from 'vue' +import { FormSchema, BasicColumn } from '/@/components/Table' +import { GetClientListByCode, GetSupplierListByCode } from '/@/api/common' +import { + GetOrderContactListByClientId, + GetShippingBillTemplateSelectList, + GetClientPortSelectList, + GetVesselSelectList, +} from '/@/views/operation/seaexport/api/BookingLedger' +import { useOptionsStore } from '/@/store/modules/options' +const optionsStore = useOptionsStore() +import { getDictOption } from '/@/utils/dictUtil' +// 单提份数字典 +const FnnoBill = ref([]) +getDictOption('no_bill').then((res) => { + FnnoBill.value = res +}) +const personList = ref([]) +// 集装箱表单 +export const formSchema5: FormSchema[] = [ + { + label: '主提单号', + field: 'mblno', + component: 'Input', + defaultValue: '', + colProps: { span: 12 }, + }, + { + label: '分提单号', + field: 'hblno', + component: 'Input', + required: true, + defaultValue: null, + colProps: { span: 12 }, + }, + // { + // field: 'shipperCnId', + // label: '', + // component: 'Input', + // show: false, + // }, + // { + // label: '提单确认人', + // field: 'shipperCn', + // component: 'ApiSelect', + // required: false, + // dynamicDisabled: false, + // colProps: { span: 5 }, + // componentProps: ({ formModel }) => { + // return { + // api: GetClientListByCode, + // params: { code: 'shippercn' }, + // labelField: 'pinYinCode', + // valueField: 'shortName', + // showName: 'shortName', + // resultField: 'data', + // immediate: false, + // onChange: (e, obj) => { + // if (e && obj) { + // formModel.shipperCnId = obj.id + // GetOrderContactListByClientId({ id: obj.id }).then((res) => { + // personList.value = res.data.map((item) => { + // return { + // label: item.name, + // value: item.name, + // id: item.id, + // email: item.email, + // mobile: item.mobile, + // } + // }) + // }) + // } + // if (!e && !obj) { + // formModel.shipperCnId = null + // } + // }, + // } + // }, + // }, + // { + // field: 'BLConfirmationId', + // label: '', + // component: 'Input', + // show: false, + // }, + // { + // field: 'BLConfirmationName', + // label: '联系人', + // component: 'Select', + // required: false, + // dynamicDisabled: false, + // colProps: { span: 5 }, + // componentProps: ({ formModel, formActionType }) => { + // return { + // options: personList.value, + // mode: 'SECRET_COMBOBOX_MODE_DO_NOT_USE', + // allowClear: true, + // showSearch: true, + // filterOption: (input: string, option: any) => { + // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + // }, + // onChange: (v, obj) => { + // if (v && obj) { + // formModel.customerContactId = obj.id + // formModel.email = obj.email + // formModel.mobile = obj.mobile + // } + // if (!v && (!obj || obj == {})) { + // formModel.customerContactId = null + // formModel.email = null + // formModel.mobile = null + // } + // }, + // } + // }, + // }, + // { + // label: '邮箱', + // field: 'BLConfirmationEmail', + // component: 'Input', + // colProps: { span: 5 }, + // rules: [{ type: 'email', message: '请填写正确的邮箱地址' }], + // }, +] +function ToCDB(str: any) { + if (!str) return + var tmp = '' + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) > 65248 && str.charCodeAt(i) < 65375) { + tmp += String.fromCharCode(str.charCodeAt(i) - 65248) + } else { + tmp += String.fromCharCode(str.charCodeAt(i)) + } + } + tmp = tmp.replace(/,/gi, ',') + tmp = tmp.replace(/。/gi, '.') + tmp = tmp.replace(/;/gi, ';') + tmp = tmp.replace(/:/gi, ':') + tmp = tmp.replace(/?/gi, '?') + tmp = tmp.replace(/!/gi, '!') + tmp = tmp.replace(/《/gi, '<<') + tmp = tmp.replace(/》/gi, '>>') + tmp = tmp.replace(/‘/gi, "'") + tmp = tmp.replace(/’/gi, "'") + tmp = tmp.replace(/、/gi, ',') + // tab键转换暂时屏蔽,看后台转换的效果,再放开 + tmp = tmp.replace(/\t/gi, ' ') + return tmp +} +const removeTrailingSpaces = (text) => { + return text.replace(/ \s*$/gm, '') +} +// 上面的表单1 +export const formSchema1: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, + { + label: '', + field: 'shipperId', + component: 'Input', + show: false, + }, + { + label: '发货人', + field: 'shipper', + labelSlot: 'shipper', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + api: GetShippingBillTemplateSelectList, + params: { type: 2, id: formModel.wtdwId }, + labelField: 'templateName', + valueField: 'templateName', + immediate: false, + resultField: 'data', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: (e, obj) => { + if (e && obj) { + formModel.shipperId = obj.id + formModel.shipperContent = obj.content + } + if (e === undefined && obj === undefined) { + formModel.shipperId = null + formModel.shipperContent = null + formModel.shipper = '' + } + }, + } + }, + }, + { + label: ' ', + field: 'shipperContent', + component: 'InputTextArea', + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + rows: 5, + slice: [30, 35, 40], + onCut: (v) => { + formModel.shipperContent = v + }, + onblur: () => { + formModel.shipperContent = ToCDB(formModel.shipperContent) + formModel.shipperContent = formModel.shipperContent.toUpperCase() + formModel.shipperContent = removeTrailingSpaces(formModel.shipperContent) + }, + } + }, + }, + { + label: '', + field: 'consigneeId', + component: 'Input', + show: false, + }, + { + label: '收货人', + field: 'consignee', + labelSlot: 'consignee', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + api: GetShippingBillTemplateSelectList, + params: { type: 1, id: formModel.wtdwId }, + labelField: 'templateName', + valueField: 'templateName', + resultField: 'data', + immediate: false, + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: (e, obj) => { + if (e && obj) { + formModel.consigneeId = obj.id + formModel.consigneeContent = obj.content + } + if (e === undefined && obj === undefined) { + formModel.consigneeId = null + formModel.consignee = null + formModel.consigneeContent = '' + } + }, + } + }, + }, + { + label: ' ', + field: 'consigneeContent', + component: 'InputTextArea', + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + rows: 5, + slice: [30, 35, 40], + onCut: (v) => { + formModel.consigneeContent = v + }, + onblur: () => { + formModel.consigneeContent = ToCDB(formModel.consigneeContent) + formModel.consigneeContent = formModel.consigneeContent.toUpperCase() + formModel.consigneeContent = removeTrailingSpaces(formModel.consigneeContent) + }, + } + }, + }, + { + label: '', + field: 'notifyPartyId', + component: 'Input', + show: false, + }, + { + label: '通知人', + field: 'notifyParty', + component: 'ApiSelect', + labelSlot: 'notifyParty', + required: false, + dynamicDisabled: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + api: GetShippingBillTemplateSelectList, + params: { type: 3, id: formModel.wtdwId }, + labelField: 'templateName', + valueField: 'templateName', + resultField: 'data', + immediate: false, + alwaysLoad: false, + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: (e, obj) => { + if (e && obj) { + formModel.notifyPartyId = obj.id + formModel.notifyPartyContent = obj.content + } + if (e === undefined && obj === undefined) { + formModel.notifyPartyId = null + formModel.notifyPartyContent = '' + formModel.notifyParty = '' + } + }, + } + }, + }, + { + label: ' ', + field: 'notifyPartyContent', + component: 'InputTextArea', + required: false, + dynamicDisabled: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + rows: 5, + slice: [30, 35, 40], + onCut: (v) => { + formModel.notifyPartyContent = v + }, + onblur: () => { + formModel.notifyPartyContent = ToCDB(formModel.notifyPartyContent) + formModel.notifyPartyContent = formModel.notifyPartyContent.toUpperCase() + formModel.notifyPartyContent = removeTrailingSpaces(formModel.notifyPartyContent) + }, + } + }, + }, + { + label: '', + field: 'secondNotifyPartyContent', + defaultValue: '', + component: 'Input', + show: false, + }, + { + label: '', + field: 'secondNotifyParty', + defaultValue: '', + component: 'Input', + show: false, + }, + { + label: '', + field: 'secondNotifyPartyId', + defaultValue: '', + component: 'Input', + show: false, + }, + { + label: '', + field: 'agentId', + component: 'Input', + show: false, + }, + { + field: 'agentName', + label: '国外代理', + component: 'ApiSelect', + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + api: GetSupplierListByCode, + params: { code: 'agent' }, + labelField: 'pinYinCode', + showName: 'shortName', + valueField: 'shortName', + resultField: 'data', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.agentId = obj.id + } + if (!e && !obj) { + formModel.agentId = '' + } + }, + } + }, + }, + { + field: 'agentContent', + label: 'AGENT', + component: 'InputTextArea', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 24 }, + componentProps: { + rows: 5, + }, + }, +] +// 下面的表单2 +export const formSchema2: FormSchema[] = [ + { + field: 'etd', + label: '开船日期', + component: 'DatePicker', + colProps: { span: 12 }, + defaultValue: null, + componentProps: { + allowClear: true, + valueFormat: 'YYYY-MM-DD', + }, + }, + { + field: 'eta', + label: '预抵日期', + component: 'DatePicker', + colProps: { span: 12 }, + defaultValue: null, + componentProps: { + allowClear: true, + valueFormat: 'YYYY-MM-DD', + }, + }, + { + label: '', + field: 'vesselId', + component: 'Input', + show: false, + }, + { + label: '船名', + field: 'vessel', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + 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: 'innerVoyno', + component: 'Input', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + }, + { + label: '装货港', + field: 'loadPortCode', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + componentProps: ({ formModel, formActionType }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + valueField: 'ediCode', + showName: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formActionType ? formActionType.linkageForm(obj) : null + formModel.loadPortId = obj.id + formModel.loadPort = obj.portName + } + if (!e && !obj) { + formModel.loadPortId = null + formModel.loadPort = null + } + }, + } + }, + }, + { + label: '卸货港', + field: 'dischargePortCode', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + 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 + // 带出交货地 + formModel.deliveryPlaceId = obj.id + formModel.deliveryPlace = obj.portName + formModel.deliveryPlaceCode = e + } + if (!e && !obj) { + formModel.dischargePortId = null + formModel.dischargePort = null + } + }, + } + }, + }, + { + label: '', + field: 'loadPort', + component: 'Input', + required: false, + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.loadPort = formModel.loadPort.replace(/[\u4e00-\u9fa5]/gi, '') + }, + } + }, + }, + { + label: '', + field: 'loadPortId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'dischargePort', + component: 'Input', + required: false, + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.dischargePort = formModel.dischargePort.replace(/[\u4e00-\u9fa5]/gi, '') + }, + } + }, + }, + { + label: '', + field: 'dischargePortId', + component: 'Input', + show: false, + }, + { + label: '交货地', + field: 'deliveryPlaceCode', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + 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 + } + if (!e && !obj) { + formModel.deliveryPlaceId = null + formModel.deliveryPlace = null + } + }, + } + }, + }, + { + label: '收货地', + field: 'receiptPlaceCode', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + 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 + formModel.receiptPlaceId = obj.id + } + if (!e && !obj) { + formModel.receiptPlace = null + formModel.receiptPlaceId = null + } + }, + } + }, + }, + { + label: '', + field: 'deliveryPlace', + component: 'Input', + required: false, + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.deliveryPlace = formModel.deliveryPlace.replace(/[\u4e00-\u9fa5]/gi, '') + }, + } + }, + }, + { + label: '', + field: 'deliveryPlaceId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'receiptPlace', + component: 'Input', + required: false, + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.receiptPlace = formModel.receiptPlace.replace(/[\u4e00-\u9fa5]/gi, '') + }, + } + }, + }, + { + label: '', + field: 'receiptPlaceId', + component: 'Input', + show: false, + }, + { + label: '中转港', + field: 'transPortCode', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + allowClear: true, + showSearch: true, + labelField: 'pinYinCode', + showName: 'ediCode', + valueField: 'ediCode', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.transPortId = obj.id + formModel.transPort = obj.portName + } + if (!e && !obj) { + formModel.transPortId = null + formModel.transPort = null + } + }, + } + }, + }, + { + label: '', + field: 'transPort', + component: 'Space', + required: false, + colProps: { span: 12 }, + }, + { + label: '', + field: 'transPort', + component: 'Input', + required: false, + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + oninput: () => { + formModel.transPort = formModel.transPort.replace(/[\u4e00-\u9fa5]/gi, '') + }, + } + }, + }, + { + label: '', + field: 'transPortId', + component: 'Input', + show: false, + }, +] +// 箱数或件数表单 +export const formSchema3: FormSchema[] = [ + { + label: '件数', + field: 'noPkgs', + component: 'InputTextArea', + required: false, + colProps: { span: 24 }, + componentProps: ({ formModel, formActionType }) => { + return { + autoSize: { minRows: 3, maxRows: 3 }, + onkeyup: (e) => { + const arr = e.currentTarget._value.split('\n') + let pkgs = 0 + for (let i = 0; i < arr.length; i++) { + if (isNaN(arr[i])) { + const letters = arr[i].split(/\d+/).filter(Boolean) + const numbers = arr[i].split(/[a-zA-Z]+/).filter(Boolean) + pkgs = pkgs + Number(numbers[0]) + if (letters && letters.length) formModel.kindPkgsName = letters[0] + } else { + if (arr[i]) { + pkgs = pkgs + Number(arr[i]) + } + } + } + formModel.pkgs = pkgs + formActionType ? formActionType.submit() : null + }, + } + }, + }, + { + label: '总件数', + field: 'pkgs', + component: 'Input', + colProps: { span: 12 }, + dynamicDisabled: true, + }, + { + label: '包装', + field: 'kindPkgsName', + component: 'Input', + colProps: { span: 12 }, + dynamicDisabled: true, + }, + { + label: '', + field: 'kindPkgs', + component: 'Input', + show: false, + }, + { + label: '毛重', + field: 'grossWeight', + component: 'InputTextArea', + required: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + autoSize: { minRows: 3, maxRows: 3 }, + onkeyup: (e) => { + const arr = e.currentTarget._value.split('\n') + let pkgs = 0 + for (let i = 0; i < arr.length; i++) { + if (isNaN(arr[i])) { + const numbers = arr[i].split(/[a-zA-Z]+/).filter(Boolean) + pkgs = pkgs + Number(numbers[0]) + } else { + if (arr[i]) { + pkgs = pkgs + Number(arr[i]) + } + } + } + formModel.kgs = pkgs + }, + } + }, + }, + { + label: '总重量(KGS)', + field: 'kgs', + component: 'Input', + colProps: { span: 24 }, + }, + { + label: '尺码', + field: 'measurement', + component: 'InputTextArea', + required: false, + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + autoSize: { minRows: 3, maxRows: 3 }, + onkeyup: (e) => { + const arr = e.currentTarget._value.split('\n') + let pkgs = 0 + for (let i = 0; i < arr.length; i++) { + if (isNaN(arr[i])) { + const numbers = arr[i].split(/[a-zA-Z]+/).filter(Boolean) + pkgs = pkgs + Number(numbers[0]) + } else { + if (arr[i]) { + pkgs = pkgs + Number(arr[i]) + } + } + } + formModel.cbm = pkgs + }, + } + }, + }, + { + label: '总尺码(CBM)', + field: 'cbm', + component: 'Input', + colProps: { span: 24 }, + }, +] +export const formSchema4: FormSchema[] = [ + { + field: 'totalNo', + label: '件数大写', + component: 'Input', + required: false, + colProps: { span: 24 }, + dynamicDisabled: true, + }, + { + field: 'issueType', + label: '签单方式', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: () => { + return { + option: optionsStore.getOptionsByCode('GetIssueTypeSelectList'), + allowClear: true, + showSearch: true, + labelField: 'billType', + valueField: 'id', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + } + }, + }, + { + field: 'issueDate', + label: '签单日期', + component: 'DatePicker', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: ({ formModel, formActionType }) => { + return { + allowClear: true, + valueFormat: 'YYYY-MM-DD', + onChange: (e) => { + formActionType ? formActionType.linkageForm(e) : null + }, + } + }, + }, + { + label: '签单地点', + field: 'issuePlace', + component: 'Input', + required: false, + colProps: { span: 6 }, + }, + { + field: 'noBill', + label: '提单份数', + component: 'Select', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: { + options: FnnoBill, + allowClear: true, + showSearch: true, + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + }, + }, + { + field: 'mblFrt', + label: '付费方式', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: ({ formActionType }) => { + return { + option: optionsStore.getOptionsByCode('GetClientFrtSelectList'), + allowClear: true, + showSearch: true, + labelField: 'frtName', + valueField: 'frtName', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: (e, obj) => { + if (e && obj) { + formActionType ? formActionType.linkageForm(e) : null + } + }, + } + }, + }, + { + label: '', + field: 'prepareAtId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'prepareAtCode', + component: 'Input', + show: false, + }, + { + field: 'prepareAt', + label: '预付地点', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + valueField: 'portName', + showName: 'portName', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.prepareAtId = obj.id + formModel.prepareAtCode = obj.ediCode + } + if (!e && !obj) { + formModel.prepareAtId = null + formModel.prepareAtCode = null + } + }, + } + }, + }, + { + label: '', + field: 'payableAtId', + component: 'Input', + show: false, + }, + { + label: '', + field: 'payableAtCode', + component: 'Input', + show: false, + }, + { + field: 'payableAt', + label: '到付地点', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: ({ formModel }) => { + return { + api: GetClientPortSelectList, + resultField: 'data', + labelField: 'pinYinCode', + valueField: 'portName', + showName: 'portName', + immediate: false, + onChange: (e, obj) => { + if (e && obj) { + formModel.payableAtId = obj.id + formModel.payableAtCode = obj.ediCode + } + if (!e && !obj) { + formModel.payableAtId = null + formModel.payableAtCode = null + } + }, + } + }, + }, + { + field: 'service', + label: '运输条款', + component: 'ApiSelect', + required: false, + dynamicDisabled: false, + // defaultValue: '', + colProps: { span: 6 }, + componentProps: () => { + return { + option: optionsStore.getOptionsByCode('GetServiceSelectList'), + allowClear: true, + showSearch: true, + labelField: 'enName', + valueField: 'id', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + } + }, + }, + { + label: '其他备注', + field: 'orderContent', + component: 'InputTextArea', + required: false, + colProps: { span: 12 }, + componentProps: { + autoSize: { minRows: 3, maxRows: 3 }, + }, + }, + { + label: '备注', + field: 'remark', + component: 'InputTextArea', + required: false, + colProps: { span: 12 }, + componentProps: { + autoSize: { minRows: 3, maxRows: 3 }, + }, + }, +] diff --git a/src/views/taskmanage/taskList/BLConfirmation/container.vue b/src/views/taskmanage/taskList/BLConfirmation/container.vue new file mode 100644 index 00000000..db97d67c --- /dev/null +++ b/src/views/taskmanage/taskList/BLConfirmation/container.vue @@ -0,0 +1,472 @@ + + + + diff --git a/src/views/taskmanage/taskList/BLConfirmation/index.vue b/src/views/taskmanage/taskList/BLConfirmation/index.vue new file mode 100644 index 00000000..c27acf14 --- /dev/null +++ b/src/views/taskmanage/taskList/BLConfirmation/index.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/views/taskmanage/taskList/BLConfirmation/info.vue b/src/views/taskmanage/taskList/BLConfirmation/info.vue new file mode 100644 index 00000000..8cfa74ea --- /dev/null +++ b/src/views/taskmanage/taskList/BLConfirmation/info.vue @@ -0,0 +1,409 @@ + + From 9962976c26c71a919b85c6aaa37795540067bc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8C=E6=B5=B7?= <14166000+zhangtonghai@user.noreply.gitee.com> Date: Fri, 1 Nov 2024 09:33:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=E4=B8=9A=E5=8A=A1=E6=9D=A5=E6=BA=90=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20=E4=BB=A5=E5=8F=8A=20=E6=8F=90=E5=8D=95=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/baseinfo/infoclient/columns.tsx | 137 ++++++++---------- .../taskList/BLConfirmation/columns.tsx | 1 - .../taskList/BLConfirmation/index.vue | 20 ++- 3 files changed, 78 insertions(+), 80 deletions(-) diff --git a/src/views/baseinfo/infoclient/columns.tsx b/src/views/baseinfo/infoclient/columns.tsx index f48fdfaa..16055ff7 100644 --- a/src/views/baseinfo/infoclient/columns.tsx +++ b/src/views/baseinfo/infoclient/columns.tsx @@ -926,79 +926,43 @@ export const formSchema: FormSchema[] = [ required: false, dynamicDisabled: false, colProps: { span: 4 }, + componentProps: (En) => { + return { + api: GetClientSourceSelectList, + labelField: 'sourceName', + valueField: 'id', + resultField: 'data', + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: async (e, obj) => { + const { formModel, formActionType } = En + if (e && obj) { + formModel.sourceId = obj.value + formModel.sourceName = obj.label + } + if (!e && !obj) { + formModel.sourceId = '' + formModel.sourceName = '' + } + if (e) { + const FnsourceDetailId: any = await GetClientSourceDetailSelectList({ + id: e, + }) + if (FnsourceDetailId.succeeded) { + sourceDetailId.value.splice(0) + FnsourceDetailId.data.forEach((e) => { + sourceDetailId.value.push({ label: e.detailName, value: e.id }) + }) + } + if (formActionType) { + formModel.sourceDetailId = '' + } + } + }, + } + }, }, - // { - // label: '业务来源', - // field: 'sourceId', - // component: 'ApiSelect', - // required: false, - // dynamicDisabled: false, - // colProps: { span: 4 }, - // componentProps: ({ formActionType, formModel }) => { - // return { - // allowClear: true, - // showSearch: true, - // option: optionsStore.getOptionsByCode('GetClientSourceSelectList'), - // labelField: 'sourceName', - // valueField: 'id', - // filterOption: (input: string, option: any) => { - // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 - // }, - // onChange: async (e, obj) => { - // if (e && obj) { - // formModel.sourceId = obj.value - // formModel.sourceName = obj.label - // } - // if (!e && !obj) { - // formModel.sourceId = '' - // formModel.sourceName = '' - // } - // if (e) { - // if (formActionType) { - // const { updateSchema } = formActionType - // let Arr: any = [] - // await GetClientSourceDetailSelectList({ id: e }).then((res) => { - // res.data.forEach((item) => { - // Arr.push({ label: item.detailName, value: item.id }) - // }) - // }) - // updateSchema({ - // label: '来源明细', - // field: 'sourceDetailId', - // component: 'Select', - // required: false, - // dynamicDisabled: ({ values }) => { - // return !values.sourceId - // }, - // colProps: { span: 4 }, - // componentProps: ({ formModel }) => { - // return { - // allowClear: true, - // options: Arr, - // showSearch: true, - // filterOption: (input: string, option: any) => { - // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 - // }, - // onChange: (e, obj) => { - // if (e && obj) { - // formModel.sourceDetailId = obj.value - // formModel.sourceDetailName = obj.label - // } - // if (!e && !obj) { - // formModel.sourceDetailId = '' - // formModel.sourceDetailName = '' - // } - // }, - // } - // }, - // }) - // } - // } - // formModel.sourceDetailId = '' - // }, - // } - // }, - // }, // 来源明细Name { label: '', @@ -1011,8 +975,35 @@ export const formSchema: FormSchema[] = [ field: 'sourceDetailId', component: 'Select', required: false, - colProps: { span: 4 }, + dynamicDisabled: ({ values }) => { + return !values.sourceId + }, + componentProps: (En) => { + return { + allowClear: true, + options: sourceDetailId.value, + showSearch: true, + filterOption: (input: string, option: any) => { + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 + }, + onChange: (e, obj) => { + const { formModel } = En + if (e && obj) { + formModel.sourceDetailId = obj.value + formModel.sourceDetailName = obj.label + } + if (!e && !obj) { + formModel.sourceDetailId = '' + formModel.sourceDetailName = '' + } + }, + onEdit: () => { + const { formActionType } = En + formActionType ? formActionType.linkageForm(En) : null + }, + } + }, }, { diff --git a/src/views/taskmanage/taskList/BLConfirmation/columns.tsx b/src/views/taskmanage/taskList/BLConfirmation/columns.tsx index caf90e68..60b9c608 100644 --- a/src/views/taskmanage/taskList/BLConfirmation/columns.tsx +++ b/src/views/taskmanage/taskList/BLConfirmation/columns.tsx @@ -29,7 +29,6 @@ export const formSchema5: FormSchema[] = [ label: '分提单号', field: 'hblno', component: 'Input', - required: true, defaultValue: null, colProps: { span: 12 }, }, diff --git a/src/views/taskmanage/taskList/BLConfirmation/index.vue b/src/views/taskmanage/taskList/BLConfirmation/index.vue index c27acf14..26e7d699 100644 --- a/src/views/taskmanage/taskList/BLConfirmation/index.vue +++ b/src/views/taskmanage/taskList/BLConfirmation/index.vue @@ -31,24 +31,30 @@
- + + + + + + - + - + -->
@@ -65,6 +71,7 @@ }) const tasksList = ref([]) const activeId = ref(null) + const activeSteps = ref([]) async function init() { let ApiData = { businessId: businessId.value, @@ -81,6 +88,7 @@ const RefInfo = ref(null) async function ClickTasksUnit(data) { activeId.value = data.id + activeSteps.value = data.steps RefInfo.value.dloading = true let res: any = null if (data.isMainBL) {