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

chore update

上级 78990520
......@@ -97,11 +97,16 @@ export function bindTag(data: { channels_id: string; tags: string }) {
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 })
}
// 生成二维码
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 }) {
return httpRequest.get('/api/zws/v1/backend/channel/member-roles', { params })
......
......@@ -21,12 +21,12 @@ const form: any = reactive({
conversion_type: '',
type: '',
location_limit: '',
unpaid_list_limit: '',
expire_month: 0,
unpaid_list_limit: undefined,
expire_month: undefined,
follower_user_id: '',
follower_user_id_name: '',
division_rule: '1',
division_proportion: '',
division_proportion: undefined,
division_proportion_arr: [{ start: undefined, end: undefined, value: undefined }],
expire_range_month_start: '',
expire_range_month_end: '',
......@@ -42,19 +42,30 @@ const form: any = reactive({
watchEffect(() => {
if (props.data) {
let division_proportion_arr = [{ start: undefined, end: undefined, value: undefined }]
if (!['1', '3'].includes(props.data.division_rule)) {
try {
division_proportion_arr = JSON.parse(props.data.division_proportion)
} catch (error) {
console.log(error)
}
}
let secondary_division_proportion_arr = [{ start: undefined, end: undefined, value: undefined }]
if (['1008', '1019'].includes(props.data.project_id)) {
try {
secondary_division_proportion_arr = JSON.parse(props.data.secondary_division_proportion)
} 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) {
arr.splice(index, 1)
}
function stringToNumber(str: string | undefined) {
return str ? parseFloat(str) : undefined
}
// 选择完成
function submit() {
formRef?.validate().then(() => {
......@@ -151,19 +166,25 @@ function submit() {
</el-col>
<el-col :span="6">
<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-col>
</el-row>
<el-row :gutter="40">
<el-col :span="6">
<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-col>
<el-col :span="6">
<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-col>
<el-col :span="12">
......@@ -204,10 +225,20 @@ function submit() {
</el-select>
</el-form-item>
<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 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>
<template v-else>
<el-row :gutter="40" align="bottom" v-for="(item, index) in form.division_proportion_arr" :key="index">
......@@ -282,13 +313,23 @@ function submit() {
label="统一分成比例(%)"
prop="secondary_division_proportion"
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
label="每人分成金额(元/人)"
prop="secondary_division_proportion"
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>
<template v-else>
<el-row
......
......@@ -2,14 +2,22 @@
import type { ChannelItem } from '../types'
import type { FormInstance } from 'element-plus'
import QrcodeVue from 'qrcode.vue'
import { getQrcode } from '../api'
import { useMap } from '../composables/useMap'
const { options } = await useMap()
import { getQrcodeProjectList, getQrcode } from '../api'
const props = defineProps<{
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 form = reactive({ project_id: '' })
let qrcodeValue = $ref('')
......@@ -26,7 +34,7 @@ function fetchQrcode() {
<el-form-item label="选择项目">
<el-select v-model="form.project_id" @change="fetchQrcode" style="width: 100%">
<el-option
v-for="item in options.projects"
v-for="item in projectList"
:key="item.project_id"
:label="item.title"
:value="item.project_id"></el-option>
......
......@@ -7,7 +7,6 @@ interface State {
interface Project {
channel_id: string
roles: string[]
permissions: string[]
tags: Record<string, string>
}
......@@ -75,7 +74,11 @@ export async function useMap() {
projects: data.projects || [],
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 || {}
leaders.value = data.leaders_map || []
})
......
......@@ -7,7 +7,6 @@ interface State {
interface Project {
project_id: string
roles: string[]
permissions: string[]
tags: Record<string, string>
}
......@@ -22,12 +21,13 @@ export async function useMap() {
async function fetchInfo() {
await getProjectMap().then((res: any) => {
const data = res.data
types.value =
data.project_type_map?.map((item: { id: number; name: string }) => ({ ...item, id: item.id.toString() })) || []
status.value =
data.project_status_map?.map((item: { id: number; name: string }) => ({ ...item, id: item.id.toString() })) ||
[]
authProjectList.value = data.project_auth_map || []
types.value = data.project_type_map || []
status.value = data.project_status_map || []
authProjectList.value =
data.project_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 || {}
})
}
......
......@@ -24,6 +24,11 @@ export default defineConfig(({ mode }) => ({
cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem'))
},
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'
}
},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论