页面

组件

表单

组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<Forms
ref="form2"
@submit="submit"
:rules="rules2"
@patient_fn="patient_fn"
label-align="right"
:formData="formData2"
:formOrder="formOrder2"
></Forms>
<script>
export default {
data() {
return {
formData1: {
where_hospital: "",
dr_name: "",
where_department_s: "",
appointment_type: "a",
medical_consultation: 0,
},
formOrder1: [
{
model: "where_hospital",
type: "input",
label: "就诊诊所",
disabled: true,
},
],
};
},
};
</script>

校验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
rules2: {
patient_name: [{ required: true, message: '请输入患者姓名', trigger: 'change' }],
},
}
// 校验方法封装
async validateFn(obj = {}) {
const self = this
let { ref, ref_name = '', form_name = '' } = obj
if (!ref_name && !ref) {
return false
}
const asyncFn = async () => {
const p = await new Promise(resolve => {
let formData = form_name ? self[form_name] : null
let pass = false
ref = ref || self.$refs[ref_name].$refs.form
if (formData) formData.err_msg = ''
this.$nextTick(() => {
ref.validate((valid, obj) => {
console.log(valid, obj)
if (valid) {
pass = true
} else {
let o = Object.values(obj)[0][0] || {}
let err_msg = o.message || '校验失败'
if (formData) formData.err_msg = err_msg
self.$message.error(err_msg)
// return false
resolve(false)
}
})
if (!pass) {
resolve(false)
} else {
resolve(true)
}
})
})
return p
}
return await asyncFn()
// this.$refs.form2.submit()
},

// 清除单个字段检验
clearValidForm(obj) {
let { form_name = '', ref_name = '', model = '', models = null, ref = '' } = obj
if (!form_name || !model) {
return
}
this.$nextTick(() => {
ref = ref || this.$refs[ref_name].$refs.form
let fields = ref.fields
let obj = models || { [model]: '' }
for (let prop in obj) {
if (fields) {
for (let i = 0; i < fields.length; i++) {
if (fields[i].prop === prop) {
fields[i].clearValidate()
}
if (model === 'clear_all') {
fields[i].clearValidate()
}
}
}
}
})
},

表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<table
ref="multipleTable"
:TabList="TabList"
:ContentList="ContentList"
:loading="loading"
height="100%"
>
<div slot="pingjun_header">我是头部</div>
<template #goods_info="scope"> {{scope.$index}} {{scope.row.name}} </template>
</table>

<script>
export default {
data() {
return {
TabList: [
{
// type: 'text',
label: "访问时间",
prop: "访问时间",
type: "formatText",
format: (index, row) => {
return row.create_time ? setDate(row.create_time) : "---";
},
},
// 插槽
{
type: "slot",
scope: true,
label: "商品信息",
prop: "goods_info",
width: 250,
},
{
label: "平均来访次数", // 平均来访次数 = PV / UV
prop: "pingjun",
// type: 'slot',
slot_header: "pingjun_header",
type: "formatText",
format: (index, v) => (v.uv ? formatFloat(v.pv / v.uv, 2) : "0"),
},
],
ContentList: [
{
name: "123456",
},
],
};
},
};
</script>

2.8.6.4

赠品管理

商品 ===> 商品管理 ===> 赠品管理

中台促销

字段

增加 product_gift_deploy 配置表

增加 product_gift 数据表

增加 product_gift_store 赠品门店关联表

商品表 commodity 增加 is_gift 字段 有在product_gift表中为 true

original_order,
goods_record,
refunds_order,
order_library
表商品增加gift_product字段

标识已使用赠品管理管理的商品

商品销售库存增加 minusGiftStock 方法

路径/libs/utils/goods

定时器

统计方法

@common/statistics.js

统计门店每天数据销售 dayStat 数据表 day_stat
统计门店每月的数据 monthStat 数据表 month_stat

@common/goods_stat.js
统计销售明细 goods_stat

同步

方法
deliver_order_pull_update_new

数据表

purchase_order purchasedt

deliver_accept_order deliver_accept_dt