Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
EcomWeb
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
zhengquan.bai
2024-12-18 17:56:48 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5195b8639ffa380447332c7868f187a8f03ea7c3
5195b863
1 parent
2685ceed
申报数据管理
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
888 additions
and
581 deletions
src/components/PopoverTextarea/index.vue
src/router/index.js
src/views/AuditionEntrySearch/index.vue
src/views/consolidatedDeclaration/index.vue
src/views/exportBillQuery/index.vue
src/views/exportCancelOrderQuery/index.vue
src/views/listBranchQuery/index.vue
src/components/PopoverTextarea/index.vue
View file @
5195b86
<template>
<el-popover
placement="bottom
"
width="320"
trigger="manual
"
:placement="'bottom'
"
:
width="320"
:trigger="'manual'
"
:popper-class="popperClass"
v-model="isPopoverVisible"
>
...
...
@@ -12,7 +12,7 @@
type="textarea"
:rows="5"
v-model="localValue"
class="
textarea-p
opover"
class="
inputShadow textareaP
opover"
resize="none"
:maxlength="maxlength"
@blur="handleBlur"
...
...
@@ -24,7 +24,8 @@
ref="referenceInput"
type="textarea"
:rows="1"
class="input-shadow"
id="inputInner--consignmentCode"
class="inputShadow"
v-model="localValue"
resize="none"
@focus="handleFocus"
...
...
@@ -50,7 +51,7 @@ export default {
},
popperClass: {
type: String,
default: "popover
-input-class
",
default: "popover
consignmentCode
",
},
},
data() {
...
...
@@ -68,30 +69,25 @@ export default {
},
},
methods: {
handleFocus() {
handleFocus(
val
) {
this.isPopoverVisible = true;
this.$nextTick(() => {
this.$refs.popoverInput.focus();
// 弹出层输入框获取焦点
this.$refs.referenceInput.
$el.style.display = "none"; // 隐藏主输入框
this.$refs.popoverInput.focus();
this.$refs.referenceInput.
style.display = "none";
});
},
handleBlur() {
handleBlur(
val
) {
this.isPopoverVisible = false;
// 格式化内容
this.localValue = this.formatContent(this.localValue);
this.$nextTick(() => {
const referenceInput = this.$refs.referenceInput.$el;
referenceInput.style.display = "block";
if (this.localValue) {
referenceInput.classList.add("inputFocus");
const formattedValue = this.formatContent(this.localValue);
this.localValue = formattedValue;
this.$refs.referenceInput.style.display = "block";
if (formattedValue) {
this.$refs.referenceInput.classList.add("inputFocus");
} else {
referenceInput.classList.remove("inputFocus");
this.$refs.
referenceInput.classList.remove("inputFocus");
}
});
this.$emit("blur", this.localValue); // 触发父组件的 blur 事件
},
formatContent(value) {
// 格式化输入内容:替换分隔符、去空格、限制条数
...
...
@@ -108,11 +104,11 @@ export default {
</script>
<style scoped lang="scss">
//.input
-s
hadow {
//.input
S
hadow {
// box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
//}
//
//.textarea
-p
opover {
//.textarea
P
opover {
// box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
//}
//
...
...
src/router/index.js
View file @
5195b86
...
...
@@ -140,6 +140,13 @@ export const constantRoutes = [
meta
:
{
title
:
'清单总分单查询'
,
icon
:
'dashboard'
}
},
{
path
:
'/exportCancelOrderQuery'
,
component
:
(
resolve
)
=>
require
([
'@/views/exportCancelOrderQuery/index'
],
resolve
),
name
:
'首页'
,
hidden
:
false
,
meta
:
{
title
:
'出口撤销单查询'
,
icon
:
'dashboard'
}
},
{
path
:
'/listBranchDetail'
,
component
:
(
resolve
)
=>
require
([
'@/views/listBranchDetail/index'
],
resolve
),
name
:
'首页'
,
...
...
@@ -159,14 +166,29 @@ export const constantRoutes = [
name
:
'首页'
,
meta
:
{
title
:
'物流离境单查询'
,
icon
:
'dashboard'
}
},
]
},
{
path
:
'index'
,
component
:
(
resolve
)
=>
require
([
'@/views/index'
],
resolve
),
name
:
'首页'
,
meta
:
{
title
:
'出口撤销单查询'
,
icon
:
'dashboard'
}
path
:
'/'
,
component
:
Layout
,
hidden
:
false
,
redirect
:
'index'
,
meta
:
{
title
:
'汇总申报'
,
icon
:
'fedexSystem'
},
children
:
[
{
path
:
'/consolidatedDeclaration'
,
component
:
(
resolve
)
=>
require
([
'@/views/consolidatedDeclaration/index'
],
resolve
),
hidden
:
false
,
meta
:
{
title
:
'汇总申报'
,
icon
:
'api'
},
},
{
path
:
'/exportBillQuery'
,
component
:
(
resolve
)
=>
require
([
'@/views/exportBillQuery/index'
],
resolve
),
hidden
:
false
,
meta
:
{
title
:
'汇总申请单查询'
,
icon
:
'api'
},
}
]
}
,
}
]
export
default
new
Router
({
...
...
src/views/AuditionEntrySearch/index.vue
View file @
5195b86
<template>
<div
class="entrySreach"
style="overflow-y: auto"
v-loading="loadings.templateLoading"
<div>
<div class="entrySreach" ref="classCPortEntry">
<el-form
class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
ref="sreachForm"
:model="searchForm"
label-position="top"
size="small"
>
<el-row class="row-border">
<el-col :span="4">
<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"
@input="input"
></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"
@input="input"
></el-input>
</el-popover>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="订单编号" prop="factoryCode">
<el-select
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
clearable
placeholder=""
@change="portChange"
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</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"
@input="input"
></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"
@input="input"
></el-input>
</el-popover>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem
label="创建时间"
prop="createTime"
:activeType="true"
>
<el-date-picker
class="inputInner--accsDataImportTime"
id="inputInner--accsDataImportTime"
v-model="searchForm.accsDataImportTime"
type="daterange"
format="yyyy-MM-dd"
prefix-icon="none"
value-format="yyyyMMdd"
range-separator="至"
start-placeholder=""
clearable
end-placeholder=""
:picker-options="importTimePickerOptions"
@blur="datePickerBlur"
@change="accsDataImportTimeChange"
>
</el-date-picker>
</Formitem>
</el-col>
<el-col :span="2">
<el-form-item class="textCenter">
<el-button
class="entrySreachButton"
type="text"
icon="el-icon-search"
:loading="loadings.searchLoading"
@click="search(0)"
></el-button>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="textCenter">
<el-button
icon="el-icon-refresh"
size="small"
:loading="loadings.searchLoading"
@click="search(0)"
>重置
</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row class="row-border">
<el-col :span="4">
<Formitem label="回执类型" prop="factoryCode">
<el-select
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
clearable
placeholder=""
@change="portChange"
>
<CustomForm
ref="auditionEntryForm"
:belongBizType="11"
type="auditionEntry"
:paginationOption="page"
@getFormOver="getFormOver"
@formSreach="formSreach"
@formChange="formChange"
/>
<div class="optionButton">
<!-- 审批通过 -->
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="回执类型" prop="factoryCode">
<el-select
type="text"
id="inputInner--declaredPort"
v-model="searchForm.declaredPort"
clearable
placeholder=""
@change="portChange"
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</Formitem>
</el-col>
</el-row>
</el-form>
</div>
<div class="action-buttons">
<div class="left-buttons">
<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
:loading="loadings.downloadLoading2"
@click="downloadBpiData('log')"
style="background: #007AB7"
>
<!-- 审批不通过 -->
<svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
一键导入
</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
:loading="loadings.downloadLoading2"
@click="downloadBpiData('log')"
style="background: #007AB7"
>
<!-- 导出 -->
<svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
导入模板下载
</el-button>
</div>
<div class="right-buttons">
<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
:loading="loadings.downloadLoading2"
@click="downloadBpiData('log')"
>
<svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
一键申报
</el-button>
<el-button
size="small"
:loading="loadings.downloadLoading2"
@click="downloadBpiData('log')"
>
<svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
导出
</el-button>
</div>
</div>
<CustomTable
<Table
class="fedexDetialTable fedexSreachTable"
ref="auditionEntryTable"
:belongBizType="11"
router=""
:tableData="tableData"
:tableHeader="headerData"
ref="entryTable"
:data="tableData"
:headerData="headerData"
:maxHeight="tableMaxheight"
:border="true"
:pagination="true"
:order="false"
:loading="loadings.sreachLoading"
:page="page.pageIndex"
:pageSizes="[20, 30, 50, 100]"
:totalCount="total"
:loading="loadings.tableLoading"
@sizeChange="sizeChange"
@currentChange="currentChange"
@tableFormChange="tableFormChange"
@rowClick="handleRowClick"
:selection="true"
:selectFixed="false"
@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"
@tableSelectAll="tableSelectAll"
:rowSelectDataType="false"
:selected="selected"
>
<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 v-slot:waveName="scope">
<span>{{ `${scope.row.waveName}(${scope.row.waveExt2})` }}</span>
</template>
</
Custom
Table>
</Table>
</div>
</template>
<script>
import { encrypt } from "@/utils/jsencrypt";
import {
check,
isApproval,
getNewApprovalType,
} from "@/api/auditionEntry-api.js";
import {getAllExportingBills} from "@/api/query/query";
import PopoverTextarea from "@/components/PopoverTextarea/index.vue";
export default {
name: "
AuditionEntrySearch
",
components: {},
name: "
index
",
components: {
PopoverTextarea
},
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,
searchForm: {
declaredPort: "",
consStatus: "",
consignmentCode: "",
accsDataImportTime: [],
ownerName: "",
consignmentHeadCode: "",
isPushCustomsSys: "",
waitOperStatus: "",
declTime: [],
},
selected: [],
checkCell: null,
status: 0,
checkEntry: null,
tablefixed: false,
};
sizeChange(val) {
this.page.pageSize = val;
this.sreach(1);
},
created() {
this.loadings.templateLoading = true;
// this.setDict();
//分页
currentChange(val) {
this.page.pageIndex = val.page;
this.search(1);
},
mounted() {
this.tableMaxheight =
window.innerHeight -
Number(this.$refs.auditionEntryForm.$el.offsetHeight) -
250;
if (this.$store.getters.userData.rde_Type) {
this.checkNewEntry();
}
tableSelect(val) {
this.selected = val.selection;
},
activated() {
if (this.status == 1) {
// this.setDict();
this.$refs.auditionEntryForm.sreach(1, this.conditionData);
}
if (this.$store.getters.userData.rde_Type) {
this.checkNewEntry();
}
tableSelectAll(val) {
this.selected = val;
},
beforeDestroy() {
this.clearCheckEntry(1);
page: {
pageIndex: 1,
pageSize: 20,
},
watch: {
$route: {
handler(val) {
if (val.path != "/emp_auditionEntry_parent/emp_auditionEntrySearch") {
this.clearCheckEntry(1);
}
tableData: [],
tableMaxheight: null,
total: 0,
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"},
],
},
deep: true,
loadings: {
searchLoading: false,
},
textareaVisible: {
formItemconsignmentCode: false,
formItemconsignmentHeadCode: false,
},
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;
});
headerData: [
{
name: "回执状态",
value: "returnStatus",
width: "150",
align: "left",
},
//批量审批通过/不通过
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();
});
});
}
{
name: "订单编号",
value: "orderNo",
width: '150',
align: 'left'
},
//根据查询条件导出
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);
});
{
name: '订单类型',
value: 'orderType',
width: '150',
align: 'left'
},
//分页
currentChange(val) {
this.page.pageIndex = val.page;
this.getFormOver();
{
name: '电商企业代码',
value: 'ebccode',
width: '200',
align: 'left'
},
sizeChange(val) {
this.page.pageSize = val;
this.getFormOver();
{
name: '电商企业',
value: 'ebcname',
width: '200',
align: 'left'
},
{
name: '电商平台名称',
value: 'ebpname',
width: '250',
align: 'left'
},
//table选择变更
tableSelect(selection) {
this.selected = selection.selection;
this.clearCheckEntry(0);
{
name: '创建时间',
value: 'createTime',
width: '150',
align: 'left'
},
inputblur() {
this.checkCell.cell.classList.remove("activeTableCell");
this.checkCell = null;
{
name: '申报企业',
value: 'declaringEnterprise',
width: '200',
align: 'left'
},
tableCellClick(val) {
if (this.checkCell != null) {
this.inputblur();
{
name: '申报类型',
value: 'declaringType',
width: '100',
align: 'left'
}
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 {
// }
created() {
getAllExportingBills({
pageIndex: 1,
pageSize: 20
}).then((res) => {
console.log('res', res)
this.tableData = res.data.value;
this.total = res.data.totalItems;
debugger;
})
.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",
methods: {
input() {
this.$forceUpdate();
},
});
handleRowClick(row) {
const declareId = row.declareId;
this.$router.push({
path: '/exportBillDetail',
query: {
declareId
}
});
}
},
getFormOver(val) {
this.clearCheckEntry(0);
this.$nextTick(() => {
if (this.status == 1) {
this.$refs.auditionEntryForm.sreach(1, this.conditionData);
async search(val) {
try {
} catch (error) {
console.error("搜索出错:", error);
} finally {
// 无论成功还是失败,关闭加载状态
this.loadings.sreachLoading = false;
}
});
},
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();
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 {
this.checkNewEntry(
);
inputInner.classList.remove("inputFocus"
);
}
} else {
this.clearCheckEntry(0);
reject();
});
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());
}
})
.catch((err) => {
console.log(err);
this.clearCheckEntry(1);
reject();
});
}, 60000);
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";
});
}
},
clearCheckEntry(val) {
clearTimeout(this.checkEntry);
this.promptMessage("close");
if (this.$store.getters.userData.rde_Type && val == 0) {
this.checkNewEntry();
}
},
},
};
}
</script>
<style
lang="scss" scoped
>
<style
scoped lang="scss"
>
@import "@/assets/styles/variables.scss";
.entrySreach {
height: 100%;
background-color: $menuLightBg;
.entrySaveButton {
margin-left: 8px;
}
.entrySreachButton {
.entrySreachButton {
display: inline-block;
font-size: 20px;
color: $subMenuHover !important;
}
.backgroundRow {
background-color: $formItemBackgroundColor;
}
color: $fedexButton !important;
}
.optionButton {
width: 100%;
padding: 10px 15px;
text-align: right;
.el-button {
color: $fedexButton;
border-color: $fedexButton !important;
.action-buttons {
margin: 10px;
display: flex;
justify-content: space-between;
.left-buttons {
svg {
display: inline-block;
margin-right: 5px;
fill: $fedexButton;
color: white;
}
button {
color: white;
}
.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;
//width: 90%;
}
</style>
...
...
src/views/consolidatedDeclaration/index.vue
0 → 100644
View file @
5195b86
<template>
<div>
<h3>汇总申报信息</h3>
<el-form
class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
ref="sreachForm"
:model="searchForm"
label-position="top"
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"
@input="input"
></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"
@input="input"
></el-input>
</el-popover>
</Formitem>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
export default {
name: "index",
data() {
return {
}
}
}
</script>
<style scoped lang="scss">
</style>
src/views/exportBillQuery/index.vue
View file @
5195b86
...
...
@@ -11,40 +11,7 @@
<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"
@input="input"
></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"
@input="input"
></el-input>
</el-popover>
<PopoverTextarea />
</Formitem>
</el-col>
<el-col :span="4">
...
...
@@ -183,9 +150,11 @@
<script>
import {getAllExportingBills} from "@/api/query/query";
import PopoverTextarea from "@/components/PopoverTextarea/index.vue";
export default {
name: "index",
components: {PopoverTextarea},
data() {
return {
searchForm: {
...
...
src/views/exportCancelOrderQuery/index.vue
0 → 100644
View file @
5195b86
<template>
<div>
<el-form
class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
ref="sreachForm"
:model="searchForm"
label-position="top"
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"
@input="input"
></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"
@input="input"
></el-input>
</el-popover>
</Formitem>
</el-col>
<el-col :span="5">
<Formitem label="回执状态" prop="declaredPort">
<el-select
type="text"
id="inputInner--receiptStatus"
v-model="searchForm.receiptStatus"
clearable
placeholder=""
>
<el-option
v-for="(item, index) in dictData.userport"
:key="index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</Formitem>
</el-col>
<el-col :span="4">
<Formitem label="创建日期" prop="receiptTime">
<el-date-picker
class="inputInner--accsDataImportTime"
id="inputInner--accsDataImportTime"
v-model="searchForm.accsDataImportTime"
type="daterange"
format="yyyy-MM-dd"
prefix-icon="none"
value-format="yyyyMMdd"
range-separator="至"
start-placeholder=""
clearable
end-placeholder=""
:picker-options="importTimePickerOptions"
@blur="datePickerBlur"
@change="accsDataImportTimeChange"
>
</el-date-picker>
</Formitem>
</el-col>
<el-col :span="2">
<el-form-item class="textCenter">
<el-button
class="entrySreachButton"
type="text"
icon="el-icon-search"
:loading="loadings.searchLoading"
@click="search(0)"
></el-button>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="textCenter">
<el-button
icon="el-icon-refresh"
size="small"
:loading="loadings.searchLoading"
@click="search(0)"
>重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="text-align: right; margin: 10px">
<el-button
size="small"
:loading="loadings.downloadLoading2"
@click="downloadBpiData('log')"
>
<svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
导出
</el-button>
</div>
<Table
class="fedexDetialTable fedexSreachTable"
ref="entryTable"
:data="tableData"
:headerData="headerData"
:maxHeight="tableMaxheight"
:border="true"
:pagination="true"
:order="false"
:loading="loadings.sreachLoading"
:page="page.pageIndex"
:pageSizes="[20, 30, 50, 100]"
:totalCount="total"
@sizeChange="sizeChange"
@currentChange="currentChange"
:selection="true"
:selectFixed="false"
@rowClick="handleRowClick"
@tableSelect="tableSelect"
@tableSelectAll="tableSelectAll"
:rowSelectDataType="false"
:selected="selected"
>
<template v-slot:waveName="scope">
<span>{{ `${scope.row.waveName}(${scope.row.waveExt2})` }}</span>
</template>
</Table>
</div>
</template>
<script>
import {getAllExportingBills, getAllTransportBills} from "@/api/query/query";
export default {
name: "exportCancelOrderQuery",
data() {
return {
searchForm: {
declaredPort: "",
consStatus: "",
consignmentCode: "",
accsDataImportTime: [],
ownerName: "",
consignmentHeadCode: "",
isPushCustomsSys: "",
waitOperStatus: "",
declTime: [],
},
loadings: {
searchLoading: false,
},
page: {
pageIndex: 1,
pageSize: 20,
},
textareaVisible: {
formItemconsignmentCode: false,
formItemconsignmentHeadCode: false,
},
sizeChange(val) {
this.page.pageSize = val;
this.sreach(1);
},
//分页
currentChange(val) {
this.page.pageIndex = val.page;
this.search(1);
},
tableData: [],
total: 0,
tableMaxheight: null,
headerData: [
{
name: "回执状态",
value: "returnStatus",
width: "150",
align: "left",
},
{
name: "提运单号",
value: "orderNo",
width: '150',
align: 'left'
},
{
name: '电子口岸编号',
value: 'orderType',
width: '150',
align: 'left'
},
{
name: '物流企业名称',
value: 'ebccode',
width: '200',
align: 'left'
},
{
name: '申报地海关',
value: 'ebcname',
width: '200',
align: 'left'
},
{
name: '创建时间',
value: 'createTime',
width: '150',
align: 'left'
},
{
name: '申报企业',
value: 'declaringEnterprise',
width: '200',
align: 'left'
},
{
name: '申报类型',
value: 'declaringType',
width: '100',
align: 'left'
}
],
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"},
],
},
}
},
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) {
this.selected = val.selection;
},
tableSelectAll(val) {
this.selected = val;
},
handleRowClick(row) {
const declareId = row.declareId;
this.$router.push({
path: '/listBranchDetail',
query: {
declareId
}
});
},
async search(val) {
try {
} catch (error) {
console.error("搜索出错:", error);
} finally {
// 无论成功还是失败,关闭加载状态
this.loadings.sreachLoading = false;
}
},
}
}
</script>
<style scoped lang="scss">
@import "@/assets/styles/variables.scss";
.entrySreachButton {
display: inline-block;
font-size: 20px;
color: $fedexButton !important;
}
</style>
src/views/listBranchQuery/index.vue
View file @
5195b86
...
...
@@ -292,6 +292,49 @@ export default {
this.loadings.sreachLoading = false;
}
},
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());
}
});
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";
});
},
}
}
</script>
...
...
Please
register
or
login
to post a comment