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 @@
-
-
-
-
-
-
主
-
AGB14654614
-
待确认
-
-
- col-8
-
-
-
-
- 客户已确认
-
-
-
- 国外代理确认中
-
-
-
- 操作确认
-
-
- 发起截单
-
-
-
-
-
-
-
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 @@
+
+
+
+
+
+
+
+
暂无数据
+
+
+
+
+
+
主
+
分
+
{{ item.blNumber }}
+
+
{{ item.taskStatusName }}
+
+
+
+
+
+
+
+
+
+
+
+ 客户已确认
+
+
+
+ 国外代理确认中
+
+
+
+ 操作确认
+
+
+ 发起截单
+
+
+
+
+
+
+
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 @@
-
+
+ {{ item.typeName }}
+
+ 手动确认
+
+
+
+
国外代理确认中
-
+
操作确认
发起截单
-
+ -->
@@ -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) {