提交 68945a8d authored 作者: 王鹏飞's avatar 王鹏飞

chore update

上级 78990520
...@@ -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 getQrcodeProjectList(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 })
......
...@@ -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
......
...@@ -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>
......
...@@ -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 || []
}) })
......
...@@ -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 || {}
}) })
} }
......
...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论