feature-JimuReport-1106-yjl
sunzehua 1 month ago
commit 50a5b98599

@ -12,7 +12,7 @@ VITE_PUBLIC_PATH = /
# Cross-domain proxy, you can configure multiple
# Please note that no line breaks
# VITE_PROXY = [["/basic-api","http:///60.209.125.238"],["/upload","http://localhost:3300/upload"]]
# VITE_PROXY = [["/basic-api","http://60.209.125.238"],["/upload","http://localhost:3300/upload"]]
VITE_PROXY=[["/api","http://118.190.144.189:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境
# Delete console

@ -10,6 +10,7 @@ enum Api {
list = '/mainApi/Role/GetRoleList',
editRole = '/mainApi/Role/EditRole',
getRole = '/mainApi/Role/GetRoleInfo',
deleteRole = '/mainApi/Role/DelRole',
getPermissionTree = '/mainApi/Role/GetClientRolePermissionTree',
getRolePermission = '/mainApi/Role/GetRolePermission',
updateRolePermission = '/mainApi/Role/UpdateClientRolePermission',
@ -46,6 +47,15 @@ export function getRoleList(data: PageRequest) {
})
}
export function deleteRole(data: PageRequest) {
return request<DataResult>({
url: Api.deleteRole,
method: 'post',
data,
})
}
export function editRole(data: any) {
return request<DataResult>({
url: Api.editRole,

@ -124,6 +124,10 @@
return { label: item.ctn, value: item.ctnCode, name: item.ctn, isCtn: true }
})
}
res.forEach(item => {
item.label = item.label + '-' + item.enName
})
console.log([...b, ...res])
unitDict.value = [...b, ...res]
})
}
@ -249,7 +253,7 @@
source: async (query, process) => {
if (unitDict.value && unitDict.value.length) {
const dict = unitDict.value.map((item) => {
return item.name
return item.label
})
process(dict)
}
@ -666,6 +670,9 @@
})
if (item) dict = item[0]
list.value[changes[0][0]]['unit'] = dict?.value
if (changes[0][3].indexOf('-') > -1) {
changes[0][3] = changes[0][3].split('-')[0]
}
list.value[changes[0][0]]['unitText'] = changes[0][3]
if (dict && dict?.value && dict.isCtn) {
//

@ -21,6 +21,7 @@
:all-default-values="defaultValueRef"
:form-model="formModel"
:set-form-model="setFormModel"
@click="handleClick(formModel, schema)"
>
<template v-for="item in Object.keys($slots)" #[item]="data">
<slot :name="item" v-bind="data || {}"></slot>
@ -313,6 +314,10 @@
initDefault()
emit('register', formActionType)
})
const handleClick = (data, field) => {
console.log(data)
console.log(field)
}
return {
getBindValue,
handleToggleAdvanced,
@ -320,6 +325,7 @@
formModel,
defaultValueRef,
advanceState,
handleClick,
getRow,
getProps,
formElRef,

@ -231,9 +231,9 @@
const ids = res.data.map(item => {
return item.id
})
GetPrintInfo({ businessType: 1, ids, id: props.bookingData.id }).then(res => {
GetPrintInfo({ businessType: 1, ids, id: props.bookingData.id, value: 'ProfitAccountingReport' }).then(res => {
const postData = {
jsonDataStr: JSON.stringify(res.data.details) || '',
jsonDataStr: JSON.stringify(res.data) || '',
printType: type,
templateId: item.id
}

@ -202,6 +202,7 @@ h5 {
.YFD,
.YFC,
.YSDBC,
.WTJ,
.YDC {
padding: 4px 13px;
border-radius: 30px;

@ -219,6 +219,9 @@
</a-button>
</template>
</BasicModal>
<a-modal v-model:visible="visible" title="驳回" width="40%" @ok="handleOk">
<BasicForm @register="modalRegisterForml" />
</a-modal>
</template>
<script lang="ts" setup>
import { ref, computed, unref, watchEffect, watch } from 'vue'

@ -867,57 +867,58 @@
}
IsAvailable({
...values,
...getFieldsValue1(),
...getFieldsValue(),
})
.then((res) => {
IsAvailableDisabled.value = true
notification.success({ message: '校验成功', duration: 3 })
})
.catch(async (err) => {
const clientRes = await getCodeGoodsTypeInfo({ id: unref(rowId) })
let clientTagData: any = ''
if (clientRes.data.clientTag) {
values.clientTag = {}
let ClientTag = await getDictOption('infoclient-ArrclientTag')
Object.keys(clientRes.data.clientTag).forEach((item, index) => {
ClientTag.forEach((e) => {
if (item == e.value && clientRes.data.clientTag[item]) {
clientTagData = clientTagData == '' ? e.name : `${clientTagData},${e.name}`
}
})
})
}
let SaleData: any = ''
if (clientRes.data.saleId) {
const UserRes = await getUser({ id: clientRes.data.saleId })
SaleData = h('div', { class: 'UserRes' }, [
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`销售名称:${UserRes.data.userName ? UserRes.data.userName : '-'} `,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
` 英文名称:${UserRes.data.userEnName ? UserRes.data.userEnName : '-'}`,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`联系方式:${UserRes.data.officePhone ? UserRes.data.officePhone : '-'} `,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`QQ${UserRes.data.QQ ? UserRes.data.QQ : '-'}`,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`邮箱:${UserRes.data.email ? UserRes.data.email : '-'}`,
),
])
if (rowId.value) {
const clientRes = await getCodeGoodsTypeInfo({ id: unref(rowId) })
if (clientRes.data.clientTag) {
values.clientTag = {}
let ClientTag = await getDictOption('infoclient-ArrclientTag')
Object.keys(clientRes.data.clientTag).forEach((item, index) => {
ClientTag.forEach((e) => {
if (item == e.value && clientRes.data.clientTag[item]) {
clientTagData = clientTagData == '' ? e.name : `${clientTagData},${e.name}`
}
})
})
}
if (clientRes.data.saleId) {
const UserRes = await getUser({ id: clientRes.data.saleId })
SaleData = h('div', { class: 'UserRes' }, [
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`销售名称:${UserRes.data.userName ? UserRes.data.userName : '-'} `,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
` 英文名称:${UserRes.data.userEnName ? UserRes.data.userEnName : '-'}`,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`联系方式:${UserRes.data.officePhone ? UserRes.data.officePhone : '-'} `,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`QQ${UserRes.data.QQ ? UserRes.data.QQ : '-'}`,
),
h(
'span',
{ style: { width: '50%', display: 'inline-block' } },
`邮箱:${UserRes.data.email ? UserRes.data.email : '-'}`,
),
])
}
}
Modal.confirm({

@ -2280,3 +2280,11 @@ export function RefundPool(data) {
})
}
// 退舱
export function CreateRefundAuditTask(data) {
return request({
url: '/opApi/SeaExportRefund/CreateRefundAuditTask',
method: 'post',
data
})
}

@ -6,7 +6,7 @@
import { ref } from 'vue'
import { BasicColumn, FormSchema } from '/@/components/Table'
// 下拉框数据接口
import { GetClientListByCode, GetCarrierSelectList } from '/@/api/common'
import { GetClientListByCode, GetCarrierSelectList, GetSupplierListByCode } from '/@/api/common'
// 接口
import {
GetControllerClientList,
@ -116,6 +116,17 @@ export const searchFormSchema: FormSchema[] = [
allowClear: true,
},
},
{
field: 'closeDocDate',
label: '截单时间',
component: 'RangePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
},
},
{
label: '操作',
field: 'operatorId',
@ -512,12 +523,12 @@ export const columns: BasicColumn[] = [
{
dataIndex: 'lstDraftCompareRlt',
title: '格式单比对',
width: 120,
width: 100,
},
{
dataIndex: 'lstShipOrderCompareRlt',
title: '下货纸比对',
width: 120,
width: 100,
},
{
dataIndex: 'arFeeStatus',
@ -565,7 +576,7 @@ export const columns: BasicColumn[] = [
value: '9',
},
],
width: 120,
width: 100,
},
{
dataIndex: 'apFeeStatus',
@ -613,36 +624,36 @@ export const columns: BasicColumn[] = [
value: '9',
},
],
width: 120,
width: 100,
},
{
dataIndex: 'arInvoiceStatus',
title: '应收开票',
sorter: true,
width: 120,
width: 100,
},
{
dataIndex: 'apInvoiceStatus',
title: '应付开票',
sorter: true,
width: 120,
width: 100,
},
{
dataIndex: 'arCheckStatus',
title: '应收对账',
sorter: true,
width: 120,
width: 100,
},
{
dataIndex: 'isBusinessLocking',
title: '业务锁定',
sorter: true,
width: 100
width: 80
},
{
dataIndex: 'isFeeLocking',
title: '费用锁定',
width: 100,
width: 80,
sorter: true
},
{
@ -688,7 +699,7 @@ export const columns: BasicColumn[] = [
width: 130,
},
{
title: '截单日期',
title: '截单时间',
sorter: true,
dataIndex: 'closeDocDate',
width: 90,
@ -703,25 +714,25 @@ export const columns: BasicColumn[] = [
title: '中转港',
dataIndex: 'transport',
sorter: true,
width: 130,
width: 120,
},
{
dataIndex: 'yard',
title: '场站',
sorter: true,
width: 130
width: 120
},
{
dataIndex: 'customser',
title: '报关行',
sorter: true,
width: 130
width: 120
},
{
dataIndex: 'trucker',
title: '承运车队',
sorter: true,
width: 130
width: 120
},
// {
// dataIndex: 'termDelivery',
@ -739,31 +750,31 @@ export const columns: BasicColumn[] = [
dataIndex: 'shipper',
title: '发货人',
sorter: true,
width: 150
width: 120
},
{
dataIndex: 'consignee',
title: '收货人',
sorter: true,
width: 150
width: 120
},
{
dataIndex: 'notifyParty',
title: '通知人',
width: 150,
width: 120,
sorter: true
},
{
title: '收货地',
dataIndex: 'receiptPlace',
sorter: true,
width: 150,
width: 120,
},
{
dataIndex: 'kindPkgsName',
title: '包装',
sorter: true,
width: 150
width: 120
},
{
title: '件数',
@ -787,7 +798,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'marks',
title: `唛头`,
sorter: true,
width: 100,
width: 80,
},
{
dataIndex: 'description',
@ -840,13 +851,13 @@ export const columns: BasicColumn[] = [
title: '签单地点',
sorter: true,
dataIndex: 'issuePlace',
width: 150,
width: 120,
},
{
dataIndex: 'noBill',
sorter: true,
title: '提单份数',
width: 150,
width: 80,
customRender: ({ record }) => {
let name = ''
FnnoBill.value.some((item) => {
@ -862,7 +873,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'copyNoBill',
title: '副本份数',
sorter: true,
width: 150,
width: 80,
customRender: ({ record }) => {
let name = ''
FncopyNoBill.value.some((item) => {
@ -878,13 +889,13 @@ export const columns: BasicColumn[] = [
dataIndex: 'mblFrt',
title: '付费方式',
sorter: true,
width: 150
width: 100
},
{
dataIndex: 'prepareAt',
title: '预付地点',
sorter: true,
width: 150
width: 120
},
{
dataIndex: 'note',
@ -1199,7 +1210,7 @@ export const BatchModificationFormSchema: FormSchema[] = [
colProps: { span: 4 },
componentProps: () => {
return {
api: GetCustomClientList,
api: GetSupplierListByCode,
labelField: 'shortName',
valueField: 'id',
resultField: 'data',

@ -41,7 +41,7 @@
</div>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineProps, defineComponent, onMounted, defineExpose, watch } from 'vue'
import { ref, nextTick, defineProps, defineComponent, onMounted, defineExpose, watch, defineEmits } from 'vue'
import { HotTable } from '@handsontable/vue3'
import 'handsontable/dist/handsontable.full.min.css'
import { GetOpCtnList, BatchDelBillManageCtn } from '/@/views/operation/seaexport/api/BookingLedger'
@ -52,6 +52,7 @@
defineComponent({
HotTable,
})
const emits = defineEmits(['calcPkgs'])
const props = defineProps({
// id
id: {
@ -205,6 +206,33 @@
if (item) dict = item[0]
list.value[changes[0][0]]['kindPkgs'] = dict?.ediCode
}
//
if (changes[0][1] === 'pkgs') {
//
let pkgs = 0
list.value.forEach(item => {
if (item.pkgs) pkgs = pkgs + Number(item.pkgs)
})
emits('calcPkgs', { key: 'pkgs', value: pkgs })
}
//
if (changes[0][1] === 'kgs') {
//
let kgs = 0
list.value.forEach(item => {
if (item.kgs) kgs = kgs + Number(item.kgs)
})
emits('calcPkgs', { key: 'kgs', value: kgs })
}
//
if (changes[0][1] === 'cbm') {
//
let cbm = 0
list.value.forEach(item => {
if (item.cbm) cbm = cbm + Number(item.cbm)
})
emits('calcPkgs', { key: 'cbm', value: cbm })
}
})
}
}

@ -614,9 +614,9 @@ export const formSchema3: FormSchema[] = [
}
formModel.pkgs = pkgs
formActionType ? formActionType.submit() : null
},
}
}
},
}
},
{
label: '总件数',
@ -639,7 +639,7 @@ export const formSchema3: FormSchema[] = [
show: false,
},
{
label: '毛重(公斤)',
label: '毛重',
field: 'grossWeight',
component: 'InputTextArea',
required: false,
@ -647,7 +647,7 @@ export const formSchema3: FormSchema[] = [
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
onInput: (e) => {
onkeyup: (e) => {
const arr = e.currentTarget._value.split('\n')
let pkgs = 0
for (let i = 0; i < arr.length; i++) {
@ -661,18 +661,18 @@ export const formSchema3: FormSchema[] = [
}
}
formModel.kgs = pkgs
},
}
}
},
}
},
{
label: '总KGS',
label: '总KGS',
field: 'kgs',
component: 'Input',
colProps: { span: 24 },
},
{
label: '尺码(立方米)',
label: '尺码',
field: 'measurement',
component: 'InputTextArea',
required: false,
@ -680,7 +680,7 @@ export const formSchema3: FormSchema[] = [
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
onInput: (e) => {
onkeyup: (e) => {
const arr = e.currentTarget._value.split('\n')
let pkgs = 0
for (let i = 0; i < arr.length; i++) {

@ -101,6 +101,7 @@
:mainId="activeId"
:setFieldsValue="setFieldsValue3"
:ctnInfo="ctnInfo"
@calcPkgs="calcPkgs"
></container>
<!-- ETD表单 -->
<BasicForm style="margin-top: 8px;" @register="ETDForm" @linkageForm="linkageETDForm" />
@ -361,6 +362,29 @@
})
}
//
const calcPkgs = (obj) => {
if (obj.value) {
if (obj.key == 'pkgs') {
setFieldsValue3({
noPkgs: obj.value,
pkgs: obj.value
})
}
if (obj.key == 'kgs') {
setFieldsValue3({
grossWeight: obj.value,
kgs: obj.value
})
}
if (obj.key == 'cbm') {
setFieldsValue3({
measurement: obj.value,
cbm: obj.value
})
}
}
}
//
const list = ref([])
onMounted(() => {

@ -99,12 +99,12 @@
rejectText="驳回任务"
:approve="approveDc"
:source="source"
:status="route.query.status == 'WAIT_SI' ? 'WAIT_SI' : undefined"
:status="route.query.status == 'WAIT_SI' ? 'WAIT_SI' : (route.query.status == 'RETURN_CABIN_AUDIT' ? 'RETURN_CABIN_AUDIT' : undefined)"
:id="id"
businessType="1"
>
<span>
<a-button class="ml10" v-repeat v-if="refreshFlag && route.query.status != 'RETURN_CABIN_POOL' && route.query.status != 'WAIT_ORDER_AUDIT' && route.query.source != 'Complete'" @click="save(true)" type="primary">
<a-button class="ml10" v-repeat v-if="refreshFlag && route.query.status != 'RETURN_CABIN_POOL' && route.query.status != 'WAIT_ORDER_AUDIT' && route.query.status != 'RETURN_CABIN_AUDIT' && route.query.source != 'Complete'" @click="save(true)" type="primary">
{{ completeText }}
</a-button>
<a-button class="ml10" v-repeat v-if="route.query.status == 'RETURN_CABIN_POOL' && route.query.source != 'Complete'" @click="save('cjtc')" type="primary">
@ -1152,7 +1152,7 @@
// }
// // cvisible.value = false
// }
//
// ***(SI退)
const approveDc = async (remark) => {
if (!remark) {
//

@ -2,7 +2,7 @@ import { BasicColumn, FormSchema } from '/@/components/Table'
import Space from '/@/views/operation/seaexport/components/Space.vue'
import { useComponentRegister } from '/@/components/Form'
// 下拉框数据接口
import { GetClientListByCode } from '/@/api/common'
import { GetClientListByCode, GetSupplierListByCode } from '/@/api/common'
import { t } from '/@/hooks/web/useI18n'
useComponentRegister('Space', Space)
export const columns: BasicColumn[] = [
@ -436,7 +436,7 @@ export const formSchema: FormSchema[] = [
colProps: { span: 8 },
componentProps: ({ formModel }) => {
return {
api: GetClientListByCode,
api: GetSupplierListByCode,
params: { code: 'yard' },
labelField: 'pinYinCode',
showName: 'shortName',
@ -468,13 +468,6 @@ export const formSchema: FormSchema[] = [
field: 'yardTel',
component: 'Input',
defaultValue: null,
rules: [
{
pattern: /^1\d{10}$/,
message: '请输入正确格式的手机号',
trigger: 'blur',
},
],
colProps: {
span: 8
}

@ -102,6 +102,11 @@ const salerCodeDict = ref([])
getDictOption('saler_code').then((data) => {
salerCodeDict.value = data
})
// 退舱类型字典
const returnCabinDict = ref([])
getDictOption('return_cabin_type').then((data) => {
returnCabinDict.value = data
})
// 往来单位集合
// GetMultiClientList().then(res => {
// console.log(res)
@ -869,7 +874,7 @@ export const mailingInfoFormSchemaR: FormSchema[] = [
},
{
field: 'openPortDate',
label: '开港时间',
label: '截VGM时间',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
@ -1195,60 +1200,18 @@ export const mailingInfoFormSchemaR: FormSchema[] = [
// 备注信息表单
export const noteFormSchema: FormSchema[] = [
{
field: 'agentContent',
label: 'AGENT',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 8 },
componentProps: {
autoSize: { minRows: 3, maxRows: 3 },
},
},
{
field: 'soRemark',
label: 'SO备注',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 8 },
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
enInput: true,
oninput: () => {
formModel.soRemark = formModel.soRemark.replace(/[\u4e00-\u9fa5]/ig,'')
formModel.soRemark = ToCDB(formModel.soRemark)
formModel.soRemark = formModel.soRemark.toUpperCase()
formModel.soRemark = removeTrailingSpaces(formModel.soRemark)
}
}
}
},
{
field: 'closeDocRemark',
label: 'SI备注',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 8 },
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
enInput: true,
oninput: () => {
formModel.closeDocRemark = formModel.closeDocRemark.replace(/[\u4e00-\u9fa5]/ig,'')
formModel.closeDocRemark = ToCDB(formModel.closeDocRemark)
formModel.closeDocRemark = formModel.closeDocRemark.toUpperCase()
formModel.closeDocRemark = removeTrailingSpaces(formModel.closeDocRemark)
}
}
}
},
// {
// field: 'agentContent',
// label: 'AGENT',
// component: 'InputTextArea',
// required: false,
// dynamicDisabled: false,
// // defaultValue: '',
// colProps: { span: 8 },
// componentProps: {
// autoSize: { minRows: 3, maxRows: 3 },
// },
// },
{
field: 'issueType',
label: '签单方式',
@ -1786,6 +1749,48 @@ export const ediMoreFormSchema: FormSchema[] = [
required: false,
colProps: { span: 5 },
},
{
field: 'soRemark',
label: 'SO备注',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
enInput: true,
oninput: () => {
formModel.soRemark = formModel.soRemark.replace(/[\u4e00-\u9fa5]/ig,'')
formModel.soRemark = ToCDB(formModel.soRemark)
formModel.soRemark = formModel.soRemark.toUpperCase()
formModel.soRemark = removeTrailingSpaces(formModel.soRemark)
}
}
}
},
{
field: 'closeDocRemark',
label: 'SI备注',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
autoSize: { minRows: 3, maxRows: 3 },
enInput: true,
oninput: () => {
formModel.closeDocRemark = formModel.closeDocRemark.replace(/[\u4e00-\u9fa5]/ig,'')
formModel.closeDocRemark = ToCDB(formModel.closeDocRemark)
formModel.closeDocRemark = formModel.closeDocRemark.toUpperCase()
formModel.closeDocRemark = removeTrailingSpaces(formModel.closeDocRemark)
}
}
}
},
]
export const mastetMoreFormSchema: FormSchema[] = [
@ -2823,7 +2828,7 @@ export const otherInfoFormSchema: FormSchema[] = [
componentProps: ({ formModel }) => {
return {
api: GetSupplierListByCode,
params: { code: 'isShipAgency' },
params: { code: 'shipagency' },
labelField: 'pinYinCode',
showName: 'description',
valueField: 'shortName',
@ -3277,5 +3282,52 @@ export const changeForm: FormSchema[] = [
dynamicDisabled: false,
defaultValue: true,
colProps: { span: 21 },
}
]
// 退舱表单
export const returnCabinForm: FormSchema[] = [
{
field: 'orderProgress',
label: '订单进程',
component: 'Select',
dynamicDisabled: false,
colProps: { span: 21 },
required: true,
componentProps: () => {
return {
options: [
{ label: '已审未出号', value: 1 },
{ label: '已出号未申报', value: 2 },
{ label: '已申报', value: 3 }
]
}
}
},
{
field: 'refundReason',
label: '退舱类型',
component: 'Select',
dynamicDisabled: false,
colProps: { span: 21 },
required: true,
componentProps: () => {
return {
options: returnCabinDict.value
}
}
},
{
field: 'refundRemark',
label: '备注',
defaultValue: '',
component: 'InputTextArea',
colProps: { span: 21 },
componentProps: {
autoSize: {
minRows: 3
},
disTrans: true
}
}
]

@ -608,10 +608,12 @@
v-model:visible="returnCabinFlag"
title="退舱确认"
>
<BasicForm @register="registerFormR" />
<a-spin :spinning="cabinLoad">
<BasicForm @register="registerFormR" />
</a-spin>
<template #footer>
<a-button @click="returnCabinFlag = false"> </a-button>
<a-button type="primary" @click="handleCancelCabin">退 </a-button>
<a-button v-repeat @click="returnCabinFlag = false"> </a-button>
<a-button v-repeat type="primary" @click="handleCancelCabin">退 </a-button>
</template>
</a-modal>
</div>
@ -640,7 +642,7 @@
UploadOcrFile,
GetOcrImg,
DownloadBookingOrClosingEDI,
CancelAllocationSlot,
CreateRefundAuditTask,
GetOcrText,
SendTrace,
SubmitTelex,
@ -664,7 +666,7 @@
import { columns, searchFormSchema } from './operationAreaColumns'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { fileForm } from '/@/views/taskmanage/columns'
import { changeForm } from './baseInfo'
import { changeForm, returnCabinForm } from './baseInfo'
import { UploadBcThenRunTask } from '/@/views/taskmanage/api'
const emit = defineEmits([
'refresh',
@ -1132,7 +1134,7 @@
// 退
const [registerFormR, { validate: validater, setFieldsValue: setFieldsValuer }] = useForm({
labelWidth: 100,
schemas: changeForm,
schemas: returnCabinForm,
showActionButtonGroup: false,
})
//
@ -1660,9 +1662,34 @@
OcrVisible.value = false
CvBoxType.value = false
}
function handleCancelCabin() {
async function handleCancelCabin(b) {
cabinLoad.value = true
const postData = await validater()
postData['id'] = props.details.id
if (b) postData['isReserveFee'] = true
CreateRefundAuditTask(postData).then(res => {
cabinLoad.value = false
returnCabinFlag.value = false
if (res.message == '存在业务相关费用,是否保留费用?') {
Modal.confirm({
title: '提示',
okText: '确定',
cancelText: '取消',
content: res.message,
onOk() {
handleCancelCabin(true)
},
onCancel() {
console.log('Cancel')
}
})
} else {
createMessage.success(res.message)
}
}).catch(() => {
cabinLoad.value = false
returnCabinFlag.value = false
})
}
function removeOrder() {
emit('removeOrder')

@ -9,7 +9,7 @@ import {
GetVoynoSelectList,
GetVesselSelectList,
} from '/@/views/operation/seaexport/api/BookingLedger'
import { GetClientListByCode, GetCarrierSelectList } from '/@/api/common'
import { GetClientListByCode, GetCarrierSelectList, GetSupplierListByCode } from '/@/api/common'
import { pl } from 'element-plus/es/locales.mjs'
let countryList = []
// 基础信息表单
@ -616,7 +616,7 @@ export const yardSchema: FormSchema[] = [
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
api: GetClientListByCode,
api: GetSupplierListByCode,
params: { code: 'yard' },
labelField: 'pinYinCode',
placeholder: '场站',

@ -18,7 +18,7 @@
<span v-else-if="record.businessStatusName == ''" class="YFC">{{ record.businessStatusName }}</span>
<span v-else-if="record.businessStatusName == 'BC'" class="YSDBC">{{ record.businessStatusName }}</span>
<span v-else-if="record.businessStatusName == ''" class="YDC">{{ record.businessStatusName }}</span>
<span v-else>{{ record.businessStatusName }}</span>
<span v-else class="WTJ">{{ record.businessStatusName || '未提交' }}</span>
</template>
<!-- 委托编号 -->
<template v-if="column.dataIndex == 'customerNo'">
@ -722,6 +722,11 @@ onMounted(() => {
background: #F2FAE8;
}
.WTJ {
color: #8C8C8C;
background: #F0F0F0;
}
.YSDAN {
color: #007D75;
background: #EDFAED;

@ -21,6 +21,17 @@
tooltip: '授权',
onClick: handlePermission.bind(null, record),
},
{
icon: 'ant-design:delete-outlined',
tooltip: '删除',
color: 'error',
popConfirm: {
title: '是否要删除此条数据?',
okText: '是',
cancelText: '否',
confirm: handleDelete.bind(null, record),
},
},
]"
/>
</template>
@ -33,12 +44,13 @@
<script lang="ts" setup>
import { defineComponent, onMounted, ref } from 'vue'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { getRoleList } from '/@/api/system/role'
import { getRoleList, deleteRole } from '/@/api/system/role'
import { useModal } from '/@/components/Modal'
import RoleModal from './RoleModal.vue'
import RolePermissionModal from './RolePermissionModal.vue'
import { columns, searchFormSchema } from './columns'
const dictOptions = ref<any[]>([])
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
const [registerModal, { openModal }] = useModal()
const [registerPermissionModal, { openModal: openPermissionModal }] = useModal()
const [registerTable, { reload, getForm, getPaginationRef }] = useTable({
@ -114,8 +126,17 @@
isUpdate: true,
})
}
function handleDelete(record: Recordable) {
console.log(record)
//
async function handleDelete(record: Recordable) {
const res = await deleteRole({
id: record.id
})
if (res.succeeded) {
createMessage.success(res.message)
reload()
} else {
createMessage.warning(res.message)
}
}
function handleSuccess() {

@ -68,7 +68,7 @@ const columns = [
align: 'center'
},
{
title: '开港时间',
title: '截VGM时间',
width: 100,
dataIndex: 'cyOpenDateTxt',
key: 'cyOpenDateTxt',

Loading…
Cancel
Save