张同海 2 years ago
parent f61d8c4529
commit 4186c6be02

@ -10,6 +10,16 @@ export function TaskManageGetInvoiceBillInfo(parameter) {
params: parameter
})
}
/**
* 获取单票账单详情
*/
export function TaskManageGetTaskPerBillInfo(parameter) {
return axios({
url: '/TaskManage/GetTaskPerBillInfo',
method: 'get',
params: parameter
})
}
/**
* 分页查询用户自定义配置
*/

@ -25,7 +25,7 @@
:not-found-content="null"
>
<a-select-option v-for="item in SysTenantData" :key="item.id" :value="item.name">
{{ item.name }}
123
</a-select-option>
</a-select>
<a-input
@ -45,7 +45,7 @@
<a-form-item label="分类">
<a-select v-model="queryParam.cateCode" style="width: 100%" placeholder="请选择分类" allow-clear>
<a-select-option v-for="item in CateData" :key="item.id" :value="`[${item.code}]`">
{{ item.name }}
123
</a-select-option>
</a-select>
</a-form-item>
@ -247,7 +247,6 @@
import {
BookingPrintTemplatePage,
BookingPrintTemplateDelete,
BookingPrintTemplateDownload,
BookingTemplateAddOrUpdateExcelTemplate,
BookingTemplateBookingExcelTemplateList,
BookingOrderGetFieldName
@ -415,11 +414,13 @@ export default {
BookingTemplateBookingExcelTemplateList({ id: this.ExcelPid }).then(res => {
res.data.forEach(item => {
this.fieldList.forEach(item2 => {
if (item2.code == item.field.split('.')[0]) {
if (item.field && item2.code == item.field.split('.')[0]) {
item.Ffield = item2.name
}
})
item.field = item.field.split('.')[1]
if (item.field) {
item.field = item.field.split('.')[1]
}
})
// fieldName
Object.keys(this.data1).forEach(item => {
@ -461,16 +462,6 @@ export default {
},
FnDFile(Data) {
window.open(` http://60.209.125.238:25805/BookingPrintTemplate/download?id=${Data.id}`, '_blank')
// BookingPrintTemplateDownload({ id: Data.id }).then(res => {
// const blob = res
// let link = document.createElement('a')
// link.href = URL.createObjectURL(new Blob([blob], { type: 'application/vnd.ms-excel' }))
// link.download = Data.fileName
// document.body.appendChild(link)
// link.click()
// URL.revokeObjectURL(link.href)
// })
},
columnChange(data) {
this.ColumnsQuery = [...data]

@ -1,170 +0,0 @@
<template>
<a-modal title="新增配置" :width="800" :visible="visible" :confirmLoading="confirmLoading" @cancel="handleCancel">
<template slot="footer"> <span></span> </template>
<div class="model-btn-list">
<a-button type="primary" class="btn" @click="FnSave"></a-button>
<a-button type="primary" class="btn" @click="FnSave('Close')"></a-button>
<a-button type="primary" class="btn" @click="FnSave('New')"></a-button>
</div>
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-row>
<a-col :span="24">
<a-form-item label="字段名称" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-select
placeholder="请选择字段名称"
show-search
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="handleSearch"
v-decorator="['field', { rules: [{ required: true, message: '请选择字段名称!' }] }]"
>
<a-select-option v-for="item in FieldNameList" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="默认值" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-textarea
placeholder="请输入默认值"
:auto-size="{ minRows: 3, maxRows: 5 }"
v-decorator="['code', { rules: [{ required: true, message: '请输入默认值!' }] }]"
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="说明" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-input placeholder="请输入说明" v-decorator="['remarks']" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</a-modal>
</template>
<script>
import { BookingOrderGetFieldName, DjyTenantConfigSave } from '@/api/modular/main/DjyTenantConfig'
export default {
data() {
return {
data: [],
FieldNameList: [],
FieldNameList2: [],
labelCol2: {
xs: { span: 24 },
sm: { span: 3 }
},
wrapperCol2: {
xs: { span: 24 },
sm: { span: 20 }
},
visible: false,
confirmLoading: false,
form: this.$form.createForm(this)
}
},
mounted() {},
methods: {
//
add(record) {
this.data = record
BookingOrderGetFieldName().then(res => {
let FieldNameList = []
Object.keys(res.data[0]).forEach(item => {
FieldNameList.push({
code: item,
name: res.data[0][item]
})
})
this.FieldNameList = FieldNameList
this.FieldNameList2 = FieldNameList
})
this.visible = true
},
handleSearch(value) {
let Rdata = []
if (value) {
this.FieldNameList2.forEach(item => {
if (item.name.indexOf(value) > -1) {
Rdata.push(item)
}
})
} else {
Rdata = this.FieldNameList2
}
this.FieldNameList = Rdata
},
FnSave(type) {
const {
form: { validateFields }
} = this
this.confirmLoading = true
validateFields((errors, values) => {
if (!errors) {
this.FieldNameList2.forEach(item => {
if (item.code == values.field) {
values.fieldName = item.name
}
})
let Changetype = false
let configJson = []
this.data.forEach((item, index) => {
if (item.field == values.field) {
this.data[index] = values
Changetype = true
}
})
console.log(this.data)
if (Changetype) {
configJson = [...this.data]
} else {
configJson = [...this.data, values]
}
let data = { type: 'booking_default_value', configJson: JSON.stringify(configJson) }
DjyTenantConfigSave(data)
.then(res => {
if (res.success) {
this.$message.success('新增成功')
this.confirmLoading = false
this.$emit('ok', values)
if (type == 'Close') {
this.handleCancel()
} else if (type == 'New') {
this.form.resetFields()
}
} else {
this.$message.error(`新增失败,${res.message}`)
}
})
.finally(res => {
this.confirmLoading = false
})
} else {
this.confirmLoading = false
}
})
},
handleCancel() {
this.form.resetFields()
this.visible = false
}
}
}
</script>
<style lang="less" scoped>
.model-btn-list {
margin-bottom: 15px;
.btn {
margin-right: 6px;
&.ant-btn-primary {
color: #fff;
}
}
}
</style>

@ -1,174 +0,0 @@
<template>
<a-modal title="编辑配置" :width="800" :visible="visible" :confirmLoading="confirmLoading" @cancel="handleCancel">
<template slot="footer"> <span></span> </template>
<div class="model-btn-list">
<a-button type="primary" class="btn" @click="FnSave"></a-button>
<a-button type="primary" class="btn" @click="FnSave('Close')"></a-button>
<a-button type="primary" class="btn" @click="FnSave('New')"></a-button>
</div>
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-row>
<a-col :span="24">
<a-form-item label="字段名称" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-select
placeholder="请选择字段名称"
show-search
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="handleSearch"
v-decorator="['field', { rules: [{ required: true, message: '请选择字段名称!' }] }]"
>
<a-select-option v-for="item in FieldNameList" :key="item.code" :value="item.code">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="默认值" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-textarea
placeholder="请输入默认值"
:auto-size="{ minRows: 3, maxRows: 5 }"
v-decorator="['code', { rules: [{ required: true, message: '请输入默认值!' }] }]"
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="说明" :labelCol="labelCol2" :wrapperCol="wrapperCol2" has-feedback>
<a-input placeholder="请输入说明" v-decorator="['remarks']" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</a-modal>
</template>
<script>
import { BookingOrderGetFieldName, DjyTenantConfigSave } from '@/api/modular/main/DjyTenantConfig'
export default {
data() {
return {
FieldNameList: [],
FieldNameList2: [],
labelCol2: {
xs: { span: 24 },
sm: { span: 3 }
},
wrapperCol2: {
xs: { span: 24 },
sm: { span: 20 }
},
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
data: []
}
},
mounted() {},
methods: {
//
edit(record, loadData) {
console.log(record)
this.data = loadData
this.visible = true
BookingOrderGetFieldName().then(res => {
let FieldNameList = []
Object.keys(res.data[0]).forEach(item => {
FieldNameList.push({
code: item,
name: res.data[0][item]
})
})
this.FieldNameList = FieldNameList
this.FieldNameList2 = FieldNameList
console.log(this.FieldNameList)
})
setTimeout(() => {
this.form.setFieldsValue({
field: record.field,
code: record.code,
remarks: record.remarks
})
console.log(this.form.getFieldsValue())
}, 100)
},
handleSearch(value) {
console.log(value)
let Rdata = []
if (value) {
this.FieldNameList2.forEach(item => {
if (item.name.indexOf(value) > -1) {
Rdata.push(item)
}
})
} else {
Rdata = this.FieldNameList2
}
this.FieldNameList = Rdata
},
FnSave(type) {
const {
form: { validateFields }
} = this
this.confirmLoading = true
validateFields((errors, values) => {
if (!errors) {
this.FieldNameList2.forEach(item => {
if (item.code == values.field) {
values.fieldName = item.name
}
})
let configJson = []
this.data.forEach((item, index) => {
if (item.field == values.field) {
this.data[index] = values
}
})
configJson = [...this.data]
let data = { type: 'booking_default_value', configJson: JSON.stringify(configJson) }
DjyTenantConfigSave(data)
.then(res => {
if (res.success) {
this.$message.success('编辑成功')
this.confirmLoading = false
this.$emit('ok', values)
if (type == 'Close') {
this.handleCancel()
} else if (type == 'New') {
this.form.resetFields()
}
} else {
this.$message.error(`编辑失败,${res.message}`)
}
})
.finally(res => {
this.confirmLoading = false
})
} else {
this.confirmLoading = false
}
})
},
handleCancel() {
this.form.resetFields()
this.visible = false
}
}
}
</script>
<style lang="less" scoped>
.model-btn-list {
margin-bottom: 15px;
.btn {
margin-right: 6px;
&.ant-btn-primary {
color: #fff;
}
}
}
</style>

@ -33,7 +33,7 @@
</a-col>
</a-row>
<vxe-table :data="loadData.feeList" border :loading="loading" height="560px" empty-text="">
<vxe-table :data="loadData.feeList" border :loading="loading" height="540px" empty-text="">
<vxe-column
v-for="item in columns"
:key="`${item.dataIndex}3`"
@ -45,6 +45,14 @@
>
</vxe-column>
</vxe-table>
<a-row type="flex" justify="end">
<a-col :span="10">
<p :style="{ paddingTop: '5px', marginBottom: '-8px' }">
总金额币别(USB) {{ loadData.totalAmountUSD.toFixed(2) }} 币别(CNY)
{{ loadData.totalAmountCNY.toFixed(2) }}
</p>
</a-col>
</a-row>
</a-card>
</a-col>
<a-col :span="12">
@ -86,13 +94,9 @@
</template>
<script>
import { TaskManageGetInvoiceBillInfo } from '@/api/modular/main/taskmanage'
import addForm from './addForm.vue'
import editForm from './editForm.vue'
export default {
components: {
addForm,
editForm
},
components: {},
data() {
return {
// /

@ -0,0 +1,273 @@
<template>
<div>
<a-card :bordered="false" :bodyStyle="topstyle">
<span>下载附件</span>
</a-card>
<a-card :bordered="false">
<a-row type="flex" justify="space-around">
<a-col :span="11">
<a-row type="flex" class="CsBLTT" :gutter="16">
<a-col :span="8">
<div>提单号</div>
</a-col>
<a-col :span="8">
<div>开船日期</div>
</a-col>
<a-col :span="6">
<div>船名/航次</div>
</a-col>
</a-row>
<a-row type="flex" class="CsTable" :gutter="16">
<a-col :span="8">
<div>{{ loadData.bookingOrder.masterBlNo }}</div>
</a-col>
<a-col :span="8">
<div>{{ loadData.bookingOrder.etd }}</div>
</a-col>
<a-col :span="6">
<div>{{ loadData.bookingOrder.vessel }} / {{ loadData.bookingOrder.voyno }}</div>
</a-col>
</a-row>
</a-col>
<a-col :span="11">
<a-row type="flex" class="CsBLTT" :gutter="16">
<a-col :span="8">
<div>提示信息</div>
</a-col>
</a-row>
<a-row type="flex" :gutter="16">
<a-col :span="24">
<div class="CsPrompt">
<a-icon type="exclamation-circle" theme="filled" />
{{ loadData.taskPerBillBaseInfoDto.dongshengRecvReason }}
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<vxe-table :data="loadData.feeList" border :loading="loading" height="540px" empty-text="">
<vxe-column
v-for="item in columns"
:key="`${item.dataIndex}3`"
:field="item.dataIndex"
:min-width="item.width"
:title="item.title"
:align="item.align"
:show-overflow="true"
>
</vxe-column>
</vxe-table>
<a-row type="flex" justify="end">
<a-col :span="4">
<p :style="{ paddingTop: '5px', marginBottom: '-8px' }">
总金额 {{ loadData.taskPerBillBaseInfoDto.totalAmount.toFixed(2) }}
</p>
</a-col>
</a-row>
</a-card>
</div>
</template>
<script>
import { TaskManageGetTaskPerBillInfo } from '@/api/modular/main/taskmanage'
export default {
components: {},
data() {
return {
// /
advanced: false,
loading: false,
queryParam: {
currentPage: 1,
pageSize: 9999,
Type: 'booking_default_value'
},
columns: [
{
title: '序号',
align: 'center',
dataIndex: 'sortNo'
},
{
title: '费用项目',
align: 'center',
dataIndex: 'feeName'
},
{
title: '箱型',
align: 'center',
dataIndex: 'ctnall'
},
{
title: '币别',
align: 'center',
dataIndex: 'currency'
},
{
title: 'Tax',
align: 'center',
dataIndex: 'tax'
},
{
title: '数量',
align: 'center',
dataIndex: 'qty'
},
{
title: '单位',
align: 'center',
dataIndex: 'unit'
},
{
title: 'Rate',
align: 'center',
dataIndex: 'rate'
},
{
title: '金额',
align: 'center',
dataIndex: 'amount'
},
{
title: '账目金额',
align: 'center',
dataIndex: 'amountUSD'
}
],
columns2: [
{
title: '发送时间',
align: 'center',
dataIndex: 'sendTime'
},
{
title: '发送人',
align: 'center',
dataIndex: 'sendUserName'
},
{
title: '发送状态',
align: 'center',
dataIndex: 'stuatsName'
},
{
title: '结果信息',
align: 'center',
dataIndex: 'sendResult'
}
],
headerCellStyle: {
backgroundColor: '#fff',
borderBottom: '2px solid #797979'
},
topstyle: { 'margin-bottom': '10px' },
// Promise
loadData: [],
DisplayLoadData: [],
taskPKId: ''
}
},
created() {},
mounted() {
this.init()
},
methods: {
init() {
this.FnGetData()
},
FnGetData() {
this.loading = true
if (this.$route.query.taskPKId) {
this.taskPKId = this.$route.query.taskPKId
}
TaskManageGetTaskPerBillInfo({ taskPKId: this.taskPKId }).then(res => {
if (res.code == 200) {
console.log(res.data, 111111111111111)
this.loadData = res.data
} else {
this.loadData = []
this.$message.warning(res.message)
}
this.loading = false
})
},
FnQuery() {
let Rdata = []
this.loadData.forEach(item => {
if (item.fieldName.indexOf(this.queryParam.fieldName) > -1) {
Rdata.push(item)
}
})
this.DisplayLoadData = Rdata
},
FnReset() {
this.queryParam = {}
this.DisplayLoadData = this.loadData
},
confirm(e) {
this.FnDel(e)
},
FnDel(e) {
this.loadData.forEach((item, index) => {
if (item.field == e.field) {
this.loadData.splice(index, 1)
}
})
let configJson = [...this.loadData]
let data = { type: 'booking_default_value', configJson: JSON.stringify(configJson) }
DjyTenantConfigSave(data)
.then(res => {
if (res.success) {
this.$message.success('删除成功')
} else {
this.$message.error(`删除失败,${res.message}`)
}
})
.finally(res => {
this.confirmLoading = false
})
},
toggleAdvanced() {
this.advanced = !this.advanced
},
handleOk() {
this.FnGetData()
}
}
}
</script>
<style lang="less">
.CsBLTT {
border-bottom: 1px solid #797979;
}
.CsBRTT {
border-bottom: 1px solid #797979;
margin-bottom: 20px;
}
.vxe-table {
margin-top: 10px;
}
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
.Open {
}
.Close {
height: 45px;
overflow: hidden;
}
.CsTable {
font-weight: bold;
font-size: 16px;
}
.CsPrompt {
color: #e6c621;
font-size: 20px;
}
</style>
Loading…
Cancel
Save