Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-zws
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-zws
Commits
68945a8d
提交
68945a8d
authored
12月 22, 2022
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore update
上级
78990520
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
96 行增加
和
34 行删除
+96
-34
api.ts
src/modules/base/channel/api.ts
+7
-2
AddProject.vue
src/modules/base/channel/components/AddProject.vue
+60
-19
QRCode.vue
src/modules/base/channel/components/QRCode.vue
+12
-4
useMap.ts
src/modules/base/channel/composables/useMap.ts
+5
-2
useMap.ts
src/modules/base/project/composables/useMap.ts
+7
-7
vite.config.ts
vite.config.ts
+5
-0
没有找到文件。
src/modules/base/channel/api.ts
浏览文件 @
68945a8d
...
@@ -97,11 +97,16 @@ export function bindTag(data: { channels_id: string; tags: string }) {
...
@@ -97,11 +97,16 @@ export function bindTag(data: { channels_id: string; tags: string }) {
return
httpRequest
.
post
(
'/api/zws/v1/backend/channel/tag-create'
,
data
)
return
httpRequest
.
post
(
'/api/zws/v1/backend/channel/tag-create'
,
data
)
}
}
//
生成二维码
//
获取生成二维码的项目列表
export
function
getQrcode
(
params
:
{
id
:
string
;
project_
id
:
string
})
{
export
function
getQrcode
ProjectList
(
params
:
{
id
:
string
})
{
return
httpRequest
.
get
(
'/api/zws/v1/backend/channel/qrcode'
,
{
params
})
return
httpRequest
.
get
(
'/api/zws/v1/backend/channel/qrcode'
,
{
params
})
}
}
// 生成二维码
export
function
getQrcode
(
data
:
{
id
:
string
;
project_id
:
string
})
{
return
httpRequest
.
post
(
'/api/zws/v1/backend/channel/qrcode'
,
data
)
}
// 获取用户所在渠道的角色
// 获取用户所在渠道的角色
export
function
getMemberRoles
(
params
:
{
user_id
:
string
;
channel_id
:
string
})
{
export
function
getMemberRoles
(
params
:
{
user_id
:
string
;
channel_id
:
string
})
{
return
httpRequest
.
get
(
'/api/zws/v1/backend/channel/member-roles'
,
{
params
})
return
httpRequest
.
get
(
'/api/zws/v1/backend/channel/member-roles'
,
{
params
})
...
...
src/modules/base/channel/components/AddProject.vue
浏览文件 @
68945a8d
...
@@ -21,12 +21,12 @@ const form: any = reactive({
...
@@ -21,12 +21,12 @@ const form: any = reactive({
conversion_type
:
''
,
conversion_type
:
''
,
type
:
''
,
type
:
''
,
location_limit
:
''
,
location_limit
:
''
,
unpaid_list_limit
:
''
,
unpaid_list_limit
:
undefined
,
expire_month
:
0
,
expire_month
:
undefined
,
follower_user_id
:
''
,
follower_user_id
:
''
,
follower_user_id_name
:
''
,
follower_user_id_name
:
''
,
division_rule
:
'1'
,
division_rule
:
'1'
,
division_proportion
:
''
,
division_proportion
:
undefined
,
division_proportion_arr
:
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}],
division_proportion_arr
:
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}],
expire_range_month_start
:
''
,
expire_range_month_start
:
''
,
expire_range_month_end
:
''
,
expire_range_month_end
:
''
,
...
@@ -42,19 +42,30 @@ const form: any = reactive({
...
@@ -42,19 +42,30 @@ const form: any = reactive({
watchEffect
(()
=>
{
watchEffect
(()
=>
{
if
(
props
.
data
)
{
if
(
props
.
data
)
{
let
division_proportion_arr
=
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}]
let
division_proportion_arr
=
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}]
try
{
if
(
!
[
'1'
,
'3'
].
includes
(
props
.
data
.
division_rule
))
{
division_proportion_arr
=
JSON
.
parse
(
props
.
data
.
division_proportion
)
try
{
}
catch
(
error
)
{
division_proportion_arr
=
JSON
.
parse
(
props
.
data
.
division_proportion
)
console
.
log
(
error
)
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
}
let
secondary_division_proportion_arr
=
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}]
let
secondary_division_proportion_arr
=
[{
start
:
undefined
,
end
:
undefined
,
value
:
undefined
}]
try
{
if
([
'1008'
,
'1019'
].
includes
(
props
.
data
.
project_id
))
{
secondary_division_proportion_arr
=
JSON
.
parse
(
props
.
data
.
secondary_division_proportion
)
try
{
}
catch
(
error
)
{
secondary_division_proportion_arr
=
JSON
.
parse
(
props
.
data
.
secondary_division_proportion
)
console
.
log
(
error
)
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
}
Object
.
assign
(
form
,
props
.
data
,
{
division_proportion_arr
,
secondary_division_proportion_arr
})
Object
.
assign
(
form
,
props
.
data
,
{
division_proportion_arr
,
secondary_division_proportion_arr
,
division_proportion
:
stringToNumber
(
props
.
data
.
division_proportion
),
unpaid_list_limit
:
stringToNumber
(
props
.
data
.
unpaid_list_limit
),
expire_month
:
stringToNumber
(
props
.
data
.
expire_month
),
secondary_division_proportion
:
stringToNumber
(
props
.
data
.
secondary_division_proportion
)
})
}
}
})
})
...
@@ -91,6 +102,10 @@ function handleRemove(index: number, arr: any) {
...
@@ -91,6 +102,10 @@ function handleRemove(index: number, arr: any) {
arr
.
splice
(
index
,
1
)
arr
.
splice
(
index
,
1
)
}
}
function
stringToNumber
(
str
:
string
|
undefined
)
{
return
str
?
parseFloat
(
str
)
:
undefined
}
// 选择完成
// 选择完成
function
submit
()
{
function
submit
()
{
formRef
?.
validate
().
then
(()
=>
{
formRef
?.
validate
().
then
(()
=>
{
...
@@ -151,19 +166,25 @@ function submit() {
...
@@ -151,19 +166,25 @@ function submit() {
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"代理地域"
>
<el-form-item
label=
"代理地域"
>
<el-input
v-model=
"form.location_limit"
:rows=
"2"
type=
"input"
placeholder=
"请输入"
/>
<el-input
v-model=
"form.location_limit"
placeholder=
"请输入"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row
:gutter=
"40"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"学员上限"
>
<el-form-item
label=
"学员上限"
>
<el-input
v-model=
"form.unpaid_list_limit"
:rows=
"2"
type=
"input"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.unpaid_list_limit"
step-strictly
:min=
"0"
controls-position=
"right"
placeholder=
"请输入"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"有效期(月)"
>
<el-form-item
label=
"有效期(月)"
>
<el-input-number
v-model=
"form.expire_month"
:min=
"1
"
style=
"width: 100%"
/>
<el-input-number
v-model=
"form.expire_month"
controls-position=
"right"
:min=
"0
"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
...
@@ -204,10 +225,20 @@ function submit() {
...
@@ -204,10 +225,20 @@ function submit() {
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"统一分成比例(%)"
prop=
"division_proportion"
v-if=
"form.division_rule === '1'"
>
<el-form-item
label=
"统一分成比例(%)"
prop=
"division_proportion"
v-if=
"form.division_rule === '1'"
>
<el-input
v-model=
"form.division_proportion"
type=
"input"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.division_proportion"
controls-position=
"right"
:min=
"0"
placeholder=
"请输入"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"每人分成金额(元/人)"
prop=
"division_proportion"
v-else-if=
"form.division_rule === '3'"
>
<el-form-item
label=
"每人分成金额(元/人)"
prop=
"division_proportion"
v-else-if=
"form.division_rule === '3'"
>
<el-input
v-model=
"form.division_proportion"
type=
"input"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.division_proportion"
controls-position=
"right"
:min=
"0"
placeholder=
"请输入"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<template
v-else
>
<template
v-else
>
<el-row
:gutter=
"40"
align=
"bottom"
v-for=
"(item, index) in form.division_proportion_arr"
:key=
"index"
>
<el-row
:gutter=
"40"
align=
"bottom"
v-for=
"(item, index) in form.division_proportion_arr"
:key=
"index"
>
...
@@ -282,13 +313,23 @@ function submit() {
...
@@ -282,13 +313,23 @@ function submit() {
label=
"统一分成比例(%)"
label=
"统一分成比例(%)"
prop=
"secondary_division_proportion"
prop=
"secondary_division_proportion"
v-if=
"form.secondary_division_rule === '1'"
>
v-if=
"form.secondary_division_rule === '1'"
>
<el-input
v-model=
"form.secondary_division_proportion"
type=
"input"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.secondary_division_proportion"
controls-position=
"right"
:min=
"0"
placeholder=
"请输入"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<el-form-item
<el-form-item
label=
"每人分成金额(元/人)"
label=
"每人分成金额(元/人)"
prop=
"secondary_division_proportion"
prop=
"secondary_division_proportion"
v-else-if=
"form.division_rule === '3'"
>
v-else-if=
"form.division_rule === '3'"
>
<el-input
v-model=
"form.secondary_division_proportion"
type=
"input"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.secondary_division_proportion"
controls-position=
"right"
:min=
"0"
placeholder=
"请输入"
style=
"width: 100%"
/>
</el-form-item>
</el-form-item>
<template
v-else
>
<template
v-else
>
<el-row
<el-row
...
...
src/modules/base/channel/components/QRCode.vue
浏览文件 @
68945a8d
...
@@ -2,14 +2,22 @@
...
@@ -2,14 +2,22 @@
import
type
{
ChannelItem
}
from
'../types'
import
type
{
ChannelItem
}
from
'../types'
import
type
{
FormInstance
}
from
'element-plus'
import
type
{
FormInstance
}
from
'element-plus'
import
QrcodeVue
from
'qrcode.vue'
import
QrcodeVue
from
'qrcode.vue'
import
{
getQrcode
}
from
'../api'
import
{
getQrcodeProjectList
,
getQrcode
}
from
'../api'
import
{
useMap
}
from
'../composables/useMap'
const
{
options
}
=
await
useMap
()
const
props
=
defineProps
<
{
const
props
=
defineProps
<
{
data
:
ChannelItem
data
:
ChannelItem
}
>
()
}
>
()
let
projectList
=
$ref
<
{
project_id
:
string
;
title
:
string
}[]
>
([])
function
fetchProjectList
()
{
getQrcodeProjectList
({
id
:
props
.
data
.
id
}).
then
(
res
=>
{
projectList
=
res
.
data
.
projects
})
}
onMounted
(()
=>
{
fetchProjectList
()
})
const
formRef
=
$ref
<
FormInstance
>
()
const
formRef
=
$ref
<
FormInstance
>
()
const
form
=
reactive
({
project_id
:
''
})
const
form
=
reactive
({
project_id
:
''
})
let
qrcodeValue
=
$ref
(
''
)
let
qrcodeValue
=
$ref
(
''
)
...
@@ -26,7 +34,7 @@ function fetchQrcode() {
...
@@ -26,7 +34,7 @@ function fetchQrcode() {
<el-form-item
label=
"选择项目"
>
<el-form-item
label=
"选择项目"
>
<el-select
v-model=
"form.project_id"
@
change=
"fetchQrcode"
style=
"width: 100%"
>
<el-select
v-model=
"form.project_id"
@
change=
"fetchQrcode"
style=
"width: 100%"
>
<el-option
<el-option
v-for=
"item in
options.projects
"
v-for=
"item in
projectList
"
:key=
"item.project_id"
:key=
"item.project_id"
:label=
"item.title"
:label=
"item.title"
:value=
"item.project_id"
></el-option>
:value=
"item.project_id"
></el-option>
...
...
src/modules/base/channel/composables/useMap.ts
浏览文件 @
68945a8d
...
@@ -7,7 +7,6 @@ interface State {
...
@@ -7,7 +7,6 @@ interface State {
interface
Project
{
interface
Project
{
channel_id
:
string
channel_id
:
string
roles
:
string
[]
roles
:
string
[]
permissions
:
string
[]
tags
:
Record
<
string
,
string
>
tags
:
Record
<
string
,
string
>
}
}
...
@@ -75,7 +74,11 @@ export async function useMap() {
...
@@ -75,7 +74,11 @@ export async function useMap() {
projects
:
data
.
projects
||
[],
projects
:
data
.
projects
||
[],
channels
:
data
.
channels
||
[]
channels
:
data
.
channels
||
[]
}
}
authList
.
value
=
data
.
channel_auth_map
||
[]
authList
.
value
=
data
.
channel_auth_map
.
map
((
item
:
any
)
=>
{
const
tags
=
item
.
roles
.
reduce
((
result
:
any
,
role
:
string
)
=>
Object
.
assign
(
result
,
data
.
role_tags
[
role
]),
{})
return
{
...
item
,
tags
}
})
||
[]
tags
.
value
=
data
.
tags
||
{}
tags
.
value
=
data
.
tags
||
{}
leaders
.
value
=
data
.
leaders_map
||
[]
leaders
.
value
=
data
.
leaders_map
||
[]
})
})
...
...
src/modules/base/project/composables/useMap.ts
浏览文件 @
68945a8d
...
@@ -7,7 +7,6 @@ interface State {
...
@@ -7,7 +7,6 @@ interface State {
interface
Project
{
interface
Project
{
project_id
:
string
project_id
:
string
roles
:
string
[]
roles
:
string
[]
permissions
:
string
[]
tags
:
Record
<
string
,
string
>
tags
:
Record
<
string
,
string
>
}
}
...
@@ -22,12 +21,13 @@ export async function useMap() {
...
@@ -22,12 +21,13 @@ export async function useMap() {
async
function
fetchInfo
()
{
async
function
fetchInfo
()
{
await
getProjectMap
().
then
((
res
:
any
)
=>
{
await
getProjectMap
().
then
((
res
:
any
)
=>
{
const
data
=
res
.
data
const
data
=
res
.
data
types
.
value
=
types
.
value
=
data
.
project_type_map
||
[]
data
.
project_type_map
?.
map
((
item
:
{
id
:
number
;
name
:
string
})
=>
({
...
item
,
id
:
item
.
id
.
toString
()
}))
||
[]
status
.
value
=
data
.
project_status_map
||
[]
status
.
value
=
authProjectList
.
value
=
data
.
project_status_map
?.
map
((
item
:
{
id
:
number
;
name
:
string
})
=>
({
...
item
,
id
:
item
.
id
.
toString
()
}))
||
data
.
project_auth_map
.
map
((
item
:
any
)
=>
{
[]
const
tags
=
item
.
roles
.
reduce
((
result
:
any
,
role
:
string
)
=>
Object
.
assign
(
result
,
data
.
role_tags
[
role
]),
{})
authProjectList
.
value
=
data
.
project_auth_map
||
[]
return
{
...
item
,
tags
}
})
||
[]
tags
.
value
=
data
.
tags
||
{}
tags
.
value
=
data
.
tags
||
{}
})
})
}
}
...
...
vite.config.ts
浏览文件 @
68945a8d
...
@@ -24,6 +24,11 @@ export default defineConfig(({ mode }) => ({
...
@@ -24,6 +24,11 @@ export default defineConfig(({ mode }) => ({
cert
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
'./https/dev.ezijing.com.pem'
))
cert
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
'./https/dev.ezijing.com.pem'
))
},
},
proxy
:
{
proxy
:
{
'/api/zws'
:
{
target
:
'http://localhost-new-zws-backend.ezijing.com'
,
changeOrigin
:
true
,
rewrite
:
path
=>
path
.
replace
(
/^
\/
api
\/
zws/
,
''
)
},
'/api'
:
'https://zws-center.ezijing.com'
'/api'
:
'https://zws-center.ezijing.com'
}
}
},
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论