zhanbo.xu

feat: 开发模拟回执

...@@ -3,7 +3,7 @@ import request from "@/utils/request"; ...@@ -3,7 +3,7 @@ import request from "@/utils/request";
3 // POST 3 // POST
4 // /mockReceipt/add 4 // /mockReceipt/add
5 // 新增模拟回执 5 // 新增模拟回执
6 -export function add(data) { 6 +export function addInfo(data) {
7 return request({ 7 return request({
8 url: "/bus-customer/mockReceipt/add", 8 url: "/bus-customer/mockReceipt/add",
9 method: "post", 9 method: "post",
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 class="entryDialog classCUploadDialog" 3 class="entryDialog classCUploadDialog"
4 - :title="title" 4 + title="新增模拟回执管理"
5 :visible.sync="outerVisible" 5 :visible.sync="outerVisible"
6 :show-close="false" 6 :show-close="false"
7 width="40%" 7 width="40%"
...@@ -21,51 +21,42 @@ ...@@ -21,51 +21,42 @@
21 > 21 >
22 <el-row :gutter="5"> 22 <el-row :gutter="5">
23 <el-col :span="8"> 23 <el-col :span="8">
24 - <Formitem 24 + <Formitem label="回执类型" prop="receiptType" type="edit">
25 - label="监管场所经营人代码" 25 + <el-select
26 - prop="operatorCode"
27 - type="edit"
28 - >
29 - <el-input
30 - type="text"
31 - class="inputShadow"
32 - id="inputInner-edit-operatorCode"
33 - resize="none"
34 - v-model="formData.operatorCode"
35 - clearable
36 - placeholder=""
37 - ></el-input>
38 - </Formitem>
39 - </el-col>
40 - <el-col :span="8">
41 - <Formitem
42 - label="监管场所经营人名称"
43 - prop="operatorName"
44 - type="edit"
45 - >
46 - <el-input
47 type="text" 26 type="text"
48 - class="inputShadow" 27 + id="inputInner--receiptType"
49 - id="inputInner-edit-operatorName" 28 + v-model="formData.receiptType"
50 - resize="none"
51 - v-model="formData.operatorName"
52 clearable 29 clearable
30 + filterable
53 placeholder="" 31 placeholder=""
54 - ></el-input> 32 + @change="getOrderList"
33 + >
34 + <el-option
35 + v-for="item in receiptTypeList"
36 + :key="item.value"
37 + :label="item.itemChineseName"
38 + :value="item.itemValue"
39 + ></el-option>
40 + </el-select>
55 </Formitem> 41 </Formitem>
56 </el-col> 42 </el-col>
57 <el-col :span="8"> 43 <el-col :span="8">
58 - <Formitem label="所属口岸" prop="portCode" type="edit"> 44 + <Formitem label="订单编号" prop="orderNo" type="edit">
59 <el-select 45 <el-select
60 type="text" 46 type="text"
61 - id="inputInner--portCode" 47 + id="inputInner--orderNo"
62 - v-model="formData.portCode" 48 + v-model="formData.orderNo"
49 + multiple
50 + :remote="true"
63 clearable 51 clearable
64 filterable 52 filterable
53 + reserve-keyword
54 + :remote-method="remoteMethod"
65 placeholder="" 55 placeholder=""
56 + @change="receiptXml"
66 > 57 >
67 <el-option 58 <el-option
68 - v-for="item in portCodeList" 59 + v-for="item in orderNoList"
69 :key="item" 60 :key="item"
70 :label="item" 61 :label="item"
71 :value="item" 62 :value="item"
...@@ -73,50 +64,52 @@ ...@@ -73,50 +64,52 @@
73 </el-select> 64 </el-select>
74 </Formitem> 65 </Formitem>
75 </el-col> 66 </el-col>
76 - </el-row>
77 - <el-row :gutter="5">
78 <el-col :span="8"> 67 <el-col :span="8">
79 - <Formitem label="监管场所代码" prop="loctNo" type="edit"> 68 + <Formitem label="回执状态" prop="receiptStatus">
80 - <el-input 69 + <el-select
81 type="text" 70 type="text"
82 - class="inputShadow" 71 + id="inputInner--receiptStatus"
83 - id="inputInner-edit-loctNo" 72 + v-model="formData.receiptStatus"
84 - resize="none"
85 - v-model="formData.loctNo"
86 clearable 73 clearable
74 + filterable
87 placeholder="" 75 placeholder=""
88 - ></el-input> 76 + @change="receiptXml"
77 + >
78 + <el-option
79 + v-for="item in receiptStatusList"
80 + :key="item.value"
81 + :label="item.itemChineseName"
82 + :value="item.itemValue"
83 + ></el-option>
84 + </el-select>
89 </Formitem> 85 </Formitem>
90 </el-col> 86 </el-col>
91 - <el-col :span="8"> 87 + </el-row>
92 - <Formitem 88 + <el-row :gutter="5">
93 - label="监管场所负责人" 89 + <el-col :span="24">
94 - prop="operatorPersonInCharge" 90 + <!-- <Formitem label="回执文本" prop="receiptInfo" type="edit">
95 - type="edit"
96 - >
97 <el-input 91 <el-input
98 - type="text" 92 + type="textarea"
93 + :rows="4"
99 class="inputShadow" 94 class="inputShadow"
100 - id="inputInner-edit-operatorPersonInCharge" 95 + id="inputInner-edit-receiptInfo"
101 resize="none" 96 resize="none"
102 - v-model="formData.operatorPersonInCharge" 97 + v-model="formData.receiptInfo"
103 clearable 98 clearable
104 placeholder="" 99 placeholder=""
105 ></el-input> 100 ></el-input>
106 - </Formitem> 101 + </Formitem> -->
107 - </el-col> 102 + <div class="textarea-text">
108 - <el-col :span="8"> 103 + <div style="color: #777777; margin-bottom: 10px">回执文本</div>
109 - <Formitem label="联系电话" prop="contactNumber" type="edit">
110 <el-input 104 <el-input
111 - type="text" 105 + type="textarea"
106 + :rows="4"
112 class="inputShadow" 107 class="inputShadow"
113 - id="inputInner-edit-contactNumber"
114 resize="none" 108 resize="none"
115 - v-model="formData.contactNumber" 109 + :readonly="true"
116 - clearable 110 + v-model="receiptInfo"
117 - placeholder=""
118 ></el-input> 111 ></el-input>
119 - </Formitem> 112 + </div>
120 </el-col> 113 </el-col>
121 </el-row> 114 </el-row>
122 </el-form> 115 </el-form>
...@@ -128,163 +121,142 @@ ...@@ -128,163 +121,142 @@
128 @click="submit" 121 @click="submit"
129 >确 定</el-button 122 >确 定</el-button
130 > 123 >
131 - <el-button 124 + <el-button class="entrySaveButton" @click="close">关 闭</el-button>
132 - class="entrySaveButton"
133 - :disabled="loadings.uploadLoading"
134 - @click="close"
135 - >关 闭</el-button
136 - >
137 </div> 125 </div>
138 </el-dialog> 126 </el-dialog>
139 </template> 127 </template>
140 128
141 <script> 129 <script>
142 import { 130 import {
143 - addOperatorPlace, 131 + searchOrderNo,
144 - updateOperatorPlace, 132 + generateReceiptXml,
145 -} from "@/api/supervisePlaceManage-api.js"; 133 + addInfo,
134 +} from "@/api/receiptManagement-api.js";
146 export default { 135 export default {
147 props: { 136 props: {
148 outerVisible: { 137 outerVisible: {
149 type: Boolean, 138 type: Boolean,
150 default: false, 139 default: false,
151 }, 140 },
152 - title: { 141 + receiptStatusList: {
153 - type: String,
154 - default: "监管场所管理新增",
155 - },
156 - type: {
157 - type: String,
158 - default: "",
159 - },
160 - active: {
161 - type: Object,
162 - default: null,
163 - },
164 - portCodeList: {
165 type: Array, 142 type: Array,
166 default: () => { 143 default: () => {
167 return []; 144 return [];
168 }, 145 },
169 }, 146 },
170 - }, 147 + receiptTypeList: {
171 - watch: { 148 + type: Array,
172 - outerVisible(val) { 149 + default: () => {
173 - if (val) { 150 + return [];
174 - this.loadings.dialogLoading = false; 151 + },
175 - if (this.type == "update") {
176 - this.formData = this.active;
177 - }
178 - }
179 }, 152 },
180 }, 153 },
154 +
181 data() { 155 data() {
182 return { 156 return {
183 formData: { 157 formData: {
184 - operatorCode: "", 158 + receiptType: "",
185 - operatorName: "", 159 + orderNo: [],
186 - portCode: "", 160 + receiptStatus: "",
187 - loctNo: "",
188 - operatorPersonInCharge: "",
189 - contactNumber: "",
190 }, 161 },
162 + receiptInfo: "",
191 rules: { 163 rules: {
192 - operatorCode: [ 164 + receiptType: [
193 { 165 {
194 required: true, 166 required: true,
195 trigger: "blur", 167 trigger: "blur",
196 - message: "监管场所代码不能为空!", 168 + message: "请选择回执类型!",
197 }, 169 },
198 ], 170 ],
199 - operatorName: [ 171 + orderNo: [
200 { 172 {
201 required: true, 173 required: true,
202 trigger: "blur", 174 trigger: "blur",
203 - message: "监管场所负责人不能为空!", 175 + message: "订单编号不能为空!",
176 + },
177 + ],
178 + receiptStatus: [
179 + {
180 + required: true,
181 + trigger: "blur",
182 + message: "请选择回执状态!",
204 }, 183 },
205 ], 184 ],
206 }, 185 },
207 - 186 + orderNoList: [],
208 - searchForm: {},
209 loadings: { 187 loadings: {
210 dialogLoading: false, 188 dialogLoading: false,
211 - uploadLoading: false,
212 submitLoading: false, 189 submitLoading: false,
213 }, 190 },
214 loadingText: "", 191 loadingText: "",
215 }; 192 };
216 }, 193 },
194 +
217 methods: { 195 methods: {
196 + // 生成xml
197 + receiptXml() {
198 + if (!this.formData.receiptType) {
199 + return;
200 + }
201 + if (this.formData.orderNo.length < 1) {
202 + return;
203 + }
204 + if (!this.formData.receiptStatus) {
205 + return;
206 + }
207 + generateReceiptXml({
208 + ...this.formData,
209 + orderNo: this.formData.orderNo[0],
210 + }).then((res) => {
211 + console.log(res);
212 + if (res.code === "200") {
213 + this.receiptInfo = res.data;
214 + } else {
215 + this.alertWarningMsg(res.message);
216 + }
217 + });
218 + },
219 + remoteMethod(query) {
220 + console.log(query);
221 + this.getOrderList(query, true);
222 + },
223 + getOrderList(val, flag) {
224 + if (!this.formData.receiptType) {
225 + return;
226 + }
227 + searchOrderNo({
228 + receiptType: this.formData.receiptType,
229 + orderNo: flag ? val : "",
230 + }).then((res) => {
231 + if (res.code === "200") {
232 + this.orderNoList = res.data;
233 + } else {
234 + this.alertWarningMsg(res.message);
235 + }
236 + });
237 + this.receiptXml();
238 + },
218 //数据保存 239 //数据保存
219 submit() { 240 submit() {
220 - this.loadings.dialogLoading = true;
221 let obj = { 241 let obj = {
222 ...this.formData, 242 ...this.formData,
223 }; 243 };
224 - if (this.type == "add") { 244 + this.$refs.formData.validate((valid) => {
225 - this.$refs.formData.validate((valid) => { 245 + if (valid) {
226 - if (valid) { 246 + this.addapi(obj);
227 - this.addapi(obj); 247 + }
228 - } else { 248 + });
229 - this.loadings.dialogLoading = false;
230 - }
231 - });
232 - } else if (this.type == "update") {
233 - this.$refs.formData.validate((valid) => {
234 - if (valid) {
235 - obj.id = this.active.id;
236 - this.updateapi(obj);
237 - } else {
238 - this.loadings.dialogLoading = false;
239 - }
240 - });
241 - }
242 }, 249 },
243 //新增 250 //新增
244 addapi(val) { 251 addapi(val) {
245 - addOperatorPlace(val) 252 + this.loadings.dialogLoading = true;
246 - .then((res) => { 253 + addInfo(val)
247 - if (res.code === "200") {
248 - this.msgSuccess(res.message);
249 - this.close();
250 - } else {
251 - this.alertWarningMsg(res.message);
252 - this.loadings.dialogLoading = false;
253 - }
254 - })
255 - .catch((err) => {
256 - console.log(err);
257 - this.loadings.dialogLoading = false;
258 - });
259 - },
260 - //修改
261 - updateapi(val) {
262 - updateOperatorPlace(val)
263 - .then((res) => {
264 - if (res.code === "200") {
265 - this.msgSuccess(res.message);
266 - this.close();
267 - } else {
268 - this.alertWarningMsg(res.message);
269 - this.loadings.dialogLoading = false;
270 - }
271 - })
272 - .catch((err) => {
273 - console.log(err);
274 - this.loadings.dialogLoading = false;
275 - });
276 - },
277 - //菜单权限修改
278 - menuChangeapi(val) {
279 - updateOperatorPlace(val)
280 .then((res) => { 254 .then((res) => {
281 if (res.code === "200") { 255 if (res.code === "200") {
282 this.msgSuccess(res.message); 256 this.msgSuccess(res.message);
283 this.close(); 257 this.close();
284 - this.$store.dispatch("GenerateRoutes");
285 } else { 258 } else {
286 this.alertWarningMsg(res.message); 259 this.alertWarningMsg(res.message);
287 - this.loadings.dialogLoading = false;
288 } 260 }
289 }) 261 })
290 .catch((err) => { 262 .catch((err) => {
...@@ -295,13 +267,12 @@ export default { ...@@ -295,13 +267,12 @@ export default {
295 267
296 close() { 268 close() {
297 this.formData = { 269 this.formData = {
298 - operatorCode: "", 270 + receiptType: "",
299 - operatorName: "", 271 + orderNo: [],
300 - portCode: "", 272 + receiptStatus: "",
301 - loctNo: "",
302 - operatorPersonInCharge: "",
303 - contactNumber: "",
304 }; 273 };
274 + this.loadings.dialogLoading = false;
275 + this.receiptInfo = "";
305 this.$emit("close"); 276 this.$emit("close");
306 }, 277 },
307 }, 278 },
...@@ -319,4 +290,20 @@ export default { ...@@ -319,4 +290,20 @@ export default {
319 border: 1px solid #999; 290 border: 1px solid #999;
320 padding: 10px; 291 padding: 10px;
321 } 292 }
293 +.textarea-text {
294 + background-color: #f2f2f2;
295 + padding: 10px;
296 + .inputShadow {
297 + border: none;
298 + }
299 + .el-textarea__inner {
300 + border: none !important;
301 + }
302 + ::v-deep {
303 + .el-textarea textarea {
304 + border: none !important;
305 + background-color: #f2f2f2;
306 + }
307 + }
308 +}
322 </style> 309 </style>
......
...@@ -10,46 +10,52 @@ ...@@ -10,46 +10,52 @@
10 <el-row class="row-border"> 10 <el-row class="row-border">
11 <!-- 角色名称 --> 11 <!-- 角色名称 -->
12 <el-col :span="5"> 12 <el-col :span="5">
13 - <Formitem label="经营人代码" prop="operatorCode"> 13 + <Formitem label="回执类型" prop="receiptType">
14 - <el-input 14 + <el-select
15 type="text" 15 type="text"
16 - class="inputShadow" 16 + id="inputInner--receiptType"
17 - id="inputInner--operatorCode" 17 + v-model="sreachFormData.receiptType"
18 - resize="none"
19 - v-model="sreachFormData.operatorCode"
20 clearable 18 clearable
19 + filterable
21 placeholder="" 20 placeholder=""
22 - ></el-input> 21 + >
22 + <el-option
23 + v-for="item in receiptTypeList"
24 + :key="item.value"
25 + :label="item.itemChineseName"
26 + :value="item.itemValue"
27 + ></el-option>
28 + </el-select>
23 </Formitem> 29 </Formitem>
24 </el-col> 30 </el-col>
25 <el-col :span="5"> 31 <el-col :span="5">
26 - <Formitem label="经营人名称" prop="operatorName"> 32 + <Formitem label="订单编号" prop="orderNo">
27 <el-input 33 <el-input
28 type="text" 34 type="text"
29 class="inputShadow" 35 class="inputShadow"
30 - id="inputInner--operatorName" 36 + id="inputInner--orderNo"
31 resize="none" 37 resize="none"
32 - v-model="sreachFormData.operatorName" 38 + v-model="sreachFormData.orderNo"
33 clearable 39 clearable
34 placeholder="" 40 placeholder=""
35 ></el-input> 41 ></el-input>
36 </Formitem> 42 </Formitem>
37 </el-col> 43 </el-col>
38 <el-col :span="5"> 44 <el-col :span="5">
39 - <Formitem label="所属口岸" prop="portCode"> 45 + <Formitem label="回执状态" prop="receiptStatus">
40 <el-select 46 <el-select
41 type="text" 47 type="text"
42 - id="inputInner--portCode" 48 + id="inputInner--receiptStatus"
43 - v-model="sreachFormData.portCode" 49 + v-model="sreachFormData.receiptStatus"
44 clearable 50 clearable
45 filterable 51 filterable
46 placeholder="" 52 placeholder=""
47 > 53 >
48 <el-option 54 <el-option
49 - v-for="item in portCodeList" 55 + v-for="item in receiptStatusList"
50 - :key="item" 56 + :key="item.value"
51 - :label="item" 57 + :label="item.itemChineseName"
52 - :value="item" 58 + :value="item.itemValue"
53 ></el-option> 59 ></el-option>
54 </el-select> 60 </el-select>
55 </Formitem> 61 </Formitem>
...@@ -109,31 +115,20 @@ ...@@ -109,31 +115,20 @@
109 :selectFixed="false" 115 :selectFixed="false"
110 :rowSelectDataType="false" 116 :rowSelectDataType="false"
111 > 117 >
112 - <template slot="optionColumn">
113 - <el-table-column align="left" label="操作">
114 - <template slot-scope="scope">
115 - <el-button type="text" @click="update(scope.row)"> 修改 </el-button>
116 - </template>
117 - </el-table-column>
118 - </template>
119 </Table> 118 </Table>
120 <DialogVue 119 <DialogVue
121 :outerVisible="outerVisible" 120 :outerVisible="outerVisible"
122 - :title="dialogTitle"
123 - :type="editType"
124 - :active="activeData"
125 @close="dialogClose" 121 @close="dialogClose"
126 - :portCodeList="portCodeList" 122 + :receiptStatusList="receiptStatusList"
123 + :receiptTypeList="receiptTypeList"
127 /> 124 />
128 </div> 125 </div>
129 </template> 126 </template>
130 127
131 <script> 128 <script>
132 -import {
133 - getOperatorPlaceList,
134 - getPortCodeList,
135 -} from "@/api/supervisePlaceManage-api.js";
136 import { searchList } from "@/api/receiptManagement-api.js"; 129 import { searchList } from "@/api/receiptManagement-api.js";
130 +import { getDictData } from "@/api/system/dict-api.js";
131 +
137 import DialogVue from "./dialog.vue"; 132 import DialogVue from "./dialog.vue";
138 export default { 133 export default {
139 name: "SupervisePlaceManage", 134 name: "SupervisePlaceManage",
...@@ -143,16 +138,15 @@ export default { ...@@ -143,16 +138,15 @@ export default {
143 data() { 138 data() {
144 return { 139 return {
145 sreachFormData: { 140 sreachFormData: {
146 - portCode: "", 141 + receiptType: "",
147 - operatorCode: "", 142 + orderNo: "",
148 - operatorName: "", 143 + receiptStatus: "",
149 }, 144 },
150 page: { 145 page: {
151 pageIndex: 1, 146 pageIndex: 1,
152 pageSize: 20, 147 pageSize: 20,
153 total: 0, 148 total: 0,
154 }, 149 },
155 - activeData: null,
156 tableData: [], 150 tableData: [],
157 headerData: [ 151 headerData: [
158 { 152 {
...@@ -191,32 +185,39 @@ export default { ...@@ -191,32 +185,39 @@ export default {
191 }, 185 },
192 tableMaxheight: null, 186 tableMaxheight: null,
193 outerVisible: false, 187 outerVisible: false,
194 - dialogTitle: "", 188 + receiptStatusList: [],
195 - editType: "", 189 + receiptTypeList: [],
196 - portCodeList: [],
197 }; 190 };
198 }, 191 },
199 created() { 192 created() {
200 this.search(0); 193 this.search(0);
194 + this.fetchReceiptStatus();
201 }, 195 },
202 mounted() { 196 mounted() {
203 this.tableMaxheight = window.innerHeight - 300; 197 this.tableMaxheight = window.innerHeight - 300;
204 - this.fetchPortCodeList();
205 }, 198 },
206 methods: { 199 methods: {
207 - // 获取所属口岸 200 + fetchReceiptStatus() {
208 - fetchPortCodeList() { 201 + getDictData({ doctCode: "RECEIPT_TYPE" })
209 - getPortCodeList()
210 .then((res) => { 202 .then((res) => {
211 - if (res.code === "200") { 203 + if (res.code == "200") {
212 - this.portCodeList = res.data; 204 + this.receiptTypeList = res.data;
213 - } else {
214 } 205 }
215 }) 206 })
216 .catch((err) => { 207 .catch((err) => {
217 - console.log(err); 208 + console.error(err);
209 + });
210 + getDictData({ doctCode: "RECEIPT_STATUS" })
211 + .then((res) => {
212 + if (res.code == "200") {
213 + this.receiptStatusList = res.data;
214 + }
215 + })
216 + .catch((err) => {
217 + console.error(err);
218 }); 218 });
219 }, 219 },
220 +
220 clear() { 221 clear() {
221 this.$refs.sreachForm.resetFields(); 222 this.$refs.sreachForm.resetFields();
222 }, 223 },
...@@ -248,20 +249,11 @@ export default { ...@@ -248,20 +249,11 @@ export default {
248 }); 249 });
249 }, 250 },
250 addRole() { 251 addRole() {
251 - this.dialogTitle = "监管场所管理新增";
252 - this.editType = "add";
253 - this.outerVisible = true;
254 - },
255 - update(val) {
256 - this.dialogTitle = "监管场所管理修改";
257 - this.editType = "update";
258 this.outerVisible = true; 252 this.outerVisible = true;
259 - this.activeData = JSON.parse(JSON.stringify(val));
260 }, 253 },
261 254
262 dialogClose() { 255 dialogClose() {
263 this.outerVisible = false; 256 this.outerVisible = false;
264 - this.activeData = null;
265 this.search(1); 257 this.search(1);
266 }, 258 },
267 //分页 259 //分页
......
...@@ -274,24 +274,6 @@ export default { ...@@ -274,24 +274,6 @@ export default {
274 this.loadings.dialogLoading = false; 274 this.loadings.dialogLoading = false;
275 }); 275 });
276 }, 276 },
277 - //菜单权限修改
278 - menuChangeapi(val) {
279 - updateOperatorPlace(val)
280 - .then((res) => {
281 - if (res.code === "200") {
282 - this.msgSuccess(res.message);
283 - this.close();
284 - this.$store.dispatch("GenerateRoutes");
285 - } else {
286 - this.alertWarningMsg(res.message);
287 - this.loadings.dialogLoading = false;
288 - }
289 - })
290 - .catch((err) => {
291 - console.log(err);
292 - this.loadings.dialogLoading = false;
293 - });
294 - },
295 277
296 close() { 278 close() {
297 this.formData = { 279 this.formData = {
......