zhengquan.bai

申报数据管理

1 <template> 1 <template>
2 <el-popover 2 <el-popover
3 - placement="bottom" 3 + :placement="'bottom'"
4 - width="320" 4 + :width="320"
5 - trigger="manual" 5 + :trigger="'manual'"
6 :popper-class="popperClass" 6 :popper-class="popperClass"
7 v-model="isPopoverVisible" 7 v-model="isPopoverVisible"
8 > 8 >
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
12 type="textarea" 12 type="textarea"
13 :rows="5" 13 :rows="5"
14 v-model="localValue" 14 v-model="localValue"
15 - class="textarea-popover" 15 + class="inputShadow textareaPopover"
16 resize="none" 16 resize="none"
17 :maxlength="maxlength" 17 :maxlength="maxlength"
18 @blur="handleBlur" 18 @blur="handleBlur"
...@@ -24,7 +24,8 @@ ...@@ -24,7 +24,8 @@
24 ref="referenceInput" 24 ref="referenceInput"
25 type="textarea" 25 type="textarea"
26 :rows="1" 26 :rows="1"
27 - class="input-shadow" 27 + id="inputInner--consignmentCode"
28 + class="inputShadow"
28 v-model="localValue" 29 v-model="localValue"
29 resize="none" 30 resize="none"
30 @focus="handleFocus" 31 @focus="handleFocus"
...@@ -50,7 +51,7 @@ export default { ...@@ -50,7 +51,7 @@ export default {
50 }, 51 },
51 popperClass: { 52 popperClass: {
52 type: String, 53 type: String,
53 - default: "popover-input-class", 54 + default: "popoverconsignmentCode",
54 }, 55 },
55 }, 56 },
56 data() { 57 data() {
...@@ -68,30 +69,25 @@ export default { ...@@ -68,30 +69,25 @@ export default {
68 }, 69 },
69 }, 70 },
70 methods: { 71 methods: {
71 - handleFocus() { 72 + handleFocus(val) {
72 this.isPopoverVisible = true; 73 this.isPopoverVisible = true;
73 this.$nextTick(() => { 74 this.$nextTick(() => {
74 - this.$refs.popoverInput.focus(); // 弹出层输入框获取焦点 75 + this.$refs.popoverInput.focus();
75 - this.$refs.referenceInput.$el.style.display = "none"; // 隐藏主输入框 76 + this.$refs.referenceInput.style.display = "none";
76 }); 77 });
77 }, 78 },
78 - handleBlur() { 79 + handleBlur(val) {
79 this.isPopoverVisible = false; 80 this.isPopoverVisible = false;
80 -
81 - // 格式化内容
82 - this.localValue = this.formatContent(this.localValue);
83 -
84 this.$nextTick(() => { 81 this.$nextTick(() => {
85 - const referenceInput = this.$refs.referenceInput.$el; 82 + const formattedValue = this.formatContent(this.localValue);
86 - referenceInput.style.display = "block"; 83 + this.localValue = formattedValue;
87 - if (this.localValue) { 84 + this.$refs.referenceInput.style.display = "block";
88 - referenceInput.classList.add("inputFocus"); 85 + if (formattedValue) {
86 + this.$refs.referenceInput.classList.add("inputFocus");
89 } else { 87 } else {
90 - referenceInput.classList.remove("inputFocus"); 88 + this.$refs.referenceInput.classList.remove("inputFocus");
91 } 89 }
92 }); 90 });
93 -
94 - this.$emit("blur", this.localValue); // 触发父组件的 blur 事件
95 }, 91 },
96 formatContent(value) { 92 formatContent(value) {
97 // 格式化输入内容:替换分隔符、去空格、限制条数 93 // 格式化输入内容:替换分隔符、去空格、限制条数
...@@ -108,11 +104,11 @@ export default { ...@@ -108,11 +104,11 @@ export default {
108 </script> 104 </script>
109 105
110 <style scoped lang="scss"> 106 <style scoped lang="scss">
111 -//.input-shadow { 107 +//.inputShadow {
112 // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 108 // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
113 //} 109 //}
114 // 110 //
115 -//.textarea-popover { 111 +//.textareaPopover {
116 // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 112 // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
117 //} 113 //}
118 // 114 //
......
...@@ -140,6 +140,13 @@ export const constantRoutes = [ ...@@ -140,6 +140,13 @@ export const constantRoutes = [
140 meta: { title: '清单总分单查询', icon: 'dashboard' } 140 meta: { title: '清单总分单查询', icon: 'dashboard' }
141 }, 141 },
142 { 142 {
143 + path: '/exportCancelOrderQuery',
144 + component: (resolve) => require(['@/views/exportCancelOrderQuery/index'], resolve),
145 + name: '首页',
146 + hidden: false,
147 + meta: { title: '出口撤销单查询', icon: 'dashboard' }
148 + },
149 + {
143 path: '/listBranchDetail', 150 path: '/listBranchDetail',
144 component: (resolve) => require(['@/views/listBranchDetail/index'], resolve), 151 component: (resolve) => require(['@/views/listBranchDetail/index'], resolve),
145 name: '首页', 152 name: '首页',
...@@ -159,14 +166,29 @@ export const constantRoutes = [ ...@@ -159,14 +166,29 @@ export const constantRoutes = [
159 name: '首页', 166 name: '首页',
160 meta: { title: '物流离境单查询', icon: 'dashboard' } 167 meta: { title: '物流离境单查询', icon: 'dashboard' }
161 }, 168 },
169 + ]
170 + },
162 { 171 {
163 - path: 'index', 172 + path: '/',
164 - component: (resolve) => require(['@/views/index'], resolve), 173 + component: Layout,
165 - name: '首页', 174 + hidden: false,
166 - meta: { title: '出口撤销单查询', icon: 'dashboard' } 175 + redirect: 'index',
176 + meta: {title: '汇总申报', icon: 'fedexSystem'},
177 + children: [
178 + {
179 + path: '/consolidatedDeclaration',
180 + component: (resolve) => require(['@/views/consolidatedDeclaration/index'], resolve),
181 + hidden: false,
182 + meta: { title: '汇总申报', icon: 'api' },
183 + },
184 + {
185 + path: '/exportBillQuery',
186 + component: (resolve) => require(['@/views/exportBillQuery/index'], resolve),
187 + hidden: false,
188 + meta: { title: '汇总申请单查询', icon: 'api' },
167 } 189 }
168 ] 190 ]
169 - }, 191 + }
170 ] 192 ]
171 193
172 export default new Router({ 194 export default new Router({
......
This diff is collapsed. Click to expand it.
1 +<template>
2 + <div>
3 + <h3>汇总申报信息</h3>
4 +
5 + <el-form
6 + class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
7 + ref="sreachForm"
8 + :model="searchForm"
9 + label-position="top"
10 + size="small"
11 + >
12 + <el-row class="row-border">
13 + <el-col :span="5">
14 + <Formitem label="提运单号" prop="consignmentCode">
15 + <el-popover
16 + placement="bottom"
17 + width="320"
18 + trigger="manual"
19 + popper-class="popoverconsignmentCode"
20 + v-model="textareaVisible.formItemconsignmentCode"
21 + >
22 + <el-input
23 + name="consignmentCode-textarea"
24 + type="textarea"
25 + :rows="5"
26 + id="popoverInputconsignmentCode"
27 + class="inputShadow textareaPopover"
28 + v-model="searchForm.consignmentCode"
29 + resize="none"
30 + maxlength="13000"
31 + placeholder=""
32 + @blur="textareaBlur"
33 + @input="input"
34 + ></el-input>
35 + <el-input
36 + slot="reference"
37 + name="consignmentCode"
38 + type="textarea"
39 + :rows="1"
40 + class="inputShadow"
41 + id="inputInner--consignmentCode"
42 + v-model="searchForm.consignmentCode"
43 + resize="none"
44 + placeholder=""
45 + @focus="textareaFocus"
46 + @input="input"
47 + ></el-input>
48 + </el-popover>
49 + </Formitem>
50 + </el-col>
51 + </el-row>
52 + </el-form>
53 + </div>
54 +</template>
55 +
56 +<script>
57 +export default {
58 + name: "index",
59 + data() {
60 + return {
61 + }
62 + }
63 +}
64 +</script>
65 +
66 +<style scoped lang="scss">
67 +
68 +</style>
...@@ -11,40 +11,7 @@ ...@@ -11,40 +11,7 @@
11 <el-row class="row-border"> 11 <el-row class="row-border">
12 <el-col :span="5"> 12 <el-col :span="5">
13 <Formitem label="运单编号" prop="consignmentCode"> 13 <Formitem label="运单编号" prop="consignmentCode">
14 - <el-popover 14 + <PopoverTextarea />
15 - placement="bottom"
16 - width="320"
17 - trigger="manual"
18 - popper-class="popoverconsignmentCode"
19 - v-model="textareaVisible.formItemconsignmentCode"
20 - >
21 - <el-input
22 - name="consignmentCode-textarea"
23 - type="textarea"
24 - :rows="5"
25 - id="popoverInputconsignmentCode"
26 - class="inputShadow textareaPopover"
27 - v-model="searchForm.consignmentCode"
28 - resize="none"
29 - maxlength="13000"
30 - placeholder=""
31 - @blur="textareaBlur"
32 - @input="input"
33 - ></el-input>
34 - <el-input
35 - slot="reference"
36 - name="consignmentCode"
37 - type="textarea"
38 - :rows="1"
39 - class="inputShadow"
40 - id="inputInner--consignmentCode"
41 - v-model="searchForm.consignmentCode"
42 - resize="none"
43 - placeholder=""
44 - @focus="textareaFocus"
45 - @input="input"
46 - ></el-input>
47 - </el-popover>
48 </Formitem> 15 </Formitem>
49 </el-col> 16 </el-col>
50 <el-col :span="4"> 17 <el-col :span="4">
...@@ -183,9 +150,11 @@ ...@@ -183,9 +150,11 @@
183 150
184 <script> 151 <script>
185 import {getAllExportingBills} from "@/api/query/query"; 152 import {getAllExportingBills} from "@/api/query/query";
153 +import PopoverTextarea from "@/components/PopoverTextarea/index.vue";
186 154
187 export default { 155 export default {
188 name: "index", 156 name: "index",
157 + components: {PopoverTextarea},
189 data() { 158 data() {
190 return { 159 return {
191 searchForm: { 160 searchForm: {
......
1 +<template>
2 + <div>
3 + <el-form
4 + class="fedexFormStyle fedexformSreach fedexformSreachBottomBorder"
5 + ref="sreachForm"
6 + :model="searchForm"
7 + label-position="top"
8 + size="small"
9 + >
10 + <el-row class="row-border">
11 + <el-col :span="5">
12 + <Formitem label="提运单号" prop="consignmentCode">
13 + <el-popover
14 + placement="bottom"
15 + width="320"
16 + trigger="manual"
17 + popper-class="popoverconsignmentCode"
18 + v-model="textareaVisible.formItemconsignmentCode"
19 + >
20 + <el-input
21 + name="consignmentCode-textarea"
22 + type="textarea"
23 + :rows="5"
24 + id="popoverInputconsignmentCode"
25 + class="inputShadow textareaPopover"
26 + v-model="searchForm.consignmentCode"
27 + resize="none"
28 + maxlength="13000"
29 + placeholder=""
30 + @blur="textareaBlur"
31 + @input="input"
32 + ></el-input>
33 + <el-input
34 + slot="reference"
35 + name="consignmentCode"
36 + type="textarea"
37 + :rows="1"
38 + class="inputShadow"
39 + id="inputInner--consignmentCode"
40 + v-model="searchForm.consignmentCode"
41 + resize="none"
42 + placeholder=""
43 + @focus="textareaFocus"
44 + @input="input"
45 + ></el-input>
46 + </el-popover>
47 + </Formitem>
48 + </el-col>
49 + <el-col :span="5">
50 + <Formitem label="回执状态" prop="declaredPort">
51 + <el-select
52 + type="text"
53 + id="inputInner--receiptStatus"
54 + v-model="searchForm.receiptStatus"
55 + clearable
56 + placeholder=""
57 + >
58 + <el-option
59 + v-for="(item, index) in dictData.userport"
60 + :key="index"
61 + :label="item.name"
62 + :value="item.name"
63 + ></el-option>
64 + </el-select>
65 + </Formitem>
66 + </el-col>
67 + <el-col :span="4">
68 + <Formitem label="创建日期" prop="receiptTime">
69 + <el-date-picker
70 + class="inputInner--accsDataImportTime"
71 + id="inputInner--accsDataImportTime"
72 + v-model="searchForm.accsDataImportTime"
73 + type="daterange"
74 + format="yyyy-MM-dd"
75 + prefix-icon="none"
76 + value-format="yyyyMMdd"
77 + range-separator="至"
78 + start-placeholder=""
79 + clearable
80 + end-placeholder=""
81 + :picker-options="importTimePickerOptions"
82 + @blur="datePickerBlur"
83 + @change="accsDataImportTimeChange"
84 + >
85 + </el-date-picker>
86 + </Formitem>
87 + </el-col>
88 +
89 + <el-col :span="2">
90 + <el-form-item class="textCenter">
91 + <el-button
92 + class="entrySreachButton"
93 + type="text"
94 + icon="el-icon-search"
95 + :loading="loadings.searchLoading"
96 + @click="search(0)"
97 + ></el-button>
98 + </el-form-item>
99 + </el-col>
100 +
101 + <el-col :span="4">
102 + <el-form-item class="textCenter">
103 + <el-button
104 + icon="el-icon-refresh"
105 + size="small"
106 + :loading="loadings.searchLoading"
107 + @click="search(0)"
108 + >重置
109 + </el-button>
110 + </el-form-item>
111 + </el-col>
112 + </el-row>
113 + </el-form>
114 +
115 + <div style="text-align: right; margin: 10px">
116 + <el-button
117 + size="small"
118 + :loading="loadings.downloadLoading2"
119 + @click="downloadBpiData('log')"
120 + >
121 + <svg-icon class="el-icon-user-solid" icon-class="fedexUpBlue"></svg-icon>
122 + 导出
123 + </el-button>
124 + </div>
125 +
126 + <Table
127 + class="fedexDetialTable fedexSreachTable"
128 + ref="entryTable"
129 + :data="tableData"
130 + :headerData="headerData"
131 + :maxHeight="tableMaxheight"
132 + :border="true"
133 + :pagination="true"
134 + :order="false"
135 + :loading="loadings.sreachLoading"
136 + :page="page.pageIndex"
137 + :pageSizes="[20, 30, 50, 100]"
138 + :totalCount="total"
139 + @sizeChange="sizeChange"
140 + @currentChange="currentChange"
141 + :selection="true"
142 + :selectFixed="false"
143 + @rowClick="handleRowClick"
144 + @tableSelect="tableSelect"
145 + @tableSelectAll="tableSelectAll"
146 + :rowSelectDataType="false"
147 + :selected="selected"
148 + >
149 + <template v-slot:waveName="scope">
150 + <span>{{ `${scope.row.waveName}(${scope.row.waveExt2})` }}</span>
151 + </template>
152 + </Table>
153 + </div>
154 +</template>
155 +
156 +<script>
157 +import {getAllExportingBills, getAllTransportBills} from "@/api/query/query";
158 +
159 +export default {
160 + name: "exportCancelOrderQuery",
161 + data() {
162 + return {
163 + searchForm: {
164 + declaredPort: "",
165 + consStatus: "",
166 + consignmentCode: "",
167 + accsDataImportTime: [],
168 + ownerName: "",
169 + consignmentHeadCode: "",
170 + isPushCustomsSys: "",
171 + waitOperStatus: "",
172 + declTime: [],
173 + },
174 + loadings: {
175 + searchLoading: false,
176 + },
177 + page: {
178 + pageIndex: 1,
179 + pageSize: 20,
180 + },
181 + textareaVisible: {
182 + formItemconsignmentCode: false,
183 + formItemconsignmentHeadCode: false,
184 + },
185 + sizeChange(val) {
186 + this.page.pageSize = val;
187 + this.sreach(1);
188 + },
189 + //分页
190 + currentChange(val) {
191 + this.page.pageIndex = val.page;
192 + this.search(1);
193 + },
194 + tableData: [],
195 + total: 0,
196 + tableMaxheight: null,
197 + headerData: [
198 + {
199 + name: "回执状态",
200 + value: "returnStatus",
201 + width: "150",
202 + align: "left",
203 + },
204 + {
205 + name: "提运单号",
206 + value: "orderNo",
207 + width: '150',
208 + align: 'left'
209 + },
210 + {
211 + name: '电子口岸编号',
212 + value: 'orderType',
213 + width: '150',
214 + align: 'left'
215 + },
216 + {
217 + name: '物流企业名称',
218 + value: 'ebccode',
219 + width: '200',
220 + align: 'left'
221 + },
222 + {
223 + name: '申报地海关',
224 + value: 'ebcname',
225 + width: '200',
226 + align: 'left'
227 + },
228 + {
229 + name: '创建时间',
230 + value: 'createTime',
231 + width: '150',
232 + align: 'left'
233 + },
234 + {
235 + name: '申报企业',
236 + value: 'declaringEnterprise',
237 + width: '200',
238 + align: 'left'
239 + },
240 + {
241 + name: '申报类型',
242 + value: 'declaringType',
243 + width: '100',
244 + align: 'left'
245 + }
246 + ],
247 + dictData: {
248 + userport: [
249 + {name: "Shanghai Port", code: "SH"},
250 + {name: "Beijing Port", code: "BJ"},
251 + {name: "Guangzhou Port", code: "GZ"},
252 + {name: "Shenzhen Port", code: "SZ"},
253 + {name: "Tianjin Port", code: "TJ"},
254 + ],
255 + },
256 + }
257 + },
258 + created() {
259 + getAllTransportBills({
260 + pageIndex: 1,
261 + pageSize: 20
262 + }).then((res) => {
263 + console.log('res', res)
264 + this.tableData = res.data.value;
265 + this.total = res.data.totalItems;
266 + debugger;
267 + })
268 + },
269 + methods: {
270 + tableSelect(val) {
271 + this.selected = val.selection;
272 + },
273 + tableSelectAll(val) {
274 + this.selected = val;
275 + },
276 + handleRowClick(row) {
277 + const declareId = row.declareId;
278 + this.$router.push({
279 + path: '/listBranchDetail',
280 + query: {
281 + declareId
282 + }
283 + });
284 + },
285 + async search(val) {
286 + try {
287 +
288 + } catch (error) {
289 + console.error("搜索出错:", error);
290 + } finally {
291 + // 无论成功还是失败,关闭加载状态
292 + this.loadings.sreachLoading = false;
293 + }
294 + },
295 + }
296 +}
297 +</script>
298 +
299 +<style scoped lang="scss">
300 +@import "@/assets/styles/variables.scss";
301 +
302 +.entrySreachButton {
303 + display: inline-block;
304 + font-size: 20px;
305 + color: $fedexButton !important;
306 +}
307 +</style>
...@@ -292,6 +292,49 @@ export default { ...@@ -292,6 +292,49 @@ export default {
292 this.loadings.sreachLoading = false; 292 this.loadings.sreachLoading = false;
293 } 293 }
294 }, 294 },
295 + textareaBlur(val) {
296 + let inputInner = document.querySelector(
297 + "#inputInner--" + val.target.name.split("-")[0]
298 + );
299 + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = false;
300 + inputInner.style.display = "block";
301 + this.$nextTick(() => {
302 + inputInner.blur();
303 + if (
304 + inputInner.value != undefined &&
305 + inputInner.value != "" &&
306 + inputInner.value != null
307 + ) {
308 + inputInner.classList.add("inputFocus");
309 + } else {
310 + inputInner.classList.remove("inputFocus");
311 + }
312 + });
313 + let arr = [];
314 + this.searchForm[val.target.name.split("-")[0]]
315 + .replace(/[\n\,\;\;]/g, ",")
316 + .replace(/[\t]/g, "")
317 + .split(",")
318 + .forEach((str, index) => {
319 + if (str != null && str != "" && index <= 1000) {
320 + arr.push(str.trim());
321 + }
322 + });
323 + this.searchForm[val.target.name.split("-")[0]] = arr.join("\n");
324 + this.$forceUpdate();
325 + },
326 + //文本域展示状态切换
327 + textareaFocus(val) {
328 + this.textareaVisible["formItem" + val.target.name.split("-")[0]] = true;
329 + this.$nextTick(() => {
330 + document
331 + .querySelector("#popoverInput" + val.target.name.split("-")[0])
332 + .focus();
333 + document.querySelector(
334 + "#inputInner--" + val.target.name.split("-")[0]
335 + ).style.display = "none";
336 + });
337 + },
295 } 338 }
296 } 339 }
297 </script> 340 </script>
......