jinhui.wang

订单详情修改,接口增加,退出修改菜单增加

import request from '@/utils/request'
/**
* 运单、口岸、站点、预审查看详情(CD类都有)
* @param id
* @param pageIndex
* @param pageSize
* @returns
*/
export function getConsInfo(data) {
return request({
url: '/bus-employees/chm/qry/staff/consInfo',
method: 'post',
data: data,
})
}
/**
* 申报日志查看C类
* @param {} data
* @returns
*/
export function getLogC(data) {
return request({
url: '/bus-customer/declared/list/conId',
method: 'post',
data: data,
})
}
/**
* 申报日志查看D类
* @param {} data
* @returns
*/
export function getLogD(data) {
return request({
url: '/bus-customer/consignment/back/info',
method: 'post',
data: data,
})
}
/**
* D类文件图片查询(右侧)
* @param id
* @param pageIndex
* @param pageSize
* @returns
*/
export function getAttachment(data) {
return request({
url: '/bus-employees/attachment/paged/query',
method: 'post',
data: data,
})
}
/**
* 获取汇率
* @returns
*/
export function getExchangeRate() {
return request({
url: '/manager-server/dicEntries/getExchangeRate',
method: 'get',
})
}
/**
* 获取文件
* @returns
*/
export function getFiles(data) {
return request({
url: '/manager-server/attachment/list/slipIdForPic',
method: 'post',
data: data,
})
}
/**
* 预审通过/不通过/保存
* {
"consignmentId":0,//运单id Long
"flag":1,//流程标志,2为保存,1为审批通过,0为审批不通过 Integer
"rejectRemark": "",//审批备注 String
"portPreAuditFlag":null, //口岸是否预审 String
"approvalTimeFirst":null ,//第一次审批时间 Data
"attachmentsList":[{
"id":0,
"name":"",//文件名
"rotateAngle":90,//顺时针旋转角度
"documentsCheck":1//预审中心的申报单证是否打勾/0=否,1=是
}]
}
* @returns
*/
// export function approval(data) {
// return request({
// url: '/bus-employees/rde/op/approval',
// method: 'post',
// data: data,
// })
// }
export function saveApproval(data) {
let formData = new FormData();
if (data.pic == null) {
formData.append("pic", null);
} else {
formData.append("pic", data.pic, data.info.origFileName);
}
formData.append("info", JSON.stringify(data.info));
return request({
url: '/bus-employees/rde/op/detail/save',
method: 'post',
data: formData,
})
}
/**
* 审批通过
*@param pic * 旋转附件
*@param info * 参数json
* @returns
*/
export function approved(data) {
let formData = new FormData();
if (data.pic == null) {
formData.append("pic", null);
} else {
formData.append("pic", data.pic, data.info.origFileName);
}
formData.append("info", JSON.stringify(data.info));
return request({
url: '/bus-employees/rde/op/approved',
method: 'post',
data: formData,
})
}
/**
* 审批不通过
*@param chmId * 运单id
*@param remark * 审批备注
* @returns
*/
export function approvalReject(data) {
return request({
url: '/bus-employees/rde/op/reject',
method: 'post',
data: data,
})
}
//委托书盖章
/**
* @param pic * 图片
* @param info * 其余参数
*/
export function rdeimgStamp(data) {
let formData = new FormData();
if (data.pic == null) {
formData.append("pic", null);
} else {
formData.append("pic", data.pic, data.info.origFileName);
}
formData.append("info", JSON.stringify(data.info));
return request({
url: '/bus-employees/rde/op/execute/stamp',
method: 'post',
data: formData,
})
}
// //委托书盖章
// /**
// * @param attachmentId * 附件id
// * @param pickUpCityId * 取件城市id
// * @param fileName * 文件名
// * @param consignmentId * 运单id
// * @param rotateAngle * 旋转角度
// */
// export function rdeimgStamp(data) {
// return request({
// url: '/bus-employees/rde/op/stamp',
// method: 'post',
// data: data
// })
// }
//撤销盖章
/**
* @param chmId * 运单id
*/
export function rdeimgRestamp(data) {
return request({
url: '/bus-employees/rde/op/cancel/stamp',
method: 'post',
data: data
})
}
// //撤销盖章
// /**
// * @param attachmentsPicDtoList * 附件表对象
// * @param consignmentId * 运单id
// */
// export function rdeimgRestamp(data) {
// return request({
// url: '/bus-employees/rde/op/stamp/retract',
// method: 'post',
// data: data
// })
// }
//下载清关文件
/**
* @param consignmentId * 运单id
*/
export function downloadEntryFiles(data) {
return request({
url: '/bus-employees/attachment/download/pdforzip/' + data.consignmentId,
method: 'get',
data: data
})
}
//下载清关文件
/**
* @param id * 运单id
* @param report * 0预览1打印
*/
export function rdeEntryFileView(data) {
return request({
url: '/bus-customer/pdf/print/report',
method: 'post',
data: data
})
}
//切换图片保存旋转
/**
* @param chmId * 运单id
* @param attachmentId * 附件id
* @param origFileName * 文件名去掉back_
* @param pic 附件流
*/
export function setImgRoate(data) {
let formData = new FormData();
if (data.pic != null) {
formData.append("pic", data.pic, data.info.origFileName);
} else {
formData.append('pic', null)
}
formData.append('info', JSON.stringify(data.info))
return request({
url: '/bus-employees/rde/op/revolve',
method: 'post',
data: formData
})
}
//图片选择状态保存
/**
* @param attachmentId * 附件id
* @param isDocumentCheck * 勾选状态
*/
export function setDocumentCheck(data) {
return request({
url: '/bus-employees/rde/op/select',
method: 'post',
data: data
})
}
//图片选择状态保存
/**
* @param id * 运单id
*/
export function getFileDataFromPort(data) {
return request({
url: '/bus-employees/port/op/paged/query',
method: 'post',
data: data
})
}
//图片选择状态保存
/**
* @param consignmentCode * 运单号
* @param consignmentId * 运单id
* @param list * {
* fileName
* fileSavePath
* fileSize
* selectTypeCode
* uploadTime
* uploadUser
* }
*/
export function saveImgFileTypeData(data) {
return request({
url: '/bus-employees/port/op/document/classify',
method: 'post',
data: data
})
}
\ No newline at end of file
import request from '@/utils/request'
//审批效验
//订单详情
/**
*/
export function check(data) {
export function getOrderDetailData(data) {
return request({
url: '/bus-employees/rde/op/approve/check',
method: 'post',
data: data
})
}
//审批
/**
*/
export function isApproval(data) {
return request({
url: '/bus-employees/rde/op/IsApproval',
method: 'post',
url: '/bus-customer/exportOrder/info/' + data.orderId,
method: 'get',
data: data
})
}
//查找是否有新的预审信息
//订单详情
/**
*/
export function getNewApprovalType(data) {
export function getOrderLogata(data) {
return request({
url: '/bus-employees/chmConsignmentApproveController/getSendPromptMessageInfo',
url: '/bus-customer/exportOrder/receipt/' + data.orderNo,
method: 'get',
data: data
})
......
......@@ -2,10 +2,18 @@ import request from '@/utils/request'
// 登录方法
export function login(loginName, password, rememberMe, equipmentType, userAgent, selectedLocale) {
// const data = {
// loginName,
// password,
// rememberMe
// }
const data = {
loginName,
password,
rememberMe
"email": "247908967@qq.com",
"name": "肖玉兰",
"phone": 18221643976,
"port": "TSN",
"purpleId": 6,
"role": 170
}
return request({
url: '/bus-customer/login',
......
......@@ -831,7 +831,7 @@ input:disabled {
.fedexDetialTable {
width: auto;
height: 100%;
// height: 100%;
position: relative;
.el-table::before {
......
<template>
<div>
<el-table :data="tableData" style="width: 100%" border height="220px">
<el-table-column prop="index" label="序号" width="80"></el-table-column>
<el-table-column prop="productNumber" label="企业商品编号" width="150"></el-table-column>
<el-table-column prop="productName" label="商品企业商品名称" width="180"></el-table-column>
<el-table-column prop="description" label="企业商品描述" width="150"></el-table-column>
<el-table-column prop="code" label="条码" width="150"></el-table-column>
<el-table-column prop="unit" label="计量单位" width="100">
<template slot-scope="scope">
<span>{{ scope.row.unit }}</span>
<i class="el-icon-top" style="margin-left: 5px;"></i>
</template>
</el-table-column>
<el-table-column prop="currency" label="币制" width="80"></el-table-column>
<el-table-column prop="quantity" label="数量" width="80"></el-table-column>
<el-table-column prop="unitPrice" label="单价" width="100"></el-table-column>
<el-table-column prop="totalPrice" label="总价" width="100"></el-table-column>
<el-table-column prop="notes" label="备注" width="300"></el-table-column>
<el-table-column label="操作" width="100" fixed="right">
<template slot-scope="scope">
<el-link type="primary" @click="handleExpand(scope.$index)">展开</el-link>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
name: "ProductDetailTable",
data() {
return {
tableData: [
{
index: 1,
productNumber: "6704200000",
productName: "真人发发夹",
description: "测试内容",
code: "485607096",
unit: "↑",
currency: "美元",
quantity: 1,
unitPrice: "645.78",
totalPrice: "645.78",
notes: "山东电子口岸已写,加签后上传"
},
{
index: 2,
productNumber: "6704200000",
productName: "真人发发夹",
description: "测试内容",
code: "2145860720",
unit: "↑",
currency: "美元",
quantity: 2,
unitPrice: "645.78",
totalPrice: "645.78",
notes: "山东电子口岸已写,加签后上传"
},
{
index: 3,
productNumber: "6704200000",
productName: "真人发发夹",
description: "测试内容",
code: "2145860720",
unit: "↑",
currency: "美元",
quantity: 3,
unitPrice: "645.78",
totalPrice: "645.78",
notes: "山东电子口岸已写,加签后上传"
},
{
index: 4,
productNumber: "6704200000",
productName: "真人发发夹",
description: "测试内容",
code: "2145860720",
unit: "↑",
currency: "美元",
quantity: 1,
unitPrice: "635.78",
totalPrice: "635.78",
notes: "山东电子口岸已写,加签后上传"
}
// 更多数据项...
]
};
},
methods: {
handleExpand(index) {
console.log(`展开第 ${index + 1} 行数据`);
}
}
}
</script>
<style scoped lang="scss">
.el-table {
font-size: 14px;
//border: 1px solid red;
//height: 180px;
overflow: auto;
}
.el-icon-top {
color: #409eff;
font-size: 12px;
}
</style>
<template>
<div>
<table class="custom-table">
<thead>
<tr>
<th v-for="(header, index) in headers" :key="index">{{ header }}</th>
<th v-if="showActionColumn">操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(row, index) in tableData" :key="index">
<td>{{ row.status }}</td>
<td>{{ row.time }}</td>
<td>{{ row.description }}</td>
<td v-if="showActionColumn">
<span class="action-link" @click="handleDownload(row, index)">
下载回执
</span>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
name: "ReceiptInfoTable",
props: {
// 控制操作列是否显示
showActionColumn: {
type: Boolean,
default: true, // 默认显示操作列
},
},
data() {
return {
headers: ["回执状态", "状态时间", "回执描述"],
tableData: [
{
status: "山东电子口岸已上传",
time: "2024-11-08 15:31:58",
description:
"订单变更申请报关单【f291cda6-f664-4bf5-8edc-bcc012f8775】单证不存在,不可报单申报,报文业务主键【24HX-11-40-3722960DYB】",
},
{
status: "山东电子口岸已上传",
time: "2024-11-08 15:31:58",
description: "山东电子口岸已上传",
},
{
status: "山东电子口岸已保存",
time: "2024-11-08 15:30:45",
description: "山东电子口岸已保存,加签后上传",
},
],
};
},
methods: {
// 处理点击下载回执的事件
handleDownload(row, index) {
console.log("下载回执触发:", row, index);
// 示例下载逻辑,可以根据实际需求添加下载操作
alert(`开始下载回执:第 ${index + 1} 行`);
},
},
};
</script>
<style scoped lang="scss">
.custom-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
table-layout: fixed;
background-color: white;
}
.custom-table th,
.custom-table td {
border: 1px solid #ccc;
padding: 8px 12px;
text-align: left;
word-wrap: break-word;
}
.custom-table thead {
background-color: #f5f5f5;
}
.custom-table th {
font-weight: bold;
}
.custom-table tr:nth-child(odd) {
background-color: #fafafa;
}
.action-link {
color: #409eff;
cursor: pointer;
text-decoration: none;
}
.action-link:hover {
text-decoration: underline;
}
</style>
......@@ -189,7 +189,7 @@ export default {
cancel: this.$t("system.close"),
}
).then(() => {
this.$store.dispatch("LogOut").then(() => {
this.$store.dispatch("FedLogOut").then(() => {
location.href = process.env.VUE_APP_BASE_LOGINOUT;
});
});
......
......@@ -90,7 +90,7 @@ export const constantRoutes = [
]
},
{
path: '/',
path: '/export',
component: Layout,
hidden: false,
redirect: 'index',
......@@ -106,6 +106,7 @@ export const constantRoutes = [
path: '/exportBillDetail',
component: (resolve) => require(['@/views/exportBillDetail/index'], resolve),
hidden: true,
name:'ExportBillDetail',
meta: { title: '出口订单详情', icon: '' },
},
{
......@@ -168,7 +169,7 @@ export const constantRoutes = [
]
},
{
path: '/',
path: '/summary',
component: Layout,
hidden: false,
redirect: 'index',
......@@ -188,6 +189,45 @@ export const constantRoutes = [
}
]
},
{
path: '/system',
component: Layout,
hidden: false,
redirect: 'index',
meta: { title: '系统管理', icon: 'fedexQueue' },
children: [
{
path: '/portConfig',
component: (resolve) => require(['@/views/portConfig/index'], resolve),
hidden: false,
meta: { title: '口岸信息管理', icon: '' }
},
{
path: '/userConfig',
component: (resolve) => require(['@/views/userConfig/index'], resolve),
hidden: false,
meta: { title: '客户管理', icon: '' }
},
{
path: '/passwordIpConfig',
component: (resolve) => require(['@/views/passwordIpConfig/index'], resolve),
hidden: false,
meta: { title: '密码机管理', icon: '' }
},
{
path: '/userRoleConfig',
component: (resolve) => require(['@/views/userRoleConfig/index'], resolve),
hidden: false,
meta: { title: '用户管理权限', icon: '' }
},
{
path: '/roleConfig',
component: (resolve) => require(['@/views/roleConfig/index'], resolve),
hidden: false,
meta: { title: '角色管理权限', icon: '' }
},
]
},
]
export default new Router({
......
<template>
<div
class="entrySreach"
style="overflow-y: auto"
v-loading="loadings.templateLoading"
>
<CustomForm
ref="auditionEntryForm"
:belongBizType="11"
type="auditionEntry"
:paginationOption="page"
@getFormOver="getFormOver"
@formSreach="formSreach"
@formChange="formChange"
/>
<div class="optionButton">
<!-- 审批通过 -->
<el-button
class="entrySaveButton"
size="small"
:loading="loadings.passThroughLoading"
:disabled="selected.length == 0 || loadings.noPass"
@click="examine(true)"
><svg-icon class="el-icon-user-solid" icon-class="fedexPass"></svg-icon>
{{ $t("audition.index.yapproval") }}</el-button
>
<!-- 审批不通过 -->
<el-button
class="entrySaveButton"
size="small"
:loading="loadings.noPass"
:disabled="selected.length == 0 || loadings.passThroughLoading"
@click="examine(false)"
><svg-icon
class="el-icon-user-solid"
icon-class="fedexRefuse"
></svg-icon>
{{ $t("audition.index.napproval") }}</el-button
>
<!-- 导出 -->
<el-button
class="entrySaveButton"
size="small"
:loading="loadings.downloadLoading"
:disabled="
tableData.length == 0 ||
loadings.tableLoading ||
loadings.passThroughLoading ||
loadings.noPass
"
@click="exportFile"
><svg-icon
class="el-icon-user-solid"
icon-class="fedexUpBlue"
></svg-icon>
{{ $t("system.download") }}</el-button
>
</div>
<CustomTable
class="fedexDetialTable fedexSreachTable"
ref="auditionEntryTable"
:belongBizType="11"
router=""
:tableData="tableData"
:tableHeader="headerData"
:totalCount="total"
:loading="loadings.tableLoading"
@sizeChange="sizeChange"
@currentChange="currentChange"
@tableFormChange="tableFormChange"
@tableSelect="tableSelect"
@selectChange="selectChange"
:page="{
pageNum: page.pageIndex,
sizes: [20, 30, 50, 100],
pageSize: page.pageSize,
layout: 'total,prev, pager, next, jumper, ->, sizes',
}"
:tableOption="{
select: true,
selectFixed: tablefixed ? 'left' : false,
order: false,
orderFixed: false,
indexType: false,
tableHeight: tableMaxheight,
maxHeight: tableMaxheight,
tableBorder: true,
showHeader: true,
fit: true,
highlightCurrentRow: true,
emptyText: $t('system.empty'),
pagination: true,
}"
>
<template slot="optionColumn">
<!-- 操作 -->
<el-table-column
header-align="center"
align="center"
width="80"
:label="$t('system.option')"
:fixed="tablefixed ? 'right' : false"
>
<template slot-scope="scope">
<!-- 查看 -->
<el-button
type="text"
class="text-line"
@click.native="options({ status: 0, data: scope.row })"
>
{{ $t("system.view") }}
</el-button>
</template>
</el-table-column>
</template>
</CustomTable>
</div>
</template>
<script>
import { encrypt } from "@/utils/jsencrypt";
import {
check,
isApproval,
getNewApprovalType,
} from "@/api/auditionEntry-api.js";
export default {
name: "AuditionEntrySearch",
components: {},
data() {
return {
tableData: [], //运单数据
headerData: [], //表头
conditionData: {},
nowConditionData: null,
page: {
pageIndex: 1,
pageSize: 20,
},
total: 0, //数据总和
tableMaxheight: null, //表格最大高
loadings: {
templateLoading: false,
tableLoading: false, //表格loading
passThroughLoading: false,
noPass: false,
downloadLoading: false,
},
selected: [],
checkCell: null,
status: 0,
checkEntry: null,
tablefixed: false,
};
},
created() {
this.loadings.templateLoading = true;
// this.setDict();
},
mounted() {
this.tableMaxheight =
window.innerHeight -
Number(this.$refs.auditionEntryForm.$el.offsetHeight) -
250;
if (this.$store.getters.userData.rde_Type) {
this.checkNewEntry();
}
},
activated() {
if (this.status == 1) {
// this.setDict();
this.$refs.auditionEntryForm.sreach(1, this.conditionData);
}
if (this.$store.getters.userData.rde_Type) {
this.checkNewEntry();
}
},
beforeDestroy() {
this.clearCheckEntry(1);
},
watch: {
$route: {
handler(val) {
if (val.path != "/emp_auditionEntry_parent/emp_auditionEntrySearch") {
this.clearCheckEntry(1);
}
},
deep: true,
},
},
methods: {
//查询
formSreach(val) {
this.clearCheckEntry(0);
if (val != "error") {
this.selected = [];
this.tableData = val.responseData.tableData;
this.headerData = val.responseData.tableHead;
this.total = val.responseData.total;
val.conditionData != null
? (this.conditionData = val.conditionData)
: "";
this.headerData.forEach((item) => {
//审批备注
if (item.prop == "rejectRemark") {
item.formType = "input";
item.length = "650";
}
//pek复审
// else if (item.prop == "pekReviewFlag") {
// item.formType = "select";
// item.dicyName = "siteAssistance";
// item.dictKey = "name";
// }
});
}
this.loadings.tableLoading = false;
if (this.tableData.length > 0) {
this.status = 1;
}
this.loadings.templateLoading = false;
this.tableFixedTypeChange(
document.getElementsByClassName("el-table__body-wrapper")
).then((type) => {
this.tablefixed = type;
});
},
//批量审批通过/不通过
examine(status) {
this.clearCheckEntry(0);
let chmConsignmentIds = [];
let chmRejectRemarkList = [];
let chmConsignmentList = [];
let errorConsignment = [];
this.selected.forEach((item, index) => {
item.rejectRemark = item.rejectRemark == null ? "" : item.rejectRemark;
if (!status && item.rejectRemark == "") {
errorConsignment.push(item.consignmentCode);
this.tableData[item.index].rejectRemark = "";
}
item.id = item.chmId;
chmConsignmentIds[index] = item.chmId;
chmRejectRemarkList[index] = item.rejectRemark;
item.siteAssistance = null;
item.siteAssistanceDicId = null;
chmConsignmentList[index] = item;
});
if (errorConsignment.length != 0) {
this.alertErrorMsg(
this.$t("audition.index.tip1", { a: errorConsignment })
);
} else {
if (status) {
this.loadings.passThroughLoading = true;
} else {
this.loadings.noPass = true;
}
return new Promise((resolve, reject) => {
chmRejectRemarkList.push("end");
let obj = {
chmConsignmentIds: chmConsignmentIds,
chmRejectRemarkList: chmRejectRemarkList,
isApprove: status,
};
check(obj)
.then((res) => {
if (res.code === "200" && res.data.extra == "") {
//走审批接口
let obj = {
chmConsignmentIds: chmConsignmentIds,
chmConsignmentList: chmConsignmentList,
isApprove: status,
};
isApproval(obj)
.then((res) => {
if (res.code != "200") {
this.alertWarningMsg(res.message).then(() => {
// this.tableData.forEach((item) => {
// if (chmConsignmentIds.includes(item.chmId)) {
// item.rejectRemark = "";
// }
// });
});
} else {
this.msgSuccess(res.data.extra.successMsg);
this.getFormOver();
}
this.loadings.passThroughLoading = false;
this.loadings.noPass = false;
})
.catch((err) => {
this.loadings.passThroughLoading = false;
this.loadings.noPass = false;
console.log(err);
reject();
});
} else if (res.code === "200") {
this.alertErrorMsg(res.data.extra).then(() => {
// this.tableData.forEach((item) => {
// if (chmConsignmentIds.includes(item.chmId)) {
// item.rejectRemark = "";
// }
// });
});
reject();
this.loadings.passThroughLoading = false;
this.loadings.noPass = false;
} else {
this.alertErrorMsg(res.data.extra).then(() => {
// this.tableData.forEach((item) => {
// if (chmConsignmentIds.includes(item.chmId)) {
// item.rejectRemark = "";
// }
// });
});
this.loadings.passThroughLoading = false;
this.loadings.noPass = false;
reject();
}
})
.catch((err) => {
this.loadings.passThroughLoading = false;
this.loadings.noPass = false;
console.log(err);
reject();
});
});
}
},
//根据查询条件导出
exportFile() {
this.$store.dispatch("SetLoadingType", {
type: true,
text: this.$t("system.downloadingTip"),
});
this.alertWarningMsg(this.$t("system.downloadTip"));
this.clearCheckEntry(1);
this.loadings.downloadLoading = true;
let exportSign =
new Date().getTime() + "_" + this.$store.getters.userData.id + "_14";
let obj = {
belongBizType: 11,
condition: this.conditionData,
total: this.total,
exportSign: exportSign,
};
this.fileDownload
.formSubmitDownload(
"customDownloadXls",
"post",
[{ key: "downloadSreachData", value: JSON.stringify(obj) }],
exportSign
)
.finally(() => {
setTimeout(() => {
this.loadings.downloadLoading = false;
this.$store.dispatch("SetLoadingType", {
type: false,
text: "",
});
}, 1000);
});
},
//分页
currentChange(val) {
this.page.pageIndex = val.page;
this.getFormOver();
},
sizeChange(val) {
this.page.pageSize = val;
this.getFormOver();
},
//table选择变更
tableSelect(selection) {
this.selected = selection.selection;
this.clearCheckEntry(0);
},
inputblur() {
this.checkCell.cell.classList.remove("activeTableCell");
this.checkCell = null;
},
tableCellClick(val) {
if (this.checkCell != null) {
this.inputblur();
}
this.$nextTick(() => {
if (val.column.property == "rejectRemark") {
val.cell.classList.add("activeTableCell");
document
.getElementsByClassName("activeTableCell")[0]
.getElementsByClassName("el-input")[0]
.__vue__.focus();
//这里存下整个单元格,方便取其他值
this.checkCell = val;
this.clearCheckEntry(0);
}
});
},
//字典表添加
setDict() {
let arr = [
"examinePort",
"dictEnties:scanCodePickup",
"dictEnties:yesOrNo",
"dictEnties:receiptState",
"dictEnties:H2000Account",
"dictEnties:transferWaybillStatus_4_2",
"dictEnties:siteAssistance",
"dictEnties:transferWaybillStatus_8_2",
"dictEnties:port",
"dictEnties:OSPRStatus",
"dictEnties:stampIsSeal",
"dictEnties:imageTaskStatus",
"dictEnties:uploadFileStatus",
"dictEnties:waybillPrintingStatus",
"dictEnties:siteAssistance",
];
arr.forEach((item) => {
this.$store.dispatch("GetDictData", item);
});
},
//操作
options(val) {
this.clearCheckEntry(1);
if (val.status == 0) {
this.$store.dispatch("delEntry");
this.$store.getters.visitedViews.forEach((item) => {
if (item.path == "/auditionEntrySearch") {
this.$store.dispatch("tagsView/delView", item);
}
});
new Promise((resolve, reject) => {
this.sreachEntryLock(val.data.chmId, 0)
.then((res) => {
resolve();
// if (res.code === "41084" && val.data.consStatus == "待中心审核") {
// this.alertWarningMsg(this.$t("audition.index.alert1"));
// } else {
// }
})
.catch(() => {
if (val.data.consStatus == "待中心审核") {
this.alertWarningMsg(this.$t("audition.index.alert1"));
} else {
resolve();
}
});
}).then(() => {
if (val.data.consType == "C") {
this.$router.push({
name: "DeclarationDetailsC",
params: {
consignmentCode: val.data.consignmentCode,
id: encrypt(val.data.chmId.toString()),
from: "audition",
},
});
} else {
this.$router.push({
name: "DeclarationDetails",
params: {
consignmentCode: val.data.consignmentCode,
id: encrypt(val.data.chmId.toString()),
from: "audition",
},
});
}
});
}
},
getFormOver(val) {
this.clearCheckEntry(0);
this.$nextTick(() => {
if (this.status == 1) {
this.$refs.auditionEntryForm.sreach(1, this.conditionData);
}
});
},
formChange() {
this.clearCheckEntry(0);
},
tableFormChange(val) {
this.clearCheckEntry(0);
},
selectChange(selection) {
this.selected = selection;
this.clearCheckEntry(0);
},
//检测是否有新预审运单并提示
checkNewEntry() {
clearTimeout(this.checkEntry);
if (window.Notification) {
return new Promise((resolve, reject) => {
this.checkEntry = setTimeout(() => {
getNewApprovalType()
.then((res) => {
if (res.code === 200) {
if (res.data.currentRDEApprovalCount > 0) {
this.promptMessage("open");
this.sendNotificationHandler(
this.$t("system.tip"),
this.$t("audition.index.tip2")
).then((val) => {
this.checkNewEntry();
});
resolve();
} else {
this.checkNewEntry();
}
} else {
this.clearCheckEntry(0);
reject();
}
})
.catch((err) => {
console.log(err);
this.clearCheckEntry(1);
reject();
});
}, 60000);
});
}
},
clearCheckEntry(val) {
clearTimeout(this.checkEntry);
this.promptMessage("close");
if (this.$store.getters.userData.rde_Type && val == 0) {
this.checkNewEntry();
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/styles/variables.scss";
.entrySreach {
height: 100%;
background-color: $menuLightBg;
.entrySaveButton {
margin-left: 8px;
}
.entrySreachButton {
display: inline-block;
font-size: 20px;
color: $subMenuHover !important;
}
.backgroundRow {
background-color: $formItemBackgroundColor;
}
}
.optionButton {
width: 100%;
padding: 10px 15px;
text-align: right;
.el-button {
color: $fedexButton;
border-color: $fedexButton !important;
svg {
display: inline-block;
margin-right: 5px;
fill: $fedexButton;
}
}
.entrySaveButton:hover,
.entrySaveButton:focus {
color: $menuLightBg !important;
background-color: $fedexButton !important;
}
}
.cellInput {
display: none;
}
.text-line {
text-decoration: underline;
}
::v-deep .el-input__inner {
border: 0px;
box-shadow: 0 0 0 0px;
background: none;
}
</style>
<template>
<Table
class="fedexDetialTable fedexTableBlack tableHeightAuto bodyTable"
:data="tableData"
:headerData="bodyHeader"
:order="true"
:border="false"
:pagination="false"
:pageSizes="[20, 30, 50, 100]"
noLabel="序号"
rowKey="index"
emptyText="暂无数据"
:rowStyleType="true"
:rowStyleOption="{
key: 'isError',
value: 1,
className: 'tableErrorRow',
}"
:expandRowKeys="expandRowKeys"
>
<template slot="optionColumn">
<el-table-column
header-align="center"
align="center"
label="操作"
width="120"
>
<template slot-scope="scope">
<!-- 展开/收起 -->
<el-button
type="text"
@click="
expandRowKeys.includes(scope.row.index)
? closeEdit()
: editDetail(scope.row)
"
>
<!-- 收起 -->
<span v-show="expandRowKeys.includes(scope.row.index)">
<svg-icon icon-class="upIcon" />
{{ $t("entry.detial.form.up") }}
</span>
<!-- 展开 -->
<span v-show="!expandRowKeys.includes(scope.row.index)"
><svg-icon icon-class="downIcon" />
{{ $t("entry.detial.form.down") }}
</span>
</el-button>
</template>
</el-table-column>
</template>
</Table>
</template>
<script>
export default {
props: {
tableData: {
type: Array,
default() {
return [];
},
},
bodyHeader: {
type: Array,
default() {
return [];
},
},
},
data() {
return {
expandRowKeys: [],
};
},
methods: {},
};
</script>
<style scoped lang="scss">
.fedexDetialTable {
max-height: 310px;
}
</style>
<template>
<Table
class="fedexDetialTable fedexTableBlack tableHeightAuto bodyTable"
ref="entryTable"
:data="tableData"
:headerData="headerData"
:maxHeight="300"
:border="false"
:pagination="false"
:order="false"
:page="1"
:pageSizes="[20, 30, 50, 100]"
:totalCount="0"
:selection="false"
:selectFixed="false"
:rowSelectDataType="false"
></Table>
</template>
<script>
export default {
name: "ReceiptInfoTable",
props: {
tableData: {
type: Array,
default() {
return [];
},
},
headerData: {
type: Array,
default() {
return [
{
name: "回执状态",
value: "",
width: "",
align: "left",
},
{
name: "状态时间",
value: "",
width: "",
align: "left",
},
{
name: "回执描述",
value: "",
width: "",
align: "left",
},
];
},
},
},
data() {
return {};
},
methods: {},
};
</script>
<style scoped lang="scss">
.fedexDetialTable {
max-height: 310px;
}
</style>
<template>
<!-- 表体 -->
<Table
class="fedexDetialTable"
:data="tableData"
:headerData="headerData"
@rowClick="rowClick"
maxHeight="300px"
:order="false"
:border="false"
:pagination="false"
:pageSizes="[20, 30, 50, 100]"
:highlightCurrentRow="false"
>
<template v-slot:skuCode="scope">
<el-tooltip
class="item"
effect="dark"
:content="scope.row.model"
placement="right"
>
<span>{{ scope.row.skuCode }}</span>
</el-tooltip>
</template>
<template v-slot:knockdownNumber="scope">
<span
>{{ scope.row.knockdownNumber | clearNull }}
{{ scope.row.knockdownUnit | clearNull }}</span
>
</template>
<template v-slot:qtyLegalFirst="scope">
<span
>{{ scope.row.qtyLegalFirst | clearNull }}
{{ scope.row.unitLegalFirst | clearNull }}</span
>
</template>
<template v-slot:qtyLegalSecond="scope">
<span
>{{ scope.row.qtyLegalSecond | clearNull }}
{{ scope.row.unitLegalSecond | clearNull }}</span
>
</template>
<template v-slot:amount="scope">
<span
>{{ scope.row.amount | clearNull }}
{{ scope.row.currency | clearNull }}</span
>
</template>
</Table>
</template>
<script>
export default {
props: {
tableData: {
type: Array,
default: null,
},
headerData: {
type: Array,
default: null,
},
activeDetial: {
type: Object,
default: null,
},
dictData: {
type: Object,
default: null,
},
},
data() {
return {
formData: this.activeDetial,
expandRowKeys: [],
unit: [],
levyType: [],
currency: [],
country: [],
};
},
watch: {
activeDetial(val) {
if (val == null) {
this.expandRowKeys = [];
}
this.formData = val;
},
detialsData(val) {
this.tableData = val;
},
},
methods: {
rowClick(val) {
this.$emit("rowClick", val);
},
},
filters: {
clearNull(value) {
if (value == null) {
return "";
} else {
return value;
}
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-table tr {
background-color: #f2f2f2 !important;
border: 0;
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #f2f2f2 !important;
}
</style>
<template>
<el-dialog
:title="$t('declaration.indexD.dialogTitle')"
:visible="bodyDialogVisible"
width="65%"
center
@close="closeDialog"
@open="openDialog"
>
<!-- 表头 -->
<el-form
class="fedexFormStyle"
ref="bodyDialogForm"
v-loading="dialogLoading"
:model="formInfo"
label-position="top"
:disabled="disabled"
>
<el-row :gutter="5">
<!-- 中文品名 -->
<el-col :span="8">
<Formitem
:label="$t('entry.detial.form.label1')"
:type="type"
prop="inputItem"
:disabled="false"
>
<el-input
type="text"
:id="'inputInner-' + type + '-inputItem'"
v-model="formInfo.inputItem"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 商品编号 -->
<el-col :span="8">
<Formitem
:label="$t('entry.detial.form.label3')"
:type="type"
prop="skuCode"
:disabled="false"
>
<el-input
type="text"
:id="'inputInner-' + type + '-skuCode'"
v-model="formInfo.skuCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 商品名称 -->
<el-col :span="8">
<Formitem
:label="$t('entry.skuCodeDialog.table.label2')"
:type="type"
prop="skuName"
:disabled="false"
>
<el-input
type="text"
:id="'inputInner-' + type + '-skuName'"
v-model="formInfo.skuName"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5" v-for="(rowItem, idx) in rowList" :key="idx">
<el-col :span="6" v-for="(item, index) in rowItem" :key="index">
<Formitem :label="item.element" :prop="item.key" :disabled="false">
<el-input
v-if="
item.element != '品牌类型' && item.element != '出口享惠情况'
"
type="text"
:id="'inputInner--' + item.key"
v-model="elementForm[item.key]"
></el-input>
<el-select
v-else-if="item.element == '品牌类型'"
:id="'inputInner--' + item.key"
v-model="elementForm[item.key]"
placeholder=""
>
<el-option
v-for="(val, idx) in dictData.brandType"
:key="idx"
:label="val.name"
:value="val.code"
></el-option>
</el-select>
<el-select
v-else-if="item.element == '出口享惠情况'"
:id="'inputInner--' + item.key"
v-model="elementForm[item.key]"
placeholder=""
>
<el-option
v-for="(val, idx) in dictData.exportBenefits"
:key="idx"
:label="val.name"
:value="val.code"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
</el-form>
</el-dialog>
</template>
<script>
import { getHscode } from "@/api/detial-api.js";
export default {
props: {
formInfo: {
type: Object,
default: null,
},
dictData: {
type: Object,
default: null,
},
bodyDialogVisible: {
type: Boolean,
default: null,
},
disabled: {
type: Boolean,
default() {
return false;
},
},
type: {
type: String,
default: "",
},
},
data() {
return {
visible: this.bodyDialogVisible,
dialogLoading: false,
rowList: [],
elementForm: {
element0: "",
element1: "",
element2: "",
element3: "",
element4: "",
element5: "",
element6: "",
element7: "",
element8: "",
element9: "",
element10: "",
element11: "",
element12: "",
element13: "",
element14: "",
element15: "",
element16: "",
element17: "",
element18: "",
element19: "",
element20: "",
},
};
},
watch: {},
methods: {
inputItemBlur(val) {
this.$emit("inputItemBlur", this.activeDetial);
},
closeDialog() {
(this.elementForm = {
element0: "",
element1: "",
element2: "",
element3: "",
element4: "",
element5: "",
element6: "",
element7: "",
element8: "",
element9: "",
element10: "",
element11: "",
element12: "",
element13: "",
element14: "",
element15: "",
element16: "",
element17: "",
element18: "",
element19: "",
element20: "",
}),
(this.rowList = []);
this.visible = false;
this.$emit("closeDialog", this.visible);
},
openDialog() {
this.dialogLoading = true;
let arr = this.formInfo.model.split("|");
arr.forEach((item, index) => {
if (item.split(":")[0] != "品名") {
if (item.split(":")[0] == "品牌类型") {
this.elementForm[`element${index}`] = item.split(":")[1]
? "brandType_" + item.split(":")[1]
: "";
} else if (item.split(":")[0] == "出口享惠情况") {
this.elementForm[`element${index}`] = item.split(":")[1]
? "exportBenefits_" + item.split(":")[1]
: "";
} else {
this.elementForm[`element${index}`] = item.split(":")[1]
? item.split(":")[1]
: "";
}
}
});
return new Promise((resolve, reject) => {
getHscode({
condition: this.formInfo.skuCode,
pageIndex: 1,
pageSize: 20,
})
.then((res) => {
if (res.code === "200") {
this.rowList = []
let codeInfo = res.data.extra.hsCodes;
let elementList = this.hscodeElementInfo(codeInfo[0]);
let elementItem = [];
let arr = [];
elementList.forEach((item, index) => {
if (item.element != "品名") {
if (elementItem.length < 4) {
elementItem.push(item);
if (index == elementList.length - 1) {
arr.push(elementItem);
// this.rowList.push(elementItem);
elementItem = [];
}
} else {
// this.rowList.push(elementItem);
arr.push(elementItem);
elementItem = [];
if (index == elementList.length - 1) {
elementItem.push(item);
// this.rowList.push(elementItem);
arr.push(elementItem);
} else {
elementItem.push(item);
}
}
}
});
this.rowList = arr;
this.dialogLoading = false;
resolve();
} else {
this.alertWarningMsg(res.message);
reject();
}
})
.catch((err) => {
reject();
});
});
},
},
filters: {
clearNull(value) {
if (value == null) {
return "";
} else {
return value;
}
},
},
};
</script>
<template>
<!-- 表头 -->
<el-form
class="fedexFormStyle mt10"
ref="companyForm"
:model="headData"
label-position="top"
:disabled="disabled"
>
<el-row :gutter="5">
<!-- 运单号 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('netrySreach.table.label1')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="consignmentCode"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-consignmentCode'"
v-model="headData.consignmentCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 运单类型 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('netrySreach.table.label2')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="consTypeDicId"
@event="formItemEvent"
>
<el-select
name="consTypeDicId"
:id="'inputInner-' + type + '-consTypeDicId'"
v-model="headData.consTypeDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.consType"
:key="index"
:label="item.name | entryClass"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 境外收货人名称(外文) -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label9')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="label9"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-label9'"
v-model="headData.overseasConsignorFnCname"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 境外收货人编码 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label10')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="label10"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-label10'"
v-model="headData.overseasConsignorCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- </el-row>
<el-row :gutter="5"> -->
<!-- 生产销售单位 -->
<el-col :span="showHelf ? 12 : 6">
<Formitem
:label="$t('entry.company.form.label6')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="ownerName"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-ownerName'"
v-model="headData.ownerName"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 生产销售单位海关备案编码 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('declaration.indexD.headForm.label1')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="ownerCode"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-ownerCode'"
v-model="headData.ownerCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 生产销售单位统一社会信用代码 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('declaration.indexD.headForm.label2')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="ownerCodeScc"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-ownerCodeScc'"
v-model="headData.ownerCodeScc"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 境内发货人 -->
<el-col :span="showHelf ? 12 : 6">
<Formitem
:label="$t('entry.company.form.label2')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="operateUnitName"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-operateUnitName'"
v-model="headData.operateUnitName"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 境内发货人海关备案编码 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('declaration.indexD.headForm.label3')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="operateUnitCode"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-operateUnitCode'"
v-model="headData.operateUnitCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 境内发货人统一社会信用代码 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('declaration.indexD.headForm.label4')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="tradeCoSCC"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-tradeCoSCC'"
v-model="headData.tradeCoSCC"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- </el-row>
<el-row :gutter="5"> -->
<!-- 运输方式 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label11')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="vehicleWayId"
@event="formItemEvent"
>
<el-select
:id="'inputInner-' + type + '-vehicleWayId'"
v-model="headData.vehicleWayId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.VehicleWayCode"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 贸易国(地区) -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label12')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="tradeAreaCodeDicId"
@event="formItemEvent"
>
<el-select
name="tradeAreaCode"
:id="'inputInner-' + type + '-tradeAreaCodeDicId'"
v-model="headData.tradeAreaCodeDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.Country"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 抵运国(地区) -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label13')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="fromCountryDicId"
@event="formItemEvent"
>
<el-select
name="fromCountry"
:id="'inputInner-' + type + '-fromCountryDicId'"
v-model="headData.fromCountryDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.Country"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 指运港 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label14')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="throughStopPortDicId"
@event="formItemEvent"
>
<el-select
name="throughStopPort"
:id="'inputInner-' + type + '-throughStopPortDicId'"
v-model="headData.throughStopPortDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.port"
:key="index"
:label="item.portName"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 包装种类 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label15')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="packageTypeDicId"
@event="formItemEvent"
>
<el-select
name="packageType"
:id="'inputInner-' + type + '-packageTypeDicId'"
v-model="headData.packageTypeDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.NewPackageType"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 运单件数 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label16')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="counts"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-counts'"
v-model="headData.counts"
maxlength="15"
@blur="inputItemBlur"
/>
</Formitem>
</el-col>
<!-- 毛重(公斤) -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label17')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="grossWeight"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-grossWeight'"
v-model="headData.grossWeight"
maxlength="15"
@blur="inputItemBlur"
/>
</Formitem>
</el-col>
<!-- 净重(公斤) -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label18')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="netWeight"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-netWeight'"
v-model="headData.netWeight"
maxlength="15"
@blur="inputItemBlur"
/>
</Formitem>
</el-col>
<!-- </el-row>
<el-row :gutter="5"> -->
<!-- 监管方式 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label19')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="tradeModeDicId"
@event="formItemEvent"
>
<el-select
name="tradeMode"
:id="'inputInner-' + type + '-tradeModeDicId'"
v-model="headData.tradeModeDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.supervisionMode"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 征免性质 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label21')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="taxNatureDicId"
@event="formItemEvent"
>
<el-select
name="taxNature"
:id="'inputInner-' + type + '-taxNatureDicId'"
v-model="headData.taxNatureDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.natureExemption"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
<!-- 关联进口报关单号 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label20')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="relatedDeclarationNo"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-relatedDeclarationNo'"
v-model="headData.relatedDeclarationNo"
maxlength="18"
@blur="formChange"
/>
</Formitem>
</el-col>
<!-- 成交方式 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label22')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="dealModeDicId"
@event="formItemEvent"
>
<el-select
name="dealMode"
:id="'inputInner-' + type + '-dealModeDicId'"
v-model="headData.dealModeDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.ClinchType"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 运费 -->
<el-col :span="showHelf ? 6 : 3">
<el-row :gutter="3">
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<Formitem
:label="$t('entry.company.form.label23')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="transRateDicCode"
@event="formItemEvent"
>
<el-select
name="transRate"
:id="'inputInner-' + type + '-transRateDicCode'"
v-model="headData.transRateDicCode"
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.ENTRY_METHOD"
:key="index"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<el-form-item
:class="{
'formItem-justItem':
headData.transRateDicCode == '3' ? true : false,
}"
>
<Formitem
v-show="headData.transRateDicCode == '3'"
:label="$t('entry.company.form.label24')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="transCurrencyDicId"
@event="formItemEvent"
>
<el-select
name="transCurrencyDic"
:id="'inputInner-' + type + '-transCurrencyDicId'"
v-model="headData.transCurrencyDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.currencySystem"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
<Formitem
:label="
headData.transRateDicCode == '1'
? '%'
: headData.transRateDicCode == '3'
? $t('entry.company.form.label25')
: ''
"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="transCost"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-transCost'"
maxlength="15"
v-model="headData.transCost"
@blur="inputItemBlur"
/>
</Formitem>
</el-form-item>
</el-col>
</el-row>
</el-col>
<!-- 保费 -->
<el-col :span="showHelf ? 6 : 3">
<el-row :gutter="3">
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<Formitem
:label="$t('entry.company.form.label26')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="insuranceRateDicCode"
@event="formItemEvent"
>
<el-select
name="insuranceRate"
:id="'inputInner-' + type + '-insuranceRateDicCode'"
v-model="headData.insuranceRateDicCode"
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.ENTRY_METHOD"
:key="index"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<el-form-item
:class="{
'formItem-justItem':
headData.insuranceRateDicCode == '3' ? true : false,
}"
>
<Formitem
v-show="headData.insuranceRateDicCode == '3'"
:label="$t('entry.company.form.label24')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="insuranceCostCurrencyDicId"
@event="formItemEvent"
>
<el-select
name="insuranceCostCurrency"
:id="'inputInner-' + type + '-insuranceCostCurrencyDicId'"
v-model="headData.insuranceCostCurrencyDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.currencySystem"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
<Formitem
:label="
headData.insuranceRateDicCode == '1'
? '%'
: headData.insuranceRateDicCode == '3'
? $t('entry.company.form.label27')
: ''
"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="insuranceCost"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-insuranceCost'"
maxlength="15"
v-model="headData.insuranceCost"
@blur="inputItemBlur"
/>
</Formitem>
</el-form-item>
</el-col>
</el-row>
</el-col>
<!-- 杂费 -->
<el-col :span="showHelf ? 6 : 3">
<el-row :gutter="3">
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<Formitem
:label="$t('entry.company.form.label28')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="otherRateDicCode"
@event="formItemEvent"
>
<el-select
name="otherRate"
:id="'inputInner-' + type + '-otherRateDicCode'"
clearable
v-model="headData.otherRateDicCode"
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.ENTRY_METHOD"
:key="index"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :xl="12" :lg="12" :md="12" :sm="12" :xs="12">
<el-form-item
:class="{
'formItem-justItem':
headData.otherRateDicCode == '3' ? true : false,
}"
>
<Formitem
v-show="headData.otherRateDicCode == '3'"
:label="$t('entry.company.form.label24')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="otherCurrencyDicId"
@event="formItemEvent"
>
<el-select
name="otherCurrency"
:id="'inputInner-' + type + '-otherCurrencyDicId'"
v-model="headData.otherCurrencyDicId"
filterable
placeholder=""
value-key="id"
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.currencySystem"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
<Formitem
:label="
headData.otherRateDicCode == '1'
? '%'
: headData.otherRateDicCode == '3'
? $t('entry.company.form.label29')
: ''
"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="otherCost"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-otherCost'"
v-model="headData.otherCost"
maxlength="15"
@blur="inputItemBlur"
/>
</Formitem>
</el-form-item>
</el-col>
</el-row>
</el-col>
<!-- 合同协议号 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label30')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="contractCode"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-contractCode'"
v-model="headData.contractCode"
@blur="inputItemBlur"
/>
</Formitem>
</el-col>
<!-- </el-row>
<el-row :gutter="5"> -->
<!-- 许可证号 -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.company.form.label31')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="licenseCode"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-licenseCode'"
v-model="headData.licenseCode"
@blur="inputItemBlur"
></el-input>
</Formitem>
</el-col>
<!-- 随附单证及编号 -->
<el-col :span="showHelf ? 18 : 9">
<Formitem
:label="$t('entry.company.form.label34')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="slip"
@event="formItemEvent"
>
<el-tooltip
placement="top"
:disabled="headData.slip == null || headData.slip == ''"
:content="headData.slip"
>
<el-input
type="text"
:id="'inputInner-' + type + '-slip'"
v-model="headData.slip"
@blur="inputItemBlur"
></el-input>
</el-tooltip>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 备注 -->
<el-col :span="showHelf ? 24 : 12">
<Formitem
:label="$t('entry.company.form.label32')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="remark"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-remark'"
v-model="headData.remark"
@blur="inputItemBlur"
/>
</Formitem>
</el-col>
<!-- </el-row>
<el-row :gutter="5"> -->
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.upload.label2')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="contacts"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-contacts'"
v-model="headData.contacts"
@blur="inputItemBlur"
>
</el-input>
</Formitem>
</el-col>
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.upload.label3')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="contactInformation"
@event="formItemEvent"
>
<el-input
type="text"
:id="'inputInner-' + type + '-contactInformation'"
v-model="headData.contactInformation"
maxlength="11"
@blur="inputItemBlur"
>
</el-input>
</Formitem>
</el-col>
<el-col :span="showHelf ? 6 : 3">
<Formitem
:label="$t('entry.upload.label4')"
:type="type"
:disabled="false"
:toolyipShow="true"
prop="pickUpCityId"
@event="formItemEvent"
>
<el-select
ref="pickUpCity"
name="pickUpCity"
:id="'inputInner-' + type + '-pickUpCityId'"
v-model="headData.pickUpCityId"
filterable
placeholder=""
@change="inputItemBlur"
>
<el-option
v-for="(item, index) in dictData.pickUpCity"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
</el-form>
</template>
<script>
export default {
props: {
entryInfo: {
type: Object,
default: null,
},
headData: {
type: Object,
default: null,
},
activeDetial: {
type: Object,
default: null,
},
dictData: {
type: Object,
default: null,
},
disabled: {
type: Boolean,
default() {
return false;
},
},
type: {
type: String,
default: "",
},
showHelf: {
type: Boolean,
default() {
return true;
},
},
},
data() {
return {
tableData: this.detialsData,
headerData: [
{
name: "",
value: "expand",
width: "1",
align: "left",
expand: true,
fixed: false,
},
{
name: this.$t("entry.detial.table.label1"), //商品序号
value: "gno",
width: "",
align: "left",
},
{
name: this.$t("entry.detial.table.label2"), //中文品名
value: "inputItem",
width: "",
align: "left",
},
{
name: this.$t("entry.detial.table.label3"), //英文品名
value: "contentDescription",
width: "",
align: "left",
},
{
name: this.$t("entry.detial.table.label4"), //商品编码
value: "skuCode",
width: "",
align: "left",
},
{
name: this.$t("entry.detial.table.label5"), //成交数量
value: "knockdownNumber",
width: "",
align: "left",
slot: true,
},
],
formData: this.activeDetial,
expandRowKeys: [],
unit: [],
levyType: [],
currency: [],
country: [],
};
},
watch: {
activeDetial(val) {
if (val == null) {
this.expandRowKeys = [];
}
this.formData = val;
},
detialsData(val) {
this.tableData = val;
},
},
methods: {
addDetial() {
this.$emit("activeDetialChange", { type: "add" });
},
saveDetial(val) {
this.$emit("saveDetial", val);
},
detailclose(val) {
this.expandRowKeys = [];
this.$emit("activeDetialChange", {
type: "close",
data: val.index ? val : null,
});
},
editDetial(val) {
this.expandRowKeys = [];
this.$emit("activeDetialChange", { type: "edit", data: val });
this.$nextTick(() => {
this.expandRowKeys = [val.index];
this.formData = val;
});
},
delDetial(val) {
let arr = [];
this.tableData.forEach((item) => {
if (item.index != val.index) {
arr.length == 0 ? (item.index = 0) : (item.index = arr.lenght - 1);
arr.lenght == 0 ? (item.gno = 1) : (item.gno = arr.length + 1);
arr.push(item);
}
});
this.tableData = arr;
this.$emit("delDetial", arr);
},
editSlip() {
this.$emit("editSlip");
},
formChange() {
this.$emit("headDataChange");
},
inputItemBlur(val) {
this.$emit("inputItemBlur", this.activeDetial);
},
formItemEvent(val) {
this.$emit("formItemEvent", val);
},
},
filters: {
clearNull(value) {
if (value == null) {
return "";
} else {
return value;
}
},
},
};
</script>
<template>
<div class="entry">
<!-- <div class="entryInformation"> -->
<div class="option">
<div class="details">
<div
class="side"
v-loading="loadings.entryLoading"
:style="{ width: urlList.length == 0 ? '100%' : '50%' }"
v-show="
entryInfo.headers.chmSourceType != 'chmSourceType_03' &&
entryInfo.headers.chmSourceType != 'chmSourceType_04'
"
>
<div class="formTitleFlex">
<!-- 报关详情查看 -->
<div v-once>{{ $t("declaration.indexD.formTitle1") }}</div>
<div class="titleButton" v-show="routerForm == 'audition'">
<el-button class="titleButton-View fontGrayClass" disabled>{{
entryInfo.qtyUnit
}}</el-button>
<el-button
class="titleButton-View"
:class="{ fontRedClass: fontRed, fontGrayClass: !fontRed }"
disabled
>{{
entryInfo.amountTotal + entryInfo.amountCurrency
}}</el-button
>
</div>
</div>
<div class="formBody">
<!-- 表头相关 -->
<DetailsHeader
ref="detialHeader"
:headData="entryInfo.headers"
:disabled="isDisabled"
:dictData="dictData"
:showHelf="urlList.length == 0 ? false : true"
@formItemEvent="formItemEvent"
/>
<!-- 表体相关 -->
<DetailsBody
v-show="!loadings.entryLoading"
ref="detialBody"
:tableData="entryInfo.bodys"
:headerData="bodyHeader"
@rowClick="rowClick"
/>
</div>
<!-- 审批备注 -->
<div class="formTitleFlex" v-once>
{{ $t("declaration.indexD.approvalRemark") }}
</div>
<div class="approvalRemark">
<el-input
type="textarea"
:id="'inputInner-' + '-rejectRemark'"
v-model="entryInfo.headers.rejectRemark"
:disabled="
!fromAudition ||
entryInfo.headers.consStatusDicCode !=
'transferWaybillStatus_2' ||
optionDisabled
"
rows="2"
maxlength="650"
:placeholder="$t('declaration.indexD.rejectRemark')"
></el-input>
<!-- <el-form
class="fedexFormStyle"
ref="approvalRemark"
:model="entryInfo.headers"
label-position="top"
>
<el-row :gutter="5">
<el-col :span="24">
<Formitem
:label="$t('declaration.indexD.rejectRemark')"
prop="rejectRemark"
>
</Formitem>
</el-col>
</el-row>
</el-form> -->
</div>
</div>
<div
class="side"
v-loading="loadings.imgLoading"
v-if="urlList.length != 0"
>
<!-- 清关图片查看 -->
<div class="boxTitle">
<div>
<span v-once> {{ $t("declaration.indexD.fileTitle") }}</span>
<!-- 电签标志 -->
<el-radio-group
class="radioStatus ml0 backCheckRadio"
v-model="entryInfo.headers.isEpoa"
disabled
>
<el-radio label="是">电签</el-radio>
<el-radio label="否">非电签</el-radio>
</el-radio-group>
</div>
<div>
<!-- 系统生成报关单 -->
<el-button
v-if="
(routerForm == 'audition' || routerForm == 'port') &&
entryInfo.headers.chmSourceType != 'chmSourceType_03' &&
entryInfo.headers.chmSourceType != 'chmSourceType_04'
"
size="small"
:loading="loadings.downloadEntryFile"
:disabled="
loadings.asyncDownloadFile ||
loadings.examine0Loading ||
loadings.examine1Loading ||
loadings.saveLoading ||
loadings.imgStamp ||
optionDisabled
"
@click="downloadEntryFile(0)"
>
<svg-icon class="el-icon-user-solid" icon-class="fedexCreate" />
{{ $t("declaration.indexD.fileButton1") }}
</el-button>
<!-- 下载清关文件 -->
<!-- <el-button
:loading="loadings.asyncDownloadFile"
:disabled="
loadings.downloadEntryFile ||
loadings.examine0Loading ||
loadings.examine1Loading ||
loadings.saveLoading ||
loadings.imgStamp
"
size="small"
@click="asyncDownloadFile"
>
<svg-icon
class="el-icon-user-solid"
icon-class="fedexUpload"
/>
{{ $t("declaration.indexD.fileButton2") }}
</el-button> -->
<!-- 重置全部单证分类 -->
<el-button
v-if="
routerForm == 'port' &&
entryInfo.headers.isAttDocTypeDisplay == 1 &&
entryInfo.headers.isAttDocTypeEdit == 1
"
size="small"
icon="el-icon-refresh"
:disabled="entryInfo.headers.isAttDocTypeEdit == 0"
@click="refreshImgType"
>重置全部单证分类</el-button
>
<!-- 确认分类 -->
<el-button
v-if="
routerForm == 'port' &&
entryInfo.headers.isAttDocTypeDisplay == 1 &&
entryInfo.headers.isAttDocTypeEdit == 1
"
class="backgroundButton"
size="small"
icon="el-icon-circle-check"
:loading="loadings.checkImgTypeLoading"
:disabled="entryInfo.headers.isAttDocTypeEdit == 0"
@click="checkImgType"
>确认分类</el-button
>
</div>
</div>
<el-form
v-if="
!loadings.entryLoading &&
(entryInfo.headers.chmSourceType == 'chmSourceType_03' ||
entryInfo.headers.chmSourceType == 'chmSourceType_04')
"
class="fedexFormStyle mb10"
ref="approvalRemark"
:model="entryInfo.headers"
label-position="top"
>
<el-row :gutter="5">
<!-- 运单号 -->
<el-col :span="8">
<Formitem
:label="$t('netrySreach.table.label1')"
:toolyipShow="true"
prop="consignmentCode"
type="noDateEntry"
>
<el-input
type="text"
:id="'inputInner-noDateEntry-consignmentCode'"
v-model="entryInfo.headers.consignmentCode"
:disabled="true"
></el-input>
</Formitem>
</el-col>
<!-- 境内发货人 -->
<el-col :span="8">
<Formitem
:label="$t('entry.company.form.label2')"
:toolyipShow="true"
prop="operateUnitName"
type="noDateEntry"
>
<el-input
type="text"
:id="'inputInner-noDateEntry-operateUnitName'"
v-model="entryInfo.headers.operateUnitName"
:disabled="true"
></el-input>
</Formitem>
</el-col>
<!-- 境内发货人海关备案编码 -->
<el-col :span="8">
<Formitem
:label="$t('declaration.indexD.headForm.label3')"
:toolyipShow="true"
prop="operateUnitCode"
type="noDateEntry"
>
<el-input
type="text"
:id="'inputInner-noDateEntry-operateUnitCode'"
v-model="entryInfo.headers.operateUnitCode"
:disabled="true"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="5">
<!-- 联系人 -->
<el-col :span="8">
<Formitem
:label="$t('entry.upload.label2')"
type=""
:toolyipShow="true"
prop="contacts"
type="noDateEntry"
>
<el-input
:disabled="true"
type="text"
:id="'inputInner-noDateEntry-contacts'"
v-model="entryInfo.headers.contacts"
>
</el-input>
</Formitem>
</el-col>
<!-- 联系人手机号码 -->
<el-col :span="8">
<Formitem
:label="$t('entry.upload.label3')"
type=""
:toolyipShow="true"
prop="contactInformation"
type="noDateEntry"
>
<el-input
type="text"
:disabled="true"
:id="'inputInner-noDateEntry-contactInformation'"
v-model="entryInfo.headers.contactInformation"
maxlength="11"
>
</el-input>
</Formitem>
</el-col>
<!-- 取件城市 -->
<el-col :span="8">
<Formitem
:label="$t('entry.upload.label4')"
type=""
:toolyipShow="true"
prop="pickUpCityId"
type="noDateEntry"
>
<el-select
ref="pickUpCity"
name="pickUpCity"
:id="'inputInner-noDateEntry-pickUpCityId'"
v-model="entryInfo.headers.pickUpCityId"
filterable
:disabled="true"
placeholder=""
>
<el-option
v-for="(item, index) in dictData.pickUpCity"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
</el-form>
<div class="sideContentBorder">
<div class="entryFileOption">
<!-- 申报单证 -->
<el-checkbox
class="imgCheck"
v-model="currentImage.isDocumentsCheck"
:true-label="1"
:false-label="0"
:disabled="
!fromAudition ||
(entryInfo.headers.consStatusDicCode !=
'transferWaybillStatus_2' &&
entryInfo.headers.consStatusDicCode !=
'transferWaybillStatus_27') ||
optionDisabled
"
v-loading="loadings.imgCheckLoading"
@change="documentsCheckChange"
>{{ $t("declaration.indexD.fileCheck") }}</el-checkbox
>
<div class="titleButton mr10">
<!-- 撤销盖章、委托书盖章 -->
<el-button
v-if="
entryInfo.headers.consStatusDicCode ==
'transferWaybillStatus_2' &&
fromAudition &&
entryInfo.headers.pickUpCity.ext6 != 'SCN'
"
size="small"
:loading="loadings.imgStamp"
:disabled="
loadings.asyncDownloadFile ||
loadings.downloadEntryFile ||
loadings.examine0Loading ||
loadings.examine1Loading ||
loadings.saveLoading ||
currentImage.imgError ||
$refs.imgView.loading ||
optionDisabled
"
@click="imgStamp(currentImage.isSeal)"
>
<svg-icon class="el-icon-user-solid" icon-class="fedexSeal" />
{{
currentImage.isSeal == 1
? $t("declaration.indexD.fileButton3_1")
: $t("declaration.indexD.fileButton3_2")
}}
</el-button>
<!-- 选择图片类型 -->
<el-radio-group
v-if="
routerForm == 'port' &&
entryInfo.headers.isAttDocTypeDisplay == 1
"
class="radioStatus backCheckRadio"
style="line-height: 40px"
:disabled="entryInfo.headers.isAttDocTypeEdit == 0"
v-model="currentImage.selectTypeCode"
@input="imgTypeChange"
>
<el-radio
v-for="(item, index) in dictData.attDocType"
:key="index"
v-if="item.code != 'attDocType_not'"
:label="item.code"
>
{{ item.name }}
</el-radio>
</el-radio-group>
</div>
</div>
<ImgView
ref="imgView"
:urlList="urlList"
:imgData="imageList"
:initialIndex="imgIdx"
:editType="
entryInfo.headers.consStatusDicCode ==
'transferWaybillStatus_2' && this.fromAudition
"
@changeCurrentImg="changeCurrentImg"
@rotate="rotate"
@imgLoad="imgLoad"
@imgBlob="imgBlob"
@optionChange="optionChange"
></ImgView>
</div>
<!-- 审批备注 -->
<div
v-if="
entryInfo.headers.chmSourceType == 'chmSourceType_03' ||
entryInfo.headers.chmSourceType == 'chmSourceType_04'
"
class="formTitleFlex"
>
{{ $t("declaration.indexD.approvalRemark") }}
</div>
<div
class="approvalRemark"
v-if="
entryInfo.headers.chmSourceType == 'chmSourceType_03' ||
entryInfo.headers.chmSourceType == 'chmSourceType_04'
"
>
<el-input
type="textarea"
:id="'inputInner-' + '-rejectRemark'"
v-model="entryInfo.headers.rejectRemark"
:disabled="
!fromAudition ||
entryInfo.headers.consStatusDicCode !=
'transferWaybillStatus_2' ||
optionDisabled
"
rows="2"
maxlength="650"
:placeholder="$t('declaration.indexD.rejectRemark')"
></el-input>
<!-- <el-form
class="fedexFormStyle"
ref="approvalRemark"
:model="entryInfo.headers"
label-position="top"
>
<el-row :gutter="5">
<el-col :span="24">
<Formitem
:label="$t('declaration.indexD.rejectRemark')"
prop="rejectRemark"
>
</Formitem>
</el-col>
</el-row>
</el-form> -->
</div>
</div>
</div>
<div
class="entrySave"
v-show="!loadings.entryLoading && !loadings.imgLoading"
>
<!-- 返回 -->
<el-button
class="entrySaveButton"
:disabled="
loadings.asyncDownloadFile ||
loadings.downloadEntryFile ||
loadings.examine0Loading ||
loadings.examine1Loading ||
loadings.saveLoading ||
loadings.imgStamp
"
@click="back"
>{{ $t("system.back") }}</el-button
>
<!-- 保存 -->
<el-button
class="entrySaveButton entrySaveButton-background"
v-show="
fromAudition &&
entryInfo.headers.consStatusDicCode == 'transferWaybillStatus_2' &&
!optionDisabled
"
:disabled="
loadings.asyncDownloadFile ||
loadings.downloadEntryFile ||
loadings.examine0Loading ||
loadings.examine1Loading ||
loadings.imgStamp
"
:loading="loadings.saveLoading"
@click="examine(2, 'button')"
>
{{ $t("system.save") }}
</el-button>
<!-- 审批不通过 -->
<el-button
class="entrySaveButton entrySaveButton-background"
v-show="
fromAudition &&
entryInfo.headers.consStatusDicCode == 'transferWaybillStatus_2' &&
!optionDisabled
"
:disabled="
loadings.asyncDownloadFile ||
loadings.downloadEntryFile ||
loadings.saveLoading ||
loadings.examine1Loading ||
loadings.imgStamp
"
:loading="loadings.examine0Loading"
@click="examine(0, 'button')"
>
{{ $t("declaration.indexD.unApproval") }}
</el-button>
<!-- 审批通过 -->
<el-button
class="entrySaveButton entrySaveButton-background"
v-show="
fromAudition &&
entryInfo.headers.consStatusDicCode == 'transferWaybillStatus_2' &&
!optionDisabled
"
:disabled="
loadings.asyncDownloadFile ||
loadings.downloadEntryFile ||
loadings.saveLoading ||
loadings.examine0Loading ||
loadings.imgStamp
"
:loading="loadings.examine1Loading"
@click="examine(1, 'button')"
>
{{ $t("declaration.indexD.approval") }}
</el-button>
</div>
</div>
<!-- </div> -->
<!-- 表体详情对话框 -->
<DetailsBodyDialog
:bodyDialogVisible="bodyDialogVisible"
:formInfo="currentDetail"
:disabled="isDisabled"
@closeDialog="closeDialog"
:dictData="dictData"
/>
<el-dialog
:title="$t('declaration.indexD.fileViewTitle')"
:visible.sync="entryPdfVisible"
width="85%"
center
@close="dialogClose"
>
<iframe :src="entryPdf" width="100%" height="600px"></iframe>
<span slot="footer" class="dialog-footer">
<!-- 生成 -->
<el-button
class="entrySaveButton entrySaveButton-background"
type="primary"
:loading="loadings.dialogButton"
@click="downloadEntryFile(1)"
>{{ $t("declaration.indexD.downloadEntryFile") }}</el-button
>
<!-- 取消 -->
<el-button class="entrySaveButton" @click="dialogClose">
{{ $t("system.close") }}</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import { numberRound } from "@/utils/iClearExp";
import {
getConsInfo,
getExchangeRate,
getAttachment,
getLogD,
approved,
approvalReject,
saveApproval,
rdeimgStamp,
rdeimgRestamp,
downloadEntryFiles,
rdeEntryFileView,
setImgRoate,
setDocumentCheck,
getFileDataFromPort,
saveImgFileTypeData,
} from "@/api/examine-api.js";
import { getEntryLock, unEntryLock } from "@/api/entry-api.js";
import { decrypt } from "@/utils/jsencrypt";
import DetailsHeader from "./components/detailsHeader.vue"; //表头信息
import DetailsBody from "./components/detailsBody.vue"; //表头信息
import DetailsBodyDialog from "./components/detailsBodyDialog.vue"; //表头信息
export default {
// name: "DeclarationDetails",
components: {
DetailsHeader,
DetailsBody,
DetailsBodyDialog,
},
data() {
return {
id: null,
loadings: {
templateLoading: false,
entryLoading: false,
imgLoading: false,
downloadEntryFile: false,
imgStamp: false,
asyncDownloadFile: false,
dialogButton: false,
saveLoading: false,
examine0Loading: false,
examine1Loading: false,
imgCheckLoading: false,
checkImgTypeLoading: false,
},
entryInfo: {
headers: {},
approvalRemark: "",
bodys: [],
qtyUnit: "0",
amountTotal: "0",
amountCurrency: "",
},
activeDetial: {},
dictData: {
district: [],
port: [],
VehicleWayCode: [],
supervisionMode: [],
natureExemption: [],
ClinchType: [],
NewPackageType: [],
Country: [],
levyType: [],
currencySystem: [],
ENTRY_METHOD: [],
pickUpCity: [],
consType: [],
attDocType: [],
},
isDisabled: true,
bodyHeader: [
{
name: this.$t("declaration.indexD.detialTable.label1"), //序号
value: "gno",
width: "50",
align: "left",
},
{
name: this.$t("entry.detial.table.label2"), //中文名称
value: "inputItem",
width: "",
align: "left",
},
{
name: this.$t("entry.detial.form.label3"), //商品编号
value: "skuCode",
width: "100",
align: "left",
slot: true,
},
{
name: this.$t("declaration.indexD.detialTable.label2"), //商品名称
value: "skuName",
width: "150",
align: "left",
},
{
name: this.$t("entry.detial.table.label5"), //成交数量
value: "knockdownNumber",
width: "150",
align: "left",
slot: true,
},
{
name: this.$t("declaration.indexD.detialTable.label3"), //第一计量
value: "qtyLegalFirst",
width: "150",
align: "left",
slot: true,
},
{
name: this.$t("declaration.indexD.detialTable.label4"), //第二计量
value: "qtyLegalSecond",
width: "150",
align: "left",
slot: true,
},
{
name: this.$t("declaration.indexD.detialTable.label5"), //申报总价
value: "amount",
width: "150",
align: "left",
slot: true,
},
{
name: this.$t("declaration.indexD.detialTable.label6"), //原产地
value: "habitat",
width: "150",
align: "left",
},
{
name: this.$t("declaration.indexD.detialTable.label7"), //最终目的国
value: "destinationCountry",
width: "150",
align: "left",
},
{
name: this.$t("declaration.indexD.detialTable.label8"), //境内货源地
value: "domesticDestination",
width: "200",
align: "left",
},
{
name: this.$t("declaration.indexD.detialTable.label9"), //征免
value: "levyType",
width: "",
align: "left",
},
],
currentDetail: {},
entryPdf: "",
bodyDialogVisible: false,
entryPdfVisible: false,
rowList: [],
urlList: [],
imageList: [],
imgIdx: 0,
fontRed: false,
fromAudition: true,
routerForm: "",
currentImage: {},
optionDisabled: false,
lockTime: 0,
lockNum: 0,
lockType: false,
};
},
created() {
this.lockTime = this.$store.getters.lockTime - 30;
this.loadings.templateLoading = true;
if (this.$route.params.id) {
this.setDict();
this.id = decrypt(this.$route.params.id);
this.fromAudition = this.$route.params.from == "audition" ? true : false;
this.routerForm = this.$route.params.from;
if (this.$route.params.from == "log") {
this.sreachLog();
} else {
this.sreach("").then(() => {
this.sreachEntryLock(this.id).finally(() => {
if (this.routerForm == "port") {
this.getNewAttachment();
} else {
this.getAttachment();
}
});
});
}
} else {
this.$router.push("index");
this.loadings.templateLoading = false;
}
},
beforeDestroy() {
this.$store.dispatch("DelEntryData");
if (this.lockType) {
this.removeEntryLock(this.id, 0);
}
if (
this.routerForm == "audition" &&
this.entryInfo.headers.consStatusDicCode == "transferWaybillStatus_2"
) {
// this.examine(2, "back");
}
},
destroyed() {
this.id = null;
this.entryInfo = {
headers: {},
approvalRemark: "",
bodys: [],
qtyUnit: "0",
amountTotal: "0",
amountCurrency: "",
};
this.routerForm = "";
this.activeDetial = {};
this.currentDetail = {};
this.bodyDialogVisible = false;
this.rowList = [];
this.urlList = [];
this.imageList = [];
this.fontRed = false;
this.currentImage = {};
this.lockType = false;
this.$store.dispatch("delEntry");
},
methods: {
//查询
async sreach(type) {
return new Promise((resolve, reject) => {
this.loadings.entryLoading = true;
getConsInfo({ id: this.id, pageIndex: 0, pageSize: 0 })
.then((res) => {
if (res.code === "200") {
this.entryInfo.headers = res.data.extra.head;
this.entryInfo.bodys = res.data.extra.details;
this.entryInfo.headers.ocr = res.data.extra.ocr;
if (this.entryInfo.bodys.length > 0) {
let qtyTotal = 0;
let amountTotal = 0;
this.entryInfo.bodys.forEach((item, index) => {
item.index = index;
item.gno = index + 1;
item.hscodeStatus = 1;
//计算总重量,如果第一法定单位是重量,参与计算,如果不是,用第二法定单位计算,如果都没有重量单位,不参与计算
let weight = this.getWeight(
item.qtyLegalFirst,
item.unitLegalFirst
);
if (weight == 0) {
weight = this.getWeight(
item.qtyLegalSecond,
item.unitLegalSecond
);
}
qtyTotal = qtyTotal + weight;
//计算总价钱
amountTotal = amountTotal + item.amount;
});
this.entryInfo.qtyUnit =
numberRound(qtyTotal, 2) + this.$t("system.kg");
this.entryInfo.amountTotal = numberRound(amountTotal, 2);
this.entryInfo.amountCurrency =
this.entryInfo.bodys[0].currency;
//判断价钱是否展示红色
this.routerForm == "audition" && type != "approval"
? this.getFontRedClass(
this.entryInfo.bodys[0].currencyId,
this.entryInfo.amountTotal
)
: "";
}
this.loadings.entryLoading = false;
resolve();
} else {
this.loadings.entryLoading = false;
this.alertWarningMsg(res.message);
reject();
}
// this.loadings.templateLoading = false;
})
.catch((err) => {
this.loadings.entryLoading = false;
// this.loadings.templateLoading = false;
console.log(err);
reject();
});
});
},
//查询
sreachLog() {
this.loadings.entryLoading = true;
getLogD({ id: this.id })
.then((res) => {
if (res.code === "200") {
this.entryInfo.headers = res.data.extra;
this.entryInfo.bodys = res.data.records;
if (this.entryInfo.bodys.length > 0) {
let qtyTotal = 0;
let amountTotal = 0;
this.entryInfo.bodys.forEach((item, index) => {
item.model != null && item.model != ""
? (item.inputItem = item.model.split("|")[0].split(":")[1])
: "";
item.index = index;
item.gno = index + 1;
item.hscodeStatus = 1;
//计算总重量,如果第一法定单位是重量,参与计算,如果不是,用第二法定单位计算,如果都没有重量单位,不参与计算
let weight = this.getWeight(
item.qtyLegalFirst,
item.unitLegalFirst
);
if (weight == 0) {
weight = this.getWeight(
item.qtyLegalSecond,
item.unitLegalSecond
);
}
qtyTotal = qtyTotal + weight;
//计算总价钱
amountTotal = amountTotal + item.amount;
});
this.entryInfo.qtyUnit =
numberRound(qtyTotal, 2) + this.$t("system.kg");
this.entryInfo.amountTotal = numberRound(amountTotal, 2);
this.entryInfo.amountCurrency = this.entryInfo.bodys[0].currency;
//判断价钱是否展示红色
this.routerForm == "audition"
? this.getFontRedClass(
this.entryInfo.bodys[0].currencyId,
this.entryInfo.amountTotal
)
: "";
}
this.loadings.entryLoading = false;
} else {
this.alertWarningMsg(res.message)
.then(() => {
this.back();
})
.catch(() => {
this.back();
});
}
this.loadings.templateLoading = false;
})
.catch((err) => {
this.loadings.entryLoading = false;
this.loadings.templateLoading = false;
console.log(err);
});
},
//查询右侧文件(除口岸操作外其他页面)
async getAttachment() {
this.loadings.imgLoading = true;
this.currentImage = {};
getAttachment({ id: this.id })
.then((res) => {
if (res.code === "200") {
this.fileDataInfo(res.data, 0);
// this.urlList = [];
// res.data.records.forEach((item, index) => {
// this.urlList.push(item.url);
// item.imgError = true;
// });
// this.imageList = res.data.records;
// this.currentImage = this.imageList[this.imgIdx];
// this.entryInfo.headers.consStatus = res.data.extra.consStatus;
// this.entryInfo.headers.consStatusDicCode =
// res.data.extra.consStatusDicCode;
// this.entryInfo.headers.stamp = res.data.extra.stamp;
// this.entryInfo.headers.stampDicCode = res.data.extra.stampDicCode;
this.loadings.imgLoading = false;
} else {
this.loadings.imgLoading = false;
this.alertWarningMsg(res.message);
}
this.loadings.templateLoading = false;
this.loadings.entryLoading = false;
})
.catch((err) => {
this.loadings.imgLoading = false;
this.loadings.templateLoading = false;
this.loadings.entryLoading = false;
console.log(err);
});
},
//查询右侧文件(口岸操作用)
async getNewAttachment() {
this.loadings.imgLoading = true;
this.currentImage = {};
getFileDataFromPort({ id: this.id })
.then((res) => {
if (res.code === "200") {
this.fileDataInfo(res.data, 1);
this.loadings.imgLoading = false;
} else {
this.loadings.imgLoading = false;
this.alertWarningMsg(res.message);
}
this.loadings.templateLoading = false;
this.loadings.entryLoading = false;
})
.catch((err) => {
this.loadings.imgLoading = false;
this.loadings.templateLoading = false;
this.loadings.entryLoading = false;
console.log(err);
});
},
//附件数据整理
fileDataInfo(fileList, type) {
this.urlList = [];
fileList.records.forEach((item, index) => {
if (type == 1) {
item.selectTypeCode == null || item.selectTypeCode == ""
? (item.selectTypeCode = "attDocType_other")
: "";
item.isDocumentsCheck = 1;
}
this.urlList.push(item.url);
item.imgError = true;
});
this.imageList = fileList.records;
this.currentImage = this.imageList[this.imgIdx];
this.entryInfo.headers.consStatus = fileList.extra.consStatus;
this.entryInfo.headers.consStatusDicCode =
fileList.extra.consStatusDicCode;
this.entryInfo.headers.stamp = fileList.extra.stamp;
this.entryInfo.headers.stampDicCode = fileList.extra.stampDicCode;
if (type == 1) {
this.entryInfo.headers.isAttDocTypeDisplay =
fileList.extra.isAttDocTypeDisplay; //是否显示随附单据分类
this.entryInfo.headers.isAttDocTypeEdit =
fileList.extra.isAttDocTypeEdit; //是否编辑随附单据分类
} else {
this.entryInfo.headers.isAttDocTypeDisplay = 0;
this.entryInfo.headers.isAttDocTypeEdit = 0;
}
},
//审批通过/不通过/保存
examine(status, type) {
let chmConsignmentIds = [this.id];
let chmRejectRemarkList = [
this.entryInfo.headers.rejectRemark == null
? ""
: this.entryInfo.headers.rejectRemark,
];
let obj2 = {};
obj2.consignmentId = chmConsignmentIds[0];
obj2.flag = status;
obj2.rejectRemark = chmRejectRemarkList[0];
obj2.portPreAuditFlag = this.entryInfo.headers.portPreAuditFlag;
obj2.approvalTimeFirst = this.entryInfo.headers.approvalTimeFirst;
obj2.attachmentsList = this.imageList;
this.urlList = [];
obj2.attachmentsList.forEach((item, index) => {
this.urlList.push(item.url);
item.rotateAngle = item.rotateAngle == null ? 0 : item.rotateAngle;
});
//保存
if (status == 2) {
this.optionChange();
this.loadings.saveLoading = true;
this.setApproval(obj2, this.$t("declaration.indexD.saveSuccess")).then(
() => {
if (type != "back") {
this.sreach();
this.getAttachment();
}
}
);
} else {
//审批不通过、通过
if (status == 0) {
this.loadings.examine0Loading = true;
} else if (status == 1) {
this.loadings.examine1Loading = true;
}
if (status == 0 && chmRejectRemarkList[0] == "") {
this.alertErrorMsg(
this.$t("declaration.indexD.unApprovalTip", {
a: this.entryInfo.headers.consignmentCode,
})
);
this.loadings.examine0Loading = false;
} else {
return new Promise((resolve, reject) => {
chmRejectRemarkList.push("end");
let obj = {
chmConsignmentIds: chmConsignmentIds,
chmRejectRemarkList: chmRejectRemarkList,
isApprove: status,
};
//走审批接口
this.setApproval(
obj2,
this.$t("declaration.indexD.approvalSuccess")
).then(() => {
this.loadings.templateLoading = true;
this.sreach("approval").then(() => {
this.back();
});
// this.getAttachment();
});
});
}
}
},
setApproval(obj, msg) {
return new Promise((resolve, reject) => {
if (obj.flag == 0) {
approvalReject({
chmId: obj.consignmentId,
remark: obj.rejectRemark,
old: obj,
})
.then((res) => {
if (res.code != "200") {
this.alertWarningMsg(
res.message != ""
? res.message
: this.$t("declaration.indexD.approvalError")
);
reject();
} else {
if (msg != "") {
this.msgSuccess(msg);
}
resolve();
}
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
})
.catch((err) => {
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
console.log(err);
reject();
});
} else if (obj.flag == 1) {
let fileObj = {
chmId: this.id,
origFileName: this.currentImage.name.replace("back_", ""),
isDocumentsCheck: this.currentImage.isDocumentsCheck,
old: obj,
};
this.$refs.imgView.imgRotateBlob(false).then((imgBlob) => {
approved({ pic: imgBlob, info: fileObj })
.then((res) => {
if (res.code != "200") {
this.alertWarningMsg(res.message);
reject();
} else {
if (msg != "") {
this.msgSuccess(msg);
}
resolve();
}
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
})
.catch((err) => {
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
console.log(err);
reject();
});
});
} else if (obj.flag == 2) {
let fileObj = {
chmId: this.id,
attachmentId: this.currentImage.id,
origFileName: this.currentImage.name.replace("back_", ""),
isDocumentsCheck: this.currentImage.isDocumentsCheck,
remark: obj.rejectRemark,
old: obj,
};
this.$refs.imgView.imgRotateBlob(false).then((imgBlob) => {
saveApproval({ pic: imgBlob, info: fileObj })
.then((res) => {
if (res.code === "200") {
if (msg != "") {
this.msgSuccess(msg);
}
resolve();
} else {
this.alertWarningMsg(res.message);
reject();
}
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
})
.catch((err) => {
console.log(err);
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
reject();
});
});
}
});
},
//系统生成报关单
downloadEntryFile(val) {
this.optionChange();
this.loadings.downloadEntryFile = true;
val == 1 ? (this.loadings.dialogButton = true) : "";
let obj = {
id: this.id,
report: val,
};
rdeEntryFileView(obj)
.then((res) => {
if (res.code === "200") {
let url = res.data.extra.managerUrl + res.data.extra.pdfPreview;
if (val == 0) {
this.entryPdf = url;
this.entryPdfVisible = true;
} else {
this.fileDownload.downLoadZip(
"res",
res.data.extra.managerUrl + res.data.extra.pdfPreview,
res.data.extra.fileName,
"pdf",
"get"
);
window.open(
res.data.extra.managerUrl + res.data.extra.pdfPreview,
"_black"
);
this.entryPdfVisible = false;
}
} else {
this.alertWarningMsg(res.message);
}
this.loadings.downloadEntryFile = false;
this.loadings.dialogButton = false;
})
.catch((err) => {
console.log(err);
this.loadings.downloadEntryFile = false;
this.loadings.dialogButton = false;
});
},
//下载清关文件
asyncDownloadFile() {
this.optionChange();
this.loadings.asyncDownloadFile = true;
this.loadings.templateLoading = true;
downloadEntryFiles({ consignmentId: this.id })
.then((res) => {
if (res.code === "200") {
let arr = res.data.extra.url.split("/");
let fileName = arr[arr.length - 1];
let fileType = arr[arr.length - 1].split(".")[1];
this.fileDownload.downLoadZip(
"res",
res.data.extra.url,
fileName,
fileType,
"get"
);
} else {
this.alertWarningMsg(res.message);
}
this.loadings.asyncDownloadFile = false;
this.loadings.templateLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.asyncDownloadFile = false;
this.loadings.templateLoading = false;
});
},
//重置全部单证分类
refreshImgType() {
this.imageList.forEach((item) => {
item.selectTypeCode = "attDocType_other";
});
},
//确认分类
checkImgType(data) {
let obj = {
consignmentCode: this.entryInfo.headers.consignmentCode,
consignmentId: this.entryInfo.headers.id,
portName: this.entryInfo.headers.declaredPort,
list: [],
};
let imgTypeList = [];
this.imageList.forEach((item) => {
imgTypeList.push(item.selectTypeCode);
let file = {
fileName: item.name,
fileSavePath: item.thumb,
fileSize: item.fileSize,
selectTypeCode: item.selectTypeCode,
uploadTime: item.uploadTime,
uploadUser: item.uploadUser,
};
obj.list.push(file);
});
if (
imgTypeList.includes("attDocType_inv") &&
imgTypeList.includes("attDocType_ctn") &&
imgTypeList.includes("attDocType_pl") &&
imgTypeList.includes("attDocType_way")
) {
this.loadings.checkImgTypeLoading = true;
saveImgFileTypeData(obj)
.then((res) => {
if (res.code === "200") {
this.msgSuccess("申报单证分类完成!");
this.back();
} else {
this.alertWarningMsg(res.message);
}
this.loadings.checkImgTypeLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.checkImgTypeLoading = false;
});
} else {
let str = "";
if (!imgTypeList.includes("attDocType_inv")) {
str = str + "请至少选择一张【发票】进行分类!</br>";
}
if (!imgTypeList.includes("attDocType_ctn")) {
str = str + "请至少选择一张【合同】进行分类!</br>";
}
if (!imgTypeList.includes("attDocType_pl")) {
str = str + "请至少选择一张【箱单】进行分类!</br>";
}
if (!imgTypeList.includes("attDocType_way")) {
str = str + "请至少选择一张【运单】进行分类!</br>";
}
this.alertWarningMsg(str);
}
},
//委托书盖章
imgStamp(val) {
this.optionChange();
this.loadings.imgStamp = true;
let chmRejectRemarkList = [
this.entryInfo.headers.rejectRemark == null
? ""
: this.entryInfo.headers.rejectRemark,
];
let obj = {};
//撤销盖章
if (val == 1) {
obj = {
chmId: this.id,
old: {
rejectRemark: chmRejectRemarkList[0],
attachmentsPicDtoList: this.imageList,
consignmentId: this.id,
},
};
rdeimgRestamp(obj)
.then((res) => {
if (res.code === "200") {
this.$refs.imgView.loading = true;
this.msgSuccess(this.$t("declaration.indexD.stempSucces"));
// this.sreach();
this.getAttachment();
} else {
this.alertWarningMsg(res.message);
}
this.loadings.imgStamp = false;
})
.catch((err) => {
console.log(err);
this.loadings.imgStamp = false;
});
} else {
//盖章
let oldObj = {
attachmentsList: this.imageList,
rejectRemark: chmRejectRemarkList[0],
attachmentId: this.currentImage.id,
pickUpCityId: this.entryInfo.headers.pickUpCityId,
fileName: this.currentImage.name,
consignmentId: this.id,
isDocumentsCheck: 1,
rotateAngle:
this.currentImage.rotateAngle == null
? 0
: this.currentImage.rotateAngle,
};
//旧接口传参
this.urlList = [];
oldObj.attachmentsList.forEach((item, index) => {
this.urlList.push(item.url);
if (item.id == this.currentImage.id) {
item.isDocumentsCheck = 1;
this.currentImage.isDocumentsCheck = 1;
}
item.rotateAngle = item.rotateAngle == null ? 0 : item.rotateAngle;
});
obj.info = {
attachmentId: this.currentImage.id,
chmId: this.id,
isRevolve: this.currentImage.rotateAngle != 0 ? 1 : 0,
origFileName: this.currentImage.name.replace("back_", ""),
pickUpCityId: this.entryInfo.headers.pickUpCityId,
old: oldObj,
};
obj.name = this.currentImage.name.replace("back_", "");
// if (this.currentImage.rotateAngle != 0) {
this.$refs.imgView.imgRotateBlob(false).then((imgBlob) => {
obj.pic = imgBlob;
this.setStamp(obj);
});
// } else {
// obj.pic = null;
// this.setStamp(obj);
// }
}
},
//委托书盖章请求
setStamp(obj) {
rdeimgStamp(obj)
.then((res) => {
if (res.code === "200") {
this.$refs.imgView.loading = true;
this.msgSuccess(this.$t("declaration.indexD.stempSucces"));
// this.sreach();
this.getAttachment();
} else {
this.alertWarningMsg(res.message);
}
this.loadings.imgStamp = false;
})
.catch((err) => {
console.log(err);
this.loadings.imgStamp = false;
});
},
optionChange() {
this.lockTime = this.$store.getters.lockTime - 30;
},
//口岸图片标识改变
imgTypeChange(val) {
// console.log(val);
},
//查询运单加锁
async sreachEntryLock(id) {
this.loadings.entryLoading = true;
return new Promise((resolve, reject) => {
if (
(this.fromAudition &&
this.entryInfo.headers.consStatusDicCode ==
"transferWaybillStatus_2") ||
((this.entryInfo.headers.declaredPort == "SZXIP" ||
this.entryInfo.headers.declaredPort == "CANIP") &&
this.routerForm == "port" &&
this.entryInfo.headers.chmSourceType != "chmSourceType_03" &&
this.entryInfo.headers.chmSourceType != "chmSourceType_04" &&
this.entryInfo.headers.consStatusDicCode ==
"transferWaybillStatus_5")
) {
getEntryLock({ consignmentId: id, lockFlag: 1, bizType: 0 })
.then((res) => {
if (res.code === "200") {
this.lockType = true;
this.lockTime = this.$store.getters.lockTime - 30;
this.$store.dispatch("SetEntryData", { id: id, status: 0 });
this.createLockTime();
resolve();
} else if (res.code === "41084") {
this.optionDisabled = true;
this.alertWarningMsg(this.$t("declaration.indexD.lockTip"));
reject();
} else {
resolve();
}
})
.catch((err) => {
console.log(err);
resolve();
});
} else {
resolve();
}
});
},
//刷新运单琐
uploadLock() {
getEntryLock({ consignmentId: this.id, lockFlag: 1, bizType: 0 });
},
//释放运单琐
removeEntryLock(id, bizType) {
if (
!this.optionDisabled &&
(this.fromAudition ||
((this.entryInfo.headers.declaredPort == "SZXIP" ||
this.entryInfo.headers.declaredPort == "CANIP") &&
this.routerForm == "port" &&
this.entryInfo.headers.chmSourceType != "chmSourceType_03" &&
this.entryInfo.headers.chmSourceType != "chmSourceType_04" &&
this.entryInfo.headers.consStatusDicCode ==
"transferWaybillStatus_5"))
) {
unEntryLock({ consignmentId: id, bizType: bizType })
.then((res) => {})
.catch((err) => {
console.log(err);
});
}
},
createLockTime() {
let lockInterval = setInterval(() => {
if (this.lockTime > 0) {
if (this.lockNum == this.$store.getters.lockTime - 30) {
this.lockNum = 0;
this.uploadLock();
// this.lockTime = this.$store.getters.lockTime - 30;
}
this.lockNum++;
this.lockTime--;
} else {
if (this.lockType) {
this.removeEntryLock(this.id, 0);
this.alertWarningMsg(
this.$t("declaration.indexD.lockTimeOutTip")
).finally(() => {
this.back();
});
}
this.lockType = false;
clearInterval(lockInterval);
}
}, 1000);
},
getWeight(qty, unit) {
let qtyCompute = 0;
if (unit == "千克" || unit == "克" || unit == "斤" || unit == "克拉") {
switch (unit) {
case "千克":
qtyCompute = qty;
break;
case "克":
qtyCompute = qty / 1000;
break;
case "斤":
qtyCompute = qty / 2;
break;
case "克拉":
qtyCompute = qty / 5000;
break;
default:
qtyCompute = 0;
}
}
return qtyCompute;
},
getFontRedClass(currencyId, amount) {
this.fontRed = false;
getExchangeRate()
.then((res) => {
if (res.code === "200") {
let usd = res.data.extra.filter(
(cur) => cur.code == "currencySystem_USD"
)[0];
let current = res.data.extra.filter(
(cur) => cur.id == currencyId
)[0];
let amountRes =
(amount * current.bocConversionPrice) / usd.bocConversionPrice;
if (amountRes > 50000) {
this.fontRed = true;
return true;
}
}
return false;
})
.catch((err) => {
console.log(err);
return false;
});
},
//字典表添加
async setDict() {
this.$store.dispatch("GetDistrict").then((res) => {
this.dictData.district = res;
});
this.$store.dispatch("GetPort", { name: "", type: "all" }).then((res) => {
this.dictData.port = res;
});
let arr = [
"VehicleWayCode",
"supervisionMode",
"natureExemption",
"ClinchType",
"NewPackageType",
"Country",
"levyType",
"currencySystem",
"ENTRY_METHOD",
"pickUpCity",
"consType",
"brandType",
"exportBenefits",
];
if (this.$route.params.from == "port") {
arr.push("attDocType");
}
arr.forEach((item, index) => {
this.$store
.dispatch("GetDict", {
dictionaryCode: item,
extIndex: "",
extVal: "",
})
.then((res) => {
this.dictData[item] = res;
});
});
},
inputItemBlur(val) {
if (val) {
let obj = val;
this.activeDetial = obj;
this.entryInfo = obj;
}
},
documentsCheckChange(val) {
this.optionChange();
if (val == 0 && this.currentImage.isSeal == 1) {
this.currentImage.isDocumentsCheck = 1;
this.alertWarningMsg(this.$t("declaration.indexD.checkError"));
} else {
if (
this.entryInfo.headers.consStatusDicCode == "transferWaybillStatus_2"
// && this.currentImage.imgError != true
) {
this.loadings.imgCheckLoading = true;
let obj = {
isDocumentCheck: val,
attachmentId: this.currentImage.id,
};
setDocumentCheck(obj)
.then((res) => {
if (res.code === "200") {
} else {
// this.alertWarningMsg(res.message);
}
this.loadings.imgCheckLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.imgCheckLoading = false;
});
}
}
},
//点击商品
rowClick(val) {
setTimeout(() => {
if (!this.bodyDialogVisible) {
this.optionChange();
this.currentDetail = val;
this.bodyDialogVisible = true;
}
}, 200);
},
closeDialog(val) {
this.bodyDialogVisible = false;
},
//返回
back() {
if (this.$route.query.noGoBack) {
this.$router.push({ path: "/" });
} else {
this.$router.go(-1);
this.$store.getters.visitedViews.forEach((item) => {
if (item.path == "/details") {
this.$store.dispatch("tagsView/delView", item);
}
});
}
this.loadings.templateLoading = false;
this.loadings.saveLoading = false;
this.loadings.examine0Loading = false;
this.loadings.examine1Loading = false;
},
//分页
changeCurrentImg(i) {
this.imgIdx = i;
this.currentImage = this.imageList[i];
},
//图片旋转
rotate(val) {
this.currentImage.rotateAngle = val.rotate;
// this.imageList.forEach(item=>{
// if(item.id == this.currentImage.id){
// item.rotateAngle = val.rotate
// }
// })
},
//图片加载状态
imgLoad(val) {
this.currentImage.imgError = val;
},
//图片旋转状态
imgBlob(val) {
this.$refs.imgView.loading = true;
if (val.data.isSeal != 1 && !this.optionDisabled) {
let obj = {
pic: val.blob,
info: {
attachmentId: val.data.id,
chmId: this.id,
origFileName: val.data.name.replace("back_", ""),
},
};
setImgRoate(obj)
.then((res) => {
if (res.code === "200") {
this.imageList.forEach((item) => {
if (item.id == val.data.id) {
item.rotateAngle = 0;
}
});
} else {
// this.alertWarningMsg(res.message);
}
this.$refs.imgView.loading = false;
})
.catch((err) => {
console.log(err);
this.$refs.imgView.loading = false;
});
} else {
this.$refs.imgView.loading = false;
}
},
dialogClose() {
this.entryPdfVisible = false;
},
formItemEvent(val) {},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/styles/variables.scss";
.entry {
width: 100%;
height: 100%;
.entryInformation {
width: 100%;
height: 100%;
overflow: auto;
}
}
.option {
width: 100%;
height: 100%;
margin: 0 auto;
background-color: #fff;
padding: 5px 5px 5px;
overflow: auto;
.details {
display: flex;
justify-content: center;
.side {
width: 50%;
padding: 5px;
.formTitleFlex {
display: flex;
justify-content: space-between;
font-size: 16px;
font-weight: 600;
margin-top: 10px;
margin-bottom: 10px;
}
.sideContentBorder {
border: 1px solid $fedexBorder;
}
.titleButton-View {
background-color: #f2f2f2 !important;
border: 2px solid #999 !important;
}
.entryFileOption {
display: flex;
justify-content: space-between;
margin-top: 5px;
}
}
}
}
.boxTitle {
display: flex;
justify-content: space-between;
font-size: 16px;
font-weight: 600;
margin-top: 10px;
margin-bottom: 10px;
}
.entrySaveButton {
font-size: 16px;
}
.entrySave {
margin-top: 32px;
margin-bottom: 32px;
}
.fontRedClass {
color: red !important;
}
.fontGrayClass {
color: #909399 !important;
}
.backgroundButton {
color: $menuLightHover;
background-color: $fedexButton;
}
</style>
<template>
<div class="export-bill-detail">
<h5 class="first-header">
出口订单详情
<div class="returnButton" @click="$router.back()">返回</div>
</h5>
<div class="entry" v-loading="loadings.entryLoading">
<div class="entryTitle">
<div>出口订单详情</div>
<div>
<el-button class="entrySaveButton" @click="back">返 回</el-button>
</div>
</div>
<el-form
class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
class="fedexFormStyle"
ref="sreachForm"
:model="searchForm"
:model="formData"
label-position="top"
disabled
size="small"
>
<el-row class="row-border">
<el-col :span="5">
<Formitem label="订单编号" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-row :gutter="5">
<el-col :span="3">
<Formitem label="订单编号" prop="orderNo">
<el-input
type="text"
class="inputShadow"
id="inputInner--orderNo"
resize="none"
v-model="formData.orderNo"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="订单类型" prop="factoryCode">
<el-select
<el-col :span="3">
<Formitem label="订单类型" prop="orderType">
<el-input
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
class="inputShadow"
id="inputInner--orderType"
resize="none"
v-model="formData.orderType"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="电商平台代码" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="3">
<Formitem label="电商平台代码" prop="ebpcode">
<el-input
type="text"
class="inputShadow"
id="inputInner--ebpcode"
resize="none"
v-model="formData.ebpcode"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="电商平台名称" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="6">
<Formitem label="电商平台名称" prop="ebpname">
<el-input
type="text"
class="inputShadow"
id="inputInner--ebpname"
resize="none"
v-model="formData.ebpname"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="电商企业代码" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="3">
<Formitem label="电商企业代码" prop="ebccode">
<el-input
type="text"
class="inputShadow"
id="inputInner--ebccode"
resize="none"
v-model="formData.ebccode"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<Formitem label="电商企业" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="3">
<Formitem label="电商企业" prop="ebcname">
<el-input
type="text"
class="inputShadow"
id="inputInner--ebcname"
resize="none"
v-model="formData.ebcname"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="贷款金额" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="3">
<Formitem label="货款金额" prop="goodsValue">
<el-input
type="text"
class="inputShadow"
id="inputInner--goodsValue"
resize="none"
v-model="formData.goodsValue"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="运杂费" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
</el-row>
<el-row :gutter="5">
<el-col :span="3">
<Formitem label="运杂费" prop="freight">
<el-input
type="text"
class="inputShadow"
id="inputInner--freight"
resize="none"
v-model="formData.freight"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="币别" prop="factoryCode">
<el-select
<el-col :span="3">
<Formitem label="币制" prop="currency">
<el-input
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
class="inputShadow"
id="inputInner--currency"
resize="none"
v-model="formData.currency"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="业务状态" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<!-- <el-col :span="3">
<Formitem label="业务状态" prop="returnStatus">
<el-input
type="text"
class="inputShadow"
id="inputInner--returnStatus"
resize="none"
v-model="formData.returnStatus"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<Formitem label="申报类型" prop="factoryCode">
<el-select
</el-col> -->
<el-col :span="3">
<Formitem label="申报类型" prop="appType">
<el-input
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
class="inputShadow"
id="inputInner--appType"
resize="none"
v-model="formData.appType"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
></el-input>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="申报日期" prop="declareDate">
<el-date-picker
v-model="value1"
type="date"
placeholder="选择日期">
</el-date-picker>
<el-col :span="3">
<Formitem label="申报日期" prop="appTime">
<el-input
type="text"
class="inputShadow"
id="inputInner--appTime"
resize="none"
v-model="formData.appTime"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="备注" prop="consignmentCode">
<el-popover
placement="bottom"
width="320"
trigger="manual"
popper-class="popoverconsignmentCode"
v-model="textareaVisible.formItemconsignmentCode"
>
<el-input
name="consignmentCode-textarea"
type="textarea"
:rows="5"
id="popoverInputconsignmentCode"
class="inputShadow textareaPopover"
v-model="searchForm.consignmentCode"
resize="none"
maxlength="13000"
placeholder=""
@blur="textareaBlur"
></el-input>
<el-input
slot="reference"
name="consignmentCode"
type="textarea"
:rows="1"
class="inputShadow"
id="inputInner--consignmentCode"
v-model="searchForm.consignmentCode"
resize="none"
placeholder=""
@focus="textareaFocus"
></el-input>
</el-popover>
<el-col :span="12">
<Formitem label="备注" prop="note">
<el-input
type="text"
class="inputShadow"
id="inputInner--note"
resize="none"
v-model="formData.note"
clearable
placeholder=""
></el-input>
</Formitem>
</el-col>
</el-row>
</el-form>
<h5>回执信息</h5>
<ReceiptInfoTable />
<h5>商品明细</h5>
<ProductDetailTable />
<div
:class="{ entryTitle: true, titleBorder: logtableType ? false : true }"
style="margin-top: 10px"
>
<div>
回执信息
<el-button type="text" @click="hiddenLogTable">
<svg-icon v-if="logtableType" icon-class="downIcon"></svg-icon>
<svg-icon v-else icon-class="upIcon"></svg-icon>
</el-button>
</div>
</div>
<ReceiptInfoTable
v-if="logtableType"
:tableData="logData"
:headerData="logHeaderData"
/>
<div class="entryTitle" style="margin-top: 10px">商品明细</div>
<ProductDetailTable
:tableData="detailData"
:bodyHeader="detialHeaderData"
/>
<div style="margin-bottom: 20px; text-align: center"></div>
</div>
</template>
<script>
import ReceiptInfoTable from "@/components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "@/components/ProductDetailTable/index.vue";
import ReceiptInfoTable from "../components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "../components/ProductDetailTable/index.vue";
import { getOrderDetailData } from "@/api/exportDetail-api.js";
export default {
name: "index.vue",
components: {ProductDetailTable, ReceiptInfoTable},
components: { ProductDetailTable, ReceiptInfoTable },
data() {
return {
searchForm: {
declaredPort: "",
consStatus: "",
consignmentCode: "",
accsDataImportTime: [],
ownerName: "",
consignmentHeadCode: "",
isPushCustomsSys: "",
waitOperStatus: "",
declTime: [],
},
textareaVisible: {
formItemconsignmentCode: false,
formItemconsignmentHeadCode: false,
},
dictData: {
userport: [
{name: "Shanghai Port", code: "SH"},
{name: "Beijing Port", code: "BJ"},
{name: "Guangzhou Port", code: "GZ"},
{name: "Shenzhen Port", code: "SZ"},
{name: "Tianjin Port", code: "TJ"},
],
id: null,
formData: {},
logData: [],
logHeaderData: [
{
name: "回执状态",
value: "returnStatus",
width: "200",
align: "left",
},
{
name: "状态时间",
value: "returnTime",
width: "400",
align: "left",
},
{
name: "回执描述",
value: "returnInfo",
width: "",
align: "left",
},
],
detailData: [],
detialHeaderData: [
{
name: "企业商品货号",
value: "",
width: "",
align: "left",
},
{
name: "商品企业商品名称",
value: "",
width: "",
align: "left",
},
{
name: "企业商品描述",
value: "",
width: "",
align: "left",
},
{
name: "条码",
value: "",
width: "",
align: "left",
},
{
name: "计量单位",
value: "",
width: "",
align: "left",
},
{
name: "币制",
value: "",
width: "",
align: "left",
},
{
name: "数量",
value: "",
width: "",
align: "left",
},
{
name: "单价",
value: "",
width: "",
align: "left",
},
{
name: "总价",
value: "",
width: "",
align: "left",
},
{
name: "备注",
value: "",
width: "",
align: "left",
},
],
loadings: {
entryLoading: false,
},
logtableType: true,
};
},
created() {
if (this.$route.params.data) {
this.id = this.$route.params.data.id;
this.searchData();
} else {
this.back();
}
},
methods: {
textareaBlur(val) {
let inputInner = document.querySelector(
"#inputInner--" + val.target.name.split("-")[0]
);
this.textareaVisible["formItem" + val.target.name.split("-")[0]] = false;
inputInner.style.display = "block";
this.$nextTick(() => {
inputInner.blur();
if (
inputInner.value != undefined &&
inputInner.value != "" &&
inputInner.value != null
) {
inputInner.classList.add("inputFocus");
} else {
inputInner.classList.remove("inputFocus");
}
});
let arr = [];
this.searchForm[val.target.name.split("-")[0]]
.replace(/[\n\,\;\;]/g, ",")
.replace(/[\t]/g, "")
.split(",")
.forEach((str, index) => {
if (str != null && str != "" && index <= 1000) {
arr.push(str.trim());
searchData() {
this.loadings.entryLoading = true;
getOrderDetailData({ orderId: this.id })
.then((res) => {
if (res.code === "200") {
this.formData = res.data.exportOrder;
this.detailData = res.data.exportOrderProductList;
this.logData = res.data.exportOrderReceiptList;
this.detailData.forEach((item, idx) => {
item.index = idx;
});
} else {
this.alertWarningMsg(res.message);
}
this.loadings.entryLoading = false;
})
.catch((err) => {
console.log(err);
this.loadings.entryLoading = false;
});
this.searchForm[val.target.name.split("-")[0]] = arr.join("\n");
this.$forceUpdate();
},
//文本域展示状态切换
textareaFocus(val) {
this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true;
this.$nextTick(() => {
document
.querySelector("#popoverInput" + val.target.name.split("-")[0])
.focus();
document.querySelector(
"#inputInner--" + val.target.name.split("-")[0]
).style.display = "none";
});
searchLogData() {},
hiddenLogTable() {
this.logtableType = !this.logtableType;
},
}
}
back() {
this.$router.go(-1);
},
},
};
</script>
<style scoped lang="scss">
.export-bill-detail {
background-color: white;
padding-left: 20px;
//border: 1px solid black;
.entry {
width: 100%;
height: 100%;
.fedexFormItem {
background-color: #f5f5f5;
margin-right: 5px;
margin-bottom: 5px;
}
.fedexformSreach {
border-bottom: none;
padding: 10px;
background-color: #fff;
overflow: auto;
.entryInformation {
width: 100%;
height: 100%;
}
.first-header {
margin-top: 0;
padding-top: 20px;
.entryTitle {
display: flex;
justify-content: space-between;
position: relative;
.returnButton {
font-size: 14px;
color: red;
position: absolute;
right: 0;
top: 0px;
width: 80px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: white;
border-radius: 5px;
margin-right: 20px;
margin-top: 20px;
cursor: pointer;
border: 1px solid red;
}
font-weight: 600;
font-weight: 16px;
color: #000;
margin-bottom: 10px;
}
.titleBorder {
border-bottom: 1px solid #333;
}
}
</style>
......
......@@ -174,7 +174,9 @@
<span>{{ scope.row.returnStatus }}</span>
</template>
<template v-slot:orderNo="scope">
<el-button type="text">{{ scope.row.orderNo }}</el-button>
<el-button type="text" @click="view(scope.row)">{{
scope.row.orderNo
}}</el-button>
</template>
</Table>
</div>
......@@ -325,6 +327,13 @@ export default {
},
//导出
downloadData() {},
//查询详情
view(val) {
this.$router.push({
name: "ExportBillDetail",
params: { data: val },
});
},
//文本域展示状态切换
textareaFocus(val) {
this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true;
......
......@@ -1309,8 +1309,8 @@
</template>
<script>
import ReceiptInfoTable from "@/components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "@/components/ProductDetailTable/index.vue";
import ReceiptInfoTable from "../components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "../components/ProductDetailTable/index.vue";
export default {
name: "exportTransportDetail.vue",
......
......@@ -290,7 +290,6 @@
</template>
<script>
import {getAllExportingBills, getAllListBills} from "@/api/query/query";
import PopoverTextarea from "@/components/PopoverTextarea/index.vue";
export default {
......@@ -395,15 +394,6 @@ export default {
}
},
created() {
getAllListBills({
pageIndex: 1,
pageSize: 20
}).then((res) => {
console.log('res', res)
this.tableData = res.data.value;
this.total = res.data.totalItems;
debugger;
})
},
methods: {
input() {
......
......@@ -417,8 +417,8 @@
</template>
<script>
import ReceiptInfoTable from "@/components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "@/components/ProductDetailTable/index.vue";
import ReceiptInfoTable from "../components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "../components/ProductDetailTable/index.vue";
export default {
name: "exportTransportDetail.vue",
......
......@@ -584,8 +584,8 @@
</template>
<script>
import ReceiptInfoTable from "@/components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "@/components/ProductDetailTable/index.vue";
import ReceiptInfoTable from "../components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "../components/ProductDetailTable/index.vue";
export default {
name: "index.vue",
......
......@@ -154,7 +154,6 @@
</template>
<script>
import {getAllExportingBills, getAllTransportBills} from "@/api/query/query";
export default {
name: "index",
......@@ -256,15 +255,6 @@ export default {
}
},
created() {
getAllTransportBills({
pageIndex: 1,
pageSize: 20
}).then((res) => {
console.log('res', res)
this.tableData = res.data.value;
this.total = res.data.totalItems;
debugger;
})
},
methods: {
tableSelect(val) {
......
......@@ -489,8 +489,8 @@
</template>
<script>
import ReceiptInfoTable from "@/components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "@/components/ProductDetailTable/index.vue";
import ReceiptInfoTable from "../components/ReceiptInfoTable/index.vue";
import ProductDetailTable from "../components/ProductDetailTable/index.vue";
export default {
name: "index.vue",
......
......@@ -205,7 +205,6 @@
split-button
type="primary"
v-loading="loadings.dropDownLoading"
:disabled="selected.length == 0"
@command="dropdownChange"
@click="declareData"
>
......@@ -220,7 +219,7 @@
>
<el-dropdown-item
:command="{ code: 'order', name: '订单申报' }"
></el-dropdown-item>
>订单申报</el-dropdown-item>
<el-dropdown-item :command="{ code: 'waybill', name: '物流单申报' }"
>物流单申报</el-dropdown-item
>
......@@ -565,7 +564,8 @@ export default {
downloadData() {},
//申报
declareData() {
this.loadings.dropDownLoading = true;
if(this.selected.length > 0){
this.loadings.dropDownLoading = true;
let obj = {
declareIds: [],
type: this.dropdownCode,
......@@ -586,6 +586,9 @@ export default {
console.log(err);
this.loadings.dropDownLoading = false;
});
}else{
this.alertWarningMsg('请选择数据!')
}
},
//切换申报模式
dropdownChange(val) {
......