Skip to content

Commit dcf1ad6

Browse files
committed
【代码优化】商城:门店自提的员工绑定
1 parent ca9a389 commit dcf1ad6

File tree

7 files changed

+122
-136
lines changed

7 files changed

+122
-136
lines changed

src/api/mall/trade/delivery/pickUpStore/index.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ export interface DeliveryPickUpStoreVO {
1313
latitude: number
1414
longitude: number
1515
status: number
16+
verifyUserIds: number[] // 绑定用户编号组数
1617
}
1718

1819
// 查询自提门店列表
19-
export const getDeliveryPickUpStorePage = async (params) => {
20+
export const getDeliveryPickUpStorePage = async (params: any) => {
2021
return await request.get({ url: '/trade/delivery/pick-up-store/page', params })
2122
}
2223

@@ -26,8 +27,8 @@ export const getDeliveryPickUpStore = async (id: number) => {
2627
}
2728

2829
// 查询自提门店精简列表
29-
export const getListAllSimple = async (): Promise<DeliveryPickUpStoreVO[]> => {
30-
return await request.get({ url: '/trade/delivery/pick-up-store/list-all-simple' })
30+
export const getSimpleDeliveryPickUpStoreList = async (): Promise<DeliveryPickUpStoreVO[]> => {
31+
return await request.get({ url: '/trade/delivery/pick-up-store/simple-list' })
3132
}
3233

3334
// 新增自提门店
@@ -45,12 +46,7 @@ export const deleteDeliveryPickUpStore = async (id: number) => {
4546
return await request.delete({ url: '/trade/delivery/pick-up-store/delete?id=' + id })
4647
}
4748

48-
//绑定自提店员
49+
// 绑定自提店员
4950
export const bindStoreStaffId = async (data: any) => {
5051
return await request.post({ url: '/trade/delivery/pick-up-store/bind', data })
5152
}
52-
53-
//查询门店绑定情况
54-
export const getDeliveryPickUpStoreStaff = async (id: number) => {
55-
return await request.get({ url: '/trade/delivery/pick-up-store/get-store-staff?id=' + id })
56-
}

src/views/mall/trade/delivery/pickUpOrder/index.vue

Lines changed: 76 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,13 @@
7272
<Icon class="mr-5px" icon="ep:refresh" />
7373
重置
7474
</el-button>
75-
<el-button @click="handlePickup" type="success" plain v-hasPermi="['trade:order:pick-up']" :disabled="isUse">
75+
<el-button
76+
@click="handlePickup"
77+
type="success"
78+
plain
79+
v-hasPermi="['trade:order:pick-up']"
80+
:disabled="isUse"
81+
>
7682
<Icon class="mr-5px" icon="ep:check" />
7783
核销
7884
</el-button>
@@ -221,26 +227,20 @@ import { DeliveryTypeEnum } from '@/utils/constants'
221227
import { TradeOrderSummaryRespVO } from '@/api/mall/trade/order'
222228
import { DeliveryPickUpStoreVO } from '@/api/mall/trade/delivery/pickUpStore'
223229
import OrderPickUpForm from '@/views/mall/trade/order/form/OrderPickUpForm.vue'
224-
import { ref, onMounted } from "vue";
230+
import { ref, onMounted } from 'vue'
231+
import { useUserStore } from '@/store/modules/user'
225232
const message = useMessage() // 消息弹窗
226233
227-
const port = ref("");
228-
const ports = ref([]);
229-
const reader = ref("");
234+
const port = ref('')
235+
const ports = ref([])
236+
const reader = ref('')
230237
231238
defineOptions({ name: 'PickUpOrder' })
232239
233-
// 列表的加载中
234-
const loading = ref(true)
235-
// 列表的总页数
236-
const total = ref(2)
237-
// 列表的数据
238-
const list = ref<TradeOrderApi.OrderVO[]>([])
239-
// 搜索的表单
240-
const queryFormRef = ref<FormInstance>()
241-
const serialPort = ref(false)
242-
const isUse = ref(true)
243-
// 初始表单参数
240+
const loading = ref(true) // 列表的加载中
241+
const total = ref(2) // 列表的总页数
242+
const list = ref<TradeOrderApi.OrderVO[]>([]) // 列表的数据
243+
const queryFormRef = ref<FormInstance>() // 搜索的表单
244244
const INIT_QUERY_PARAMS = {
245245
// 页数
246246
pageNo: 1,
@@ -251,15 +251,15 @@ const INIT_QUERY_PARAMS = {
251251
// 配送方式
252252
deliveryType: DeliveryTypeEnum.PICK_UP.type,
253253
// 自提门店
254-
pickUpStoreId: undefined
255-
}
254+
pickUpStoreId: -1
255+
} // 初始表单参数
256+
257+
const queryParams = ref({ ...INIT_QUERY_PARAMS }) // 表单搜索
258+
const queryType = reactive({ queryParam: 'no' }) // 订单搜索类型 queryParam
259+
const summary = ref<TradeOrderSummaryRespVO>() // 订单统计数据
256260
257-
// 表单搜索
258-
const queryParams = ref({ ...INIT_QUERY_PARAMS })
259-
// 订单搜索类型 queryParam
260-
const queryType = reactive({ queryParam: 'no' })
261-
// 订单统计数据
262-
const summary = ref<TradeOrderSummaryRespVO>()
261+
const serialPort = ref(false) // 是否连接扫码枪
262+
const isUse = ref(true) // 是否可核销
263263
264264
// 订单聚合搜索 select 类型配置(动态搜索)
265265
const dynamicSearchList = ref([
@@ -308,7 +308,7 @@ const handleQuery = async () => {
308308
const resetQuery = () => {
309309
queryFormRef.value?.resetFields()
310310
queryParams.value = { ...INIT_QUERY_PARAMS }
311-
if(pickUpStoreList.value.length > 0) {
311+
if (pickUpStoreList.value.length > 0) {
312312
queryParams.value.pickUpStoreId = pickUpStoreList.value[0].id
313313
}
314314
handleQuery()
@@ -317,7 +317,12 @@ const resetQuery = () => {
317317
/** 自提门店精简列表 */
318318
const pickUpStoreList = ref<DeliveryPickUpStoreVO[]>([])
319319
const getPickUpStoreList = async () => {
320-
pickUpStoreList.value = await PickUpStoreApi.getListAllSimple()
320+
pickUpStoreList.value = await PickUpStoreApi.getSimpleDeliveryPickUpStoreList()
321+
// 移除自己无法核销的门店
322+
const userId = useUserStore().getUser.id
323+
pickUpStoreList.value = pickUpStoreList.value.filter((item) =>
324+
item.verifyUserIds?.includes(userId)
325+
)
321326
}
322327
323328
/** 显示核销表单 */
@@ -330,85 +335,92 @@ const handlePickup = () => {
330335
const connectToSerialPort = async () => {
331336
try {
332337
// 判断浏览器支持串口通信
333-
if ("serial" in navigator && navigator.serial != null && typeof navigator.serial === 'object' && "requestPort" in navigator.serial) {
338+
if (
339+
'serial' in navigator &&
340+
navigator.serial != null &&
341+
typeof navigator.serial === 'object' &&
342+
'requestPort' in navigator.serial
343+
) {
334344
// 提示用户选择一个串口
335-
port.value = await navigator.serial.requestPort();
345+
port.value = await navigator.serial.requestPort()
336346
} else {
337-
message.error("浏览器不支持扫码枪连接,请更换浏览器重试")
347+
message.error('浏览器不支持扫码枪连接,请更换浏览器重试')
338348
return
339349
}
340350
341351
// 获取用户之前授予该网站访问权限的所有串口。
342-
ports.value = await navigator.serial.getPorts();
352+
ports.value = await navigator.serial.getPorts()
343353
344354
// console.log(port.value, ports.value);
345-
console.log(port.value);
355+
// console.log(port.value)
346356
// 等待串口打开
347-
await port.value.open({ baudRate: 9600 , dataBits: 8 , stopBits: 2});
357+
await port.value.open({ baudRate: 9600, dataBits: 8, stopBits: 2 })
348358
349359
// console.log(typeof port.value);
350-
message.success("成功连接扫码枪")
351-
serialPort.value = true;
360+
message.success('成功连接扫码枪')
361+
serialPort.value = true
352362
// readData(port.value);
353-
readData();
363+
readData()
354364
} catch (error) {
355365
// 处理连接串口出错的情况
356-
console.log("Error connecting to serial port:", error);
366+
console.log('Error connecting to serial port:', error)
357367
}
358-
};
368+
}
359369
360370
/** 监听扫码枪输入 */
361371
const readData = async () => {
362-
reader.value = port.value.readable.getReader();
363-
let data = ""; //扫码数据
372+
reader.value = port.value.readable.getReader()
373+
let data = '' //扫码数据
364374
// 监听来自串口的数据
365375
while (true) {
366-
const { value, done } = await reader.value.read();
376+
const { value, done } = await reader.value.read()
367377
if (done) {
368378
// 允许稍后关闭串口
369-
reader.value.releaseLock();
370-
break;
379+
reader.value.releaseLock()
380+
break
371381
}
372382
// 获取发送的数据
373-
const serialData = new TextDecoder().decode(value);
374-
data = `${data}${serialData}`;
375-
if (serialData.includes("\r")) {
383+
const serialData = new TextDecoder().decode(value)
384+
data = `${data}${serialData}`
385+
if (serialData.includes('\r')) {
376386
//读取结束
377-
let codeData = data.replace("\r","");
378-
data = ""; //清空下次读取不会叠加
379-
console.log(`二维码数据:${codeData}`);
387+
let codeData = data.replace('\r', '')
388+
data = '' //清空下次读取不会叠加
389+
console.log(`二维码数据:${codeData}`)
380390
//处理拿到数据逻辑
381391
pickUpForm.value.open(codeData)
382392
}
383393
}
384-
};
394+
}
385395
386396
/** 断开扫码枪 */
387397
const cutPort = async () => {
388-
if (port.value !== "") {
389-
await reader.value.cancel();
390-
await port.value.close();
391-
port.value = "";
392-
console.log("断开扫码枪连接");
393-
message.success("已成功断开扫码枪连接")
394-
serialPort.value = false;
398+
if (port.value !== '') {
399+
await reader.value.cancel()
400+
await port.value.close()
401+
port.value = ''
402+
console.log('断开扫码枪连接')
403+
message.success('已成功断开扫码枪连接')
404+
serialPort.value = false
395405
} else {
396-
message.warning("请先连接或打开扫码枪")
406+
message.warning('请先连接或打开扫码枪')
397407
}
398-
};
408+
}
399409
400410
/** 初始化 **/
401411
onMounted(async () => {
402412
await getPickUpStoreList()
403-
if(pickUpStoreList.value.length > 0){
404-
queryParams.value.pickUpStoreId = pickUpStoreList.value[0].id
405-
isUse.value = false
406-
await getList()
407-
}else{
408-
message.error("当前登录人没绑定任何自提点")
413+
if (pickUpStoreList.value.length === 0) {
414+
message.error('当前登录人没绑定任何自提点')
409415
loading.value = false
410416
isUse.value = true
417+
return
411418
}
419+
420+
// 查询
421+
queryParams.value.pickUpStoreId = pickUpStoreList.value[0].id
422+
isUse.value = false
423+
await getList()
412424
})
413425
</script>
414426
<style lang="scss" scoped>

0 commit comments

Comments
 (0)