zhanbo.xu

feat: 开发运抵单查询 功能

1 +import request from "@/utils/request";
2 +// /exportArrivalIn/getExportArrivalInList
3 +export function getExportArrivalInList(data) {
4 + return request({
5 + url: "/bus-customer/exportArrivalIn/getExportArrivalInList",
6 + method: "post",
7 + data: data,
8 + });
9 +}
10 +
11 +// GET ​/exportArrivalIn​/receipt​/{copNo} 运抵单回执
12 +export function getExportArrivalInReceipt({ copNo }) {
13 + return request({
14 + url: `/bus-customer/exportArrivalIn/receipt/${copNo}`,
15 + method: "get",
16 + });
17 +}
18 +// GET ​/exportArrivalIn​/details​/{id} 查询运抵单详情
19 +export function getExportArrivalInDetails({ id }) {
20 + return request({
21 + url: `/bus-customer/exportArrivalIn/details/${id}`,
22 + method: "get",
23 + });
24 +}
...@@ -190,6 +190,14 @@ export const constantRoutes = [ ...@@ -190,6 +190,14 @@ export const constantRoutes = [
190 // name: 'ExportRevokeBillQuery', 190 // name: 'ExportRevokeBillQuery',
191 // meta: { title: '出口撤销单查询', icon: '' } 191 // meta: { title: '出口撤销单查询', icon: '' }
192 // } 192 // }
193 + {
194 + path: "/arrival-list-detail",
195 + component: (resolve) =>
196 + require(["@/views/arrival-list-detail/index"], resolve),
197 + name: "ArrivalListDetail",
198 + hidden: true,
199 + meta: { title: "运抵详情", icon: "" },
200 + },
193 ], 201 ],
194 }, 202 },
195 { 203 {
......
This diff is collapsed. Click to expand it.
1 -<template>
2 - <el-dialog
3 - class="entryDialog classCUploadDialog"
4 - :title="title"
5 - :visible.sync="outerVisible"
6 - :show-close="false"
7 - width="25%"
8 - :close-on-click-modal="false"
9 - :destroy-on-close="true"
10 - v-loading="loadings.dialogLoading"
11 - @close="close"
12 - >
13 - <div class="modelItem">
14 - <el-form
15 - v-if="type != 'menuChange'"
16 - class="fedexFormStyle"
17 - ref="formData"
18 - :model="formData"
19 - :rules="rules"
20 - label-position="top"
21 - size="small"
22 - >
23 - <Formitem label="角色名称" prop="roleName" type="edit">
24 - <el-input
25 - type="text"
26 - class="inputShadow"
27 - id="inputInner-edit-roleName"
28 - resize="none"
29 - v-model="formData.roleName"
30 - clearable
31 - placeholder=""
32 - ></el-input>
33 - </Formitem>
34 - </el-form>
35 - <el-tree
36 - ref="tree"
37 - class="menuTree"
38 - v-else
39 - :data="treeData"
40 - show-checkbox
41 - default-expand-all
42 - node-key="id"
43 - :default-expanded-keys="expandedKeys"
44 - :default-checked-keys="checkedKeys"
45 - :props="defaultProps"
46 - @check="treeCheckChange"
47 - >
48 - </el-tree>
49 - </div>
50 - <div class="dialogOption entrySave">
51 - <el-button
52 - class="entrySaveButton"
53 - :disabled="loadings.submitLoading"
54 - @click="submit"
55 - >确 定</el-button
56 - >
57 - <el-button
58 - class="entrySaveButton"
59 - :disabled="loadings.uploadLoading"
60 - @click="close"
61 - >关 闭</el-button
62 - >
63 - </div>
64 - </el-dialog>
65 -</template>
66 -
67 -<script>
68 -import {
69 - addRoleData,
70 - updateRoleData,
71 - updateRoleMenuData,
72 - getMenuByRoleId,
73 -} from "@/api/system/user.js";
74 -import { getRouters } from "@/api/menu";
75 -export default {
76 - props: {
77 - outerVisible: {
78 - type: Boolean,
79 - default: false,
80 - },
81 - title: {
82 - type: String,
83 - default: "新增角色",
84 - },
85 - type: {
86 - type: String,
87 - default: "",
88 - },
89 - active: {
90 - type: Object,
91 - default: null,
92 - },
93 - },
94 - watch: {
95 - outerVisible(val) {
96 - if (val) {
97 - this.loadings.dialogLoading = false;
98 - if (this.type == "update") {
99 - this.formData = this.active;
100 - } else if (this.type == "menuChange") {
101 - this.formData = this.active;
102 - this.searchTreeData();
103 - this.loadCheckedKeys();//加载已绑定的菜单
104 - }
105 - }
106 - },
107 - },
108 - data() {
109 - return {
110 - formData: {
111 - roleName: "",
112 - },
113 - treeData: [],
114 - treeCheckData: [],
115 - expandedKeys: [],
116 - checkedKeys: [],
117 - rules: {
118 - roleName: [
119 - {
120 - required: true,
121 - trigger: "blur",
122 - message: "角色名称不能为空!",
123 - },
124 - ],
125 - },
126 - defaultProps: {
127 - children: "children",
128 - label: "label",
129 - },
130 - searchForm: {},
131 - loadings: {
132 - dialogLoading: false,
133 - uploadLoading: false,
134 - submitLoading: false,
135 - },
136 - loadingText: "",
137 - };
138 - },
139 - methods: {
140 - //查询菜单数据
141 - searchTreeData() {
142 - this.loadings.dialogLoading = true;
143 - getRouters()
144 - .then((res) => {
145 - if (res.code === "200") {
146 - let arr = [];
147 - res.data.forEach((item) => {
148 - let status = true;
149 - if (item.parentMenuId == 0) {
150 - let obj = {
151 - id: item.menuId,
152 - label: item.menuName,
153 - children: [],
154 - };
155 - arr.forEach((menuItem) => {
156 - if (menuItem.id == item.menuId) {
157 - status = false;
158 - menuItem.label = item.menuName;
159 - }
160 - });
161 - if (status) {
162 - arr.push(obj);
163 - }
164 - } else {
165 - let obj = {
166 - id: item.menuId,
167 - label: item.menuName,
168 - };
169 - arr.forEach((menuItem) => {
170 - if (menuItem.id == item.parentMenuId) {
171 - status = false;
172 - menuItem.children.push(obj);
173 - }
174 - });
175 - if (status) {
176 - arr.push({
177 - id: item.parentMenuId,
178 - label: "",
179 - children: [obj],
180 - });
181 - }
182 - }
183 - });
184 - this.treeData = arr;
185 - } else {
186 - this.alertWarningMsg(res.message);
187 - }
188 - this.loadings.dialogLoading = false;
189 - })
190 - .catch((err) => {
191 - console.log(err);
192 - this.loadings.dialogLoading = false;
193 - });
194 - },
195 - //数据保存
196 - submit() {
197 - this.loadings.dialogLoading = true;
198 - let obj = {};
199 - if (this.type == "add") {
200 - this.$refs.formData.validate((valid) => {
201 - if (valid) {
202 - obj.roleName = this.formData.roleName;
203 - this.addapi(obj);
204 - } else {
205 - this.loadings.dialogLoading = false;
206 - }
207 - });
208 - } else if (this.type == "update") {
209 - this.$refs.formData.validate((valid) => {
210 - if (valid) {
211 - obj.roleId = this.formData.roleId;
212 - obj.roleName = this.formData.roleName;
213 - this.updateapi(obj);
214 - } else {
215 - this.loadings.dialogLoading = false;
216 - }
217 - });
218 - } else if (this.type == "menuChange") {
219 - obj.menuId = this.treeCheckData; // 使用合并后的选中节点
220 - obj.roleId = this.formData.roleId;
221 - this.menuChangeapi(obj);
222 - }
223 - },
224 - //新增
225 - addapi(val) {
226 - addRoleData(val)
227 - .then((res) => {
228 - if (res.code === "200") {
229 - this.msgSuccess(res.message);
230 - this.close();
231 - } else {
232 - this.alertWarningMsg(res.message);
233 - this.loadings.dialogLoading = false;
234 - }
235 - })
236 - .catch((err) => {
237 - console.log(err);
238 - this.loadings.dialogLoading = false;
239 - });
240 - },
241 - //修改
242 - updateapi(val) {
243 - updateRoleData(val)
244 - .then((res) => {
245 - if (res.code === "200") {
246 - this.msgSuccess(res.message);
247 - this.close();
248 - } else {
249 - this.alertWarningMsg(res.message);
250 - this.loadings.dialogLoading = false;
251 - }
252 - })
253 - .catch((err) => {
254 - console.log(err);
255 - this.loadings.dialogLoading = false;
256 - });
257 - },
258 - //菜单权限修改
259 - menuChangeapi(val) {
260 - updateRoleMenuData(val)
261 - .then((res) => {
262 - if (res.code === "200") {
263 - this.msgSuccess(res.message);
264 - this.close();
265 - this.$store.dispatch('GenerateRoutes')
266 - } else {
267 - this.alertWarningMsg(res.message);
268 - this.loadings.dialogLoading = false;
269 - }
270 - })
271 - .catch((err) => {
272 - console.log(err);
273 - this.loadings.dialogLoading = false;
274 - });
275 - },
276 - treeCheckChange(data, checked) {
277 - console.log(data, checked);
278 - let arr = [];
279 - arr = checked.checkedKeys.concat(checked.halfCheckedKeys);
280 - this.treeCheckData = arr;
281 - },
282 - close() {
283 - this.formData = {
284 - roleName: "",
285 - };
286 - this.checkedKeys = []
287 - this.$emit("close");
288 - },
289 - // 加载已绑定的菜单
290 - loadCheckedKeys() {
291 - if (this.formData.roleId) {
292 - getMenuByRoleId(this.formData.roleId)
293 - .then((res) => {
294 - if (res.code === "200") {
295 - this.checkedKeys = res.data.filter(item => item.isBinding && (item.parentMenuId!=0 ) ).map(item => item.menuId);
296 - //console.log('初始 checkedKeys:', this.checkedKeys);
297 - this.$nextTick(() => {
298 - this.$refs.tree.setCheckedKeys(this.checkedKeys);
299 - this.updateTreeCheckData();
300 - });
301 - } else {
302 - this.alertWarningMsg(res.message);
303 - }
304 - })
305 - .catch((err) => {
306 - console.log(err);
307 - });
308 - }
309 - },
310 - //加载选中的节点及半选中的父节点
311 - updateTreeCheckData() {
312 - const checkedKeys = this.$refs.tree.getCheckedKeys();
313 - const halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
314 - this.treeCheckData = checkedKeys.concat(halfCheckedKeys);
315 - //console.log('合并后的 treeCheckData:', this.treeCheckData);
316 - },
317 -
318 - },
319 -};
320 -</script>
321 -
322 -<style lang="scss" scoped>
323 -@import "@/assets/styles/variables.scss";
324 -
325 -.menuTree {
326 - max-width: 350px;
327 - max-height: 300px;
328 - overflow: auto;
329 - margin: 0 auto;
330 - border: 1px solid #999;
331 - padding: 10px;
332 -}
333 -</style>
This diff is collapsed. Click to expand it.