lijingjia 1 month ago
commit d20d17d277

@ -0,0 +1,24 @@
// @ts-ignore
import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api {
list = '/mainApi/ClientStakeholder/GetList',
Audit = '/mainApi/ClientStakeholder/Audit',
}
// 列表 (Auth)
export function ApiList(data: PageRequest) {
return request<DataResult>({
url: Api.list,
method: 'post',
data,
})
}
// 执行审核 (Auth)
export function ApiAudit(data: PageRequest) {
return request<DataResult>({
url: Api.Audit,
method: 'post',
data,
})
}

@ -0,0 +1,113 @@
import { BasicColumn, FormSchema } from '/@/components/Table'
import {
getClientFrtSelectList,
getClientSourceSelectList,
getClientCountrySelectList,
} from '/@/views/baseinfo/infoclient/api'
import {
getOperatorUserList,
getVouchingClerkList,
getSaleUserList,
getCustomerServiceList,
getDeptList,
} from '/@/api/common'
let DeptList: any = []
const res10: API.DataResult = await getDeptList()
if (res10.succeeded) {
DeptList = []
res10.data.forEach((e) => {
DeptList.push({ label: e.orgName, value: e.id })
})
}
let ClientCountryList: any = []
const res4: API.DataResult = await getClientCountrySelectList()
if (res4.succeeded) {
ClientCountryList = []
res4.data.forEach((e) => {
ClientCountryList.push({ label: e.countryName, value: e.id })
})
}
let ClientSourceList: any = []
const res3: API.DataResult = await getClientSourceSelectList()
if (res3.succeeded) {
ClientSourceList = []
res3.data.forEach((e) => {
ClientSourceList.push({ label: e.sourceName, value: e.id })
})
}
let SaleUserList: any = []
const res8: API.DataResult = await getSaleUserList()
if (res8.succeeded) {
SaleUserList = []
res8.data.forEach((e) => {
SaleUserList.push({ label: e.userName, value: e.id })
})
}
let OperatorUserList: any = []
const res6: API.DataResult = await getOperatorUserList()
if (res6.succeeded) {
OperatorUserList = []
res6.data.forEach((e) => {
OperatorUserList.push({ label: e.userName, value: e.id })
})
}
let VouchingClerkList: any = []
const res7: API.DataResult = await getVouchingClerkList()
if (res7.succeeded) {
VouchingClerkList = []
res7.data.forEach((e) => {
VouchingClerkList.push({ label: e.userName, value: e.id })
})
}
let CustomerServiceList: any = []
const res9: API.DataResult = await getCustomerServiceList()
if (res9.succeeded) {
CustomerServiceList = []
res9.data.forEach((e) => {
CustomerServiceList.push({ label: e.userName, value: e.id })
})
}
let ClientFrtList: any = []
const res: API.DataResult = await getClientFrtSelectList()
if (res.succeeded) {
ClientFrtList = []
res.data.forEach((e) => {
ClientFrtList.push({ label: e.cnName, value: e.id })
})
}
export const columns: BasicColumn[] = [
{
title: '干系人姓名',
dataIndex: 'createByName',
sorter: true,
width: 150,
},
{
title: '生效日期',
dataIndex: 'startDate',
sorter: true,
width: 150,
},
{
title: '失效日期',
dataIndex: 'endDate',
sorter: true,
width: 150,
},
{
title: '备注',
dataIndex: 'remark',
sorter: true,
width: 150,
},
]
export const searchFormSchema: FormSchema[] = [
{
field: 'createByName',
label: '干系人姓名',
component: 'Input',
colProps: { span: 4 },
},
]

@ -0,0 +1,106 @@
<template>
<div>
<BasicTable class="ds-table" @register="registerTable">
<template #tableTitle>
<a-button type="link" @click="FnAudit(1)">
<span class="iconfont icon-new_document"></span>
审核
</a-button>
<a-button type="link" @click="FnAudit(2)">
<span class="iconfont icon-new_document"></span>
驳回
</a-button>
</template>
</BasicTable>
<a-modal
:visible="visible"
title="审批备注"
width="30%"
@ok="FnAudit(2)"
@cancel="handleCancel"
>
<a-textarea v-model:value="remark" :auto-size="{ minRows: 5, maxRows: 7 }" />
</a-modal>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { ApiList, ApiAudit } from './api'
import { columns, searchFormSchema } from './columns'
import { formatParams } from '/@/hooks/web/common'
import { useMessage } from '/@/hooks/web/useMessage'
const { notification } = useMessage()
const visible = ref(false)
const remark = ref('')
const [registerTable, { reload, getForm, getSelectRows }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await ApiList(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
},
beforeFetch: (p) => {
p['status'] = 1
return formatParams(p)
},
rowSelection: { type: 'checkbox' },
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: false,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
})
function FnAudit(result) {
let Audit = () => {
const select = getSelectRows()
let ApiData: any = {
ids: [],
result,
remark: remark.value,
}
if (select.length === 0) {
notification.warning({ message: '请至少选择一条数据', duration: 3 })
return false
} else {
ApiData.ids = select.map((item) => {
return item.id
})
}
ApiAudit(ApiData).then((res) => {
handleCancel()
notification.success({ message: res.message, duration: 3 })
reload()
})
}
if (result == 1) {
Audit()
} else {
if (remark.value != '') {
Audit()
handleCancel()
} else {
visible.value = true
}
}
}
function handleCancel() {
remark.value = ''
visible.value = false
}
</script>

@ -0,0 +1,123 @@
<template>
<BasicModal
v-bind="$attrs"
:use-wrapper="true"
:title="getTitle"
width="60%"
@register="registerModal"
@ok="handleSave"
>
<BasicForm @register="registerForm" />
<!--右下角按钮-->
<template #footer>
<a-button
pre-icon="ant-design:close-outlined"
type="warning"
:loading="loading"
ghost
style="margin-right: 0.8rem"
@click="closeModal"
>取消</a-button
>
<a-button
type="success"
:loading="loading"
pre-icon="ant-design:check-outlined"
style="margin-right: 0.8rem"
@click="handleSave(false)"
>仅保存</a-button
>
<a-button
pre-icon="ant-design:check-circle-outlined"
type="primary"
:loading="loading"
@click="handleSave(true)"
>保存并关闭</a-button
>
</template>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed, unref } from 'vue'
import { BasicModal, useModalInner } from '/@/components/Modal'
import { BasicForm, useForm } from '/@/components/Form/index'
import { formSchema } from './columns'
import { ApiEdit, ApiInfo } from './api'
import { useMessage } from '/@/hooks/web/useMessage'
// Emits
const emit = defineEmits(['success', 'register'])
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields()
setModalProps({ confirmLoading: false, loading: true })
isUpdate.value = !!data?.isUpdate
if (unref(isUpdate)) {
// setModalProps({ confirmLoading: true });
rowId.value = data.record.id
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
if (res.succeeded) {
setFieldsValue({
...res.data,
})
// console.log('Form', getFieldsValue());
// setFieldsValue({ trainId: unref(res.data.trainId) });
}
// setModalProps({ confirmLoading: false });
} else {
setFieldsValue({ permissionIdentity: unref(2) })
}
setModalProps({ loading: false })
})
const getTitle = computed(() => (!unref(isUpdate) ? '新增EDI设置' : '编辑EDI设置'))
async function handleSave(exit) {
try {
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
// TODO custom api
console.log(values)
// loading.value = true;
const res: API.DataResult = await ApiEdit(values)
console.log(res)
if (res.succeeded) {
createMessage.success(res.message)
emit('success')
//
if (!exit) {
if (unref(isUpdate)) {
await refresh()
} else {
rowId.value = res.data
isUpdate.value = true
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()
} finally {
// loading.value = false;
setModalProps({ confirmLoading: false, loading: false })
}
}
async function refresh() {
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
if (res.succeeded) {
await setFieldsValue({
...res.data,
})
}
}
</script>

@ -0,0 +1,51 @@
// @ts-ignore
import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api {
list = '/mainApi/ClientStakeholder/GetList',
Audit = '/mainApi/ClientStakeholder/Audit',
Get = '/mainApi/ClientStakeholder/Get',
edit = '/mainApi/ClientStakeholder/Edit',
info = '/mainApi/ClientStakeholder/Info',
}
// 列表 (Auth)
export function ApiList(data: PageRequest) {
return request<DataResult>({
url: Api.list,
method: 'post',
data,
})
}
// 执行审核 (Auth)
export function ApiClientStakeholderAudit(data: PageRequest) {
return request<DataResult>({
url: Api.Audit,
method: 'post',
data,
})
}
// 获取客户干系人 (Auth)
export function ApiGet(query) {
return request<DataResult>({
url: Api.Get,
method: 'get',
params: query,
})
}
// 获取客户干系人 (Auth)
export function ApiEdit(query) {
return request<DataResult>({
url: Api.edit,
method: 'get',
params: query,
})
}
// 详情 (Auth)
export function ApiInfo(query) {
return request<DataResult>({
url: Api.info,
method: 'get',
params: query,
})
}

@ -0,0 +1,84 @@
import { BasicColumn, FormSchema } from '/@/components/Table'
export const columns: BasicColumn[] = [
{
title: '干系人姓名',
dataIndex: 'createByName',
sorter: true,
width: 150,
},
{
title: '生效日期',
dataIndex: 'startDate',
sorter: true,
width: 150,
},
{
title: '失效日期',
dataIndex: 'endDate',
sorter: true,
width: 150,
},
{
title: '备注',
dataIndex: 'remark',
sorter: true,
width: 150,
},
]
export const searchFormSchema: FormSchema[] = [
{
field: 'createByName',
label: '干系人姓名',
component: 'Input',
colProps: { span: 4 },
},
]
export const formSchema: FormSchema[] = [
{
label: '',
field: 'id',
component: 'Input',
defaultValue: '',
show: false,
},
{
field: 'carrierId',
label: '',
component: 'Input',
show: false,
},
{
field: 'startDate',
label: '生效日期',
component: 'DatePicker',
required: true,
colProps: { span: 20 },
defaultValue: '',
componentProps: {
style: 'width:100%',
},
},
{
field: 'endDate',
label: '失效日期',
component: 'DatePicker',
required: true,
colProps: { span: 20 },
defaultValue: '',
componentProps: {
style: 'width:100%',
},
},
{
field: 'note',
label: '备注',
component: 'InputTextArea',
colProps: { span: 24 },
componentProps: {
rows: 2,
},
},
]

@ -0,0 +1,162 @@
<template>
<div>
<BasicTable class="ds-table-detail" @register="registerTable">
<!-- <template #tableTitle>
<a-button type="link" @click="handleCreate">
<span class="iconfont icon-new_document"></span>
添加
</a-button>
<a-button type="link" @click="handleDel">
<span class="iconfont icon-shanchu2"></span>
删除
</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'clarity:note-edit-line',
tooltip: '编辑',
onClick: handleAudit.bind(null, record),
},
]"
/>
</template>
</template> -->
</BasicTable>
<TenantAuditStepModal @register="registerModal" @success="handleSuccess" />
<a-modal
:visible="visible"
title="审批备注"
width="30%"
@ok="FnAudit(2)"
@cancel="handleCancel"
>
<a-textarea v-model:value="remark" :auto-size="{ minRows: 5, maxRows: 7 }" />
</a-modal>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { ApiList, ApiClientStakeholderAudit } from './api'
import { columns, searchFormSchema } from './columns'
import { formatParams } from '/@/hooks/web/common'
import { useMessage } from '/@/hooks/web/useMessage'
const { notification } = useMessage()
import { useModal } from '/@/components/Modal'
import TenantAuditStepModal from './TenantAuditStepModal.vue'
const props = defineProps({
clientId: { type: String },
})
const visible = ref(false)
const remark = ref('')
const [registerTable, { reload, getForm, getSelectRows }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await ApiList(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
},
beforeFetch: (p) => {
p['clientId'] = props.clientId
p['status'] = 2
return formatParams(p)
},
rowSelection: { type: 'checkbox' },
columns,
// formConfig: {
// labelWidth: 120,
// schemas: searchFormSchema,
// },
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: false,
showTableSetting: false,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
actionColumn: {
width: 80,
title: '操作',
dataIndex: 'action',
fixed: 'right',
},
})
function FnAudit(result) {
let Audit = () => {
const select = getSelectRows()
let ApiData: any = {
ids: [],
result,
remark: remark.value,
}
if (select.length === 0) {
notification.warning({ message: '请至少选择一条数据', duration: 3 })
return false
} else {
ApiData.ids = select.map((item) => {
return item.id
})
}
ApiClientStakeholderAudit(ApiData).then((res) => {
handleCancel()
notification.success({ message: res.message, duration: 3 })
reload()
})
}
if (result == 1) {
Audit()
} else {
if (remark.value != '') {
Audit()
handleCancel()
} else {
visible.value = true
}
}
}
function handleCancel() {
remark.value = ''
visible.value = false
}
const [registerModal, { openModal }] = useModal()
function handleAudit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
})
}
function handleCreate() {
openModal(true, {
isParent: false,
isUpdate: false,
})
}
function handleDel() {
const select = getSelectRows()
if (select.length === 0) {
notification.error({ message: '请选择一条数据', duration: 3 })
return false
}
const removeArr = select.map((item) => {
return item.id
})
// ApiDel({ ids: removeArr }).then((res) => {
// notification.success({ message: res.message, duration: 3 })
// reload()
// })
}
function handleSuccess() {
reload()
}
</script>

@ -94,6 +94,7 @@
:class="CustomerOrSupplier"
:bordered="false"
v-model:value="CustomerOrSupplier"
@change="ChangeCustomerOrSupplier"
>
<a-select-option value="isCustomer">
<span class="iconfont icon-yonghu1"></span>
@ -249,6 +250,9 @@
<CustomerParams :client-id="clientId" :customer-name="customerName"></CustomerParams>
<ReleaseType :client-id="clientId" :customer-name="customerName"></ReleaseType>
</a-tab-pane>
<a-tab-pane key="9" tab="干系人">
<ClientStakeholder :client-id="clientId" />
</a-tab-pane>
</a-tabs>
</div>
<ClientAccountDateModal @register="CADModal" @success="handleSuccess" />
@ -261,6 +265,18 @@
:id="rowId"
businessType="1"
status="INFO_CLIENT_AUDIT"
v-if="route.query.status == 'INFO_CLIENT_AUDIT'"
>
</ApproveBtns>
<ApproveBtns
agreeText="审核通过"
rejectText="驳回任务"
:approve="ApproveClientStakeholder"
:source="route.query.source ? route.query.source : 'edit'"
:id="rowId"
businessType="1"
status="CLIENT_STAKEHOLDER_AUDIT"
v-if="route.query.status == 'CLIENT_STAKEHOLDER_AUDIT'"
>
</ApproveBtns>
</div>
@ -283,9 +299,10 @@
ApiWithdraw,
IsAvailable,
Create,
StakeholderSubmitAudit,
} from './api'
import { ApiAudit } from '/@/views/baseinfo/infoclientAudit/api'
import { ApiClientStakeholderAudit } from '/@/views/baseinfo/infoclient/ClientStakeholder/api'
import { GetFormSetListByModule } from '/@/api/common'
import { ApiList } from './menu2/api'
// idname
@ -298,6 +315,8 @@
import Tabs3 from './tabs3/index.vue'
import Menus2 from './menu2/index.vue'
import Menus3 from './menu3/index.vue'
import ClientStakeholder from './ClientStakeholder/index.vue'
//
const ApproveBtns = defineAsyncComponent(() => import('/@/components/ApproveBtns/index.vue'))
// import CustTemplateDetail from './custTemplateDetail/index.vue'
@ -354,7 +373,7 @@
if (route.query && route.query.id) {
rowId.value = route.query.id
activeKey.value = '2'
getData(true)
await getData(true)
} else {
clientId.value = ''
clientTag_o.value = {
@ -377,7 +396,120 @@
CustomerOrSupplier.value = 'isSupplier'
}
}
ChangeArrclientTag()
})
function ChangeArrclientTag() {
//
const ArrclientTagList = [
'isController',
'isShipper',
'isNotifyParty',
'isEnterprise',
'isShipperCn',
'isDomesticPeers',
'isForeignCounterparts',
'isDirectCustomerCn',
'isDirectCustomer',
'isShipperZDH',
'isPersonal',
'isContract',
]
if (CustomerOrSupplier.value == 'isCustomer') {
console.log('客户')
updateSchema({
label: '客户属性',
field: 'ArrclientTag',
component: 'ApiSelect',
colProps: { span: 12 },
defaultValue: 'isController',
componentProps: () => {
return {
api: () => {
return new Promise((resolve) => {
let RData: any = []
getDictOption('infoclient-ArrclientTag').then((res) => {
res.forEach((item) => {
if (ArrclientTagList.includes(item.value)) {
RData.push(item)
}
})
resolve(RData)
})
})
},
labelField: 'label',
valueField: 'value',
resultField: 'data',
allowClear: true,
mode: 'multiple',
class: 'NoLimitHeight',
}
},
})
} else if (CustomerOrSupplier.value == 'isSupplier') {
console.log('供应商')
updateSchema({
label: '客户属性',
field: 'ArrclientTag',
component: 'ApiSelect',
colProps: { span: 12 },
defaultValue: null,
componentProps: () => {
return {
api: () => {
return new Promise((resolve) => {
let RData: any = []
getDictOption('infoclient-ArrclientTag').then((res) => {
res.forEach((item) => {
if (!ArrclientTagList.includes(item.value)) {
RData.push(item)
}
})
resolve(RData)
})
})
},
labelField: 'label',
valueField: 'value',
resultField: 'data',
allowClear: true,
mode: 'multiple',
class: 'NoLimitHeight',
}
},
})
} else if (CustomerOrSupplier.value == 'isCustomerAndisSupplier') {
console.log('供应商及客户')
updateSchema({
label: '客户属性',
field: 'ArrclientTag',
component: 'ApiSelect',
colProps: { span: 12 },
defaultValue: 'isController',
componentProps: ({ formModel }) => {
return {
api: () => {
return new Promise((resolve) => {
getDictOption('infoclient-ArrclientTag').then((res) => {
resolve(res)
})
})
},
labelField: 'label',
valueField: 'value',
resultField: 'data',
allowClear: true,
mode: 'multiple',
class: 'NoLimitHeight',
}
},
})
}
}
function ChangeCustomerOrSupplier() {
setFieldsValue({ ArrclientTag: [] })
ChangeArrclientTag()
}
watch(activeKey, (nval, oval) => {
if (Number(nval) > 2 && !rowId.value) {
activeKey.value = oval
@ -720,16 +852,13 @@
.catch((err) => {
Modal.confirm({
title: '客户已存在',
content: '是否共享客户',
content: '是否申请共享客户?',
class: 'ds-modal-small',
okText: '申请共享',
cancelText: '取消',
onOk() {
Create().then((res) => {
console.log(res, 1111111111111111111)
StakeholderSubmitAudit().then((res2) => {
console.log(res2, 222222222222)
})
Create({ clientId: err.clientId }).then((res) => {
notification.success({ message: '已发起申请!', duration: 3 })
})
// notification.success({ message: '', duration: 3 })
},
@ -871,28 +1000,29 @@
loading.value = true
ApiAudit(postData)
.then((res) => {
// loading.value = false
createMessage.success(res.message)
//
// if (res.data.isCompleted && res.data.flowStatus == 3) {
// //
// if (bookingDetails.value.shippingSpaceType == 'xc') {
// //
// sspace.value.init()
// } else {
// AutomaticBooking(id.value)
// const { fullPath } = route //
// tabStore.closeTabByKey(fullPath, router)
// }
// } else {
// //
const { fullPath } = route //
tabStore.closeTabByKey(fullPath, router)
// }
})
.catch(() => {
// loading.value = false
.catch(() => {})
}
//
const ApproveClientStakeholder = (remark) => {
const postData: any = {
result: remark ? 2 : 1,
ids: [route.query.taskId],
// businessType: '1',
// taskTypeName: route.query.status,
}
if (remark) postData['remark'] = remark
loading.value = true
ApiClientStakeholderAudit(postData)
.then((res) => {
createMessage.success(res.message)
const { fullPath } = route //
tabStore.closeTabByKey(fullPath, router)
})
.catch(() => {})
}
</script>
<style lang="less" scoped>

@ -21,8 +21,7 @@ enum Api {
GetUsage = '/mainApi/ClientInfo/GetUsage',
IsAvailable = '/mainApi/ClientInfo/IsAvailable',
StakeholderCreate = '/mainApi/ClientStakeholder/Create',
StakeholderSubmitAudit = '/mainApi/ClientStakeholder/SubmitAudit',
CreateSubmit = '/mainApi/ClientStakeholder/CreateSubmit',
}
// 确定往来单位是否已使用 (Auth)
@ -172,19 +171,11 @@ export function IsAvailable(data) {
})
}
// 新增客户干系人 (Auth)
export function Create() {
// 创建客户干系人并提交审核 (Auth)
export function Create(query) {
return request<DataResult>({
url: Api.StakeholderCreate,
url: Api.CreateSubmit,
method: 'post',
params: { clientId: 0 },
})
}
// 提交审核 (Auth)
export function StakeholderSubmitAudit() {
return request<DataResult>({
url: Api.StakeholderSubmitAudit,
method: 'post',
params: { clientId: 0 },
params: query,
})
}

@ -1221,6 +1221,7 @@ export const formSchema: FormSchema[] = [
field: 'ArrclientTag',
component: 'ApiSelect',
colProps: { span: 12 },
defaultValue: 'isController',
componentProps: ({ formModel }) => {
return {
api: () => {

@ -1192,7 +1192,7 @@ export const storageSearchFormSchema: FormSchema[] = [
},
{
field: 'slotNo',
label: '订舱编号',
label: '编号',
component: 'Input',
colProps: { span: 4 }
},

@ -4,105 +4,104 @@
* @Date: 2024-04-29 11:54:04
-->
<template>
<a-modal
title="引入舱位"
@cancel="visible = false"
@ok="handleOk"
v-if="visible"
:visible="visible"
width="80%"
:confirmLoading="loading"
>
<a-modal title="引入舱位" @cancel="visible = false" @ok="handleOk" v-if="visible" :visible="visible" width="80%"
:confirmLoading="loading">
<a-spin :spinning="loading">
<BasicTable
class="ds-table-detail"
@register="registerTable"
/>
<BasicTable class="ds-table-detail" @register="registerTable" />
</a-spin>
</a-modal>
</template>
<script lang="ts" setup>
import { defineExpose, ref, defineProps, defineEmits } from 'vue'
import { BasicTable, useTable } from '/@/components/Table'
import { GetAvailableBookingSlots, BringInBookingSlotToOrder } from '../../api/BookingLedger.js'
import { storageColumns, storageSearchFormSchema } from './ladingInfo'
//
import { useMessage } from '/@/hooks/web/useMessage'
const { createMessage } = useMessage()
import { useI18n } from '/@/hooks/web/useI18n'
const { t } = useI18n()
const props = defineProps({
// id
id: {
type: String
},
//
reload: {
type: Function
}
})
const emit = defineEmits(['createTask'])
//
import { formatParams } from '/@/hooks/web/common'
const [registerTable, { reload, getSelectRows }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await GetAvailableBookingSlots(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
},
//
beforeFetch: (p) => {
return formatParams(p)
},
columns: storageColumns,
formConfig: {
labelWidth: 120,
//
schemas: storageSearchFormSchema,
},
maxHeight: 600,
isTreeTable: false,
pagination: true,
useSearchForm: true,
showTableSetting: false,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
rowSelection: {
type: 'radio'
},
canResize: true,
resizeHeightOffset: 80
})
const visible = ref(false)
//
const init = () => {
visible.value = true
import { defineExpose, ref, defineProps, defineEmits } from 'vue'
import { BasicTable, useTable } from '/@/components/Table'
import { GetAvailableBookingSlots, BringInBookingSlotToOrder } from '../../api/BookingLedger.js'
import { storageColumns, storageSearchFormSchema } from './ladingInfo'
//
import { useMessage } from '/@/hooks/web/useMessage'
const { createMessage } = useMessage()
import { useI18n } from '/@/hooks/web/useI18n'
const { t } = useI18n()
const props = defineProps({
// id
id: {
type: String
},
//
reload: {
type: Function
}
const loading = ref(false)
const handleOk = () => {
const slots = getSelectRows()
if (!slots.length) return createMessage.warning('请选择舱位!')
loading.value = true
BringInBookingSlotToOrder({ seaExportId: props.id, slots }).then(res => {
// createMessage.success(res.data)
emit('createTask', 'WAIT_BOOKING')
visible.value = false
loading.value = false
}).catch(() => {
visible.value = false
loading.value = false
})
const emit = defineEmits(['createTask'])
//
import { formatParams } from '/@/hooks/web/common'
const [registerTable, { getForm, reload, getSelectRows }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await GetAvailableBookingSlots(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
}
defineExpose({
init
},
//
beforeFetch: (p) => {
const data = formatParams(p)
const queryData = JSON.parse(formatParams(p).queryCondition)
let i = queryData.length
while (i--) {
if (queryData[i].FieldName === 'slotNo') {
queryData.splice(i, 1)
}
}
data.queryCondition = JSON.stringify(queryData)
data.otherQueryCondition = {}
data.otherQueryCondition = getForm().getFieldsValue().slotNo
return data
},
columns: storageColumns,
formConfig: {
labelWidth: 120,
//
schemas: storageSearchFormSchema,
},
maxHeight: 600,
isTreeTable: false,
pagination: true,
useSearchForm: true,
showTableSetting: false,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
rowSelection: {
type: 'radio'
},
canResize: true,
resizeHeightOffset: 80
})
const visible = ref(false)
//
const init = () => {
visible.value = true
}
const loading = ref(false)
const handleOk = () => {
const slots = getSelectRows()
if (!slots.length) return createMessage.warning('请选择舱位!')
loading.value = true
BringInBookingSlotToOrder({ seaExportId: props.id, slots }).then(res => {
// createMessage.success(res.data)
emit('createTask', 'WAIT_BOOKING')
visible.value = false
loading.value = false
}).catch(() => {
visible.value = false
loading.value = false
})
}
defineExpose({
init
})
</script>
<style lang="less">
</style>
<style lang="less"></style>

@ -204,7 +204,7 @@
</template>
<template #toolbar>
<a-button type="link" @click="openCustom"
><i class=" icon-shuliebiao iconfont"></i>列设置</a-button
><i class="icon-shuliebiao iconfont"></i>列设置</a-button
>
</template>
<template v-slot:bodyCell="{ column, record }">
@ -380,7 +380,12 @@
@search="handleSearch"
v-model:value="UserId"
>
<a-select-option v-for="item in UserList" :label="item.label" :key="item.value" :value="item.value">
<a-select-option
v-for="item in UserList"
:label="item.label"
:key="item.value"
:value="item.value"
>
{{ item.label }}
</a-select-option>
</a-select>
@ -431,6 +436,7 @@
import { searchFormSchema, fileForm } from './columns'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { GetUserTaskPlatFieldSet } from './api'
import { ApiGet } from '/@/views/baseinfo/infoclient/ClientStakeholder/api'
import { useMessage } from '../../hooks/web/useMessage'
import { useRoute, useRouter } from 'vue-router'
import { useOptionsStore } from '/@/store/modules/options'
@ -471,7 +477,7 @@
setProps({
rowSelection: {
onChange: onSelectChange,
fixed:true
fixed: true,
},
})
})
@ -595,10 +601,10 @@
portdischargE_CODE: str2,
},
}
if(type=='refsh'){
data.isReCalc=true
if (type == 'refsh') {
data.isReCalc = true
} else {
data.isReCalc=false
data.isReCalc = false
}
GetCurrentTotalStat(data)
.then((res) => {
@ -606,7 +612,7 @@
levelreLoading.value = false
levelTop.value = res.data.levelTop
underlingTaskScope.value = res.data.underlingTaskScope
levelTop.value = levelTop.value.sort((a, b) => a.sortNo - b.sortNo);
levelTop.value = levelTop.value.sort((a, b) => a.sortNo - b.sortNo)
levelNextAll.value = res.data.levelNext
levelTreeAll.value = res.data.levelTree
if (levelTop.value.length > 0) {
@ -684,7 +690,7 @@
levelreLoading.value = false
levelTop.value = res.data.levelTop
underlingTaskScope.value = res.data.underlingTaskScope
levelTop.value = levelTop.value.sort((a, b) => a.sortNo - b.sortNo);
levelTop.value = levelTop.value.sort((a, b) => a.sortNo - b.sortNo)
levelNextAll.value = res.data.levelNext
levelTreeAll.value = res.data.levelTree
levelTree.value = selectTreeLevel(
@ -772,7 +778,7 @@
createMessage.error('请选择数据')
return false
}
GetUserListAll({queryKey:''}).then((res) => {
GetUserListAll({ queryKey: '' }).then((res) => {
UserList.value = res.data
})
UserId.value = []
@ -973,7 +979,7 @@
},
})
function handleSearch(val) {
GetUserListAll({queryKey:val}).then((res) => {
GetUserListAll({ queryKey: val }).then((res) => {
UserList.value = res.data
})
console.log(val)
@ -993,10 +999,12 @@
const userid = userStore.getUserInfo.userId
let statusFlag = false
if (data?.recvUserList && data.recvUserList.length) {
data.recvUserList.forEach(item => {
data.recvUserList.forEach((item) => {
if (item.recvUserId == userid) statusFlag = true
})
}
console.log(data, 1111111111)
switch (data.tasK_TYPE) {
case 'VGM_COMPARE':
// VGM
@ -1157,10 +1165,26 @@
},
})
break
case 'FEE_AUDIT':
case 'CLIENT_STAKEHOLDER_AUDIT':
// ouT_BS_NO
ApiGet({ id: data.ouT_BS_NO }).then((res) => {
//
go({
path: '/approval-infoclient',
query: {
id: res.data.clientId,
source: data.tasK_USER_STATUS,
taskId: data.ouT_BS_NO,
status: data.tasK_TYPE,
},
})
})
break
case 'FEE_AUDIT':
//
go({
path: '/approve-fee'
path: '/approve-fee',
})
break
case 'WAIT_ORDER_AUDIT':
@ -1191,8 +1215,8 @@
source: data.tasK_USER_STATUS,
taskId: data.id,
status: statusFlag ? data.tasK_TYPE : 'n',
tabName: data.tasK_TYPE_NAME
}
tabName: data.tasK_TYPE_NAME,
},
})
break
default:

Loading…
Cancel
Save