sunzehua 3 months ago
commit 58a26e0570

@ -6,22 +6,33 @@
<template> <template>
<div v-if="source != 'edit'" class="ds-approve-btns"> <div v-if="source != 'edit'" class="ds-approve-btns">
<div> <div>
<a-button v-repeat v-if="query.source == 'Create' && query.status == 'WAIT_ORDER_AUDIT'" @click="approveHandle('2')" danger class="mr10"> <a-button
v-repeat
v-if="query.source == 'Create' && query.status == status"
@click="approveHandle('2')"
danger
class="mr10"
>
{{ rejectText }} {{ rejectText }}
</a-button> </a-button>
<a-button v-repeat v-if="query.source == 'Create' && query.status == 'WAIT_ORDER_AUDIT'" @click="approveHandle('1')" type="primary"> <a-button
v-repeat
v-if="query.source == 'Create' && query.status == status"
@click="approveHandle('1')"
type="primary"
>
{{ agreeText }} {{ agreeText }}
</a-button> </a-button>
<slot></slot> <slot></slot>
<a-button v-repeat v-if="query.source != 'edit'" class="ml10" @click="openFlowChart" type="primary"> <a-button
流程 v-repeat
v-if="query.source != 'edit'"
class="ml10"
@click="openFlowChart"
type="primary"
>流程
</a-button> </a-button>
<a-modal <a-modal v-model:visible="visible" title="驳回" width="40%" @ok="handleOk">
v-model:visible="visible"
title="驳回"
width="40%"
@ok="handleOk"
>
<BasicForm @register="registerForm" /> <BasicForm @register="registerForm" />
</a-modal> </a-modal>
</div> </div>
@ -41,31 +52,36 @@
// //
agreeText: { agreeText: {
type: String, type: String,
default: "同意" default: '同意',
}, },
rejectText: { rejectText: {
type: String, type: String,
default: "驳回" default: '驳回',
}, },
// //
approve: { approve: {
type: Function type: Function,
}, },
// //
source: { source: {
type: String, type: String,
default: 'edit' default: 'edit',
}, },
// //
businessType: { businessType: {
type: String, type: String,
default: '1' default: '1',
}, },
// id // id
id: { id: {
type: String, type: String,
default: '1' default: '1',
} },
// 使
status: {
type: String,
default: 'WAIT_ORDER_AUDIT',
},
}) })
const visible = ref(false) const visible = ref(false)
const formSchema = [ const formSchema = [
@ -79,17 +95,16 @@
componentProps: { componentProps: {
autoSize: { autoSize: {
minRows: 4, minRows: 4,
maxRows: 4 maxRows: 4,
} },
} },
} },
] ]
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
useForm({ labelWidth: 150,
labelWidth: 150, schemas: formSchema,
schemas: formSchema, showActionButtonGroup: false,
showActionButtonGroup: false })
})
const approveHandle = (v) => { const approveHandle = (v) => {
resetFields() resetFields()
if (v == 2) { if (v == 2) {
@ -128,4 +143,4 @@
text-align: right; text-align: right;
border-top: 1px solid #d9d9d9; border-top: 1px solid #d9d9d9;
} }
</style> </style>

@ -238,7 +238,7 @@ export function formatParams(params = {}, equal: any = [], otherQuery: any = [])
} else { } else {
postData.pageCondition.sortConditions = [] postData.pageCondition.sortConditions = []
} }
if (otherQuery.length) { if (Object.keys(otherQueryCondition).length) {
postData.otherQueryCondition = otherQueryCondition postData.otherQueryCondition = otherQueryCondition
} }

@ -2,7 +2,11 @@
<div> <div>
<div class="infoclientBox"> <div class="infoclientBox">
<div class="buttonBox"> <div class="buttonBox">
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip
placement="top"
:mouseEnterDelay="0.5"
v-if="route.path !== '/approval-infoclient'"
>
<template #title> <template #title>
<span>新建</span> <span>新建</span>
</template> </template>
@ -18,7 +22,11 @@
<img src="../../../assets/svg/infoclient/baocun.svg" class="SvgImg" /> <img src="../../../assets/svg/infoclient/baocun.svg" class="SvgImg" />
</span> </span>
</a-tooltip> </a-tooltip>
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip
placement="top"
:mouseEnterDelay="0.5"
v-if="route.path !== '/approval-infoclient'"
>
<template #title> <template #title>
<span>提交审核</span> <span>提交审核</span>
</template> </template>
@ -26,7 +34,11 @@
<img src="../../../assets/svg/infoclient/tijiao.svg" class="SvgImg" /> <img src="../../../assets/svg/infoclient/tijiao.svg" class="SvgImg" />
</span> </span>
</a-tooltip> </a-tooltip>
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip
placement="top"
:mouseEnterDelay="0.5"
v-if="route.path !== '/approval-infoclient'"
>
<template #title> <template #title>
<span>撤销审核</span> <span>撤销审核</span>
</template> </template>
@ -34,7 +46,11 @@
<img src="../../../assets/svg/infoclient/chexiaotijiao.svg" class="SvgImg" /> <img src="../../../assets/svg/infoclient/chexiaotijiao.svg" class="SvgImg" />
</span> </span>
</a-tooltip> </a-tooltip>
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip
placement="top"
:mouseEnterDelay="0.5"
v-if="route.path !== '/approval-infoclient'"
>
<template #title> <template #title>
<span>上一条</span> <span>上一条</span>
</template> </template>
@ -42,7 +58,11 @@
<img src="../../../assets/svg/infoclient/shangxia.svg" class="SvgImg rotate" /> <img src="../../../assets/svg/infoclient/shangxia.svg" class="SvgImg rotate" />
</span> </span>
</a-tooltip> </a-tooltip>
<a-tooltip placement="top" :mouseEnterDelay="0.5"> <a-tooltip
placement="top"
:mouseEnterDelay="0.5"
v-if="route.path !== '/approval-infoclient'"
>
<template #title> <template #title>
<span>下一条</span> <span>下一条</span>
</template> </template>
@ -195,10 +215,20 @@
</div> </div>
<ClientAccountDateModal @register="CADModal" @success="handleSuccess" /> <ClientAccountDateModal @register="CADModal" @success="handleSuccess" />
</div> </div>
<ApproveBtns
agreeText="审核通过"
rejectText="驳回任务"
:approve="approveDc"
:source="route.query.source ? route.query.source : 'edit'"
:id="rowId"
businessType="1"
status="INFO_CLIENT_AUDIT"
>
</ApproveBtns>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, computed, unref, watch, onMounted, watchEffect } from 'vue' import { ref, computed, unref, watch, onMounted, defineAsyncComponent } 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'
@ -214,6 +244,7 @@
ApiSubmitAudit, ApiSubmitAudit,
ApiWithdraw, ApiWithdraw,
} from './api' } from './api'
import { ApiAudit } from '/@/views/baseinfo/infoclientAudit/api'
import { GetFormSetListByModule } from '/@/api/common' import { GetFormSetListByModule } from '/@/api/common'
import { ApiList } from './menu2/api' import { ApiList } from './menu2/api'
// idname // idname
@ -221,21 +252,25 @@
import { GetClientSourceDetailSelectList } from '/@/views/operation/seaexport/api/BookingLedger' import { GetClientSourceDetailSelectList } from '/@/views/operation/seaexport/api/BookingLedger'
import ClientAccountDateModal from './ClientAccountDateModal.vue' import ClientAccountDateModal from './ClientAccountDateModal.vue'
import { useMessage } from '/@/hooks/web/useMessage' import { useMessage } from '/@/hooks/web/useMessage'
const { notification } = useMessage() const { notification, createMessage } = useMessage()
import { BasicTable, useTable, TableAction, SorterResult } from '/@/components/Table' import { BasicTable, useTable, TableAction, SorterResult } from '/@/components/Table'
import Tabs3 from './tabs3/index.vue' import Tabs3 from './tabs3/index.vue'
import Menus2 from './menu2/index.vue' import Menus2 from './menu2/index.vue'
import Menus3 from './menu3/index.vue' import Menus3 from './menu3/index.vue'
//
const ApproveBtns = defineAsyncComponent(() => import('/@/components/ApproveBtns/index.vue'))
// import CustTemplateDetail from './custTemplateDetail/index.vue' // import CustTemplateDetail from './custTemplateDetail/index.vue'
import FeeCustTemplate from './FeeCustTemplate/index.vue' import FeeCustTemplate from './FeeCustTemplate/index.vue'
import { useModal } from '/@/components/Modal' import { useModal } from '/@/components/Modal'
import CustomerParams from './customerParams/index.vue' import CustomerParams from './customerParams/index.vue'
import ReleaseType from './ReleaseType/index.vue' import ReleaseType from './ReleaseType/index.vue'
import { formatParams } from '/@/hooks/web/common' import { formatParams } from '/@/hooks/web/common'
import { useRoute } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute() const route = useRoute()
import { useGo } from '/@/hooks/web/usePage' import { useGo } from '/@/hooks/web/usePage'
const go = useGo() const go = useGo()
import { useMultipleTabStore } from '/@/store/modules/multipleTab'
// //
import { getDictOption } from '/@/utils/dictUtil' import { getDictOption } from '/@/utils/dictUtil'
import { up } from 'inquirer/lib/utils/readline' import { up } from 'inquirer/lib/utils/readline'
@ -266,7 +301,10 @@
} }
} }
onMounted(async () => { onMounted(async () => {
await getFormSet() if (route.path !== '/approval-infoclient') {
await getFormSet()
}
activeKey.value = '1' activeKey.value = '1'
selectedKeys.value = ['menu1'] selectedKeys.value = ['menu1']
resetFields() resetFields()
@ -717,6 +755,42 @@
auditStatusText.value = res.data.auditStatusText auditStatusText.value = res.data.auditStatusText
} }
} }
const tabStore = useMultipleTabStore()
//
const approveDc = (remark) => {
const postData: any = {
result: remark ? 2 : 1,
ids: [rowId.value],
businessType: '1',
taskTypeName: route.query.status,
}
if (remark) postData['remark'] = remark
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
})
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.gradeClass { .gradeClass {

@ -1,12 +1,124 @@
[ {
{ "code": 0,
"ConditionalList": [ "multiCode": "",
{ "count": 0,
"Key": 1, "message": "",
"Value": { "FieldName": "description", "FieldValue": "1", "ConditionalType": 1 } "succeeded": true,
}, "data": [
{ "Key": 1, "Value": { "FieldName": "shortName", "FieldValue": "1", "ConditionalType": 1 } } {
] "type": "STATUS",
}, "data": [
{ "FieldName": "isCustomer", "FieldValue": 1, "ConditionalType": 0 } { "code": "Create", "name": "待处理" },
] { "code": "Retransmit", "name": "已转发" },
{ "code": "Complete", "name": "已完成" },
{ "code": "Cancel", "name": "已取消" },
{ "code": "Pending", "name": "已挂起" }
]
},
{
"type": "TASK_TYPE",
"data": [
{ "code": "CAUTION_NOTICE", "name": "重要提醒" },
{ "code": "BC", "name": "BC" },
{ "code": "DRAFT", "name": "DRAFT" },
{ "code": "CANCELLATION", "name": "Cancellation" },
{ "code": "SEAWAYBILL_DOWN", "name": "SEAWAY BILL" },
{ "code": "ORIGINAL_DOWN", "name": "提单正本下载" },
{ "code": "NOT_LOADED", "name": "未装载" },
{ "code": "NOT_SHIPMENG", "name": "未装船" },
{ "code": "INVOICE_BILL_MAIL", "name": "航次账单" },
{ "code": "VGM_COMPARE", "name": "VGM对比" },
{ "code": "TELEX_NOTICE", "name": "电放通知" },
{ "code": "SI_FEEDBACK", "name": "SI回执" },
{ "code": "PER_BILL", "name": "单票账单" },
{ "code": "CHANGE_SHIP", "name": "换船通知" },
{ "code": "ABORT_CHANGE_SHIP", "name": "取消换船通知" },
{ "code": "SHIPPING_ORDER", "name": "下货纸" },
{ "code": "ORIGINAL_LOST", "name": "正本缺失" },
{ "code": "VGM_EXCEPT", "name": "VGM异常" },
{ "code": "SHIPPING_ORDER_COMPARE", "name": "比对下货纸" },
{ "code": "TRUCK_DISPATCH", "name": "派车" },
{ "code": "BC_MODIFY", "name": "Amendment" },
{ "code": "CUT_MODIFY", "name": "截止时间变更" },
{ "code": "ROLLING_NOMINATION", "name": "RollingNomination" },
{ "code": "TRANSFER_NOMINATION", "name": "TransferNomination" },
{ "code": "VGM_FEEDBACK", "name": "VGM回执" },
{ "code": "VGM_MISSING", "name": "VGM未提交" },
{ "code": "POD_DISCHARGE_FULL", "name": "目的港未提货" },
{ "code": "POD_GATEOUT_FULL", "name": "目的港未返空箱" },
{ "code": "ROUTE_CUT_CHANGE", "name": "航线截止时间调整" },
{ "code": "POL_CTN_NOT_PICKUP", "name": "装货港未提箱" },
{ "code": "TRNAS_PLAN_HAS_CHANGE", "name": "运输计划已变更" },
{ "code": "WAIT_ORDER_AUDIT", "name": "审单" },
{ "code": "WAIT_BOOKING", "name": "订舱" },
{ "code": "WAIT_BC", "name": "收BC" },
{ "code": "WAIT_SPACE_RELEASE", "name": "放舱" },
{ "code": "WAIT_BILL_CONFIRM", "name": "提单确认" },
{ "code": "WAIT_SI", "name": "提交SI" },
{ "code": "WAIT_DRAFT", "name": "处理Draft" },
{ "code": "WAIT_CHECKOUT_BILL", "name": "截单" },
{ "code": "WAIT_BAOGUAN", "name": "报关" },
{ "code": "WAIT_CANGDAN", "name": "发舱单" },
{ "code": "WAIT_VGM", "name": "提交VGM" },
{ "code": "WAIT_AFR", "name": "发AFR" },
{ "code": "WAIT_AMS", "name": "发AMS" },
{ "code": "WAIT_ISF", "name": "发ISF" },
{ "code": "WAIT_XUNZHENG", "name": "熏蒸" },
{ "code": "WAIT_SHANGJIAN", "name": "商检" },
{ "code": "WAIT_COA", "name": "报COA" },
{ "code": "WAIT_CHANDIZHENG", "name": "出产地证" },
{ "code": "WAIT_TUOCHE", "name": "拖车" },
{ "code": "WAIT_INSURANCE", "name": "保险" },
{ "code": "WAIT_CHUHAO", "name": "出号" },
{ "code": "WAIT_NDRH", "name": "内点入货" },
{ "code": "WAIT_DELIVERY", "name": "快递" },
{ "code": "WAIT_XIANGSHI", "name": "箱使" },
{ "code": "RETURN_CABIN", "name": "退舱" },
{ "code": "INFO_CLIENT_AUDIT", "name": "客户/供应商审核" },
{ "code": "FEE_AUDIT", "name": "费用审核" },
{ "code": "FEE_MODIFY_AUDIT", "name": "费用修改" },
{ "code": "FEE_DELETE_AUDIT", "name": "费用删除" },
{ "code": "FEE_BUSINESS_AUDIT", "name": "费用整单审核" },
{ "code": "APPLICATION_PAYMENT_AUDIT", "name": "付费申请审核" },
{ "code": "APPLICATION_INVOICE_AUDIT", "name": "发票申请审核" },
{ "code": "WORK_FLOW_MAIN", "name": "工作流任务创建主流程" },
{ "code": "WORK_FLOW_RETURN_CABIN", "name": "工作流退舱流程" },
{ "code": "WORK_FLOW_HANDLE_DRAFT", "name": "工作流处理DRAFT流程" },
{ "code": "APPLICATION_INVOICE_REJECTED", "name": "发票申请驳回" },
{ "code": "APPLICATION_PAYMENT_REJECTED", "name": "付费申请驳回" },
{ "code": "FEE_BUSINESS_REJECTED", "name": "费用整单审核驳回" },
{ "code": "FEE_DELETE_REJECTED", "name": "费用删除驳回" },
{ "code": "FEE_MODIFY_REJECTED", "name": "费用修改驳回" },
{ "code": "FEE_REJECTED", "name": "费用审核驳回" },
{ "code": "INFO_CLIENT_REJECTED", "name": "客户/供应商审核驳回" },
{ "code": "RETURN_CABIN_REJECTED", "name": "退舱驳回" },
{ "code": "ORDER_AUDIT_REJECTED", "name": "审单驳回" },
{ "code": "NOT_SPECIFIED", "name": "未指定" }
]
},
{
"type": "SOURCE",
"data": [
{ "code": "EDI", "name": "EDI" },
{ "code": "MAIL", "name": "邮件" },
{ "code": "MAIL_PARSE", "name": "邮件解析" },
{ "code": "FTP", "name": "FTP" },
{ "code": "RETRANSMIT", "name": "转发" },
{ "code": "BILL_TRACE", "name": "运踪" },
{ "code": "WEBSITE", "name": "网站查询" },
{ "code": "CUSTOMER_SUBMIT", "name": "客户提交" },
{ "code": "SYSTEM", "name": "系统" },
{ "code": "WORK_FLOW", "name": "工作流" }
]
},
{
"type": "CATEGORY",
"data": [
{ "code": "EXCPTION", "name": "异常" },
{ "code": "PERSON", "name": "个人" },
{ "code": "PUBLIC", "name": "公共" }
]
}
],
"additionalData": null
}

@ -74,6 +74,15 @@ export const columns: BasicColumn[] = [
dataIndex: 'auditStatusText', dataIndex: 'auditStatusText',
sorter: true, sorter: true,
width: 150, width: 150,
customRender: ({ text, record }) => {
console.log(text, record)
let RText = ''
RText = text
if (record.auditStatus == 2) {
RText = `${RText}:${record.auditNote}`
}
return RText
},
}, },
{ {
title: '客户简称', title: '客户简称',

@ -186,7 +186,7 @@
const operationArea = defineAsyncComponent(() => import("./modules/operationArea.vue")) const operationArea = defineAsyncComponent(() => import("./modules/operationArea.vue"))
import basicInfo from './modules/basicInfo.vue' import basicInfo from './modules/basicInfo.vue'
import mailingInfo from './modules/mailingInfo.vue' import mailingInfo from './modules/mailingInfo.vue'
import noteInfo from './modules/noteInfo.vue' const noteInfo = defineAsyncComponent(() => import("./modules/noteInfo.vue"))
const cargoInfo = defineAsyncComponent(() => import("./modules/cargoInfo.vue")) const cargoInfo = defineAsyncComponent(() => import("./modules/cargoInfo.vue"))
const goodsTable = defineAsyncComponent(() => import("./modules/goodsTable.vue")) const goodsTable = defineAsyncComponent(() => import("./modules/goodsTable.vue"))
const ediMore = defineAsyncComponent(() => import("./modules/ediMore.vue")) const ediMore = defineAsyncComponent(() => import("./modules/ediMore.vue"))

@ -407,6 +407,7 @@
const source = ref(route.query.source || 'edit') const source = ref(route.query.source || 'edit')
onMounted(() => { onMounted(() => {
const nval = props.details const nval = props.details
console.log(nval)
if (nval.id) { if (nval.id) {
setFieldsValue1({ marks: nval.marks, description: nval.description }) setFieldsValue1({ marks: nval.marks, description: nval.description })
setFieldsValue2(nval) setFieldsValue2(nval)

@ -252,7 +252,7 @@
const route = useRoute() const route = useRoute()
const props = defineProps({ const props = defineProps({
details: { type: Object, default: {} }, details: { type: Object, default: {} },
isLockBooking: { type: Boolean, default: false }, isLockBooking: { type: Boolean, default: false }
}) })
// //
const source = 'edit' const source = 'edit'
@ -1259,7 +1259,6 @@
}, },
]) ])
function init(data, hot) { function init(data, hot) {
console.log(data)
const { ctnInfo } = data const { ctnInfo } = data
if (ctnInfo && ctnInfo.length > 0) { if (ctnInfo && ctnInfo.length > 0) {
totalPkgs.value = 0 totalPkgs.value = 0
@ -1618,32 +1617,17 @@
} }
}) })
watch( watch(
list.value, () => props.details,
(val) => { (val) => {
let a = 0 //
let b = 0 if (val.ctnInfo && val.ctnInfo.length) {
val.forEach((item) => { const hot = hotmain.value.hotInstance
if (item.selected) { init(val, hot)
a += 1
} else {
b += 1
}
})
if (a == 0) {
allCheck.value = false
}
if (b == 0) {
allCheck.value = true
}
if (a != 0 && b != 0) {
someCheck.value = true
} else {
someCheck.value = false
} }
}, },
{ {
deep: true, deep: true,
}, }
) )
// //
const settings = { const settings = {

@ -80,6 +80,7 @@
}) })
} }
}) })
setFieldsValue(props.details)
// if (source.value != 'edit') { // if (source.value != 'edit') {
// noteFormSchema.forEach(item => { // noteFormSchema.forEach(item => {
// item.dynamicDisabled = true // item.dynamicDisabled = true

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