zhengquan.bai

申报数据管理

<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-popover"
class="inputShadow textareaPopover"
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: "popoverconsignmentCode",
},
},
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-shadow {
//.inputShadow {
// box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
//}
//
//.textarea-popover {
//.textareaPopover {
// box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
//}
//
......
......@@ -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({
......
This diff is collapsed. Click to expand it.
<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>
......@@ -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: {
......
<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>
......@@ -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>
......