feature-JimuReport-1106-yjl
lijingjia 3 weeks ago
commit 2e86da1e65

@ -907,7 +907,7 @@ export const EditformSchema2: FormSchema[] = [
},
{
field: 'rmbAccountId',
label: '人民币账户',
label: '进项人民币银行',
component: 'DEdit',
colProps: { span: 8 },
defaultValue: '',
@ -922,12 +922,14 @@ export const EditformSchema2: FormSchema[] = [
onChange: (e, obj) => {
const { formModel } = En
if (e && obj) {
formModel.pcorpId = obj.value
formModel.pcorpName = obj.label
formModel.rmbAccountId = obj.value
formModel.rmbBankName = obj.bankName
formModel.rmbBankAccountNo = obj.bankAccountNo
}
if (!e && !obj) {
formModel.pcorpId = ''
formModel.pcorpName = ''
formModel.rmbAccountId = ''
formModel.rmbBankName = ''
formModel.rmbBankAccountNo = ''
}
},
onEdit: () => {
@ -951,7 +953,7 @@ export const EditformSchema2: FormSchema[] = [
},
{
field: 'usdAccountId',
label: '美金账户',
label: '进项美金银行',
component: 'DEdit',
colProps: { span: 8 },
defaultValue: '',
@ -967,7 +969,7 @@ export const EditformSchema2: FormSchema[] = [
const { formModel } = En
if (e && obj) {
formModel.usdAccountId = obj.value
formModel.usdBankName = obj.label
formModel.usdBankName = obj.bankName
formModel.usdBankAccountNo = obj.bankAccountNo
}
if (!e && !obj) {

@ -406,7 +406,7 @@
data: 'unitPrice',
type: 'numeric',
format: '0.00',
readOnly: true,
// readOnly: true,
},
{
title: '汇率',

@ -96,7 +96,7 @@ if (res15.succeeded) {
res15.data.forEach((e) => {
if (e.accountName && e.id) {
usdAccountData.push({
label: `${e.bankName}-${e.accountName}-${e.bankAccountNo}`,
label: `${e.bankName}-${e.accountName}-${e.bankAccountNo}-${e.swiftCode}`,
value: e.id,
...e,
})
@ -1364,7 +1364,7 @@ export const formSchema2: FormSchema[] = [
},
{
field: 'rmbAccountId',
label: '人民币账户',
label: '进项人民币银行',
component: 'Select',
colProps: { span: 8 },
defaultValue: '',
@ -1380,7 +1380,7 @@ export const formSchema2: FormSchema[] = [
const { formModel } = En
if (e && obj) {
formModel.rmbAccountId = obj.value
formModel.rmbBankName = obj.label
formModel.rmbBankName = obj.bankName
formModel.rmbBankAccountNo = obj.bankAccountNo
}
if (!e && !obj) {
@ -1404,9 +1404,15 @@ export const formSchema2: FormSchema[] = [
component: 'Input',
show: false,
},
{
label: '进账美金SwiftCode',
field: 'usdSwiftCode',
component: 'Input',
show: false,
},
{
field: 'usdAccountId',
label: '美金账户',
label: '进项美金银行',
component: 'Select',
colProps: { span: 8 },
defaultValue: '',
@ -1422,13 +1428,15 @@ export const formSchema2: FormSchema[] = [
const { formModel } = En
if (e && obj) {
formModel.usdAccountId = obj.value
formModel.usdBankName = obj.label
formModel.usdBankName = obj.bankName
formModel.usdBankAccountNo = obj.bankAccountNo
formModel.usdSwiftCode = obj.swiftCode
}
if (!e && !obj) {
formModel.usdAccountId = ''
formModel.usdBankName = ''
formModel.usdBankAccountNo = ''
formModel.usdSwiftCode = ''
}
},
}

@ -107,6 +107,7 @@ export const formSchema: FormSchema[] = [
label: '邮箱账号',
component: 'Input',
colProps: { span: 12 },
rules: [{ type: 'email', message: '请填写正确的邮箱地址' }],
},
{
field: 'showName',
@ -117,7 +118,7 @@ export const formSchema: FormSchema[] = [
{
field: 'password',
label: '密码',
component: 'Input',
component: 'InputPassword',
colProps: { span: 12 },
},
{

@ -180,4 +180,12 @@ export function GetSlotUseToConfig() {
url: '/opApi/BookingSlotService/GetSlotUseToConfig',
method: 'get',
})
}
export function SaveRolling(parameter) {
return request<DataResult>({
url: '/opApi/BookingSlotService/SaveRolling',
method: 'post',
data: parameter
})
}

@ -36,7 +36,7 @@ const sharedOnCell = (_, index) => {
}
}
}
const sharedOnCell1 = (_, index) => {}
const sharedOnCell1 = (_, index) => { }
export const searchFormSchema: FormSchema[] = [
{
field: 'slotBookingNo',
@ -95,7 +95,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'portName',
immediate: false,
onChange: (e, obj) => {},
onChange: (e, obj) => { },
}
},
},
@ -114,7 +114,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'portName',
immediate: false,
onChange: (e, obj) => {},
onChange: (e, obj) => { },
}
},
},
@ -294,7 +294,7 @@ export const searchFormSchema: FormSchema[] = [
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: (e, obj) => {},
onChange: (e, obj) => { },
}
},
},
@ -1149,7 +1149,7 @@ export const detialForm: FormSchema[] = [
component: 'Select',
colProps: { span: 4 },
componentProps: {
options: [{ label: 'Master单', value: 'MBL' },{ label: 'House单', value: 'HBL' }],
options: [{ label: 'Master单', value: 'MBL' }, { label: 'House单', value: 'HBL' }],
},
},
{
@ -1496,6 +1496,186 @@ export const useDetailForm: FormSchema[] = [
},
},
]
export const rollForm: FormSchema[] = [
{
label: '',
field: 'id',
component: 'Input',
defaultValue: 0,
show: false,
},
{
field: 'slotId',
label: '',
component: 'Input',
show: false,
colProps: { span: 12 },
},
{
field: 'delayReasonTypeName',
label: '',
component: 'Input',
show: false,
colProps: { span: 12 },
},
{
field: 'delayReasonType',
label: '延期原因',
component: 'Select',
componentProps: ({ formModel }) => {
return {
options: [
{
label: '甩货',
value: 'Rolling'
},
{
label: '换舱',
value: 'Change'
},
],
onChange: (e, obj) => {
if (e && obj) {
formModel.delayReasonTypeName = obj.label
}
if (!obj && !e) {
formModel.delayReasonTypeName = ''
}
},
}
},
colProps: { span: 12 },
},
{
field: 'delayNum',
label: '延期次数',
component: 'InputNumber',
colProps: { span: 12 },
},
{
field: 'vessel',
label: '船名',
component: 'Input',
colProps: { span: 12 },
},
{
field: 'voyno',
label: '航次',
component: 'Input',
colProps: { span: 12 },
},
{
label: '',
field: 'carrierId',
component: 'Input',
defaultValue: null,
show: false,
},
{
label: '',
field: 'carrierCode',
defaultValue: null,
component: 'Input',
show: false,
},
{
field: 'carrier',
label: '船公司',
labelSlot: 'carrierId',
component: 'ApiSelect',
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
api: GetCarrierSelectList,
labelField: 'pinYinCode',
showName: 'cnName',
valueField: 'cnName',
resultField: 'data',
immediate: false,
onChange: (e, obj) => {
if (e && obj) {
formModel.carrierId = obj.id
formModel.carrierCode = obj.codeName
}
if (!e && !obj) {
formModel.carrierId = ''
formModel.carrierCode = ''
}
},
}
},
},
{
field: 'etd',
label: 'ETD',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 12 },
componentProps: {
allowClear: true,
},
},
{
field: 'eta',
label: 'ETA',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 12 },
componentProps: {
allowClear: true,
},
},
{
field: 'portLoadId',
label: '装货港',
component: 'ApiSelect',
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
api: GetClientPortSelectList,
resultField: 'data',
labelField: 'pinYinCode',
valueField: 'id',
showName: 'portName',
immediate: false,
onChange: (e, obj) => { },
}
},
},
{
field: 'portDischargeId',
label: '卸货港',
component: 'ApiSelect',
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
api: GetClientPortSelectList,
resultField: 'data',
labelField: 'pinYinCode',
valueField: 'id',
showName: 'portName',
immediate: false,
onChange: (e, obj) => { },
}
},
},
{
label: '',
field: 'portLoadCode',
component: 'Input',
show: false,
},
{
label: '',
field: 'portLoadId',
component: 'Input',
show: false,
},
]
let useTypeList = []
const goodsList = ref([])
function getUseTypeList() {

@ -223,6 +223,20 @@
</div>
</div>
<div class="box-item">
<div class="title">
<span>舱位延期</span>
<span style="font-size: 12px;margin-left: 20px;cursor: pointer;font-weight: 400"
@click="openRoll">
<span class="iconfont icon-jiahao2fill" style="color: rgba(37, 122, 250, 1);"></span>新增
</span>
</div>
<div class="cost">
<BasicTable class="ds-table" @register="registerTable1">
</BasicTable>
</div>
</div>
<div class="box-item">
<div class="title">费用</div>
<div class="cost">
@ -268,29 +282,30 @@
<a-input v-model:value="form.transfeR_PORT_2" />
</a-form-item>
</a-modal>
<a-modal @ok="handleSaveRoll" title="舱位延迟" width="600px" @cancel="rollFlag = false" :visible="rollFlag">
<a-spin :spinning="rollLoad" >
<BasicForm @register="registerFormRoll" />
</a-spin>
</a-modal>
</div>
</template>
<script lang="ts" setup>
import { AutoComplete } from 'ant-design-vue'
import { GetCtnSelectList, GetClientListByCode } from '/@/api/common'
import DsFile from '/@/components/File/index.vue'
import { ref, nextTick, onMounted, watch } from 'vue'
import {
getVesselInfoService, DjyCustomerSuggest, GetSysUserPage, GetPortloadlist, GetPortlist,
BookingSlotSave, BookingSlotDetail, BookingSlotDelete, BookingSlotGetFile
BookingSlotSave, BookingSlotDetail, SaveRolling
} from '../api'
import {
GetControllerClientList, GetCustomerServiceList, GetSaleList, GetVouchingClerkList
GetCustomerServiceList, GetSaleList, GetVouchingClerkList
} from '/@/views/operation/seaexport/api/BookingLedger'
import { useOptionsStore } from '/@/store/modules/options'
import { SlotFlags } from '@vue/shared'
import log from './log.vue'
import { useRoute, useRouter } from 'vue-router'
const optionsStore = useOptionsStore()
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { BasicForm, useForm } from '/@/components/Form/index'
import { detialForm, detialTimeForm, useDetailForm } from '../columns'
import { detialForm, detialTimeForm, useDetailForm, rollForm } from '../columns'
//
const [registerForm,
{
@ -328,7 +343,18 @@ const [registerUseForm,
schemas: useDetailForm,
showActionButtonGroup: false,
})
//
const [registerFormRoll,
{
getFieldsValue: getFieldsValueRoll,
validateFields: validateFieldsRoll,
updateSchema: updateSchemaRoll,
setFieldsValue: setFieldsValueRoll,
}] = useForm({
labelWidth: 100,
schemas: rollForm,
showActionButtonGroup: false,
})
const columns = [
{
title: '费用代码',
@ -452,7 +478,63 @@ const columns = [
dataIndex: 'WEIGHKGS'
}
]
const [registerTable, { reload, getForm, getPaginationRef, setTableData, setProps }] = useTable({
const columns1 = [
{
title: '延期原因',
align: 'center',
width: 100,
dataIndex: 'delayReasonTypeName',
},
{
title: '延期次数',
align: 'center',
width: 100,
dataIndex: 'delayNum',
},
{
title: '船名',
align: 'center',
width: 100,
dataIndex: 'vessel',
},
{
title: '航次号',
align: 'center',
width: 100,
dataIndex: 'voyno',
},
{
title: '船公司',
align: 'center',
width: 100,
dataIndex: 'carrier',
},
{
title: '预计开船日期',
align: 'center',
width: 100,
dataIndex: 'etd',
},
{
title: '预计到港日期',
align: 'center',
width: 100,
dataIndex: 'eta',
},
{
title: '装货港',
align: 'center',
width: 100,
dataIndex: 'portLoad',
},
{
title: '卸货港',
align: 'center',
width: 100,
dataIndex: 'portDischarge',
},
]
const [registerTable, { }] = useTable({
title: '',
columns,
clickToRowSelect: false,
@ -460,7 +542,6 @@ const [registerTable, { reload, getForm, getPaginationRef, setTableData, setProp
pagination: true,
striped: false,
useSearchForm: false,
rowSelection: false,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
@ -470,6 +551,26 @@ const [registerTable, { reload, getForm, getPaginationRef, setTableData, setProp
canResize: false,
resizeHeightOffset: 80,
})
const [registerTable1, { reload, getForm, getPaginationRef, setTableData, setProps }] = useTable({
columns: columns1,
clickToRowSelect: false,
isTreeTable: false,
pagination: true,
striped: false,
useSearchForm: false,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
indexColumnProps: {
width: 60,
},
canResize: false,
resizeHeightOffset: 80,
})
const rollFlag = ref(false)
function openRoll() {
rollFlag.value = true
}
import { useMessage } from '../../../../hooks/web/useMessage'
const route = useRoute()
const { createMessage } = useMessage()
@ -640,6 +741,27 @@ function getDetail() {
loading.value = false
})
}
const rollLoad = ref(false)
function handleSaveRoll(){
if(!form.value.id){
createMessage.error('请先保存数据')
return false
}
const data = {
...getFieldsValueRoll()
}
data.slotId = form.value.id
rollLoad.value = true
SaveRolling(data).then(res=>{
if(res.succeeded){
createMessage.success('保存成功')
getDetail()
}
rollLoad.value = false
}).catch(()=>{
rollLoad.value = false
})
}

@ -410,7 +410,7 @@
data: 'unitPrice',
type: 'numeric',
format: '0.00',
readOnly: true,
// readOnly: true,
},
{
title: '汇率',

@ -219,13 +219,14 @@ function getColumsDetail() {
}
}
// --
function updateListFreeLeft(arr, currency) {
function updateListFreeLeft(arr, currency,arrQuery) {
const data = {
settlement: {
...getFieldsValue(),
...getFieldsValueMark(),
},
documents: arr
documents: arr,
queryCondition:JSON.stringify(arrQuery)
}
data.settlement.billType = 1
data.settlement.mode = 3

@ -454,7 +454,23 @@ function addInfos() {
}
if (cuArr.length == 0) {
openFlag.value = false
emits('updateListFreeLeft', res.data, currency.value)
const queryDataStr = JSON.parse(queryData.value.queryCondition)
const arrQuery = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
arrQuery.push(item)
}
if (item.FieldName == 'currency') {
arrQuery.push(item)
}
if (item.FieldName == 'feeName') {
arrQuery.push(item)
}
if (item.FieldName == 'FeeRange') {
arrQuery.push(item)
}
})
emits('updateListFreeLeft', res.data, currency.value, arrQuery)
}
})
}
@ -512,7 +528,6 @@ function handleSureExhange() {
currenciesData.value.forEach(item => {
item.exchangeRates.forEach(itemC => {
exchangarr.value.forEach(ite => {
if (itemC.currency == ite.currencyTo) {
itemC.exchangeRate = ite.reverseRate
}
@ -559,7 +574,23 @@ function handleSureExhange() {
})
openFlag.value = false
exchangeFlag.value = false
emits('updateListFreeLeft', currenciesData.value, currency.value)
const queryDataStr = JSON.parse(queryData.value.queryCondition)
const arrQuery = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
arrQuery.push(item)
}
if (item.FieldName == 'currency') {
arrQuery.push(item)
}
if (item.FieldName == 'feeName') {
arrQuery.push(item)
}
if (item.FieldName == 'FeeRange') {
arrQuery.push(item)
}
})
emits('updateListFreeLeft', currenciesData.value, currency.value,arrQuery)
}
}

@ -220,13 +220,14 @@ function getColumsDetail() {
}
}
// --
function updateListFreeLeft(arr, currency) {
function updateListFreeLeft(arr, currency,arrQuery) {
const data = {
settlement: {
...getFieldsValue(),
...getFieldsValueMark(),
},
documents: arr
documents: arr,
queryCondition:JSON.stringify(arrQuery)
}
data.settlement.billType = 2
data.settlement.mode = 3

@ -454,7 +454,23 @@ function addInfos() {
}
if (cuArr.length == 0) {
openFlag.value = false
emits('updateListFreeLeft', res.data, currency.value)
const queryDataStr = JSON.parse(queryData.value.queryCondition)
const arrQuery = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
arrQuery.push(item)
}
if (item.FieldName == 'currency') {
arrQuery.push(item)
}
if (item.FieldName == 'feeName') {
arrQuery.push(item)
}
if (item.FieldName == 'FeeRange') {
arrQuery.push(item)
}
})
emits('updateListFreeLeft', res.data, currency.value, arrQuery)
}
})
}
@ -559,7 +575,23 @@ function handleSureExhange() {
})
openFlag.value = false
exchangeFlag.value = false
emits('updateListFreeLeft', currenciesData.value, currency.value)
const queryDataStr = JSON.parse(queryData.value.queryCondition)
const arrQuery = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
arrQuery.push(item)
}
if (item.FieldName == 'currency') {
arrQuery.push(item)
}
if (item.FieldName == 'feeName') {
arrQuery.push(item)
}
if (item.FieldName == 'FeeRange') {
arrQuery.push(item)
}
})
emits('updateListFreeLeft', currenciesData.value, currency.value,arrQuery)
}
}

@ -212,8 +212,8 @@ const [registerTable, { getForm, setSelectedRowKeys, getSelectRows, setProps, ge
}
queryData.value = JSON.parse(JSON.stringify(formatParams(p)))
let queryData1 = [] as any
if(formatParams(p).queryCondition){
queryData1 = JSON.parse(formatParams(p).queryCondition)
if (formatParams(p).queryCondition) {
queryData1 = JSON.parse(formatParams(p).queryCondition)
}
let i = queryData1.length
while (i--) {
@ -370,20 +370,23 @@ function handleSureExhange() {
})
})
})
const queryDataStr = {} as any
if (queryData.value.feeType) {
queryDataStr.feeType = queryData.value.feeType
}
if (queryData.value.currency) {
queryDataStr.currency = queryData.value.currency
}
if (queryData.value.feeName) {
queryDataStr.feeName = queryData.value.feeName
}
if (queryData.value.FeeRange) {
queryDataStr.FeeRange = queryData.value.FeeRange
}
emits('addLeft', currenciesData.value, queryDataStr, [], 'isRMB')
const queryDataStr = JSON.parse(queryData.value.queryCondition)
const queryDataStrarr = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'currency') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'feeName') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'FeeRange') {
queryDataStrarr.push(item)
}
})
emits('addLeft', currenciesData.value, queryDataStrarr, [], 'isRMB')
open.value = false
setLoading(false)
}
@ -565,24 +568,27 @@ function addDetailed() {
createMessage.error('请选择同一客户')
return false
}
const queryDataStr = {} as any
if (queryData.value.feeType) {
queryDataStr.feeType = queryData.value.feeType
}
if (queryData.value.currency) {
queryDataStr.currency = queryData.value.currency
}
if (queryData.value.feeName) {
queryDataStr.feeName = queryData.value.feeName
}
if (queryData.value.FeeRange) {
queryDataStr.FeeRange = queryData.value.FeeRange
}
if (arrRight.length == 0) {
createMessage.error('请选择一条数据')
return false
}
setLoading(true)
const queryDataStr1 = JSON.parse(queryData.value.queryCondition)
const queryDataStrarr = [] as any
queryDataStr1.forEach(item => {
if (item.FieldName == 'feeType') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'currency') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'feeName') {
queryDataStrarr.push(item)
}
if (item.FieldName == 'FeeRange') {
queryDataStrarr.push(item)
}
})
if (arrRight.length > 0 && form.value.isRMB) {
const items = [] as any
arrRight.forEach(item => {
@ -592,25 +598,9 @@ function addDetailed() {
customerId: item.customerId
})
})
const queryDataStr1 = JSON.parse(queryData.value.queryCondition)
const arr = [] as any
queryDataStr1.forEach(item => {
if (item.FieldName == 'feeType') {
arr.push(item)
}
if (item.FieldName == 'currency') {
arr.push(item)
}
if (item.FieldName == 'feeName') {
arr.push(item)
}
if (item.FieldName == 'FeeRange') {
arr.push(item)
}
})
const data = {
items: items,
queryCondition: JSON.stringify(arr)
queryCondition: JSON.stringify(queryDataStrarr)
}
GetCurrencies(data).then(res => {
const cuArr = [] as any
@ -653,7 +643,7 @@ function addDetailed() {
});
}
if (cuArr.length == 0) {
emits('addLeft', res.data, queryDataStr, [], 'isRMB')
emits('addLeft', res.data, queryDataStrarr, [], 'isRMB')
open.value = false
setLoading(false)
}
@ -662,7 +652,7 @@ function addDetailed() {
}
if (arrRight.length > 0 && form.value.isYB) {
emits('addLeft', arrRight, queryDataStr, [], 'isYB')
emits('addLeft', arrRight, queryDataStrarr, [], 'isYB')
open.value = false
setLoading(false)
}

@ -968,6 +968,7 @@ export const freeSearch: FormSchema[] = [
label: '收付',
component: 'Select',
colProps: { span: 4 },
defaultValue: '1',
componentProps: {
options: [
{

@ -288,7 +288,7 @@ const [registerTableFree, { getForm: getFormFree, setSelectedRowKeys: setSelecte
beforeFetch: (p) => {
const data = formatParams(p)
data.otherQueryCondition = getFormFree().getFieldsValue().FeeRange
queryDataFree.value = JSON.parse(JSON.stringify(formatParams(p)))
queryDataFree.value = JSON.parse(JSON.stringify(formatParams(p)))
return data
},
columns: freeColums,
@ -476,7 +476,7 @@ function addDetailFree() {
}
if (cuArr.length == 0) {
open.value = false
emits('updateListFreeLeft', arr)
emits('updateListFreeLeft', arr, arrQuery)
}
})
}
@ -520,6 +520,22 @@ function handleSureExhange() {
exchangeFlag.value = false
}
if (route.query.type == 'free') {
const queryDataStr = JSON.parse(queryDataFree.value.queryCondition)
const arrQuery = [] as any
queryDataStr.forEach(item => {
if (item.FieldName == 'feeType') {
arrQuery.push(item)
}
if (item.FieldName == 'currency') {
arrQuery.push(item)
}
if (item.FieldName == 'feeName') {
arrQuery.push(item)
}
if (item.FieldName == 'FeeRange') {
arrQuery.push(item)
}
})
if (freeType.value == 'left') {
currenciesData.value.forEach(item => {
item.exchangeRates.forEach(itemC => {
@ -535,7 +551,7 @@ function handleSureExhange() {
})
freeFlag.value = false
exchangeFlag.value = false
emits('updateListFreeLeft', currenciesData.value)
emits('updateListFreeLeft', currenciesData.value,arrQuery)
}
if (freeType.value == 'right') {
let arr = [] as any

@ -839,7 +839,7 @@ const router = useRouter()
const go = useGo()
const redloading = ref(false)
// (rmb)
function updateListFreeLeft(val) {
function updateListFreeLeft(val,arrQuery) {
const data = {
invoice: {
...form.value,
@ -848,7 +848,7 @@ function updateListFreeLeft(val) {
},
freeInvoice: {
item: val,
queryCondition: '[]'
queryCondition: JSON.stringify(arrQuery)
},
}
loading.value = true

@ -89,7 +89,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'shortName',
resultField: 'data',
immediate: false
immediate: false,
}
},
},
@ -129,7 +129,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'userName',
immediate: false,
resultField: 'data'
resultField: 'data',
}
},
},
@ -147,7 +147,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'userName',
immediate: false,
resultField: 'data'
resultField: 'data',
}
},
},
@ -165,7 +165,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'vesselName',
resultField: 'data',
immediate: false,
mode: 'SECRET_COMBOBOX_MODE_DO_NOT_USE'
mode: 'SECRET_COMBOBOX_MODE_DO_NOT_USE',
}
},
},
@ -173,7 +173,7 @@ export const searchFormSchema: FormSchema[] = [
label: '船司航次',
field: 'innerVoyno',
component: 'Input',
colProps: { span: 4 }
colProps: { span: 4 },
},
{
label: '装货港',
@ -189,7 +189,7 @@ export const searchFormSchema: FormSchema[] = [
labelField: 'pinYinCode',
showName: 'portName',
valueField: 'id',
immediate: false
immediate: false,
}
},
},
@ -207,7 +207,7 @@ export const searchFormSchema: FormSchema[] = [
labelField: 'pinYinCode',
showName: 'portName',
valueField: 'id',
immediate: false
immediate: false,
}
},
},
@ -225,7 +225,7 @@ export const searchFormSchema: FormSchema[] = [
labelField: 'pinYinCode',
showName: 'portName',
valueField: 'id',
immediate: false
immediate: false,
}
},
},
@ -242,7 +242,7 @@ export const searchFormSchema: FormSchema[] = [
immediate: false,
labelField: 'ediCode',
valueField: 'id',
resultField: 'data'
resultField: 'data',
}
},
},
@ -259,9 +259,9 @@ export const searchFormSchema: FormSchema[] = [
immediate: false,
labelField: 'laneName',
valueField: 'id',
resultField: 'data'
resultField: 'data',
}
}
},
},
{
label: '客服',
@ -277,7 +277,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'userName',
immediate: false,
resultField: 'data'
resultField: 'data',
}
},
},
@ -307,7 +307,7 @@ export const searchFormSchema: FormSchema[] = [
valueField: 'id',
showName: 'shortName',
resultField: 'data',
immediate: false
immediate: false,
}
},
},
@ -315,7 +315,7 @@ export const searchFormSchema: FormSchema[] = [
field: 'contractNo',
label: '约号',
component: 'Input',
colProps: { span: 4 }
colProps: { span: 4 },
},
{
label: '订舱口',
@ -389,25 +389,25 @@ export const searchFormSchema: FormSchema[] = [
label: '场站',
field: 'yard',
component: 'Input',
show: false
show: false,
},
{
label: '订舱口',
field: 'forwarder',
component: 'Input',
show: false
show: false,
},
{
field: 'contractNo',
label: '约号',
component: 'Input',
show: false
show: false,
},
{
field: 'serviceContractNo',
label: '服务合同号',
component: 'Input',
show: false
show: false,
},
]
// 费用状态
@ -451,25 +451,25 @@ export const columns: BasicColumn[] = [
dataIndex: 'shipperCn',
title: '国内发货人',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'cntrTotal',
title: '箱型箱量',
sorter: true,
width: 100
width: 100,
},
{
dataIndex: 'quotePrice',
title: '卖单价',
sorter: true,
width: 80
width: 80,
},
{
dataIndex: 'floorPrice',
title: '底单价',
sorter: true,
width: 80
width: 80,
},
{
dataIndex: 'bookingNo',
@ -523,25 +523,25 @@ export const columns: BasicColumn[] = [
title: '卸货港',
dataIndex: 'dischargePort',
width: 120,
sorter: true
sorter: true,
},
{
title: '交货地',
sorter: true,
dataIndex: 'deliveryPlace',
width: 120
width: 120,
},
{
dataIndex: 'service',
title: '运输条款',
sorter: true,
width: 100
width: 100,
},
{
dataIndex: 'eta',
title: '预抵日期',
sorter: true,
width: 90
width: 90,
},
{
title: '订舱口',
@ -552,12 +552,12 @@ export const columns: BasicColumn[] = [
{
title: '运踪',
dataIndex: 'bookStatus',
width: 200
width: 200,
},
{
title: '提箱返场',
dataIndex: 'statusLog',
width: 140
width: 140,
},
{
title: '揽货人',
@ -587,7 +587,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'laner',
title: '航线',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'contractClientName',
@ -729,13 +729,13 @@ export const columns: BasicColumn[] = [
dataIndex: 'isBusinessLocking',
title: '业务锁定',
sorter: true,
width: 80
width: 80,
},
{
dataIndex: 'isFeeLocking',
title: '费用锁定',
width: 80,
sorter: true
sorter: true,
},
{
dataIndex: 'accountDate',
@ -801,19 +801,19 @@ export const columns: BasicColumn[] = [
dataIndex: 'yard',
title: '场站',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'customser',
title: '报关行',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'trucker',
title: '承运车队',
sorter: true,
width: 120
width: 120,
},
// {
// dataIndex: 'termDelivery',
@ -825,25 +825,25 @@ export const columns: BasicColumn[] = [
dataIndex: 'agent',
title: '国外代理',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'shipper',
title: '发货人',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'consignee',
title: '收货人',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'notifyParty',
title: '通知人',
width: 120,
sorter: true
sorter: true,
},
{
title: '收货地',
@ -855,7 +855,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'kindPkgsName',
title: '包装',
sorter: true,
width: 120
width: 120,
},
{
title: '件数',
@ -913,7 +913,7 @@ export const columns: BasicColumn[] = [
}
})
return name
}
},
},
{
dataIndex: 'issueDate',
@ -925,7 +925,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'issueType',
title: '签单方式',
sorter: true,
width: 100
width: 100,
},
// ...CtnMapArr,
{
@ -970,13 +970,13 @@ export const columns: BasicColumn[] = [
dataIndex: 'mblFrt',
title: '付费方式',
sorter: true,
width: 100
width: 100,
},
{
dataIndex: 'prepareAt',
title: '预付地点',
sorter: true,
width: 120
width: 120,
},
{
dataIndex: 'note',

@ -9,12 +9,7 @@
<span class="iconfont icon-new_document"></span>
新建
</a-button>
<a-popconfirm
title="确定删除当前选中订舱?"
ok-text="是"
cancel-text="否"
@confirm="removeMoreFun"
>
<a-popconfirm title="确定删除当前选中订舱?" ok-text="" cancel-text="" @confirm="removeMoreFun">
<a-button type="link">
<span class="iconfont icon-shanchu1"></span>
删除
@ -33,25 +28,14 @@
<span class="iconfont icon-a-xiaopiaofapiao-01"></span>
小票状态
</a-button>
<a-modal
title="输入复制数量"
:visible="copyMoreFlag"
:footer="null"
@cancel="copyMoreFlag = false"
>
<a-form
ref="RefcopyMoreForm"
:model="copyMoreForm"
:label-col="{ span: 5 }"
:wrapper-col="{ span: 12 }"
@submit="handleSubmitCopyMore"
:style="{ padding: '10px' }"
>
<a-form-item
label="数量"
name="number"
:rules="[{ required: true, message: '请输入数量' }]"
>
<a-button type="link" @click="openYz">
<span class="iconfont icon-a-xiaopiaofapiao-01"></span>
运踪订阅
</a-button>
<a-modal title="输入复制数量" :visible="copyMoreFlag" :footer="null" @cancel="copyMoreFlag = false">
<a-form ref="RefcopyMoreForm" :model="copyMoreForm" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }"
@submit="handleSubmitCopyMore" :style="{ padding: '10px' }">
<a-form-item label="数量" name="number" :rules="[{ required: true, message: '请输入数量' }]">
<a-input-number :min="1" :max="10" v-model:value="copyMoreForm.number" />
</a-form-item>
<a-form-item :wrapper-col="{ span: 12, offset: 5 }">
@ -59,151 +43,229 @@
</a-form-item>
</a-form>
</a-modal>
<!-- 运踪弹窗 -->
<a-modal width="500px" class="ds-modal-small" :maskClosable="false" v-model:visible="traceModalVisible"
title="运踪订阅">
<div class="modal-card">
<a-form ref="traceRef" class="ds-detail-form" layout="vertical" :model="traceForm" :rules="rules">
<a-form-item label="请选择订阅内容" name="traceValue">
<a-checkbox-group class="trace-check" v-model:value="traceForm.traceValue" :options="traceOptions" />
</a-form-item>
</a-form>
</div>
<template #footer>
<a-button @click="traceModalVisible = false">关闭</a-button>
<a-button :loading="tloading" type="primary" @click="traceSend"></a-button>
</template>
</a-modal>
<BatchModification @register="registerModal" @success="BMSuccess" />
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, defineProps, reactive } from 'vue'
import { useGo } from '/@/hooks/web/usePage'
import { useMessage } from '/@/hooks/web/useMessage'
import { useRouter } from 'vue-router'
import { useModal } from '/@/components/Modal'
import { SeaExportBatchDel, SaveBookingTxxp, CommonExcelExport } from '../api/BookingLedger.js'
import BatchModification from '../modules/BatchModification.vue'
const router = useRouter()
const { createMessage } = useMessage()
const go = useGo()
const props = defineProps({
selectRow: {
type: Function,
},
reload: {
type: Function,
import { onMounted, ref, defineProps, reactive } from 'vue'
import { useGo } from '/@/hooks/web/usePage'
import { useMessage } from '/@/hooks/web/useMessage'
import { useRouter } from 'vue-router'
import { useModal } from '/@/components/Modal'
import { SeaExportBatchDel, SaveBookingTxxp, CommonExcelExport,SendTrace } from '../api/BookingLedger.js'
import BatchModification from '../modules/BatchModification.vue'
const router = useRouter()
const { createMessage } = useMessage()
const go = useGo()
const props = defineProps({
selectRow: {
type: Function,
},
reload: {
type: Function,
},
columns: {
type: Array,
default: () => {
return []
},
columns: {
type: Array,
default: () => {
return []
},
},
queryData: {
type: Object,
default: {},
},
})
//
function addBooking() {
const addNum = Math.round(Math.random() * 1000)
go(`/BookingDetail?addNum=${addNum}`)
},
queryData: {
type: Object,
default: {},
},
})
//
function addBooking() {
const addNum = Math.round(Math.random() * 1000)
go(`/BookingDetail?addNum=${addNum}`)
}
const copyMoreFlag = ref(false)
const copyMoreForm = reactive({
number: 1,
})
//
const [registerModal, { openModal }] = useModal()
//
const batchFlag = ref(false)
//
function batchEditing() {
const select = props.selectRow()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const copyMoreFlag = ref(false)
const copyMoreForm = reactive({
number: 1,
const removeArr = select.map((item) => {
return item.id
})
//
const [registerModal, { openModal }] = useModal()
//
const batchFlag = ref(false)
//
function batchEditing() {
const select = props.selectRow()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const removeArr = select.map((item) => {
return item.id
})
batchFlag.value = true
openModal(true, { removeArr, flag: true })
}
function BMSuccess() {
props.reload()
}
//
function removeMoreFun() {
const select = props.selectRow()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const removeArr = select.map((item) => {
return item.id
})
deleteBookingOrder(removeArr)
batchFlag.value = true
openModal(true, { removeArr, flag: true })
}
function BMSuccess() {
props.reload()
}
//
function removeMoreFun() {
const select = props.selectRow()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const eLoading = ref(false)
// excel
const exportExcel = () => {
const postData = {
url: 'http://118.190.144.189:3008/opApi/SeaExport/GetSeaExportList',
queryRequest: props.queryData,
columnSets: props.columns,
}
postData.queryRequest.pageCondition['isExport'] = true
eLoading.value = true
CommonExcelExport(postData)
.then((res) => {
eLoading.value = false
const xlsUrl = window.URL.createObjectURL(
new Blob([res], {
type: 'application/vnd.ms-excel;charset=utf-8',
}),
)
const fname = '订舱台账.xlsx'
const link = document.createElement('a')
link.href = xlsUrl
link.setAttribute('download', fname)
document.body.appendChild(link)
link.click()
})
.catch(() => {
eLoading.value = false
})
const removeArr = select.map((item) => {
return item.id
})
deleteBookingOrder(removeArr)
}
const eLoading = ref(false)
// excel
const exportExcel = () => {
const postData = {
url: 'http://118.190.144.189:3008/opApi/SeaExport/GetSeaExportList',
queryRequest: props.queryData,
columnSets: props.columns,
}
//
function deleteBookingOrder(arr) {
let api = []
arr.forEach((e, i) => {
api.push(e)
postData.queryRequest.pageCondition['isExport'] = true
eLoading.value = true
CommonExcelExport(postData)
.then((res) => {
eLoading.value = false
const xlsUrl = window.URL.createObjectURL(
new Blob([res], {
type: 'application/vnd.ms-excel;charset=utf-8',
}),
)
const fname = '订舱台账.xlsx'
const link = document.createElement('a')
link.href = xlsUrl
link.setAttribute('download', fname)
document.body.appendChild(link)
link.click()
})
SeaExportBatchDel({ ids: api })
.then((res) => {
if (res.succeeded) {
createMessage.success('删除成功!')
props.reload()
}
})
.catch((err) => {
console.log(err)
})
}
const xGrid = ref()
const txxpForm = ref({})
const test = () => {
createMessage.warning('开发中!')
}
//
function handleSearchTxxp() {
return
const select = xGrid.value.getCheckboxRecords()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const pkIdArr = select.map((item, index) => {
return item.id
.catch(() => {
eLoading.value = false
})
SaveBookingTxxp({ Id: pkIdArr[0] }).then((res) => {
}
//
function deleteBookingOrder(arr) {
let api = []
arr.forEach((e, i) => {
api.push(e)
})
SeaExportBatchDel({ ids: api })
.then((res) => {
if (res.succeeded) {
txxpForm.value = res.data
createMessage.success('删除成功!')
props.reload()
}
})
.catch((err) => {
console.log(err)
})
}
const xGrid = ref()
const txxpForm = ref({})
const test = () => {
createMessage.warning('开发中!')
}
//
function handleSearchTxxp() {
return
const select = xGrid.value.getCheckboxRecords()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
const pkIdArr = select.map((item, index) => {
return item.id
})
SaveBookingTxxp({ Id: pkIdArr[0] }).then((res) => {
if (res.succeeded) {
txxpForm.value = res.data
}
})
}
const traceModalVisible = ref(false)
//
const traceForm = reactive({
traceValue: [],
})
const rules = {
traceValue: [
{
type: 'array',
required: true,
message: '请选择订阅内容',
trigger: 'change',
},
],
}
const traceOptions = [
{ label: '起运港', value: '1' },
{ label: '目的港', value: '2' },
]
const traceRef = ref(null)
const tloading = ref(false)
function openYz() {
const select = props.selectRow()
if (select.length === 0) {
createMessage.warning('请选择操作订单!')
return false
}
traceModalVisible.value = true
}
//
function traceSend() {
traceRef.value.validate().then(() => {
tloading.value = true
const select = props.selectRow()
const arr = [] as any
select.forEach((item) => {
arr.push({
businessId: item.id,
mblno: item.mblno,
yard: traceForm.traceValue.includes('1') ? item.yard : '',
yardId: traceForm.traceValue.includes('1') ? item.yardId : '',
carrierId: traceForm.traceValue.includes('2') ? item.carrierId : '',
carrier: traceForm.traceValue.includes('2') ? item.carrier : '',
isBook: !!traceForm.traceValue.includes('2'),
isFrontPort: !!traceForm.traceValue.includes('1'),
})
})
SendTrace(arr)
.then((res) => {
tloading.value = false
if (res.succeeded) {
createMessage.success('订阅成功!')
traceModalVisible.value = false
}
})
.catch((err) => {
tloading.value = false
})
})
.catch((error) => {
console.log('error', error)
})
}
</script>
<style lang="scss">
.ds-table-action-bar {
display: flex;
}
.ds-table-action-bar {
display: flex;
}
</style>

@ -532,6 +532,11 @@ export const BankColumns: BasicColumn[] = [
width: 230,
align: 'left',
},
{
title: 'SWIFT CODE',
dataIndex: 'swiftCode',
width: 100,
},
{
title: '是否默认',
dataIndex: 'isDefault',
@ -687,6 +692,15 @@ export const BankformSchema: FormSchema[] = [
span: 12,
},
},
{
label: 'SWIFT CODE',
field: 'swiftCode',
component: 'Input',
defaultValue: '',
colProps: {
span: 12,
},
},
{
field: 'isDefault',
component: 'Switch',

@ -859,3 +859,12 @@ export function SetSteps(data) {
method: 'post',
})
}
export function GetChildTaskList(data) {
return request<DataResult>({
url: '/taskApi/TaskManage/GetChildTaskList',
method: 'get',
params: data,
})
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save