feature-JimuReport-1106-yjl
lijingjia 4 weeks ago
commit 6d0819af14

@ -10,7 +10,7 @@
<!-- 费用模版表单 --> <!-- 费用模版表单 -->
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
<!-- 费用字段表格 --> <!-- 费用字段表格 -->
<FeeField ref="feeField"></FeeField> <FeeField ref="feeField" v-show="!isBulk"></FeeField>
<!--右下角按钮--> <!--右下角按钮-->
<template #footer> <template #footer>
<a-button <a-button
@ -52,7 +52,7 @@
// //
import { formSchema } from './columns' import { formSchema } from './columns'
// //
import { ApiEdit, ApiInfo } from './api' import { ApiEdit, ApiBulkEdit, ApiInfo } from './api'
import { feeUnitDict } from '/@/hooks/dict/index' import { feeUnitDict } from '/@/hooks/dict/index'
// //
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
@ -66,6 +66,8 @@
const emit = defineEmits(['success', 'register']) const emit = defineEmits(['success', 'register'])
const isUpdate = ref(true) const isUpdate = ref(true)
const isCopy = ref(false) const isCopy = ref(false)
const isBulk = ref(false)
const ids = ref([])
const detailId = ref() const detailId = ref()
// loading // loading
const loading = ref(false) const loading = ref(false)
@ -83,6 +85,8 @@
setModalProps({ confirmLoading: false, loading: true }) setModalProps({ confirmLoading: false, loading: true })
isUpdate.value = !!data?.isUpdate isUpdate.value = !!data?.isUpdate
isCopy.value = !!data?.isCopy isCopy.value = !!data?.isCopy
isBulk.value = !!data?.isBulk
ids.value = data?.ids
if (unref(isUpdate)) { if (unref(isUpdate)) {
setModalProps({ confirmLoading: true }) setModalProps({ confirmLoading: true })
rowId.value = data.record.id rowId.value = data.record.id
@ -131,6 +135,7 @@
customerName: props.customerName, customerName: props.customerName,
customerId: props.customerId, customerId: props.customerId,
saleOrgId: userStore.getUserInfo.userOrgs[0].orgId, saleOrgId: userStore.getUserInfo.userOrgs[0].orgId,
isBulk: isBulk.value ? true : false,
}) })
feeField.value.SetData([]) feeField.value.SetData([])
feeField.value.condition = '' feeField.value.condition = ''
@ -153,7 +158,17 @@
values['customerId'] = props.customerId values['customerId'] = props.customerId
loading.value = true loading.value = true
setModalProps({ confirmLoading: true, loading: true }) setModalProps({ confirmLoading: true, loading: true })
const res: API.DataResult = await ApiEdit(values) let res: any = null
console.log(isBulk.value, 11111111111)
if (isBulk.value) {
let ApiData: any = []
ids.value.forEach((e) => {
ApiData.push({ ...values, id: e })
})
res = await ApiBulkEdit(ApiData)
} else {
res = await ApiEdit(values)
}
loading.value = false loading.value = false
if (res.succeeded) { if (res.succeeded) {
createMessage.success(res.message) createMessage.success(res.message)

@ -4,6 +4,7 @@ import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api { enum Api {
list = '/feeApi/FeeCustTemplate/GetList', list = '/feeApi/FeeCustTemplate/GetList',
edit = '/feeApi/FeeCustTemplate/Edit', edit = '/feeApi/FeeCustTemplate/Edit',
bulkEdit = '/feeApi/FeeCustTemplate/BulkEdit',
info = '/feeApi/FeeCustTemplate/Edit', info = '/feeApi/FeeCustTemplate/Edit',
delete = '/feeApi/FeeCustTemplate/Delete', delete = '/feeApi/FeeCustTemplate/Delete',
GetColumns = '/mainApi/Common/GetColumnsByClient', GetColumns = '/mainApi/Common/GetColumnsByClient',
@ -33,6 +34,14 @@ export function ApiEdit(data: PageRequest) {
data, data,
}) })
} }
// 批量编辑 (Auth)
export function ApiBulkEdit(data: PageRequest) {
return request<DataResult>({
url: Api.bulkEdit,
method: 'post',
data,
})
}
// 详情 (Auth) // 详情 (Auth)
export function ApiInfo(query) { export function ApiInfo(query) {
return request<DataResult>({ return request<DataResult>({
@ -46,7 +55,7 @@ export function ApiDel(data: PageRequest) {
return request<DataResult>({ return request<DataResult>({
url: Api.delete, url: Api.delete,
method: 'post', method: 'post',
data data,
}) })
} }
@ -55,6 +64,6 @@ export function DeleteDetails(data: PageRequest) {
return request<DataResult>({ return request<DataResult>({
url: Api.DeleteDetails, url: Api.DeleteDetails,
method: 'post', method: 'post',
data data,
}) })
} }

@ -3,13 +3,15 @@ import { BasicColumn, FormSchema } from '/@/components/Table'
import { Tag } from 'ant-design-vue' import { Tag } from 'ant-design-vue'
// 引入字典数据 // 引入字典数据
import { getDictOption } from '/@/utils/dictUtil' import { getDictOption } from '/@/utils/dictUtil'
import { useUserStore } from '/@/store/modules/user'
const userStore: any = useUserStore()
import { getOrgList, GetClientPortSelectList, GetCarrierSelectList } from '/@/api/common' import { getOrgList, GetClientPortSelectList, GetCarrierSelectList } from '/@/api/common'
import { import {
GetClientLanesSelectList, GetClientLanesSelectList,
GetAgentCnClientList, GetAgentCnClientList,
GetClientFrtSelectList, GetClientFrtSelectList,
GetClientSourceSelectList, GetClientSourceSelectList,
GetClientSourceDetailSelectList,
} from '/@/views/operation/seaexport/api/BookingLedger' } from '/@/views/operation/seaexport/api/BookingLedger'
// 往来单位下拉框数据 // 往来单位下拉框数据
const companyDict = ref([]) const companyDict = ref([])
@ -39,6 +41,8 @@ const mblFrtCodeList = ref([])
GetClientFrtSelectList().then((res) => { GetClientFrtSelectList().then((res) => {
mblFrtCodeList.value = res.data mblFrtCodeList.value = res.data
}) })
// 业务来源明细数据
const sourceDetailId = ref<any>([])
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
title: '模板名称', title: '模板名称',
@ -499,6 +503,13 @@ export const searchFormSchema: FormSchema[] = [
}, },
] ]
export const formSchema: FormSchema[] = [ export const formSchema: FormSchema[] = [
{
label: '是否批量编辑',
field: 'isBulk',
component: 'Input',
defaultValue: false,
show: false,
},
{ {
label: '主键Id', label: '主键Id',
field: 'id', field: 'id',
@ -512,6 +523,16 @@ export const formSchema: FormSchema[] = [
component: 'Input', component: 'Input',
required: true, required: true,
colProps: { span: 6 }, colProps: { span: 6 },
show: ({ values }) => {
return !values.isBulk
},
dynamicRules: ({ values }) => {
return [
{
required: values.isBulk ? false : true,
},
]
},
}, },
{ {
field: 'businessType', field: 'businessType',
@ -519,6 +540,16 @@ export const formSchema: FormSchema[] = [
component: 'Select', component: 'Select',
required: true, required: true,
colProps: { span: 6 }, colProps: { span: 6 },
show: ({ values }) => {
return !values.isBulk
},
dynamicRules: ({ values }) => {
return [
{
required: values.isBulk ? false : true,
},
]
},
componentProps: () => { componentProps: () => {
return { return {
options: businessType, options: businessType,
@ -552,6 +583,9 @@ export const formSchema: FormSchema[] = [
{ label: '付', value: 2 }, { label: '付', value: 2 },
], ],
}, },
show: ({ values }) => {
return !values.isBulk
},
}, },
{ {
label: '费用类别名称', label: '费用类别名称',
@ -662,12 +696,68 @@ export const formSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel }) => { componentProps: ({ formActionType, formModel }) => {
return { return {
api: GetClientSourceSelectList, api: GetClientSourceSelectList,
labelField: 'sourceName', labelField: 'sourceName',
valueField: 'id', valueField: 'id',
resultField: 'data', resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: async (e) => {
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: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 6 },
componentProps: {
allowClear: true,
options: sourceDetailId.value,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
},
},
{
field: 'deptOrgId',
label: '分公司',
component: 'ApiSelect',
colProps: { span: 6 },
defaultValue: userStore.getUserInfo.orgId,
componentProps: () => {
return {
api: getOrgList,
labelField: 'label',
valueField: 'id',
resultField: 'data',
allowClear: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
} }
}, },
}, },
@ -752,6 +842,7 @@ export const formSchema: FormSchema[] = [
componentProps: { componentProps: {
showTime: false, showTime: false,
style: 'width:100%', style: 'width:100%',
getPopupContainer: () => document.body,
}, },
}, },
{ {
@ -763,6 +854,7 @@ export const formSchema: FormSchema[] = [
componentProps: { componentProps: {
showTime: false, showTime: false,
style: 'width:100%', style: 'width:100%',
getPopupContainer: () => document.body,
}, },
}, },
{ {
@ -804,11 +896,17 @@ export const formSchema: FormSchema[] = [
label: '模板说明', label: '模板说明',
component: 'Input', component: 'Input',
colProps: { span: 6 }, colProps: { span: 6 },
show: ({ values }) => {
return !values.isBulk
},
}, },
{ {
field: 'note', field: 'note',
label: '备注', label: '备注',
component: 'Input', component: 'Input',
colProps: { span: 12 }, colProps: { span: 12 },
show: ({ values }) => {
return !values.isBulk
},
}, },
] ]

@ -7,6 +7,10 @@
<span class="iconfont icon-new_document"></span> <span class="iconfont icon-new_document"></span>
添加 添加
</a-button> </a-button>
<a-button type="link" @click="BulkEdit">
<span class="iconfont icon-dengjizongshu"></span>
批量编辑
</a-button>
<a-popconfirm <a-popconfirm
title="确定删除当前选中数据?" title="确定删除当前选中数据?"
ok-text="是" ok-text="是"
@ -97,6 +101,23 @@
isUpdate: false, isUpdate: false,
}) })
} }
function BulkEdit() {
const select = getSelectRows()
let ids: any = []
if (select.length === 0) {
notification.warning({ message: '请至少选择一条数据', duration: 3 })
return false
} else {
select.forEach((e) => {
ids.push(e.id)
})
openModal(true, {
ids,
isUpdate: false,
isBulk: true,
})
}
}
function handleAudit(record: Recordable) { function handleAudit(record: Recordable) {
openModal(true, { openModal(true, {
record, record,

@ -288,7 +288,7 @@
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, computed, unref, watch, onMounted, defineAsyncComponent } from 'vue' import { ref, computed, unref, watch, onMounted, defineAsyncComponent, h } from 'vue'
import { Divider } from 'ant-design-vue' import { Divider } from 'ant-design-vue'
import { BasicForm, useForm } from '/@/components/Form/index' import { BasicForm, useForm } from '/@/components/Form/index'
import { formSchema, formSchema2, Tablecolumns } from './columns' import { formSchema, formSchema2, Tablecolumns } from './columns'
@ -871,6 +871,8 @@
notification.success({ message: '校验成功', duration: 3 }) notification.success({ message: '校验成功', duration: 3 })
}) })
.catch(async (err) => { .catch(async (err) => {
console.log(err)
let clientTagData: any = '' let clientTagData: any = ''
let SaleData: any = '' let SaleData: any = ''
if (err.clientId) { if (err.clientId) {

@ -10,7 +10,7 @@
<!-- 费用模版表单 --> <!-- 费用模版表单 -->
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
<!-- 费用字段表格 --> <!-- 费用字段表格 -->
<FeeField ref="feeField"></FeeField> <FeeField ref="feeField" @success="handleSuccess" v-show="!isBulk"></FeeField>
<!--右下角按钮--> <!--右下角按钮-->
<template #footer> <template #footer>
<a-button <a-button
@ -52,7 +52,7 @@
// //
import { formSchema } from './columns' import { formSchema } from './columns'
// //
import { ApiEdit, ApiInfo } from './api' import { ApiEdit, ApiBulkEdit, ApiInfo } from './api'
import { feeUnitDict } from '/@/hooks/dict/index' import { feeUnitDict } from '/@/hooks/dict/index'
// //
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
@ -67,6 +67,8 @@
const isUpdate = ref(true) const isUpdate = ref(true)
const isCopy = ref(false) const isCopy = ref(false)
const isSave = ref(false) const isSave = ref(false)
const isBulk = ref(false)
const ids = ref([])
const detailId = ref() const detailId = ref()
// loading // loading
const loading = ref(false) const loading = ref(false)
@ -85,6 +87,8 @@
isUpdate.value = !!data?.isUpdate isUpdate.value = !!data?.isUpdate
isCopy.value = !!data?.isCopy isCopy.value = !!data?.isCopy
isSave.value = !!data?.isSave isSave.value = !!data?.isSave
isBulk.value = !!data?.isBulk
ids.value = data?.ids
if (unref(isUpdate)) { if (unref(isUpdate)) {
setModalProps({ confirmLoading: true }) setModalProps({ confirmLoading: true })
rowId.value = data.record.id rowId.value = data.record.id
@ -153,7 +157,8 @@
setFieldsValue({ setFieldsValue({
customerName: props.customerName, customerName: props.customerName,
customerId: props.customerId, customerId: props.customerId,
saleOrgId: userStore.getUserInfo.userOrgs[0].orgId, // saleOrgId: userStore.getUserInfo.userOrgs[0].orgId,
isBulk: isBulk.value ? true : false,
}) })
feeField.value.SetData([]) feeField.value.SetData([])
feeField.value.condition = '' feeField.value.condition = ''
@ -162,12 +167,33 @@
setModalProps({ loading: false }) setModalProps({ loading: false })
}, },
) )
async function handleSuccess() {
emit('success')
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
if (res.succeeded) {
setFieldsValue({
...res.data,
})
const UnitList = await feeUnitDict()
res.data.details.forEach((item) => {
UnitList.forEach((e: any) => {
if (e.value == item.unit) {
item.unitText = e.name
}
})
})
feeField.value.SetData(res.data.details)
feeField.value.condition = res.data.condition
detailId.value = res.data.id
}
}
const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑')) const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'))
// //
const feeField = ref() const feeField = ref()
async function handleSave(exit) { async function handleSave(exit) {
try { try {
const feeList = JSON.parse(JSON.stringify(feeField.value.validate())) const feeList = JSON.parse(JSON.stringify(feeField.value.validate()))
console.log(feeList, 11111111111)
let type = true let type = true
feeList.forEach((item) => { feeList.forEach((item) => {
if (item.exchangeRate == '【根据设置汇率生成】') { if (item.exchangeRate == '【根据设置汇率生成】') {
@ -177,17 +203,31 @@
type = false type = false
} }
}) })
console.log(type, 11111111111)
if (!type) { if (!type) {
createMessage.warning('费用明细列表含税单价为必填项!') createMessage.warning('费用明细列表含税单价为必填项!')
throw new Error('费用明细列表含税单价为必填项!') throw new Error('费用明细列表含税单价为必填项!')
} }
console.log(22222222)
const values = await validate() const values = await validate()
console.log(values, 11111111111)
values['details'] = feeList values['details'] = feeList
values['condition'] = feeField.value.condition values['condition'] = feeField.value.condition
values['isShared'] = true values['isShared'] = true
loading.value = true loading.value = true
console.log(loading.value, 11111111111)
setModalProps({ confirmLoading: true, loading: true }) setModalProps({ confirmLoading: true, loading: true })
const res: API.DataResult = await ApiEdit(values) let res: any = null
console.log(isBulk.value, 11111111111)
if (isBulk.value) {
let ApiData: any = []
ids.value.forEach((e) => {
ApiData.push({ ...values, id: e })
})
res = await ApiBulkEdit(ApiData)
} else {
res = await ApiEdit(values)
}
loading.value = false loading.value = false
if (res.succeeded) { if (res.succeeded) {
createMessage.success(res.message) createMessage.success(res.message)

@ -4,6 +4,9 @@ import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api { enum Api {
list = '/feeApi/FeeCustTemplate/GetList', list = '/feeApi/FeeCustTemplate/GetList',
edit = '/feeApi/FeeCustTemplate/Edit', edit = '/feeApi/FeeCustTemplate/Edit',
bulkEdit = '/feeApi/FeeCustTemplate/BulkEdit',
bulkEditDetails = '/feeApi/FeeCustTemplate/BulkEditDetails',
info = '/feeApi/FeeCustTemplate/Edit', info = '/feeApi/FeeCustTemplate/Edit',
delete = '/feeApi/FeeCustTemplate/Delete', delete = '/feeApi/FeeCustTemplate/Delete',
GetColumns = '/mainApi/Common/GetColumnsByClient', GetColumns = '/mainApi/Common/GetColumnsByClient',
@ -33,6 +36,22 @@ export function ApiEdit(data: PageRequest) {
data, data,
}) })
} }
// 批量编辑 (Auth)
export function ApiBulkEdit(data: PageRequest) {
return request<DataResult>({
url: Api.bulkEdit,
method: 'post',
data,
})
}
// 批量编辑模板明细 (Auth)
export function ApiBulkEditDetails(data: PageRequest) {
return request<DataResult>({
url: Api.bulkEditDetails,
method: 'post',
data,
})
}
// 详情 (Auth) // 详情 (Auth)
export function ApiInfo(query) { export function ApiInfo(query) {
return request<DataResult>({ return request<DataResult>({
@ -46,7 +65,7 @@ export function ApiDel(data: PageRequest) {
return request<DataResult>({ return request<DataResult>({
url: Api.delete, url: Api.delete,
method: 'post', method: 'post',
data data,
}) })
} }
@ -55,6 +74,6 @@ export function DeleteDetails(data: PageRequest) {
return request<DataResult>({ return request<DataResult>({
url: Api.DeleteDetails, url: Api.DeleteDetails,
method: 'post', method: 'post',
data data,
}) })
} }

@ -3,7 +3,8 @@ import { BasicColumn, FormSchema } from '/@/components/Table'
import { Tag } from 'ant-design-vue' import { Tag } from 'ant-design-vue'
// 引入字典数据 // 引入字典数据
import { getDictOption } from '/@/utils/dictUtil' import { getDictOption } from '/@/utils/dictUtil'
import { useUserStore } from '/@/store/modules/user'
const userStore: any = useUserStore()
import { import {
getOrgList, getOrgList,
GetClientPortSelectList, GetClientPortSelectList,
@ -15,11 +16,10 @@ import {
GetAgentCnClientList, GetAgentCnClientList,
GetClientFrtSelectList, GetClientFrtSelectList,
GetClientSourceSelectList, GetClientSourceSelectList,
GetClientSourceDetailSelectList,
} from '/@/views/operation/seaexport/api/BookingLedger' } from '/@/views/operation/seaexport/api/BookingLedger'
// 往来单位下拉框数据 import { GetFeeCodeSelectList, GetFeeCurrencySelectList } from '/@/api/common'
const companyDict = ref([]) import { feeUnitDict } from '/@/hooks/dict/index'
import { useOptionsStore } from '/@/store/modules/options'
const optionsStore = useOptionsStore()
let businessType: any = [ let businessType: any = [
{ value: 1, label: '海运出口' }, { value: 1, label: '海运出口' },
{ value: 2, label: '海运进口' }, { value: 2, label: '海运进口' },
@ -44,7 +44,8 @@ const mblFrtCodeList = ref([])
GetClientFrtSelectList().then((res) => { GetClientFrtSelectList().then((res) => {
mblFrtCodeList.value = res.data mblFrtCodeList.value = res.data
}) })
// 业务来源明细数据
const sourceDetailId = ref<any>([])
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
title: '模板名称', title: '模板名称',
@ -294,7 +295,6 @@ export const searchFormSchema: FormSchema[] = [
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
}, },
onChange: (e, obj) => { onChange: (e, obj) => {
console.log(e, obj)
if (e && obj) { if (e && obj) {
formModel.feeCategoryName = obj.label formModel.feeCategoryName = obj.label
formModel.feeCategoryId = obj.value formModel.feeCategoryId = obj.value
@ -355,7 +355,7 @@ export const searchFormSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 4 }, colProps: { span: 4 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetClientLanesSelectList, api: GetClientLanesSelectList,
labelField: 'laneName', labelField: 'laneName',
@ -374,7 +374,7 @@ export const searchFormSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 4 }, colProps: { span: 4 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetClientSourceSelectList, api: GetClientSourceSelectList,
labelField: 'sourceName', labelField: 'sourceName',
@ -389,7 +389,7 @@ export const searchFormSchema: FormSchema[] = [
labelSlot: 'carrierId', labelSlot: 'carrierId',
component: 'ApiSelect', component: 'ApiSelect',
colProps: { span: 4 }, colProps: { span: 4 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetCarrierSelectList, api: GetCarrierSelectList,
labelField: 'pinYinCode', labelField: 'pinYinCode',
@ -406,7 +406,7 @@ export const searchFormSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 4 }, colProps: { span: 4 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetAgentCnClientList, api: GetAgentCnClientList,
labelField: 'shortName', labelField: 'shortName',
@ -425,7 +425,7 @@ export const searchFormSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 4 }, colProps: { span: 4 },
componentProps: ({ formModel, formActionType }) => { componentProps: () => {
return { return {
api: GetClientFrtSelectList, api: GetClientFrtSelectList,
allowClear: true, allowClear: true,
@ -505,6 +505,13 @@ export const searchFormSchema: FormSchema[] = [
}, },
] ]
export const formSchema: FormSchema[] = [ export const formSchema: FormSchema[] = [
{
label: '是否批量编辑',
field: 'isBulk',
component: 'Input',
defaultValue: false,
show: false,
},
{ {
label: '主键Id', label: '主键Id',
field: 'id', field: 'id',
@ -516,16 +523,34 @@ export const formSchema: FormSchema[] = [
field: 'name', field: 'name',
label: '模板名称', label: '模板名称',
component: 'Input', component: 'Input',
required: true,
colProps: { span: 6 }, colProps: { span: 6 },
show: ({ values }) => {
return !values.isBulk
},
dynamicRules: ({ values }) => {
return [
{
required: values.isBulk ? false : true,
},
]
},
}, },
{ {
field: 'businessType', field: 'businessType',
label: '业务类型', label: '业务类型',
component: 'ApiSelect', component: 'ApiSelect',
colProps: { span: 6 }, colProps: { span: 6 },
required: true, show: ({ values }) => {
componentProps: ({ formModel }) => { return !values.isBulk
},
dynamicRules: ({ values }) => {
return [
{
required: values.isBulk ? false : true,
},
]
},
componentProps: () => {
return { return {
api: () => { api: () => {
return new Promise((resolve) => { return new Promise((resolve) => {
@ -593,6 +618,9 @@ export const formSchema: FormSchema[] = [
{ label: '付', value: 2 }, { label: '付', value: 2 },
], ],
}, },
show: ({ values }) => {
return !values.isBulk
},
}, },
{ {
label: '费用类别名称', label: '费用类别名称',
@ -623,7 +651,6 @@ export const formSchema: FormSchema[] = [
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
}, },
onChange: (e, obj) => { onChange: (e, obj) => {
console.log(e, obj)
if (e && obj) { if (e && obj) {
formModel.feeCategoryName = obj.label formModel.feeCategoryName = obj.label
formModel.feeCategoryId = obj.value formModel.feeCategoryId = obj.value
@ -684,7 +711,7 @@ export const formSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetClientLanesSelectList, api: GetClientLanesSelectList,
labelField: 'laneName', labelField: 'laneName',
@ -703,12 +730,68 @@ export const formSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel }) => { componentProps: ({ formActionType, formModel }) => {
return { return {
api: GetClientSourceSelectList, api: GetClientSourceSelectList,
labelField: 'sourceName', labelField: 'sourceName',
valueField: 'id', valueField: 'id',
resultField: 'data', resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: async (e) => {
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: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 6 },
componentProps: {
allowClear: true,
options: sourceDetailId.value,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
},
},
{
field: 'deptOrgId',
label: '分公司',
component: 'ApiSelect',
colProps: { span: 6 },
defaultValue: userStore.getUserInfo.orgId,
componentProps: () => {
return {
api: getOrgList,
labelField: 'label',
valueField: 'id',
resultField: 'data',
allowClear: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
} }
}, },
}, },
@ -718,7 +801,7 @@ export const formSchema: FormSchema[] = [
labelSlot: 'carrierId', labelSlot: 'carrierId',
component: 'ApiSelect', component: 'ApiSelect',
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetCarrierSelectList, api: GetCarrierSelectList,
labelField: 'pinYinCode', labelField: 'pinYinCode',
@ -735,7 +818,7 @@ export const formSchema: FormSchema[] = [
required: false, required: false,
dynamicDisabled: false, dynamicDisabled: false,
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel }) => { componentProps: () => {
return { return {
api: GetAgentCnClientList, api: GetAgentCnClientList,
labelField: 'shortName', labelField: 'shortName',
@ -755,7 +838,7 @@ export const formSchema: FormSchema[] = [
dynamicDisabled: false, dynamicDisabled: false,
defaultValue: null, defaultValue: null,
colProps: { span: 6 }, colProps: { span: 6 },
componentProps: ({ formModel, formActionType }) => { componentProps: () => {
return { return {
api: GetClientFrtSelectList, api: GetClientFrtSelectList,
allowClear: true, allowClear: true,
@ -793,6 +876,7 @@ export const formSchema: FormSchema[] = [
componentProps: { componentProps: {
showTime: false, showTime: false,
style: 'width:100%', style: 'width:100%',
getPopupContainer: () => document.body,
}, },
}, },
{ {
@ -804,6 +888,7 @@ export const formSchema: FormSchema[] = [
componentProps: { componentProps: {
showTime: false, showTime: false,
style: 'width:100%', style: 'width:100%',
getPopupContainer: () => document.body,
}, },
}, },
{ {
@ -817,11 +902,284 @@ export const formSchema: FormSchema[] = [
label: '模板说明', label: '模板说明',
component: 'Input', component: 'Input',
colProps: { span: 6 }, colProps: { span: 6 },
show: ({ values }) => {
return !values.isBulk
},
}, },
{ {
field: 'note', field: 'note',
label: '备注', label: '备注',
component: 'Input', component: 'Input',
colProps: { span: 12 }, colProps: { span: 12 },
show: ({ values }) => {
return !values.isBulk
},
},
]
export const detailsFormSchema: FormSchema[] = [
{
label: '费用名称Code',
field: 'feeCode',
component: 'Input',
defaultValue: '',
show: false,
},
{
label: '费用名称ID',
field: 'feeId',
component: 'Input',
defaultValue: '',
show: false,
},
{
field: 'feeName',
label: '费用名称',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
defaultValue: null,
colProps: { span: 6 },
componentProps: ({ formModel }) => {
return {
api: GetFeeCodeSelectList,
allowClear: true,
showSearch: true,
labelField: 'name',
valueField: 'name',
resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: (e, obj) => {
console.log(e, obj)
if (e && obj) {
formModel.feeName = obj.label
formModel.feeCode = obj.code
formModel.feeId = obj.id
formModel.unit = obj.defaultUnit
formModel.unitText = obj.defaultUnitName
formModel.currency = obj.defaultCurrency
if (formModel.currency == 'RMB') {
formModel.exchangeRate = 1
} else {
formModel.exchangeRate = '【根据设置汇率生成】'
}
formModel.taxRate = obj.taxRate
formModel.isInvoice = obj.isInvoice
formModel.isAdvancedPay = obj.isAdvancedPay
}
if (!e && !obj) {
formModel.feeName = ''
formModel.feeCode = ''
formModel.feeId = ''
formModel.unit = ''
formModel.unitText = ''
formModel.currency = ''
formModel.exchangeRate = ''
formModel.taxRate = ''
formModel.isInvoice = ''
formModel.isAdvancedPay = ''
}
},
}
},
},
{
label: '客户类别',
field: 'customerType',
component: 'Input',
defaultValue: '',
show: false,
},
{
field: 'customerTypeText',
label: '客户类别',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
defaultValue: null,
colProps: { span: 6 },
componentProps: ({ formModel }) => {
return {
api: () => {
return new Promise((resolve) => {
getDictOption('djy_cust_prop').then((res) => {
resolve(res)
})
})
},
allowClear: true,
showSearch: true,
labelField: 'label',
valueField: 'value',
resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: (e, obj) => {
console.log(e, obj)
if (e && obj) {
formModel.customerTypeText = obj.label
formModel.customerType = obj.value
}
if (!e && !obj) {
formModel.customerTypeText = ''
formModel.customerType = ''
}
},
}
},
},
{
label: '单位标准',
field: 'unit',
component: 'Input',
defaultValue: '',
show: false,
},
{
field: 'unitText',
label: '单位标准',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
defaultValue: null,
colProps: { span: 6 },
componentProps: ({ formModel }) => {
return {
api: feeUnitDict,
allowClear: true,
showSearch: true,
labelField: 'label',
valueField: 'value',
resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: (e, obj) => {
console.log(e, obj)
if (e && obj) {
formModel.unitText = obj.label
formModel.unit = obj.value
}
if (!e && !obj) {
formModel.unitText = ''
formModel.unit = ''
}
},
}
},
},
{
field: 'isCtn',
label: '是否箱型',
component: 'Switch',
componentProps: {
checkedChildren: '是',
checkedValue: true,
unCheckedChildren: '否',
unCheckedValue: false,
},
defaultValue: false,
colProps: {
span: 6,
},
},
{
field: 'currency',
label: '币别',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
defaultValue: null,
colProps: { span: 6 },
componentProps: ({ formModel }) => {
return {
api: GetFeeCurrencySelectList,
allowClear: true,
showSearch: true,
labelField: 'codeName',
valueField: 'codeName',
resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: (e) => {
if (e == 'RMB') {
formModel.exchangeRate = 1
} else {
formModel.exchangeRate = '【根据设置汇率生成】'
}
},
}
},
},
{
field: 'unitPrice',
label: '单价',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'exchangeRate',
label: '汇率',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'taxRate',
label: '税率',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'accTaxRate',
label: '财务税率',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'tax',
label: '税额',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'taxUnitPrice',
label: '含税单价',
component: 'InputNumber',
colProps: { span: 4 },
},
{
field: 'isInvoice',
label: '是否开票',
component: 'Switch',
componentProps: {
checkedChildren: '是',
checkedValue: true,
unCheckedChildren: '否',
unCheckedValue: false,
},
defaultValue: false,
colProps: {
span: 6,
},
},
{
field: 'isAdvancedPay',
label: '是否垫付',
component: 'Switch',
componentProps: {
checkedChildren: '是',
checkedValue: true,
unCheckedChildren: '否',
unCheckedValue: false,
},
defaultValue: false,
colProps: {
span: 6,
},
}, },
] ]

@ -11,6 +11,10 @@
<span class="iconfont icon-new_document"></span> <span class="iconfont icon-new_document"></span>
添加 添加
</a-button> </a-button>
<a-button type="link" @click="BulkEdit">
<span class="iconfont icon-dengjizongshu"></span>
批量编辑
</a-button>
<a-popconfirm <a-popconfirm
title="确定删除当前选中数据?" title="确定删除当前选中数据?"
ok-text="是" ok-text="是"
@ -40,6 +44,16 @@
:IsApi="false" :IsApi="false"
:IsApiData="Rcondition" :IsApiData="Rcondition"
/> />
<a-modal
class="ds-fee-to-tem-modal"
v-model:visible="visible"
v-if="visible"
title="批量编辑费用明细"
width="80%"
@ok="handleOk"
>
<BasicForm @register="registerForm" />
</a-modal>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@ -56,16 +70,18 @@
} from 'vue' } from 'vue'
// //
import { GetFeeCodeSelectList, GetFeeCurrencySelectList } from '/@/api/common' import { GetFeeCodeSelectList, GetFeeCurrencySelectList } from '/@/api/common'
import { getColumns, DeleteDetails } from './api' import { getColumns, DeleteDetails, ApiBulkEditDetails } from './api'
// import { GetFeeTemplateDetailList, BatchDelFeeTemplateDetail } from '../api' // import { GetFeeTemplateDetailList, BatchDelFeeTemplateDetail } from '../api'
// //
import { feeUnitDict } from '/@/hooks/dict/index' import { feeUnitDict } from '/@/hooks/dict/index'
// //
import { getDictOption } from '/@/utils/dictUtil' import { getDictOption } from '/@/utils/dictUtil'
import AdvancedSearch from '/@/components/Form/src/components/AdvancedSearch.vue' import AdvancedSearch from '/@/components/Form/src/components/AdvancedSearch.vue'
import { BasicForm, useForm } from '/@/components/Form/index'
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
import { HotTable, HotColumn } from '@handsontable/vue3' import { HotTable, HotColumn } from '@handsontable/vue3'
import { registerAllModules } from 'handsontable/registry' import { registerAllModules } from 'handsontable/registry'
import { detailsFormSchema } from './columns'
import 'handsontable/dist/handsontable.full.min.css' import 'handsontable/dist/handsontable.full.min.css'
defineComponent({ defineComponent({
HotTable, HotTable,
@ -238,7 +254,48 @@
hot.selectCell(list.value.length - 1, 1) hot.selectCell(list.value.length - 1, 1)
}) })
} }
const visible = ref(false)
function BulkEdit() {
const ids = []
list.value.forEach((item: any, index) => {
if (item.selected) {
ids.push(item.id)
}
})
if (ids.length) {
visible.value = true
} else {
notification.warning({ message: '请至少选择一条数据', duration: 3 })
}
}
const emit = defineEmits(['success'])
//
const handleOk = async () => {
let ApiData: any = []
const formData = await modalValidate()
list.value.forEach((item: any) => {
if (item.selected) {
ApiData.push({ ...formData, id: item.id, templateId: item.templateId })
}
})
const res = await ApiBulkEditDetails(ApiData)
if (res.succeeded) {
createMessage.success(res.message)
visible.value = false
emit('success')
} else {
createMessage.error(res.message)
}
}
//
const [
registerForm,
{ validate: modalValidate, resetFields, setFieldsValue, getFieldsValue, updateSchema },
] = useForm({
labelWidth: 100,
schemas: detailsFormSchema,
showActionButtonGroup: false,
})
// //
const columns = [ const columns = [
{ {

@ -6,6 +6,10 @@
<span class="iconfont icon-new_document"></span> <span class="iconfont icon-new_document"></span>
添加 添加
</a-button> </a-button>
<a-button type="link" @click="BulkEdit">
<span class="iconfont icon-dengjizongshu"></span>
批量编辑
</a-button>
<a-popconfirm <a-popconfirm
title="确定删除当前选中数据?" title="确定删除当前选中数据?"
ok-text="是" ok-text="是"
@ -106,6 +110,23 @@
isUpdate: false, isUpdate: false,
}) })
} }
function BulkEdit() {
const select = getSelectRows()
let ids: any = []
if (select.length === 0) {
notification.warning({ message: '请至少选择一条数据', duration: 3 })
return false
} else {
select.forEach((e) => {
ids.push(e.id)
})
openModal(true, {
ids,
isUpdate: false,
isBulk: true,
})
}
}
function handleAudit(record: Recordable) { function handleAudit(record: Recordable) {
openModal(true, { openModal(true, {
record, record,

@ -211,6 +211,12 @@ export const temFormSchema: FormSchema[] = [
} }
}, },
}, },
{
field: 'namingRule',
label: '打印文件名称',
component: 'Input',
colProps: { span: 24 },
},
{ {
field: 'templateName', field: 'templateName',
label: '', label: '',

@ -1,7 +1,7 @@
// @ts-ignore // @ts-ignore
import { request } from '/@/utils/request' import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel' import { DataResult, PageRequest } from '/@/api/model/baseModel'
import qs from "qs" import qs from 'qs'
export function GetCurrentTotalStat(data) { export function GetCurrentTotalStat(data) {
return request<DataResult>({ return request<DataResult>({
@ -15,7 +15,7 @@ export function GetPageAsync(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetPageAsync', url: '/taskApi/TaskManage/GetPageAsync',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
// 获取所有用户下拉 // 获取所有用户下拉
@ -23,7 +23,7 @@ export function GetUserListAll(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/mainApi/Common/GetUserList', url: '/mainApi/Common/GetUserList',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -31,7 +31,7 @@ export function TransferTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/TransferTask', url: '/taskApi/TaskManageBC/TransferTask',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -39,7 +39,7 @@ export function CompleteTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/CompleteTask', url: '/taskApi/TaskManage/CompleteTask',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -47,19 +47,17 @@ export function CancelTaskBC(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/CancelTaskBC', url: '/taskApi/TaskManage/CancelTaskBC',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function GetVGMCompareResult(parameter) { export function GetVGMCompareResult(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetVGMCompareResult', url: '/taskApi/TaskManage/GetVGMCompareResult',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
/** /**
* *
*/ */
@ -67,12 +65,10 @@ export function GetTaskManagePage(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetPage', url: '/taskApi/TaskManage/GetPage',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
/** /**
* *
* ParaType STATUS-;TASK_TYPE-;SOURCE- * ParaType STATUS-;TASK_TYPE-;SOURCE-
@ -81,7 +77,7 @@ export function GetParaInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetParaInfo', url: '/taskApi/TaskManage/GetParaInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -92,7 +88,7 @@ export function CancelTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/CancelTask', url: '/taskApi/TaskManage/CancelTask',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -100,7 +96,6 @@ export function CancelTask(parameter) {
* *
*/ */
/** /**
* *
*/ */
@ -108,7 +103,7 @@ export function DownloadTaskAttach(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/DownloadTaskAttach', url: '/taskApi/TaskManage/DownloadTaskAttach',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -119,7 +114,7 @@ export function SendTelexEmail(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SendTelexEmail', url: '/taskApi/TaskManage/SendTelexEmail',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -129,7 +124,7 @@ export function SendTelexEmail(parameter) {
export function LaraPaperCalc(parameter) { export function LaraPaperCalc(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/LaraPaperCalc?' + parameter, url: '/taskApi/TaskManage/LaraPaperCalc?' + parameter,
method: 'post' method: 'post',
}) })
} }
@ -139,7 +134,7 @@ export function LaraPaperCalc(parameter) {
export function LaraPaperRegist(parameter) { export function LaraPaperRegist(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/LaraPaperRegist?' + parameter, url: '/taskApi/TaskManage/LaraPaperRegist?' + parameter,
method: 'post' method: 'post',
}) })
} }
@ -150,7 +145,7 @@ export function DownloadOriginalTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/DownloadOriginalTask', url: '/taskApi/TaskManage/DownloadOriginalTask',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -161,7 +156,7 @@ export function PrintBatch(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/PrintBatch', url: '/taskApi/TaskManage/PrintBatch',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -172,7 +167,7 @@ export function DownloadAttach(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/DownloadAttach', url: '/taskApi/TaskManage/DownloadAttach',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -183,7 +178,7 @@ export function GetBookingOrderInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageSISubmitted/GetBookingOrderInfo', url: '/TaskManageSISubmitted/GetBookingOrderInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -194,7 +189,7 @@ export function LaraPaperRegistPost(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/LaraPaperRegistPost', url: '/taskApi/TaskManage/LaraPaperRegistPost',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -205,7 +200,7 @@ export function SendShippingOrder(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SendShippingOrder', url: '/taskApi/TaskManage/SendShippingOrder',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -213,7 +208,7 @@ export function GetSIFeedBackInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageSISubmitted/GetSIFeedBackInfo', url: '/TaskManageSISubmitted/GetSIFeedBackInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -221,7 +216,7 @@ export function SaveBookingSI(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SaveBookingSI', url: '/taskApi/TaskManage/SaveBookingSI',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -229,16 +224,14 @@ export function LaraPaperRecordExport(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/LaraPaperRecordExport', url: '/taskApi/TaskManage/LaraPaperRecordExport',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function SaveBookingVGM(id) { export function SaveBookingVGM(id) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SaveBookingVGM?taskPKId=' + id, url: '/taskApi/TaskManage/SaveBookingVGM?taskPKId=' + id,
method: 'post' method: 'post',
}) })
} }
@ -246,7 +239,7 @@ export function AcceptChangeShip(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/AcceptChangeShip', url: '/taskApi/TaskManage/AcceptChangeShip',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -254,7 +247,7 @@ export function AcceptCancelChangeShip(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/AcceptCancelChangeShip', url: '/taskApi/TaskManage/AcceptCancelChangeShip',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -262,7 +255,7 @@ export function GetChangeShipInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetChangeShipInfo', url: '/taskApi/TaskManage/GetChangeShipInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -270,7 +263,7 @@ export function GetAbortChangeShipInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetAbortChangeShipInfo', url: '/taskApi/TaskManage/GetAbortChangeShipInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -278,7 +271,7 @@ export function GetAbortChangeShipInfo(parameter) {
export function ManualReCompareBC(parameter) { export function ManualReCompareBC(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/ManualReCompareBC?' + parameter, url: '/taskApi/TaskManage/ManualReCompareBC?' + parameter,
method: 'post' method: 'post',
}) })
} }
@ -286,7 +279,7 @@ export function DownloadClosingEDI(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/DownloadClosingEDI', url: '/taskApi/TaskManage/DownloadClosingEDI',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -294,7 +287,7 @@ export function SendClosingEDI(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SendClosingEDI', url: '/taskApi/TaskManage/SendClosingEDI',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -302,7 +295,7 @@ export function CalcLaraPageNumbers(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/CalcLaraPageNumbers', url: '/taskApi/TaskManage/CalcLaraPageNumbers',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -310,7 +303,7 @@ export function GetLaraPaperRecordPage(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetLaraPaperRecordPage', url: '/taskApi/TaskManage/GetLaraPaperRecordPage',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -318,7 +311,7 @@ export function GetVGMSubmissionInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageVGM/GetVGMSubmissionInfoByTaskId', url: '/TaskManageVGM/GetVGMSubmissionInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -326,7 +319,7 @@ export function GetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/GetInfoByTaskId', url: '/taskApi/TaskManageBC/GetInfoByTaskId',
method: 'post', method: 'post',
params: parameter params: parameter,
}) })
} }
@ -334,7 +327,7 @@ export function SetTaskOwner(parameter, query) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/SetTaskOwner?' + query, url: '/taskApi/TaskManage/SetTaskOwner?' + query,
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -343,14 +336,14 @@ export function DownloadFileByBC(parameter) {
url: '/taskApi/TaskManage/DownloadFile', url: '/taskApi/TaskManage/DownloadFile',
method: 'get', method: 'get',
params: parameter, params: parameter,
responseType: 'blob' responseType: 'blob',
}) })
} }
export function GetProjectList(parameter) { export function GetProjectList(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/GetProjectList', url: '/taskApi/TaskManageBC/GetProjectList',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -359,7 +352,7 @@ export function DownloadFile(parameter) {
url: '/taskApi/TaskManageBC/DownloadFile', url: '/taskApi/TaskManageBC/DownloadFile',
method: 'get', method: 'get',
params: parameter, params: parameter,
responseType: 'blob' responseType: 'blob',
}) })
} }
@ -367,7 +360,7 @@ export function CreateBookingAndSlot(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/CreateBookingAndSlot', url: '/taskApi/TaskManageBC/CreateBookingAndSlot',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -375,28 +368,28 @@ export function TaskManageBCSendEmai1(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/SendEmail', url: '/taskApi/TaskManageBC/SendEmail',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function TaskTransPlanHasChange(parameter) { export function TaskTransPlanHasChange(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskTransPlanHasChange/GetInfoByTaskId', url: '/taskApi/TaskTransPlanHasChange/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function TaskManageBCGetCompareResult(parameter) { export function TaskManageBCGetCompareResult(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/GetCompareResult', url: '/taskApi/TaskManageBC/GetCompareResult',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function TaskManageRollingNominationGetInfoByTaskId(parameter) { export function TaskManageRollingNominationGetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetInfoByTaskId', url: '/TaskManageRollingNomination/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -404,7 +397,7 @@ export function GetLoadStatusDetailList(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetLoadStatusDetailList', url: '/TaskManageRollingNomination/GetLoadStatusDetailList',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -412,7 +405,7 @@ export function RefreshBookingorder(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/RefreshBookingorder', url: '/TaskManageRollingNomination/RefreshBookingorder',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -420,7 +413,7 @@ export function TaskManageRolingWominationGetUrl(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetUrl', url: '/TaskManageRollingNomination/GetUrl',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -428,7 +421,7 @@ export function TaskManageRolingWominationCancelsharelink(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/Cancelsharelink', url: '/TaskManageRollingNomination/Cancelsharelink',
method: 'post', method: 'post',
params: parameter params: parameter,
}) })
} }
@ -436,7 +429,7 @@ export function DispatchRollingNomination(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/DispatchRollingNomination', url: '/TaskManageRollingNomination/DispatchRollingNomination',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -444,7 +437,7 @@ export function CreateShareLink(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/CreateShareLink', url: '/TaskManageRollingNomination/CreateShareLink',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -452,7 +445,7 @@ export function GetPreBillDetailList(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetPreBillDetailList', url: '/TaskManageRollingNomination/GetPreBillDetailList',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -460,7 +453,7 @@ export function SaveDetai1Container(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/SaveDetailContainer', url: '/TaskManageRollingNomination/SaveDetailContainer',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -468,7 +461,7 @@ export function GenShareLink(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GenShareLink', url: '/TaskManageRollingNomination/GenShareLink',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -476,7 +469,7 @@ export function PushShareLink(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/PushShareLink', url: '/TaskManageRollingNomination/PushShareLink',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -484,7 +477,7 @@ export function shareGetinfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageShareLink/GetInfo', url: '/TaskManageShareLink/GetInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -492,7 +485,7 @@ export function PushShareLinkFeedBack(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageShareLink/PushShareLinkFeedBack', url: '/TaskManageShareLink/PushShareLinkFeedBack',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -500,7 +493,7 @@ export function GetUserFeedBack(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetUserFeedBack', url: '/TaskManageRollingNomination/GetUserFeedBack',
method: 'post', method: 'post',
params: parameter params: parameter,
}) })
} }
@ -508,7 +501,7 @@ export function GetVGMMissingInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageVGM/GetVGMMissingInfoByTaskId', url: '/TaskManageVGM/GetVGMMissingInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -516,7 +509,7 @@ export function CutDateGetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageCutDateChange/GetInfoByTaskId', url: '/taskApi/TaskManageCutDateChange/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -524,7 +517,7 @@ export function PoddGetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/PODDischargeGateoutFull/GetInfoByTaskId', url: '/PODDischargeGateoutFull/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -532,7 +525,7 @@ export function SendInstantlessage(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/PODDischargeGateoutFull/SendInstantMessage', url: '/PODDischargeGateoutFull/SendInstantMessage',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -540,7 +533,7 @@ export function SearchAndConnectBookingInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/PODDischargeGateoutFull/SearchAndConnectBookingInfo', url: '/PODDischargeGateoutFull/SearchAndConnectBookingInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -548,7 +541,7 @@ export function DraftGetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageDRAFT/GetInfoByTaskId', url: '/TaskManageDRAFT/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -557,7 +550,7 @@ export function DraftDownloadFile(parameter) {
url: '/TaskManageDRAFT/DownloadFile', url: '/TaskManageDRAFT/DownloadFile',
method: 'get', method: 'get',
responseType: 'arraybuffer', responseType: 'arraybuffer',
params: parameter params: parameter,
}) })
} }
@ -565,7 +558,7 @@ export function DRAFTSendEmail(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageDRAFT/SendEmail', url: '/TaskManageDRAFT/SendEmail',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -573,7 +566,7 @@ export function DRAFTSearchAndConnectBookingInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageDRAFT/SearchAndConnectBookingInfo', url: '/TaskManageDRAFT/SearchAndConnectBookingInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -581,7 +574,7 @@ export function BcSearchAndConnectBookingInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/ReCompareResult', url: '/taskApi/TaskManageBC/ReCompareResult',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -589,7 +582,7 @@ export function ReCompareResult(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/SearchAndConnectBookingInfo', url: '/taskApi/TaskManageBC/SearchAndConnectBookingInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -597,7 +590,7 @@ export function GetBookingOrder(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/GetBookingOrder', url: '/taskApi/TaskManageBC/GetBookingOrder',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -605,7 +598,7 @@ export function GetToShipSelect(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetToShipSelect', url: '/TaskManageRollingNomination/GetToShipSelect',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -613,7 +606,7 @@ export function GetRollingNominationNoticeReview(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/GetRollingNominationNoticeReview', url: '/TaskManageRollingNomination/GetRollingNominationNoticeReview',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -621,7 +614,7 @@ export function SendRollingNominationNotice(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageRollingNomination/SendRollingNominationNotice', url: '/TaskManageRollingNomination/SendRollingNominationNotice',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -629,7 +622,7 @@ export function GetInfoByTaskIdNotice(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskCautionNotice/GetInfoByTaskId', url: '/TaskCautionNotice/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -637,7 +630,7 @@ export function GetInfoByTaskIdPlan(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskTransPlanHasChange/GetInfoByTaskId', url: '/TaskTransPlanHasChange/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -645,7 +638,7 @@ export function GetInfoByTaskIdRoute(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/RouteChangeAdvisory/GetInfoByTaskId', url: '/RouteChangeAdvisory/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -653,28 +646,28 @@ export function QueryVesselVoynoBookingOrder(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/RouteChangeAdvisory/QueryVesselVoynoBookingOrder', url: '/RouteChangeAdvisory/QueryVesselVoynoBookingOrder',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function QueryBookingOrderPlan(parameter) { export function QueryBookingOrderPlan(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskTransPlanHasChange/QueryBookingOrder', url: '/TaskTransPlanHasChange/QueryBookingOrder',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
export function BatchSendEmailToCustomer(parameter) { export function BatchSendEmailToCustomer(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/RouteChangeAdvisory/BatchSendEmailToCustomer', url: '/RouteChangeAdvisory/BatchSendEmailToCustomer',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
export function MergeCreateBookingOrder(parameter) { export function MergeCreateBookingOrder(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/BookingSlot/MergeCreateBookingOrder', url: '/BookingSlot/MergeCreateBookingOrder',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -685,7 +678,7 @@ export function TaskManageTruckGetInfoByTaskId(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/GetInfoByTaskId', url: '/TaskManageTruck/GetInfoByTaskId',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -698,7 +691,7 @@ export function TaskManageTruckPrintTemplateWithHistoryList(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/PrintTemplateWithHistoryList', url: '/TaskManageTruck/PrintTemplateWithHistoryList',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -711,7 +704,7 @@ export function TaskManageTruckPrint(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/Print', url: '/TaskManageTruck/Print',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
/** /**
@ -721,7 +714,7 @@ export function TaskManageTruckSendDispatchBatchByTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/SendDispatchBatchByTask', url: '/TaskManageTruck/SendDispatchBatchByTask',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
/** /**
@ -731,7 +724,7 @@ export function TaskManageTruckCancelDispatchBatchByTask(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/CancelDispatchBatchByTask', url: '/TaskManageTruck/CancelDispatchBatchByTask',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
@ -744,7 +737,7 @@ export function DjyCustomerQuerytDjyCustomerInfo(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/DjyCustomer/QuerytDjyCustomerInfo', url: '/DjyCustomer/QuerytDjyCustomerInfo',
method: 'get', method: 'get',
params: parameter params: parameter,
}) })
} }
@ -752,11 +745,10 @@ export function SaveTruckByPage(parameter) {
return request<DataResult>({ return request<DataResult>({
url: '/TaskManageTruck/SaveTruckByPage', url: '/TaskManageTruck/SaveTruckByPage',
method: 'post', method: 'post',
data: parameter data: parameter,
}) })
} }
export function GetTaskPlatEnumDict() { export function GetTaskPlatEnumDict() {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManage/GetTaskPlatEnumDict', url: '/taskApi/TaskManage/GetTaskPlatEnumDict',
@ -813,7 +805,8 @@ export function GetUserTaskPlatFieldSet(params) {
export function UploadBcThenRunTask(data, carrierCode, taskId) { export function UploadBcThenRunTask(data, carrierCode, taskId) {
return request<DataResult>({ return request<DataResult>({
url: '/taskApi/TaskManageBC/UploadBcThenRunTask?carrierCode='+carrierCode+'&taskId='+taskId, url:
'/taskApi/TaskManageBC/UploadBcThenRunTask?carrierCode=' + carrierCode + '&taskId=' + taskId,
data: data, data: data,
method: 'post', method: 'post',
}) })
@ -826,3 +819,11 @@ export function PullTask(data) {
method: 'post', method: 'post',
}) })
} }
export function GetBLConfirmation(parameter) {
return request<DataResult>({
url: '/opApi/SeaExportTask/GetBLConfirmation',
params: parameter,
method: 'get',
})
}

@ -6,30 +6,63 @@
<div class="nav-box"> <div class="nav-box">
<div class="nav-bottom"> <div class="nav-bottom">
<a-button type="link" size="small" @click="getCurrentTotalStat('refsh')"> <a-button type="link" size="small" @click="getCurrentTotalStat('refsh')">
<i class="icon-refresh-1-copy iconfont"></i>刷新任务单</a-button> <i class="icon-refresh-1-copy iconfont"></i>刷新任务单</a-button
>
</div> </div>
<a-spin :spinning="levelLoading" tip="加载中..."> <a-spin :spinning="levelLoading" tip="加载中...">
<div class="bottom-box"> <div class="bottom-box">
<div class="nav-title" v-if="levelTop.length > 0"> <div class="nav-title" v-if="levelTop.length > 0">
<a-radio-group button-style="solid" v-model:value="activeTopKey" <a-radio-group
style="margin-bottom: 16px; display: flex" @change="changeTopLevel"> button-style="solid"
<a-radio-button v-for="(item, index) in levelTop" :value="item.key" :key="index"> v-model:value="activeTopKey"
<span class="nav-top">{{ item.name }}<span class="nav-top-tip">({{ item.total }})</span></span> style="margin-bottom: 16px; display: flex"
@change="changeTopLevel"
>
<a-radio-button
v-for="(item, index) in levelTop"
:value="item.key"
:key="index"
>
<span class="nav-top"
>{{ item.name }}<span class="nav-top-tip">({{ item.total }})</span></span
>
</a-radio-button> </a-radio-button>
</a-radio-group> </a-radio-group>
</div> </div>
<div class="nav-no-data" v-else><i class="iconfont icon-guanli"></i><span>暂无导航数据</span> <div class="nav-no-data" v-else
><i class="iconfont icon-guanli"></i><span>暂无导航数据</span>
</div> </div>
<div style="padding: 0 20px"> <div style="padding: 0 20px">
<a-tabs tab-position="top" v-model:activeKey="activeNextKey" hide-add size="small" <a-tabs
@change="changeNextLevel" v-if="levelNext.length > 0"> tab-position="top"
<a-tab-pane v-for="level in levelNext" :key="level.key" :tab="level.name" style="margin-right: 6px"> v-model:activeKey="activeNextKey"
hide-add
size="small"
@change="changeNextLevel"
v-if="levelNext.length > 0"
>
<a-tab-pane
v-for="level in levelNext"
:key="level.key"
:tab="level.name"
style="margin-right: 6px"
>
<div> <div>
<div v-for="(item, index) in levelTree" @click="handleClickTree(item, index)" <div
:class="{ active: item.active, redColor: item.key == 'CAUTION_NOTICE' }" class="box-item"> v-for="(item, index) in levelTree"
@click="handleClickTree(item, index)"
:class="{ active: item.active, redColor: item.key == 'CAUTION_NOTICE' }"
class="box-item"
>
<div class="box-text"> <div class="box-text">
<i v-if="item.key != 'CAUTION_NOTICE'" class="icon-touzijilu iconfont"></i> <i
<i v-if="item.key == 'CAUTION_NOTICE'" class="icon-jinggao iconfont"></i> v-if="item.key != 'CAUTION_NOTICE'"
class="icon-touzijilu iconfont"
></i>
<i
v-if="item.key == 'CAUTION_NOTICE'"
class="icon-jinggao iconfont"
></i>
{{ item.name }} {{ item.name }}
</div> </div>
<div class="box-number">{{ item.total }}</div> <div class="box-number">{{ item.total }}</div>
@ -43,14 +76,26 @@
</div> </div>
</template> </template>
<template #tableTitle> <template #tableTitle>
<a-popconfirm title="是否取消当前选择项?" ok-text="" cancel-text="" @confirm="removeFun"> <a-popconfirm
title="是否取消当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="removeFun"
>
<a-button type="link"> <i class="icon-weiwancheng iconfont"></i> 取消</a-button> <a-button type="link"> <i class="icon-weiwancheng iconfont"></i> 取消</a-button>
</a-popconfirm> </a-popconfirm>
<!-- <a-popconfirm title="确定完成当前选择项?" ok-text="" cancel-text="" @confirm="submitFun"> <!-- <a-popconfirm title="确定完成当前选择项?" ok-text="" cancel-text="" @confirm="submitFun">
<a-button type="link"><i class="icon-yiwancheng2 iconfont"></i>完成</a-button> <a-button type="link"><i class="icon-yiwancheng2 iconfont"></i>完成</a-button>
</a-popconfirm> --> </a-popconfirm> -->
<a-button type="link" @click="openUser"><i class="icon-zhuanfa iconfont"></i>任务转交</a-button> <a-button type="link" @click="openUser"
<a-popconfirm title="确定任务领取吗?" ok-text="" cancel-text="" @confirm="handlePull"> ><i class="icon-zhuanfa iconfont"></i>任务转交</a-button
>
<a-popconfirm
title="确定任务领取吗?"
ok-text="是"
cancel-text="否"
@confirm="handlePull"
>
<a-button type="link"><i class="icon-shangchuanziliao iconfont"></i>任务领取</a-button> <a-button type="link"><i class="icon-shangchuanziliao iconfont"></i>任务领取</a-button>
</a-popconfirm> </a-popconfirm>
<!-- <a-button type="link" @click="FnPrint"><i class="icon-weibiaoti-- iconfont"></i>打印</a-button> --> <!-- <a-button type="link" @click="FnPrint"><i class="icon-weibiaoti-- iconfont"></i>打印</a-button> -->
@ -58,47 +103,104 @@
<a-button type="link" @click="CancelSendCar"><i <a-button type="link" @click="CancelSendCar"><i
class="icon-weiwancheng iconfont"></i>取消派车</a-button> --> class="icon-weiwancheng iconfont"></i>取消派车</a-button> -->
<template v-if="taskType === 'BC'"> <template v-if="taskType === 'BC'">
<a-popconfirm title="确定批量下载当前选择项?" ok-text="" cancel-text="" @confirm="downloadFun"> <a-popconfirm
<a-button type="link"><i class="icon-xiazai-wenjianxiazai-16 iconfont"></i>批量下载</a-button> title="确定批量下载当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="downloadFun"
>
<a-button type="link"
><i class="icon-xiazai-wenjianxiazai-16 iconfont"></i>批量下载</a-button
>
</a-popconfirm> </a-popconfirm>
<a-popconfirm title="确定重新比对当前选择项?" ok-text="" cancel-text="" @confirm="reComparisonFun"> <a-popconfirm
title="确定重新比对当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="reComparisonFun"
>
<a-button type="link"><i class="iconfont icon-duibi"></i>重新比对</a-button> <a-button type="link"><i class="iconfont icon-duibi"></i>重新比对</a-button>
</a-popconfirm> </a-popconfirm>
</template> </template>
<template v-if="taskType === 'DRAFT' || taskType === 'SEAWAY BILL'"> <template v-if="taskType === 'DRAFT' || taskType === 'SEAWAY BILL'">
<a-popconfirm title="确定批量转发当前选择项?" ok-text="" cancel-text="" @confirm="SendEmailFun"> <a-popconfirm
title="确定批量转发当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="SendEmailFun"
>
<a-button type="link"><i class="iconfont icon-31zhuanfa"></i>批量转发</a-button> <a-button type="link"><i class="iconfont icon-31zhuanfa"></i>批量转发</a-button>
</a-popconfirm> </a-popconfirm>
<a-popconfirm title="确定批量下载当前选择项?" ok-text="" cancel-text="" @confirm="downloadFun"> <a-popconfirm
<a-button type="link"><i class="icon-xiazai-wenjianxiazai-16 iconfont"></i>批量下载</a-button> title="确定批量下载当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="downloadFun"
>
<a-button type="link"
><i class="icon-xiazai-wenjianxiazai-16 iconfont"></i>批量下载</a-button
>
</a-popconfirm> </a-popconfirm>
</template> </template>
<template v-if="taskType === 'DRAFT'"> <template v-if="taskType === 'DRAFT'">
<a-popconfirm title="确定计算当前选择项?" ok-text="" cancel-text="" @confirm="laraPaperCalc"> <a-popconfirm
title="确定计算当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="laraPaperCalc"
>
<a-button type="link"><i class="iconfont icon-52"></i>页数计算</a-button> <a-button type="link"><i class="iconfont icon-52"></i>页数计算</a-button>
</a-popconfirm> </a-popconfirm>
</template> </template>
<template v-if="taskType === 'WAIT_BC'"> <template v-if="taskType === 'WAIT_BC'">
<a-button @click="openFile" type="link"><i class="iconfont icon-52"></i>上传BC并放舱</a-button> <a-button @click="openFile" type="link"
><i class="iconfont icon-52"></i>上传BC并放舱</a-button
>
</template> </template>
<template v-if="taskType === 'ORIGINAL_DOWN'"> <template v-if="taskType === 'ORIGINAL_DOWN'">
<a-popconfirm title="确定COPY打印当前选择项" ok-text="" cancel-text="" @confirm="copyPrintFun"> <a-popconfirm
title="确定COPY打印当前选择项"
ok-text="是"
cancel-text="否"
@confirm="copyPrintFun"
>
<a-button type="link"><i class="iconfont icon-weibiaoti--"></i>COPY打印</a-button> <a-button type="link"><i class="iconfont icon-weibiaoti--"></i>COPY打印</a-button>
</a-popconfirm> </a-popconfirm>
<a-popconfirm title="确定COPY打印当前选择项" ok-text="" cancel-text="" @confirm="copyDownloadFun"> <a-popconfirm
<a-button type="link"><i class="iconfont icon-xiazai-wenjianxiazai-13"></i>COPY下载</a-button> title="确定COPY打印当前选择项"
ok-text="是"
cancel-text="否"
@confirm="copyDownloadFun"
>
<a-button type="link"
><i class="iconfont icon-xiazai-wenjianxiazai-13"></i>COPY下载</a-button
>
</a-popconfirm> </a-popconfirm>
<a-popconfirm title="确定正本下载当前选择项?" ok-text="" cancel-text="" @confirm="printBatchFun"> <a-popconfirm
title="确定正本下载当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="printBatchFun"
>
<a-button type="link"><i class="iconfont icon-xiazai"></i>正本下载</a-button> <a-button type="link"><i class="iconfont icon-xiazai"></i>正本下载</a-button>
</a-popconfirm> </a-popconfirm>
<a-popconfirm title="确定登记当前选择项?" ok-text="" cancel-text="" @confirm="laraPaperRegistFun"> <a-popconfirm
title="确定登记当前选择项?"
ok-text="是"
cancel-text="否"
@confirm="laraPaperRegistFun"
>
<a-button type="link"><i class="iconfont icon-dengjizongshu"></i>LARA登记</a-button> <a-button type="link"><i class="iconfont icon-dengjizongshu"></i>LARA登记</a-button>
</a-popconfirm> </a-popconfirm>
<a-button type="link" @click="laraRecordFun"><i class="iconfont icon-touzijilu"></i>LARA记录</a-button> <a-button type="link" @click="laraRecordFun"
><i class="iconfont icon-touzijilu"></i>LARA记录</a-button
>
</template> </template>
</template> </template>
<template #toolbar> <template #toolbar>
<a-button type="link" @click="openCustom"><i class="icon-shuliebiao iconfont"></i>列设置</a-button> <a-button type="link" @click="openCustom"
><i class="icon-shuliebiao iconfont"></i>列设置</a-button
>
</template> </template>
<template v-slot:bodyCell="{ column, record }"> <template v-slot:bodyCell="{ column, record }">
<template v-if="column.key === 'iS_EXCEPT'"> <template v-if="column.key === 'iS_EXCEPT'">
@ -215,7 +317,8 @@
<span class="task-tit" @click="changePage(record)">{{ record.tasK_TITLE }}</span> <span class="task-tit" @click="changePage(record)">{{ record.tasK_TITLE }}</span>
</template> --> </template> -->
<template v-if="column.key === 'action'"> <template v-if="column.key === 'action'">
<TableAction :actions="[ <TableAction
:actions="[
{ {
icon: 'clarity:note-edit-line', icon: 'clarity:note-edit-line',
tooltip: '编辑', tooltip: '编辑',
@ -223,16 +326,27 @@
handleEdit(record) handleEdit(record)
}, },
}, },
]" /> ]"
/>
</template> </template>
</template> </template>
</BasicTable> </BasicTable>
</div> </div>
<a-modal title="提示信息" width="900px" :visible="bcFileFlag" :footer="null" @cancel="bcFileFlag = false"> <a-modal
title="提示信息"
width="900px"
:visible="bcFileFlag"
:footer="null"
@cancel="bcFileFlag = false"
>
<div class="bcfile-title" style="margin-top: 20px"> <div class="bcfile-title" style="margin-top: 20px">
<div> <div>
<i class="icon-fuzhi4 iconfont" title="复制" style="margin-right: 10px; cursor: pointer" <i
@click="handleCopy"></i> class="icon-fuzhi4 iconfont"
title="复制"
style="margin-right: 10px; cursor: pointer"
@click="handleCopy"
></i>
时间{{ bcFile.executeTime }} 时间{{ bcFile.executeTime }}
</div> </div>
<span> {{ bcFile.batchTotal }}</span> <span> {{ bcFile.batchTotal }}</span>
@ -245,34 +359,68 @@
</div> </div>
<div v-else>{{ bcFile.msg }}</div> <div v-else>{{ bcFile.msg }}</div>
</a-modal> </a-modal>
<a-modal @cancel="UserVisible = false" :visible="UserVisible" title="转移任务" @ok="UserhandleOk"> <a-modal
@cancel="UserVisible = false"
:visible="UserVisible"
title="转移任务"
@ok="UserhandleOk"
>
<a-spin :spinning="userLoad"> <a-spin :spinning="userLoad">
<div style="margin: 15px 0">接收人</div> <div style="margin: 15px 0">接收人</div>
<a-select mode="multiple" show-search style="width: 100%; margin-bottom: 30px" :filter-option="false" <a-select
@search="handleSearch" v-model:value="UserId"> mode="multiple"
<a-select-option v-for="item in UserList" :label="item.label" :key="item.value" :value="item.value"> show-search
style="width: 100%; margin-bottom: 30px"
:filter-option="false"
@search="handleSearch"
v-model:value="UserId"
>
<a-select-option
v-for="item in UserList"
:label="item.label"
:key="item.value"
:value="item.value"
>
{{ item.label }} {{ item.label }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-spin> </a-spin>
</a-modal> </a-modal>
<a-modal @cancel="fileFlag = false" :visible="fileFlag" title="上传BC并放舱" @ok="handleSaveFile"> <a-modal
@cancel="fileFlag = false"
:visible="fileFlag"
title="上传BC并放舱"
@ok="handleSaveFile"
>
<div style="margin: 15px 0"> <div style="margin: 15px 0">
<a-spin :spinning="fileLoad"> <a-spin :spinning="fileLoad">
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
<a-upload :file-list="upFileList" :before-upload="beforeUpload" :max-count="1" <a-upload
accept=".xlsm,.xlsx,.xls,.pdf,.txt,.pms,.jpeg,.png" :rules="[{ required: true, message: '请上传文件!' }]" :file-list="upFileList"
@remove="handleRemove"> :before-upload="beforeUpload"
:max-count="1"
accept=".xlsm,.xlsx,.xls,.pdf,.txt,.pms,.jpeg,.png"
:rules="[{ required: true, message: '请上传文件!' }]"
@remove="handleRemove"
>
<a-button style="margin-top: 15px"> <a-button style="margin-top: 15px">
<span class="iconfont icon-shujushangchuan-shixin" <span
:style="{ fontSize: '12px', marginRight: '5px' }"></span> class="iconfont icon-shujushangchuan-shixin"
:style="{ fontSize: '12px', marginRight: '5px' }"
></span>
选择文件 选择文件
</a-button> </a-button>
</a-upload> </a-upload>
</a-spin> </a-spin>
</div> </div>
</a-modal> </a-modal>
<a-modal width="800px" @cancel="customFlag = false" :visible="customFlag" title="任务自定义列" :footer="null"> <a-modal
width="800px"
@cancel="customFlag = false"
:visible="customFlag"
title="任务自定义列"
:footer="null"
>
<taskCustom @handleSuccess="handleSuccess" ref="taskCustomRef"></taskCustom> <taskCustom @handleSuccess="handleSuccess" ref="taskCustomRef"></taskCustom>
</a-modal> </a-modal>
</div> </div>
@ -844,9 +992,9 @@ function handleNext() {
function handledbclick(row) { function handledbclick(row) {
handleEdit(row) handleEdit(row)
} }
function handleResetFunc() { function handleResetFunc() {}
}
function handleEdit(data) { function handleEdit(data) {
console.log(data)
// id // id
const userid = userStore.getUserInfo.userId const userid = userStore.getUserInfo.userId
let statusFlag = false let statusFlag = false
@ -1037,8 +1185,8 @@ function handleEdit(data) {
path: '/approve-fee', path: '/approve-fee',
query: { query: {
id: data.ouT_BS_NO, id: data.ouT_BS_NO,
btype: 1 btype: 1,
} },
}) })
break break
case 'WAIT_ORDER_AUDIT': case 'WAIT_ORDER_AUDIT':
@ -1047,6 +1195,17 @@ function handleEdit(data) {
case 'WAIT_SPACE_RELEASE': case 'WAIT_SPACE_RELEASE':
case 'WAIT_CANGDAN': case 'WAIT_CANGDAN':
case 'WAIT_BILL_CONFIRM': case 'WAIT_BILL_CONFIRM':
console.log(data)
//
go({
path: '/commontaskmanage/BLConfirmation',
query: {
id: data.ouT_BS_NO,
// btype: 1,
},
})
break
case 'WAIT_SI': case 'WAIT_SI':
case 'WAIT_DRAFT': case 'WAIT_DRAFT':
case 'WAIT_CHECKOUT_BILL': case 'WAIT_CHECKOUT_BILL':
@ -1623,7 +1782,9 @@ function handleClickTree(row, index) {
margin: 0 0 0 12px; margin: 0 0 0 12px;
} }
/deep/ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { /deep/
.ant-radio-group-solid
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
background: white; background: white;
color: black; color: black;
font-weight: 700; font-weight: 700;

@ -0,0 +1,75 @@
<template>
<div class="Main">
<a-row class="top">
<a-col :span="5">
<div v-for="item in 5" :key="item">
<span></span>
<p>AGB14654614</p>
<span>待确认</span>
</div>
</a-col>
<a-col :span="19">col-8</a-col>
</a-row>
<div class="bottom">
<a-steps :current="1" class="steps">
<a-step>
<template #title>客户已确认</template>
<!-- <template #description>
<span>This is a description.</span>
</template> -->
</a-step>
<a-step>
<template #title>国外代理确认中</template>
<!-- <template #description>
<span>This is a description.</span>
</template> -->
</a-step>
<a-step>
<template #title>操作确认</template>
</a-step>
<a-step>
<template #title>发起截单</template>
</a-step>
</a-steps>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import { GetBLConfirmation } from '../api'
const route = useRoute()
const businessId = ref(route.query.id)
onMounted(() => {
init()
})
async function init() {
let ApiData = {
businessId: businessId.value,
businessType: 1,
}
const res = await GetBLConfirmation(ApiData)
if (res.succeeded) {
return createMessage.success('申请成功!')
}
}
</script>
<style lang="less" scoped>
.Main {
height: 100%;
display: flex;
flex-direction: column;
.top {
flex: 1;
}
.bottom {
padding: 10px 60px;
display: flex;
justify-content: end;
box-shadow: 0px -3px 6px rgba(214, 214, 214, 1);
.steps {
width: 800px;
}
}
}
</style>
Loading…
Cancel
Save