feature-JimuReport-1106-yjl
lijingjia 4 weeks ago
commit e04e18761b

@ -52,5 +52,5 @@ html[data-theme='light'] {
}
.ant-popover-inner-content {
width: 230px
min-width: 230px
}

@ -27,7 +27,7 @@
删除
</a-button>
</a-popconfirm>
<a-button type="link" @click="handleSave(false)" class="pl0">
<a-button type="link" @click="handleSave(false, true)" class="pl0">
<span class="iconfont icon-baocun" v-repeat></span>
保存
</a-button>
@ -161,7 +161,7 @@
:loading="loading"
pre-icon="ant-design:check-outlined"
style="margin-right: 0.8rem"
@click="handleSave(false)"
@click="handleSave(false, true)"
>仅保存</a-button
>
<a-button
@ -169,7 +169,7 @@
type="primary"
:loading="loading"
style="margin-right: 0.8rem"
@click="handleSave(true)"
@click="handleSave(true, true)"
>保存并关闭</a-button
>
<a-button
@ -297,14 +297,14 @@
})
}
async function MakeFee() {
await handleSave(false)
await handleSave(false, true)
ApiMakeFee({ id: rowId.value }).then((res) => {
notification.success({ message: res.message, duration: 3 })
emit('success')
})
}
async function Confirm() {
await handleSave(false)
await handleSave(false, false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -322,6 +322,7 @@
if (type) {
ApiConfirm(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -329,7 +330,7 @@
}
}
async function Cancel() {
// await handleSave(false)
// await handleSave(false,false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -347,6 +348,7 @@
if (type) {
ApiCancel(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -355,14 +357,14 @@
}
const dsFile = ref()
async function FnTriggerSave() {
await handleSave(false)
await handleSave(false, true)
if (rowId.value) {
dsFile.value.openFileModel()
}
}
async function DealExcel() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, false)
}
if (dsFile.value.dsFileList.SelectId) {
let ApiData: any = {
@ -380,7 +382,7 @@
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
}
}
async function handleSave(exit) {
async function handleSave(exit, GetType) {
try {
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
@ -411,11 +413,15 @@
//
if (!exit) {
if (unref(isUpdate)) {
await refresh()
if (GetType) {
await refresh()
}
} else {
rowId.value = res.data
isUpdate.value = true
await refresh()
if (GetType) {
await refresh()
}
}
}
} else {

@ -27,7 +27,7 @@
删除
</a-button>
</a-popconfirm>
<a-button type="link" @click="handleSave(false)" class="pl0">
<a-button type="link" @click="handleSave(false, true)" class="pl0">
<span class="iconfont icon-baocun" v-repeat></span>
保存
</a-button>
@ -204,7 +204,7 @@
:loading="loading"
pre-icon="ant-design:check-outlined"
style="margin-right: 0.8rem"
@click="handleSave(false)"
@click="handleSave(false, true)"
>仅保存</a-button
>
<a-button
@ -212,7 +212,7 @@
type="primary"
:loading="loading"
style="margin-right: 0.8rem"
@click="handleSave(true)"
@click="handleSave(true, true)"
>保存并关闭</a-button
>
<a-button
@ -359,14 +359,14 @@
})
}
async function MakeFee() {
await handleSave(false)
await handleSave(false, true)
ApiMakeFee({ id: rowId.value }).then((res) => {
emit('success')
notification.success({ message: res.message, duration: 3 })
})
}
async function Confirm() {
await handleSave(false)
await handleSave(false, false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -384,6 +384,7 @@
if (type) {
ApiConfirm(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -391,7 +392,7 @@
}
}
async function Cancel() {
// await handleSave(false)
// await handleSave(false, false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -409,6 +410,7 @@
if (type) {
ApiCancel(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -417,14 +419,14 @@
}
const dsFile = ref()
async function FnTriggerSave() {
await handleSave(false)
await handleSave(false, true)
if (rowId.value) {
dsFile.value.openFileModel()
}
}
async function DealExcel() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, false)
}
if (dsFile.value.dsFileList.SelectId) {
let ApiData: any = {
@ -442,7 +444,7 @@
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
}
}
async function handleSave(exit) {
async function handleSave(exit, GetType) {
try {
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
@ -473,11 +475,15 @@
//
if (!exit) {
if (unref(isUpdate)) {
await refresh()
if (GetType) {
await refresh()
}
} else {
rowId.value = res.data
isUpdate.value = true
await refresh()
if (GetType) {
await refresh()
}
}
}
} else {
@ -1303,7 +1309,7 @@
}
async function ViewTableAdd() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, true)
}
let ApiData: any = { id: rowId.value, ids: [] }
Viewlist.value.forEach((e: any, i) => {
@ -1350,7 +1356,9 @@
const reason = ref('')
async function PushFormStatus(execution) {
try {
await handleSave(false)
if (execution != 10001 && execution != 1100) {
await handleSave(false, false)
}
// (退)() CM_RentIn CM_RentOut CM_SellCtn
let ApiData: any = {
id: rowId.value,
@ -1363,6 +1371,7 @@
notification.success({ message: res.message, duration: 3 })
reason.value = ''
visible.value = false
refresh()
}
})
}

@ -27,7 +27,7 @@
删除
</a-button>
</a-popconfirm>
<a-button type="link" @click="handleSave(false)" class="pl0">
<a-button type="link" @click="handleSave(false, true)" class="pl0">
<span class="iconfont icon-baocun" v-repeat></span>
保存
</a-button>
@ -131,7 +131,7 @@
type="primary"
:loading="loading"
@click="PushFormStatus(1001)"
v-if="!checkPermissions('op:RentIn:submitted')"
v-if="rentDirectId == 2 && !checkPermissions('op:RentIn:submitted')"
>
提交审核
</a-button>
@ -140,7 +140,7 @@
type="primary"
:loading="loading"
@click="PushFormStatus(1000)"
v-if="!checkPermissions('op:RentIn:submitted')"
v-if="rentDirectId == 2 && !checkPermissions('op:RentIn:submitted')"
>
撤回提交
</a-button>
@ -149,7 +149,7 @@
type="primary"
:loading="loading"
@click="PushFormStatus(10001)"
v-if="!checkPermissions('op:RentIn:audit')"
v-if="rentDirectId == 2 && !checkPermissions('op:RentIn:audit')"
>
驳回提交
</a-button>
@ -158,7 +158,7 @@
type="primary"
:loading="loading"
@click="PushFormStatus(1100)"
v-if="!checkPermissions('op:RentIn:audit')"
v-if="rentDirectId == 2 && !checkPermissions('op:RentIn:audit')"
>
审核通过
</a-button>
@ -167,6 +167,7 @@
type="primary"
:loading="loading"
@click="Confirm()"
v-if="rentDirectId !== 2"
>
确认执行
</a-button>
@ -175,6 +176,7 @@
type="primary"
:loading="loading"
@click="Cancel()"
v-if="rentDirectId !== 2"
>
取消执行
</a-button>
@ -200,7 +202,7 @@
:loading="loading"
pre-icon="ant-design:check-outlined"
style="margin-right: 0.8rem"
@click="handleSave(false)"
@click="handleSave(false, true)"
>仅保存</a-button
>
<a-button
@ -208,7 +210,7 @@
type="primary"
:loading="loading"
style="margin-right: 0.8rem"
@click="handleSave(true)"
@click="handleSave(true, true)"
>保存并关闭</a-button
>
<a-button
@ -369,14 +371,14 @@
})
}
async function MakeFee() {
await handleSave(false)
await handleSave(false, true)
ApiMakeFee({ id: rowId.value }).then((res) => {
notification.success({ message: res.message, duration: 3 })
emit('success')
})
}
async function Confirm() {
await handleSave(false)
await handleSave(false, false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -394,6 +396,7 @@
if (type) {
ApiConfirm(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -401,7 +404,7 @@
}
}
async function Cancel() {
// await handleSave(false)
// await handleSave(false,false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -419,6 +422,7 @@
if (type) {
ApiCancel(ApiData).then((res) => {
notification.success({ message: res.message, duration: 3 })
refresh()
emit('success')
})
} else {
@ -427,14 +431,14 @@
}
const dsFile = ref()
async function FnTriggerSave() {
await handleSave(false)
await handleSave(false, true)
if (rowId.value) {
dsFile.value.openFileModel()
}
}
async function DealExcel() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, false)
}
if (dsFile.value.dsFileList.SelectId) {
let ApiData: any = {
@ -452,7 +456,7 @@
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
}
}
async function handleSave(exit) {
async function handleSave(exit, GetType) {
try {
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
@ -485,11 +489,15 @@
//
if (!exit) {
if (unref(isUpdate)) {
await refresh()
if (GetType) {
await refresh()
}
} else {
rowId.value = res.data
isUpdate.value = true
await refresh()
if (GetType) {
await refresh()
}
}
}
} else {
@ -1662,7 +1670,7 @@
}
async function ViewTableAdd() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, true)
}
let ApiData: any = { id: rowId.value, ids: [] }
Viewlist.value.forEach((e: any, i) => {
@ -1713,7 +1721,9 @@
const reason = ref('')
async function PushFormStatus(execution) {
try {
await handleSave(false)
if (execution != 10001 && execution != 1100) {
await handleSave(false, false)
}
// (退)() CM_RentIn CM_RentOut CM_SellCtn
let ApiData: any = {
id: rowId.value,
@ -1726,6 +1736,7 @@
notification.success({ message: res.message, duration: 3 })
reason.value = ''
visible.value = false
refresh()
}
})
}

@ -3,7 +3,7 @@
v-bind="$attrs"
:use-wrapper="true"
title="卖箱维护"
width="55%"
width="70%"
@register="registerModal"
@ok="handleSave"
>
@ -27,7 +27,7 @@
删除
</a-button>
</a-popconfirm>
<a-button type="link" @click="handleSave(false)" class="pl0">
<a-button type="link" @click="handleSave(false, true)" class="pl0">
<span class="iconfont icon-baocun" v-repeat></span>
保存
</a-button>
@ -198,7 +198,7 @@
:loading="loading"
pre-icon="ant-design:check-outlined"
style="margin-right: 0.8rem"
@click="handleSave(false)"
@click="handleSave(false, true)"
>仅保存</a-button
>
<a-button
@ -206,7 +206,7 @@
type="primary"
:loading="loading"
style="margin-right: 0.8rem"
@click="handleSave(true)"
@click="handleSave(true, true)"
>保存并关闭</a-button
>
<a-button
@ -346,14 +346,14 @@
})
}
async function MakeFee() {
await handleSave(false)
await handleSave(false, true)
ApiMakeFee({ id: rowId.value }).then((res) => {
notification.success({ message: res.message, duration: 3 })
emit('success')
})
}
async function Confirm() {
await handleSave(false)
await handleSave(false, false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -378,7 +378,7 @@
}
}
async function Cancel() {
// await handleSave(false)
// await handleSave(false,false)
let type: boolean = true
let ApiData: any = {
id: rowId.value,
@ -404,14 +404,14 @@
}
const dsFile = ref()
async function FnTriggerSave() {
await handleSave(false)
await handleSave(false, true)
if (rowId.value) {
dsFile.value.openFileModel()
}
}
async function DealExcel() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, false)
}
if (dsFile.value.dsFileList.SelectId) {
let ApiData: any = {
@ -429,7 +429,7 @@
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
}
}
async function handleSave(exit) {
async function handleSave(exit, GetType) {
try {
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
@ -462,11 +462,15 @@
//
if (!exit) {
if (unref(isUpdate)) {
await refresh()
if (GetType) {
await refresh()
}
} else {
rowId.value = res.data
isUpdate.value = true
await refresh()
if (GetType) {
await refresh()
}
}
}
} else {
@ -1095,7 +1099,7 @@
}
async function ViewTableAdd() {
if (!rowId.value) {
await handleSave(false)
await handleSave(false, true)
}
let ApiData: any = { id: rowId.value, ids: [] }
Viewlist.value.forEach((e: any, i) => {
@ -1142,7 +1146,9 @@
const reason = ref('')
async function PushFormStatus(execution) {
try {
await handleSave(false)
if (execution != 10001 && execution != 1100) {
await handleSave(false, false)
}
// (退)() CM_RentIn CM_RentOut CM_SellCtn
let ApiData: any = {
id: rowId.value,
@ -1155,6 +1161,7 @@
notification.success({ message: res.message, duration: 3 })
reason.value = ''
visible.value = false
refresh()
}
})
}

@ -2092,6 +2092,15 @@ export function RefreshYGT(data) {
})
}
// 刷新提箱返场
export function RefreshYard(data) {
return request({
url: '/opApi/SeaExport/RefreshYard',
method: 'post',
data,
})
}
// 获取商品下拉列表 (Auth)
export function GetClientGoodsList(params) {
return request({

@ -462,6 +462,11 @@ export const columns: BasicColumn[] = [
dataIndex: 'bookStatus',
width: 200
},
{
title: '提箱返场',
dataIndex: 'statusLog',
width: 140
},
{
title: '揽货人',
sorter: true,

@ -109,10 +109,8 @@
</template>
<!-- 运踪 -->
<template v-if="column.dataIndex == 'bookStatus'">
<div @click="checkBookStatus(record.id)">
</div>
<div>
<span class="iconfont icon-refresh-1-copy"></span>
<span @click="checkBookStatus(record.id)" style="cursor: pointer; color: rgb(7, 231, 56);" class="iconfont icon-refresh-1-copy"></span>
<span v-for="(item, index) in record.bookingStatus" :key="item.id">
<a-tooltip placement="top" v-if="item.statusTime">
<template #title>{{ item.statusTime }}</template>
@ -126,6 +124,38 @@
</span>
</div>
</template>
<!-- 提箱返场 -->
<template v-if="column.dataIndex == 'statusLog'">
<div v-if="record.statusLog" class="txfc">
<div v-if="record.statusLog.length > 0">
<div class="billtrace-btn1 txfc" style="display: flex; align-items: center">
<i style="cursor: pointer; color: rgb(7, 231, 56); margin-right: 5px" @click="handleRefshYard(record.id)"
class="iconfont icon-refresh-1-copy"></i>
<a-popover trigger="click">
<template #content>
<div>
<span class="txfcSpan" style="width: 120px">箱号</span>
<span @click="handleGetWebData(record, 'YARD')" class="txfcSpan">提箱</span>
<span @click="handleGetWebData(record, 'YARD')" class="txfcSpan">返场</span>
</div>
<div v-for="(item, index) in record.statusLog" :key="index">
<span class="txfcSpan" style="width: 120px">{{ item.cntrno }}</span>
<span class="txfcSpan">{{ item.txOpTime }}</span>
<span class="txfcSpan">{{ item.fcOpTime }}</span>
</div>
</template>
<span @click="handleGetWebData(record, 'YARD')" :class="{ active: record.statusLog[0].txOpTime }">
提箱
</span>
<span @click="handleGetWebData(record, 'YARD')" :class="{ active: record.statusLog[0].fcOpTime }">
返场
</span>
</a-popover>
<span style="margin-left: 5px">未提{{ record.txOpNumber }}/{{ record.statusLog.length }}</span>
</div>
</div>
</div>
</template>
<!-- 格式单比对 -->
<template v-if="column.dataIndex == 'lstDraftCompareRlt'">
<div class="goods-status">
@ -305,7 +335,7 @@ import { useMessage } from '/@/hooks/web/useMessage'
import { formatTableData } from '/@/hooks/web/common'
import { updateTableField } from '/@/hooks/component/costomForm'
const lstDraftCompareRlt = defineAsyncComponent(() => import("../../../components/lstDraftCompareRlt/index.vue"))
import { RefreshYGT } from './api/BookingLedger.js'
import { RefreshYGT,RefreshYard } from './api/BookingLedger.js'
import { useI18n } from '/@/hooks/web/useI18n'
const { t } = useI18n()
import { useAppStore } from '/@/store/modules/app'
@ -549,6 +579,26 @@ function handleGetWebDataYZ(row, code) {
setLoading(false)
})
}
function handleGetWebData(row, code) {
const data = {
bookingId: row.id,
webCode: code
}
webData.value = ''
webDataTitle.value = '场站数据'
setLoading(true)
GetWebData(data).then((res) => {
if (res.code === 200) {
webData.value = res.data
webDataFlag.value = true
} else {
createMessage.error(res.message)
}
setLoading(false)
}).catch(() => {
setLoading(false)
})
}
const bsloading = ref(false)
//
const checkBookStatus = (id) => {
@ -558,6 +608,13 @@ const checkBookStatus = (id) => {
reload()
})
}
const handleRefshYard = (id) => {
setLoading(true)
RefreshYard({ ids: [id], businessType: 1 }).then(res => {
reload()
setLoading(false)
})
}
const isAdvancedQuery = ref(false)
// const showColumns = ref({})
// const formAllData = ref([])
@ -659,30 +716,37 @@ onMounted(() => {
<style lang="less">
.ds-sea-export-table {
height: 100%;
.TIJIAO {
color: #47AB00;
background: #F2FAE8;
}
.YSDAN {
color: #007D75;
background: #EDFAED;
}
.YFD {
color: #004445;
background: #EDFAED;
}
.YFC {
color: #257AFA;
background: #E6F5FF;
}
.YSDBC {
color: #8100D6;
background: #F8EDFF;
}
.YDC {
color: #2525BA;
background: #F3EDFF;
}
.ant-table-footer {
display: none;
}
@ -720,4 +784,21 @@ onMounted(() => {
font-weight: bold;
font-size: 12px;
}
.billtrace-btn1 {
font-size: 12px;
.active {
cursor: pointer;
color: #ff9702 !important;
font-weight: bold;
font-size: 12px;
}
}
.txfcSpan {
width: 140px;
color: black;
display: inline-block;
}
</style>

Loading…
Cancel
Save