mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-01-26 04:28:10 +00:00
0.1.0
This commit is contained in:
parent
026d5fa334
commit
2305da5053
@ -86,23 +86,30 @@ export function getLink(params: Record<string, any>) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航数据
|
||||
* 获取底部导航列表
|
||||
*/
|
||||
export function getDiyBottom(params: Record<string, any>) {
|
||||
export function getDiyBottomList(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置底部导航数据
|
||||
* 获取底部导航数据
|
||||
*/
|
||||
export function getDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom/config`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置底部导航数据
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setDiyBottom(params: Record<string, any>) {
|
||||
export function setDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.post('diy/bottom', params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取页面模板
|
||||
* 获取页面模板类型
|
||||
*/
|
||||
export function getDiyTemplate(params: Record<string, any>) {
|
||||
return request.get(`diy/template`, {params})
|
||||
@ -124,6 +131,14 @@ export function getDiyRouteList(params: Record<string, any>) {
|
||||
return request.get(`diy/route`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由列表(存在的应用插件列表)
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyRouteAppList() {
|
||||
return request.get(`diy/route/apps`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义路由信息
|
||||
* @param params
|
||||
@ -159,7 +174,7 @@ export function changeTemplate(params: Record<string, any>) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面的应用插件列表
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
|
||||
@ -75,7 +75,7 @@ export function addonDevelopBuild(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function addonDevelopDownload(key: any) {
|
||||
return request.post(`addon_develop/download/${key}`, {}, {"responseType": "blob"})
|
||||
return request.post(`addon_develop/download/${key}`, {})
|
||||
}
|
||||
/***************************************************** 代码生成 ****************************************************/
|
||||
|
||||
|
||||
@ -249,6 +249,7 @@ const dialogClose = (done: () => {}) => {
|
||||
|
||||
watch(() => showDialog.value, () => {
|
||||
if (!showDialog.value) {
|
||||
active.value = 'build'
|
||||
cloudBuildLog = []
|
||||
flashInterval && clearInterval(flashInterval)
|
||||
clearCloudBuildTask()
|
||||
|
||||
@ -11,8 +11,6 @@
|
||||
"isUse": "使用中",
|
||||
"unused": "未使用",
|
||||
"all": "全部",
|
||||
"basicRoute": "基础页面",
|
||||
"diyPage": "自定义页面",
|
||||
"wapUrl": "wap链接",
|
||||
"weappUrl": "小程序链接",
|
||||
"shareLink": "分享链接",
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
{
|
||||
"decorate": "装修",
|
||||
"changePage": "设置",
|
||||
"preview": "预览",
|
||||
"pageSelectTips": "页面选择",
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
|
||||
@ -1,55 +1,4 @@
|
||||
{
|
||||
"title":"页面名称",
|
||||
"name":"页面标识",
|
||||
"type":"页面模板",
|
||||
"value":"页面数据,json格式",
|
||||
"isDefault":"是否默认页面,1:是,0:否",
|
||||
"visitCount":"访问量",
|
||||
"titlePlaceholder":"请输入页面名称",
|
||||
"namePlaceholder":"请输入页面标识",
|
||||
"typePlaceholder":"请输入页面模板",
|
||||
"valuePlaceholder":"请输入页面数据,json格式",
|
||||
"isDefaultPlaceholder":"请输入是否默认页面,1:是,0:否",
|
||||
"visitCountPlaceholder":"请输入访问量",
|
||||
"createTimePlaceholder":"请输入创建时间",
|
||||
"updateTimePlaceholder":"请输入更新时间",
|
||||
"addDiyPage":"添加自定义页面",
|
||||
"updateDiyPage":"编辑自定义页面",
|
||||
"diyPageDeleteTips":"确定要删除该自定义页面吗?",
|
||||
"leastTwoNav":"至少添加2个导航",
|
||||
"pleaseUpload":"请上传第[",
|
||||
"pleaseEnter":"请输入第[",
|
||||
"pleaseChoose":"请选择第[",
|
||||
"navIcon":"]个图标",
|
||||
"navSelectIcon":"]个选中图标",
|
||||
"navTitle":"]个导航标题",
|
||||
"navLink":"]个导航链接",
|
||||
"backgroundColor":"背景颜色",
|
||||
"imageText":"图文",
|
||||
"image":"图片",
|
||||
"text":"文字",
|
||||
"textColor":"文字颜色",
|
||||
"textSelectColor":"文字选中颜色",
|
||||
"reset":"重置",
|
||||
"navType":"导航类型",
|
||||
"styleSet":"样式设置",
|
||||
"addnav":"添加导航",
|
||||
"linkPlaceholder":"请选择链接",
|
||||
"navLinkOne":"导航链接",
|
||||
"navTitleOne":"导航标题",
|
||||
"titleContent":"请输入标题内容",
|
||||
"navIconOne":"导航图标",
|
||||
"navImage":"导航图片",
|
||||
"bottomNav":"底部导航",
|
||||
"bottomNavHint":"设置至少添加2个导航,最多添加5个导航",
|
||||
"selectLinkTips":"选择链接",
|
||||
"selectLinkConfirm":"确定",
|
||||
"uploadImgUnselected":"未选中",
|
||||
"uploadImgSelected":"选中"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"title": "插件名称",
|
||||
"key": "插件标识"
|
||||
}
|
||||
30
admin/src/app/lang/zh-cn/diy.tabbar_edit.json
Normal file
30
admin/src/app/lang/zh-cn/diy.tabbar_edit.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"leastTwoNav": "至少添加2个导航",
|
||||
"pleaseUpload": "请上传第[",
|
||||
"pleaseEnter": "请输入第[",
|
||||
"pleaseChoose": "请选择第[",
|
||||
"navIcon": "]个图标",
|
||||
"navSelectIcon": "]个选中图标",
|
||||
"navTitle": "]个导航标题",
|
||||
"navLink": "]个导航链接",
|
||||
"backgroundColor": "背景颜色",
|
||||
"imageText": "图文",
|
||||
"image": "图片",
|
||||
"text": "文字",
|
||||
"textColor": "文字颜色",
|
||||
"textSelectColor": "文字选中颜色",
|
||||
"reset": "重置",
|
||||
"navType": "导航类型",
|
||||
"styleSet": "样式设置",
|
||||
"addnav": "添加导航",
|
||||
"navLinkOne": "导航链接",
|
||||
"navTitleOne": "导航标题",
|
||||
"titleContent": "请输入标题内容",
|
||||
"navIconOne": "导航图标",
|
||||
"navImage": "导航图片",
|
||||
"editing": "正在编辑",
|
||||
"bottomNav": "底部导航",
|
||||
"bottomNavHint": "设置至少添加2个导航,最多添加5个导航",
|
||||
"uploadImgUnselected": "未选中",
|
||||
"uploadImgSelected": "选中"
|
||||
}
|
||||
@ -11,7 +11,7 @@
|
||||
"totalPay":"累计收款(元)",
|
||||
"totalRefund":"累计退款(元)",
|
||||
"totalTransfer":"累计转账(元)",
|
||||
"accountType": "请选择退款类型",
|
||||
"accountType": "请选择账单类型",
|
||||
"startDate": "开始时间",
|
||||
"endDate": "结束时间",
|
||||
"transferNo" : "转账单号",
|
||||
@ -22,5 +22,6 @@
|
||||
"outTradeNo": "单号",
|
||||
"refundMoney": "退款金额",
|
||||
"failReason": "退款说明",
|
||||
"body": "说明"
|
||||
}
|
||||
"body": "说明",
|
||||
"all": "全部"
|
||||
}
|
||||
|
||||
@ -258,11 +258,13 @@ const goBack = () => {
|
||||
|
||||
// 动态加载后台自定义组件编辑
|
||||
const modulesFiles = import.meta.glob('./components/*.vue', { eager: true })
|
||||
const addonModulesFiles = import.meta.glob('@/addon/**/views/diy/components/*.vue', { eager: true })
|
||||
addonModulesFiles && Object.assign(modulesFiles, addonModulesFiles)
|
||||
|
||||
const modules = {}
|
||||
for (const [key, value] of Object.entries(modulesFiles)) {
|
||||
const moduleName = key.replace(/^\.\/(.*)\.\w+$/, '$1')
|
||||
const name = moduleName.split('/')[1]
|
||||
const moduleName = key.split('/').pop()
|
||||
const name = moduleName.split('.')[0]
|
||||
modules[name] = value.default
|
||||
}
|
||||
|
||||
|
||||
@ -40,10 +40,10 @@
|
||||
<div>
|
||||
<div class="font-bold">{{ t('H5') }}</div>
|
||||
<el-form label-width="40px" class="mt-[5px]">
|
||||
<el-form-item :label="t('link')" v-show="page.use_template.wapPreview" class="mb-[5px]">
|
||||
<el-input readonly :value="page.use_template.wapPreview">
|
||||
<el-form-item :label="t('link')" class="mb-[5px]">
|
||||
<el-input readonly :value="page.shareUrl">
|
||||
<template #append>
|
||||
<el-button @click="copyEvent(page.use_template.wapPreview)" class="bg-primary copy">{{ t('copy') }}</el-button>
|
||||
<el-button @click="copyEvent(page.shareUrl)" class="bg-primary copy">{{ t('copy') }}</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
@ -84,7 +84,7 @@ const link = ref({
|
||||
name: ''
|
||||
})
|
||||
|
||||
// 添加自定义页面
|
||||
// 切换页面
|
||||
const formData = reactive({
|
||||
type: '',
|
||||
name: '',
|
||||
@ -105,7 +105,7 @@ const refreshData = () => {
|
||||
|
||||
link.value.name = page.use_template.name;
|
||||
link.value.title = page.use_template.title;
|
||||
link.value.page = page.use_template.page;
|
||||
link.value.url = page.use_template.page;
|
||||
link.value.action = page.use_template.action;
|
||||
link.value.parent = page.use_template.parent;
|
||||
|
||||
@ -200,7 +200,8 @@ const settingTips = () => {
|
||||
|
||||
const setDomain = () => {
|
||||
page.use_template.wapPreview = page.wapUrl + page.use_template.url
|
||||
QRCode.toDataURL(page.use_template.wapPreview, { errorCorrectionLevel: 'L', margin: 0, width: 100 }).then(url => {
|
||||
page.shareUrl = page.wapUrl + '/';
|
||||
QRCode.toDataURL(page.shareUrl, { errorCorrectionLevel: 'L', margin: 0, width: 100 }).then(url => {
|
||||
wapImage.value = url
|
||||
})
|
||||
page.timeIframe = new Date().getTime()
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<el-input v-model="diyPageTableData.searchParam.title" :placeholder="t('titlePlaceholder')" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('forAddon')" prop="addon_name">
|
||||
<el-select v-model="diyPageTableData.searchParam.addon_name" :placeholder="t('pageTypePlaceholder')">
|
||||
<el-select v-model="diyPageTableData.searchParam.addon_name" :placeholder="t('pageTypePlaceholder')" @change="handleSelectAddonChange">
|
||||
<el-option :label="t('all')" value="" />
|
||||
<el-option v-for="(item, key) in apps" :label="item.title" :value="key" :key="key"/>
|
||||
</el-select>
|
||||
@ -179,11 +179,19 @@ const getDomain = async () => {
|
||||
getDomain()
|
||||
|
||||
// 获取自定义页面类型
|
||||
getDiyTemplate({ mode: '' }).then(res => {
|
||||
for (const key in res.data) {
|
||||
pageType[key] = res.data[key]
|
||||
}
|
||||
})
|
||||
const loadDiyTemplate = (addon = '')=> {
|
||||
getDiyTemplate({mode: '', addon}).then(res => {
|
||||
for (let key in pageType) {
|
||||
delete pageType[key];
|
||||
}
|
||||
|
||||
for (const key in res.data) {
|
||||
pageType[key] = res.data[key]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
loadDiyTemplate();
|
||||
|
||||
const apps: any = reactive({}) // 应用插件列表
|
||||
|
||||
@ -195,6 +203,12 @@ getApps({}).then(res=>{
|
||||
}
|
||||
});
|
||||
|
||||
// 根据所属插件,查询页面类型
|
||||
const handleSelectAddonChange = (value: any) => {
|
||||
diyPageTableData.searchParam.type = '';
|
||||
loadDiyTemplate(value)
|
||||
}
|
||||
|
||||
const diyPageTableData: any = reactive({
|
||||
page: 1,
|
||||
limit: 10,
|
||||
|
||||
@ -28,7 +28,9 @@
|
||||
|
||||
<div class="w-[500px]">
|
||||
<div class="flex flex-wrap">
|
||||
<el-button type="primary" @click="toDecorate()" v-show="page.use_template.action == 'decorate'" class="mr-[12px]">{{ t('decorate') }}</el-button>
|
||||
<!-- 多应用切换启动页 -->
|
||||
<el-button type="primary" @click="showDialog = true" v-if="siteApps.length > 1">{{ t('changePage') }}</el-button>
|
||||
<el-button type="primary" @click="toDecorate()" v-show="page.use_template.action == 'decorate'" class="ml-[12px]">{{ t('decorate') }}</el-button>
|
||||
</div>
|
||||
|
||||
<div class="info-wrap">
|
||||
@ -37,10 +39,10 @@
|
||||
<div>
|
||||
<div class="font-bold">{{ t('H5') }}</div>
|
||||
<el-form label-width="40px" class="mt-[5px]">
|
||||
<el-form-item :label="t('link')" v-show="page.use_template.wapPreview" class="mb-[5px]">
|
||||
<el-input readonly :value="page.use_template.wapPreview">
|
||||
<el-form-item :label="t('link')" class="mb-[5px]">
|
||||
<el-input readonly :value="page.shareUrl">
|
||||
<template #append>
|
||||
<el-button @click="copyEvent(page.use_template.wapPreview)" class="bg-primary copy">{{ t('copy') }}</el-button>
|
||||
<el-button @click="copyEvent(page.shareUrl)" class="bg-primary copy">{{ t('copy') }}</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
@ -59,18 +61,45 @@
|
||||
|
||||
</div>
|
||||
|
||||
<el-dialog v-model="showDialog" :title="t('pageSelectTips')" width="400px" :close-on-press-escape="false" :destroy-on-close="true" :close-on-click-modal="false">
|
||||
<div class="flex items-start">
|
||||
<el-scrollbar class="pl-4 h-[300px] flex-1">
|
||||
<div class="flex flex-wrap">
|
||||
<div v-for="(item, key) in pageType" :key="key"
|
||||
class="border border-br rounded-[3px] mr-[10px] mb-[10px] px-4 h-[32px] leading-[32px] cursor-pointer hover:bg-primary-light-9 px-[10px] hover:text-primary"
|
||||
:class="[key == link.name ? 'border-primary text-primary' : '']"
|
||||
@click="changeLink(key,item)">{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
|
||||
<el-button type="primary" @click="changePage()">{{ t('confirm') }}</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref, watch } from 'vue'
|
||||
import { reactive, ref, watch, computed } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { img } from '@/utils/common'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { getDecoratePage, changeTemplate } from '@/app/api/diy'
|
||||
import { getDecoratePage, changeTemplate,getDiyTemplate } from '@/app/api/diy'
|
||||
import storage from '@/utils/storage'
|
||||
import QRCode from 'qrcode'
|
||||
import { useClipboard } from '@vueuse/core'
|
||||
import useUserStore from '@/stores/modules/user'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const siteApps = computed(()=>{
|
||||
return userStore.siteInfo.apps;
|
||||
})
|
||||
|
||||
const type: any = ref('DIY_MEMBER_INDEX');
|
||||
const page: any = reactive({})
|
||||
@ -81,16 +110,25 @@ const link = ref({
|
||||
name: ''
|
||||
})
|
||||
|
||||
// 添加自定义页面
|
||||
// 切换页面
|
||||
const formData = reactive({
|
||||
type: '',
|
||||
name: '',
|
||||
parent:'',
|
||||
page: '',
|
||||
title: '',
|
||||
action: ''
|
||||
})
|
||||
|
||||
const showDialog = ref(false)
|
||||
const pageType: any = reactive({}) // 页面类型
|
||||
|
||||
// 获取自定义页面类型
|
||||
getDiyTemplate({ type: 'member_index' }).then(res => {
|
||||
for (const key in res.data) {
|
||||
pageType[key] = res.data[key]
|
||||
}
|
||||
})
|
||||
|
||||
// 初始化数据
|
||||
const refreshData = () => {
|
||||
getDecoratePage({
|
||||
@ -104,7 +142,6 @@ const refreshData = () => {
|
||||
link.value.title = page.use_template.title;
|
||||
link.value.page = page.use_template.page;
|
||||
link.value.action = page.use_template.action;
|
||||
link.value.parent = page.use_template.parent;
|
||||
|
||||
if (page.use_template.url) {
|
||||
page.loadingIframe = false // 加载iframe
|
||||
@ -197,7 +234,8 @@ const settingTips = () => {
|
||||
|
||||
const setDomain = () => {
|
||||
page.use_template.wapPreview = page.wapUrl + page.use_template.url
|
||||
QRCode.toDataURL(page.use_template.wapPreview, { errorCorrectionLevel: 'L', margin: 0, width: 100 }).then(url => {
|
||||
page.shareUrl = page.wapUrl + page.page;
|
||||
QRCode.toDataURL(page.shareUrl, { errorCorrectionLevel: 'L', margin: 0, width: 100 }).then(url => {
|
||||
wapImage.value = url
|
||||
})
|
||||
page.timeIframe = new Date().getTime()
|
||||
@ -243,14 +281,22 @@ const toPreview = () => {
|
||||
window.open(url.href)
|
||||
}
|
||||
|
||||
// 切换页面链接
|
||||
const changeLink = (key:any,item: any) => {
|
||||
link.value.name = key;
|
||||
link.value.page = item.page;
|
||||
link.value.title = item.title;
|
||||
link.value.action = item.action;
|
||||
}
|
||||
|
||||
const isRepeat = ref(false)
|
||||
|
||||
const changePage = ()=>{
|
||||
formData.type = type.value;
|
||||
formData.name = link.value.name;
|
||||
formData.page = link.value.url;
|
||||
formData.page = link.value.page;
|
||||
formData.title = link.value.title;
|
||||
formData.action = link.value.action;
|
||||
formData.parent = link.value.parent;
|
||||
|
||||
if (isRepeat.value) return
|
||||
isRepeat.value = true
|
||||
@ -259,6 +305,7 @@ const changePage = ()=>{
|
||||
...formData
|
||||
}).then((res) => {
|
||||
isRepeat.value = false
|
||||
showDialog.value = false;
|
||||
refreshData()
|
||||
})
|
||||
}
|
||||
|
||||
@ -10,6 +10,12 @@
|
||||
<el-form-item :label="t('title')" prop="title">
|
||||
<el-input v-model="diyRouteTableData.searchParam.title" :placeholder="t('titlePlaceholder')" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('forAddon')" prop="addon_name">
|
||||
<el-select v-model="diyRouteTableData.searchParam.addon_name" :placeholder="t('pageTypePlaceholder')">
|
||||
<el-option :label="t('all')" value="" />
|
||||
<el-option v-for="(item, key) in apps" :label="item.title" :value="key" :key="key"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="loadDiyRouteList()">{{ t('search') }}</el-button>
|
||||
<el-button @click="resetForm(searchFormDiyRouteRef)">{{ t('reset') }}</el-button>
|
||||
@ -22,8 +28,12 @@
|
||||
<span>{{ !diyRouteTableData.loading ? t('emptyData') : '' }}</span>
|
||||
</template>
|
||||
<el-table-column prop="title" :label="t('title')" min-width="70" />
|
||||
<el-table-column prop="addon_title" :label="t('forAddon')" min-width="70" />
|
||||
<el-table-column prop="page" :label="t('wapUrl')" min-width="170">
|
||||
<el-table-column prop="addon_title" :label="t('forAddon')" min-width="70">
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.addon_info.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="page" :label="t('wapUrl')" min-width="230">
|
||||
<template #default="{ row }">
|
||||
<span class="mr-[10px]">{{ wapDomain + row.page }}</span>
|
||||
<el-button type="primary" link @click="copyEvent(wapDomain + row.page)">{{ t('copy') }}</el-button>
|
||||
@ -35,7 +45,7 @@
|
||||
<el-button type="primary" link @click="copyEvent(row.page)">{{ t('copy') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="t('share')" fixed="right" align="right" min-width="80">
|
||||
<el-table-column :label="t('share')" fixed="right" align="right" min-width="40">
|
||||
<template #default="{ row }">
|
||||
<el-button v-if="row.is_share == 1" type="primary" link @click="openShare(row)">{{ t('shareSet') }}</el-button>
|
||||
</template>
|
||||
@ -82,7 +92,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref, watch, computed } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getDiyTemplate, getDiyRouteList, getDiyRouteInfo, editDiyRouteShare } from '@/app/api/diy'
|
||||
import { getDiyRouteAppList,getDiyTemplate, getDiyRouteList, getDiyRouteInfo, editDiyRouteShare } from '@/app/api/diy'
|
||||
import { ElMessage, FormInstance } from 'element-plus'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useClipboard } from '@vueuse/core'
|
||||
@ -103,7 +113,8 @@ const diyRouteTableData = reactive({
|
||||
loading: true,
|
||||
data: [],
|
||||
searchParam: {
|
||||
title: ''
|
||||
title: '',
|
||||
addon_name:''
|
||||
}
|
||||
})
|
||||
|
||||
@ -114,6 +125,16 @@ const getDomain = async () => {
|
||||
|
||||
getDomain()
|
||||
|
||||
const apps: any = reactive({}) // 应用插件列表
|
||||
|
||||
getDiyRouteAppList({}).then(res=>{
|
||||
if(res.data){
|
||||
for (const key in res.data) {
|
||||
apps[key] = res.data[key];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 获取自定义路由列表
|
||||
*/
|
||||
|
||||
@ -1,256 +1,90 @@
|
||||
<template>
|
||||
<div class="main-container">
|
||||
<el-card class="box-card !border-none" shadow="never" v-loading="loading">
|
||||
<div class="flex">
|
||||
<div class="w-[360px] h-[400px] absolute mr-[30px] border-[1px] border-gray-300">
|
||||
<div class="flex items-center justify-between absolute h-[60px] left-[0px] right-[0px] bottom-[0px] bg-white border-[1px] border-primary" :style="{ 'backgroundColor': diyBottomData.backgroundColor }">
|
||||
<div class="flex flex-1 flex-col items-center justify-center" v-for="(item, index) in diyBottomData.list" :key="'b' + index">
|
||||
<el-image class="w-[22px] h-[22px] mb-[5px] leading-1" :src="img(item.iconPath)" :fit="contain" v-if="['1', '2'].includes(diyBottomData.type.toString())">
|
||||
<template #error>
|
||||
<div class="image-slot flex justify-center items-center mt-1">
|
||||
<el-icon><Picture class="text-3xl text-gray-500" /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
<span class="text-[12px]" v-if="['1', '3'].includes(diyBottomData.type.toString())" :style="{ 'color': diyBottomData.textColor }">{{ item.text }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 ml-[430px]">
|
||||
<div class="flex items-center border-l-[3px] border-primary pl-[5px] leading-[1.1] mt-[10px]">
|
||||
<span class="text-[14px]">{{ t('bottomNav') }}</span>
|
||||
<span class="text-[12px] ml-[8px] text-gray-500">{{ t('bottomNavHint') }}</span>
|
||||
</div>
|
||||
<el-form :model="diyBottomData" label-width="100px" ref="formRef">
|
||||
<el-tabs v-model="activeName" class="demo-tabs mt-[15px]">
|
||||
<el-tab-pane :label="t('navImage')" name="navPicture">
|
||||
<div ref="navItemRef">
|
||||
<div v-for="(item,index) in diyBottomData.list" :key="'a'+index" :data-id="index" class="item-wrap border-2 border-dashed pt-[18px] m-[10px] mb-[15px] relative list-item">
|
||||
<el-form-item :label="t('navIconOne')">
|
||||
<div class="flex align-center">
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<upload-image v-model="item.iconPath" width="60px" height="60px" :limit="1" />
|
||||
<span class="mr-[10px] text-sm">{{t('uploadImgUnselected')}}</span>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<upload-image v-model="item.iconSelectPath" width="60px" height="60px" :limit="1" />
|
||||
<span class="mr-[10px] text-sm">{{t('uploadImgSelected')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('navTitleOne')">
|
||||
<el-input class="w-[215px]" v-model="item.text" :placeholder="t('titleContent')" maxlength="5" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('navLinkOne')">
|
||||
<diy-link v-model="item.link"></diy-link>
|
||||
</el-form-item>
|
||||
<el-icon class="close-icon cursor-pointer -top-[11px] -right-[8px]" @click="deleteNav(index)">
|
||||
<CircleCloseFilled />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
<el-card class="box-card !border-none" shadow="never">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-[20px]">{{ pageName }}</span>
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="mt-[15px]" v-show="diyBottomData.list.length < 5" @click="addNav">{{ t('addnav') }}</el-button>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="t('styleSet')" name="setStyle">
|
||||
<el-form-item :label="t('navType')">
|
||||
<el-radio-group v-model="diyBottomData.type" class="ml-4">
|
||||
<el-radio label="1" size="large">{{ t('imageText') }}</el-radio>
|
||||
<el-radio label="2" size="large">{{ t('image') }}</el-radio>
|
||||
<el-radio label="3" size="large">{{ t('text') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('textColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.textColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.textColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.textColor = '#333333'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('textSelectColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.textHoverColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.textHoverColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.textHoverColor = '#333333'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('backgroundColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.backgroundColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.backgroundColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.backgroundColor = '#FFFFFF'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table class="mt-[20px]" :data="bottomNavTableData.data" size="large" v-loading="bottomNavTableData.loading">
|
||||
|
||||
<template #empty>
|
||||
<span>{{ !bottomNavTableData.loading ? t('emptyData') : '' }}</span>
|
||||
</template>
|
||||
|
||||
<el-table-column prop="title" :label="t('title')" min-width="120" >
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.info.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="key" :label="t('key')" min-width="80"/>
|
||||
|
||||
<el-table-column :label="t('operation')" fixed="right" align="right" min-width="160">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<div class="mt-[16px] flex justify-end">
|
||||
<el-pagination v-model:current-page="bottomNavTableData.page" v-model:page-size="bottomNavTableData.limit"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="bottomNavTableData.total"
|
||||
@size-change="loadbottomNavList()" @current-change="loadbottomNavList" />
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
<div class="fixed-footer-wrap">
|
||||
<div class="fixed-footer">
|
||||
<el-button type="primary" @click="onSave(formRef)">{{ t('save') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { img } from '@/utils/common'
|
||||
import type { FormInstance, ElNotification } from 'element-plus'
|
||||
import { getDiyBottom, setDiyBottom } from '@/app/api/diy'
|
||||
import Sortable from 'sortablejs'
|
||||
import { range } from 'lodash-es'
|
||||
import { reactive, ref } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getDiyBottomList } from '@/app/api/diy'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
|
||||
const activeName = ref<string>('navPicture')
|
||||
const loading = ref<boolean>(false)
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const pageName = route.meta.title
|
||||
|
||||
// 底部导航数据
|
||||
interface diyBottom {
|
||||
backgroundColor: string,
|
||||
textColor: string,
|
||||
textHoverColor: string,
|
||||
type: string,
|
||||
list: Array<Object>
|
||||
}
|
||||
const diyBottomData = reactive<diyBottom>({
|
||||
backgroundColor: '#FFFFFF',
|
||||
textColor: '#333333',
|
||||
textHoverColor: '#333333',
|
||||
type: '1',
|
||||
list: []
|
||||
})
|
||||
|
||||
// 底部导航项数据
|
||||
interface diyBottomItem {
|
||||
text: string,
|
||||
link: object,
|
||||
iconSelectPath: string,
|
||||
iconPath: string
|
||||
}
|
||||
const diyBottomItemData = reactive<diyBottomItem>({
|
||||
text: '',
|
||||
link: {
|
||||
name: '',
|
||||
title: '',
|
||||
parent: '',
|
||||
url: ''
|
||||
},
|
||||
iconSelectPath: '',
|
||||
iconPath: ''
|
||||
})
|
||||
|
||||
// 添加导航
|
||||
const addNav = (): void => {
|
||||
if (diyBottomData.list.length >= 5) return
|
||||
diyBottomData.list.push({ ...diyBottomItemData })
|
||||
}
|
||||
addNav()
|
||||
|
||||
// 删除导航
|
||||
const deleteNav = (index:any): void => {
|
||||
const data = diyBottomData.list
|
||||
data.splice(index, 1)
|
||||
}
|
||||
|
||||
const formRef = ref<FormInstance>()
|
||||
/**
|
||||
* 获取导航数据
|
||||
*/
|
||||
const getDiyBottomFn = (page: number = 1) => {
|
||||
loading.value = true
|
||||
|
||||
getDiyBottom({}).then(res => {
|
||||
loading.value = false
|
||||
Object.keys(diyBottomData).forEach((item, index) => {
|
||||
diyBottomData[item] = res.data[item]
|
||||
})
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
const bottomNavTableData: any = reactive({
|
||||
page: 1,
|
||||
limit: 10,
|
||||
total: 0,
|
||||
loading: true,
|
||||
data: [],
|
||||
})
|
||||
}
|
||||
getDiyBottomFn()
|
||||
|
||||
// 保存导航数据
|
||||
const onSave = async (formEl: FormInstance | undefined) => {
|
||||
if (verifyFn()) return false
|
||||
// 获取自定义页面列表
|
||||
const loadBottomNavList = (page: number = 1) => {
|
||||
bottomNavTableData.loading = true
|
||||
bottomNavTableData.page = page
|
||||
|
||||
if (loading.value || !formEl) return
|
||||
await formEl.validate(async (valid) => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
setDiyBottom({ menu: diyBottomData }).then(res => {
|
||||
loading.value = false
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
getDiyBottomList({}).then(res => {
|
||||
bottomNavTableData.loading = false
|
||||
|
||||
// 验证
|
||||
const verifyFn = (): boolean => {
|
||||
if (diyBottomData.list.length < 2) {
|
||||
ElNotification({
|
||||
type: 'error',
|
||||
message: t('leastTwoNav')
|
||||
})
|
||||
return true
|
||||
}
|
||||
try {
|
||||
const msg = ref<string>('')
|
||||
diyBottomData.list.forEach((item: any, index) => {
|
||||
if (!item.iconPath) msg.value = `${t('pleaseUpload')}${index + 1}${t('navIcon')}`
|
||||
if (!item.iconSelectPath) msg.value = `${t('pleaseUpload')}${index + 1}${t('navSelectIcon')}`
|
||||
if (!item.text) msg.value = `${t('pleaseEnter')}[${index + 1}${t('navTitle')}`
|
||||
if (!item.link.url) msg.value = `${t('pleaseChoose')}${index + 1}${t('navLink')}`
|
||||
if (msg.value) {
|
||||
ElNotification({
|
||||
type: 'error',
|
||||
message: msg.value
|
||||
})
|
||||
throw Error()
|
||||
const len = Math.ceil(res.data.length / bottomNavTableData.limit)
|
||||
const data = JSON.parse(JSON.stringify(res.data))
|
||||
const dataGather = []
|
||||
for (let i = 0; i < len; i++) {
|
||||
dataGather[i] = data.splice(0, bottomNavTableData.limit)
|
||||
}
|
||||
bottomNavTableData.data = dataGather[bottomNavTableData.page - 1]
|
||||
|
||||
bottomNavTableData.total = res.data.length
|
||||
}).catch(() => {
|
||||
bottomNavTableData.loading = false
|
||||
})
|
||||
} catch (e) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const navItemRef = ref()
|
||||
loadBottomNavList()
|
||||
|
||||
onMounted(() => {
|
||||
const sortable = Sortable.create(navItemRef.value, {
|
||||
group: 'item-wrap',
|
||||
animation: 200,
|
||||
onEnd: event => {
|
||||
const temp = diyBottomData.list[event.oldIndex!]
|
||||
diyBottomData.list.splice(event.oldIndex!, 1)
|
||||
diyBottomData.list.splice(event.newIndex!, 0, temp)
|
||||
nextTick(() => {
|
||||
sortable.sort(
|
||||
range(diyBottomData.list.length).map(value => {
|
||||
return value.toString()
|
||||
})
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
// 编辑底部导航
|
||||
const editEvent = (data: any) => {
|
||||
router.push('/diy/tabbar_edit?key=' + data.key)
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.close-icon {
|
||||
display: none;
|
||||
position: absolute !important;
|
||||
font-size: 20px !important;
|
||||
color: #7d7b7b !important;
|
||||
}
|
||||
|
||||
.list-item:hover .close-icon {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
262
admin/src/app/views/diy/tabbar_edit.vue
Normal file
262
admin/src/app/views/diy/tabbar_edit.vue
Normal file
@ -0,0 +1,262 @@
|
||||
<template>
|
||||
<div class="main-container">
|
||||
<el-card class="box-card !border-none" shadow="never" v-loading="loading">
|
||||
<div class="flex">
|
||||
<div class="w-[360px] h-[400px] absolute mr-[30px] border-[1px] border-gray-300">
|
||||
<div class="flex items-center justify-between absolute h-[60px] left-[0px] right-[0px] bottom-[0px] bg-white border-[1px] border-primary" :style="{ 'backgroundColor': diyBottomData.value.backgroundColor }">
|
||||
<div class="flex flex-1 flex-col items-center justify-center" v-for="(item, index) in diyBottomData.value.list" :key="'b' + index">
|
||||
<el-image class="w-[22px] h-[22px] mb-[5px] leading-1" :src="img(item.iconPath)" :fit="contain" v-if="['1', '2'].includes(diyBottomData.value.type.toString())">
|
||||
<template #error>
|
||||
<div class="image-slot flex justify-center items-center mt-1">
|
||||
<el-icon><Picture class="text-3xl text-gray-500" /></el-icon>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
<span class="text-[12px]" v-if="['1', '3'].includes(diyBottomData.value.type.toString())" :style="{ 'color': diyBottomData.value.textColor }">{{ item.text }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 ml-[430px]">
|
||||
<div class="flex items-center border-l-[3px] border-primary pl-[5px] leading-[1.1] mt-[10px]">
|
||||
<span class="text-[14px]">{{ t('editing') }}</span>
|
||||
<span class="text-[14px] text-primary mx-[3px]">{{ diyBottomData.info.title }}</span>
|
||||
<span class="text-[14px]">{{ t('bottomNav') }}</span>
|
||||
<span class="text-[12px] ml-[8px] text-gray-500">{{ t('bottomNavHint') }}</span>
|
||||
</div>
|
||||
<el-form :model="diyBottomData.value" label-width="100px" ref="formRef">
|
||||
<el-tabs v-model="activeName" class="demo-tabs mt-[15px]">
|
||||
<el-tab-pane :label="t('navImage')" name="navPicture">
|
||||
<div ref="navItemRef">
|
||||
<div v-for="(item,index) in diyBottomData.value.list" :key="'a'+index" :data-id="index" class="item-wrap border-2 border-dashed pt-[18px] m-[10px] mb-[15px] relative list-item">
|
||||
<el-form-item :label="t('navIconOne')">
|
||||
<div class="flex align-center">
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<upload-image v-model="item.iconPath" width="60px" height="60px" :limit="1" />
|
||||
<span class="mr-[10px] text-sm">{{t('uploadImgUnselected')}}</span>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center">
|
||||
<upload-image v-model="item.iconSelectPath" width="60px" height="60px" :limit="1" />
|
||||
<span class="mr-[10px] text-sm">{{t('uploadImgSelected')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('navTitleOne')">
|
||||
<el-input class="w-[215px]" v-model="item.text" :placeholder="t('titleContent')" maxlength="5" show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('navLinkOne')">
|
||||
<diy-link v-model="item.link"></diy-link>
|
||||
</el-form-item>
|
||||
<el-icon class="close-icon cursor-pointer -top-[11px] -right-[8px]" @click="deleteNav(index)">
|
||||
<CircleCloseFilled />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="mt-[15px]" v-show="diyBottomData.value.list.length < 5" @click="addNav">{{ t('addnav') }}</el-button>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="t('styleSet')" name="setStyle">
|
||||
<el-form-item :label="t('navType')">
|
||||
<el-radio-group v-model="diyBottomData.value.type" class="ml-4">
|
||||
<el-radio label="1" size="large">{{ t('imageText') }}</el-radio>
|
||||
<el-radio label="2" size="large">{{ t('image') }}</el-radio>
|
||||
<el-radio label="3" size="large">{{ t('text') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('textColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.value.textColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.value.textColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.value.textColor = '#333333'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('textSelectColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.value.textHoverColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.value.textHoverColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.value.textHoverColor = '#333333'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('backgroundColor')">
|
||||
<div class="flex align-center">
|
||||
<el-color-picker v-model="diyBottomData.value.backgroundColor" />
|
||||
<el-input class="ml-[10px]" v-model="diyBottomData.value.backgroundColor" disabled />
|
||||
<el-button class="ml-[10px]" type="primary" @click="diyBottomData.value.backgroundColor = '#FFFFFF'">{{ t('reset') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
<div class="fixed-footer-wrap">
|
||||
<div class="fixed-footer">
|
||||
<el-button type="primary" @click="onSave(formRef)">{{ t('save') }}</el-button>
|
||||
<el-button @click="back()">{{ t('back') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { img } from '@/utils/common'
|
||||
import type { FormInstance, ElNotification } from 'element-plus'
|
||||
import { getDiyBottomConfig, setDiyBottomConfig } from '@/app/api/diy'
|
||||
import Sortable from 'sortablejs'
|
||||
import { range } from 'lodash-es'
|
||||
import { useRoute,useRouter } from 'vue-router'
|
||||
|
||||
const activeName = ref<string>('navPicture')
|
||||
const loading = ref<boolean>(false)
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
||||
route.query.key = route.query.key || '';
|
||||
|
||||
// 底部导航数据
|
||||
const diyBottomData = reactive({
|
||||
key:'',
|
||||
info:{},
|
||||
value:{
|
||||
backgroundColor: '#FFFFFF',
|
||||
textColor: '#333333',
|
||||
textHoverColor: '#333333',
|
||||
type: '1',
|
||||
list: []
|
||||
}
|
||||
})
|
||||
|
||||
// 底部导航项数据
|
||||
const diyBottomItemData = reactive({
|
||||
text: '',
|
||||
link: {
|
||||
name: '',
|
||||
title: '',
|
||||
parent: '',
|
||||
url: ''
|
||||
},
|
||||
iconSelectPath: '',
|
||||
iconPath: ''
|
||||
})
|
||||
|
||||
// 添加导航
|
||||
const addNav = (): void => {
|
||||
if (diyBottomData.value.list.length >= 5) return
|
||||
diyBottomData.value.list.push({ ...diyBottomItemData })
|
||||
}
|
||||
|
||||
addNav()
|
||||
|
||||
// 删除导航
|
||||
const deleteNav = (index:any): void => {
|
||||
const data = diyBottomData.value.list
|
||||
data.splice(index, 1)
|
||||
}
|
||||
|
||||
const formRef = ref<FormInstance>()
|
||||
/**
|
||||
* 获取导航数据
|
||||
*/
|
||||
const getDiyBottomFn = () => {
|
||||
loading.value = true
|
||||
|
||||
getDiyBottomConfig({
|
||||
key:route.query.key
|
||||
}).then(res => {
|
||||
loading.value = false
|
||||
Object.keys(diyBottomData).forEach((item, index) => {
|
||||
diyBottomData[item] = res.data[item]
|
||||
})
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
getDiyBottomFn()
|
||||
|
||||
// 保存导航数据
|
||||
const onSave = async (formEl: FormInstance | undefined) => {
|
||||
if (verifyFn()) return false
|
||||
|
||||
if (loading.value || !formEl) return
|
||||
await formEl.validate(async (valid) => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
setDiyBottomConfig({key: diyBottomData.key, value: diyBottomData.value}).then(res => {
|
||||
loading.value = false
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const back = () => {
|
||||
router.push('/diy/tabbar')
|
||||
}
|
||||
|
||||
// 验证
|
||||
const verifyFn = (): boolean => {
|
||||
if (diyBottomData.value.list.length < 2) {
|
||||
ElNotification({
|
||||
type: 'error',
|
||||
message: t('leastTwoNav')
|
||||
})
|
||||
return true
|
||||
}
|
||||
try {
|
||||
const msg = ref<string>('')
|
||||
diyBottomData.value.list.forEach((item: any, index) => {
|
||||
if (!item.iconPath) msg.value = `${t('pleaseUpload')}${index + 1}${t('navIcon')}`
|
||||
if (!item.iconSelectPath) msg.value = `${t('pleaseUpload')}${index + 1}${t('navSelectIcon')}`
|
||||
if (!item.text) msg.value = `${t('pleaseEnter')}[${index + 1}${t('navTitle')}`
|
||||
if (!item.link.url) msg.value = `${t('pleaseChoose')}${index + 1}${t('navLink')}`
|
||||
if (msg.value) {
|
||||
ElNotification({
|
||||
type: 'error',
|
||||
message: msg.value
|
||||
})
|
||||
throw Error()
|
||||
}
|
||||
})
|
||||
} catch (e) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const navItemRef = ref()
|
||||
|
||||
onMounted(() => {
|
||||
const sortable = Sortable.create(navItemRef.value, {
|
||||
group: 'item-wrap',
|
||||
animation: 200,
|
||||
onEnd: event => {
|
||||
const temp = diyBottomData.value.list[event.oldIndex!]
|
||||
diyBottomData.value.list.splice(event.oldIndex!, 1)
|
||||
diyBottomData.value.list.splice(event.newIndex!, 0, temp)
|
||||
nextTick(() => {
|
||||
sortable.sort(
|
||||
range(diyBottomData.value.list.length).map(value => {
|
||||
return value.toString()
|
||||
})
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.close-icon {
|
||||
display: none;
|
||||
position: absolute !important;
|
||||
font-size: 20px !important;
|
||||
color: #7d7b7b !important;
|
||||
}
|
||||
|
||||
.list-item:hover .close-icon {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
@ -44,9 +44,10 @@
|
||||
</el-card>
|
||||
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
|
||||
<el-form :inline="true" :model="siteAccountLogTable.searchParam" ref="searchFormRef">
|
||||
<el-form-item :label="t('type')" class="items-center">
|
||||
<el-form-item :label="t('type')" class="items-center" prop="type">
|
||||
<el-select v-model="siteAccountLogTable.searchParam.type" class="m-2"
|
||||
:placeholder="t('accountType')">
|
||||
<el-option :label="t('all')" value="" />
|
||||
<el-option v-for="(item, index) in accountType" :key="index" :label="item" :value="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
@ -25,38 +25,46 @@
|
||||
</div>
|
||||
<el-input v-model="params.keywords" class="!w-[300px] !h-[34px]" placeholder="输入要搜索的站点名称" @keyup.enter.native="query">
|
||||
<template #suffix>
|
||||
<el-icon @click.stop="query" class="cursor-pointer">
|
||||
<el-icon @click.stop="getHomeSiteFn()" class="cursor-pointer">
|
||||
<Search />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap mt-[30px]" v-loading="loading">
|
||||
<div v-for="(item, index) in tableData" :key="index" @click="selectSite(item)"
|
||||
:class="['home-item w-[285px] box-border mb-[20px] cursor-pointer',{'mr-[20px]': index ==0 || (index+1)%4 != 0}]">
|
||||
<div class="flex items-center px-[24px] pt-[22px] pb-[16px] bg-[#F0F2F4] home-item-head">
|
||||
<img v-if="item.logo" class="w-[48px] h-[48px] mr-[15px] rounded-[50%] overflow-hidden" :src="img(item.logo)" />
|
||||
<img v-else class="w-[48px] h-[48px] mr-[15px] rounded-[50%] overflow-hidden" src="@/app/assets/images/member_head.png" />
|
||||
<div class="flex flex-col flex-1 justify-center">
|
||||
<div class="flex items-center flex-wrap">
|
||||
<span class="text-[16px] text-[#000] max-w-[145px] font-bold truncate mr-[10px]">{{item.site_name}}</span>
|
||||
<div class="flex items-center justify-center min-w-[42px] h-[18px] bg-[#FF5500] rounded-tl-md rounded-br-md items-tab" v-if="item.app_name">
|
||||
<span class="text-[12px] text-[#fff]">{{item.app_name}}</span>
|
||||
<div class="min-h-[580px]">
|
||||
<div class="flex flex-wrap mt-[30px]" v-loading="loading">
|
||||
<div v-for="(item, index) in tableData" :key="index" @click="selectSite(item)"
|
||||
:class="['home-item w-[285px] box-border mb-[20px] cursor-pointer',{'mr-[20px]': index ==0 || (index+1)%4 != 0}]">
|
||||
<div class="flex items-center px-[24px] pt-[22px] pb-[16px] bg-[#F0F2F4] home-item-head">
|
||||
<img v-if="item.logo" class="w-[48px] h-[48px] mr-[15px] rounded-[50%] overflow-hidden" :src="img(item.logo)" />
|
||||
<img v-else class="w-[48px] h-[48px] mr-[15px] rounded-[50%] overflow-hidden" src="@/app/assets/images/member_head.png" />
|
||||
<div class="flex flex-col flex-1 justify-center">
|
||||
<div class="flex items-center flex-wrap">
|
||||
<span class="text-[16px] text-[#000] max-w-[145px] font-bold truncate mr-[10px]">{{item.site_name}}</span>
|
||||
<div class="flex items-center justify-center min-w-[42px] h-[18px] bg-[#FF5500] rounded-tl-md rounded-br-md items-tab" v-if="item.app_name">
|
||||
<span class="text-[12px] text-[#fff]">{{item.app_name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-[12px] mt-[3px] text-[#555]">{{item.create_time ? item.create_time.split(" ")[0] : '--'}} 到 {{item.expire_time ? item.expire_time.split(" ")[0] : '--'}}</span>
|
||||
</div>
|
||||
<span class="text-[12px] mt-[3px] text-[#555]">{{item.create_time ? item.create_time.split(" ")[0] : '--'}} 到 {{item.expire_time ? item.expire_time.split(" ")[0] : '--'}}</span>
|
||||
</div>
|
||||
<div class="px-[24px] py-[20px] text-[#6D7278]">
|
||||
<p class="text-[14px]">站点编号:{{item.site_id}}</p>
|
||||
<p class="text-[14px] mt-[2px]">站点套餐:{{item.group_name || '--'}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-[24px] py-[20px] text-[#6D7278]">
|
||||
<p class="text-[14px]">站点编号:{{item.site_id}}</p>
|
||||
<p class="text-[14px] mt-[2px]">站点套餐:{{item.group_name || '--'}}</p>
|
||||
<div v-if="!tableData.length && !loading" class="m-auto">
|
||||
<img src="@/app/assets/images/empty.png"/>
|
||||
<p class="text-center text-gray-400">暂无站点</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!tableData.length && !loading" class="m-auto">
|
||||
<img src="@/app/assets/images/empty.png"/>
|
||||
<p class="text-center text-gray-400">暂无站点</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-[16px] flex justify-end">
|
||||
<el-pagination v-model:current-page="site.params.page" v-model:page-size="site.params.limit"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="site.total"
|
||||
@size-change="getHomeSiteFn()" @current-change="getHomeSiteFn" :hide-on-single-page="true"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -75,7 +83,7 @@ import { ElMessage } from 'element-plus'
|
||||
import { AnyObject } from '@/types/global'
|
||||
const userStore:AnyObject = useUserStore()
|
||||
|
||||
interface State{
|
||||
interface Site{
|
||||
params: {
|
||||
keywords: string,
|
||||
page: number,
|
||||
@ -92,10 +100,11 @@ interface State{
|
||||
expire_time: string,
|
||||
site_id: number,
|
||||
group_name: string
|
||||
}[]
|
||||
}[],
|
||||
total: 0
|
||||
}
|
||||
|
||||
const state:State = reactive({
|
||||
const site:Site = reactive({
|
||||
params: {
|
||||
keywords: '',
|
||||
page: 1,
|
||||
@ -104,24 +113,27 @@ const state:State = reactive({
|
||||
sort: false
|
||||
},
|
||||
loading: false,
|
||||
tableData: []
|
||||
tableData: [],
|
||||
total: 0
|
||||
})
|
||||
|
||||
const { params, loading, tableData } = toRefs(state)
|
||||
const getHomeSiteFn = () => {
|
||||
state.loading = true
|
||||
getHomeSite(state.params).then(res => {
|
||||
state.tableData = res.data.data
|
||||
state.loading = false
|
||||
const { params, loading, tableData } = toRefs(site)
|
||||
const getHomeSiteFn = (page: number = 1) => {
|
||||
site.params.page = page
|
||||
site.loading = true
|
||||
getHomeSite(site.params).then(res => {
|
||||
site.tableData = res.data.data
|
||||
site.total = res.data.total
|
||||
site.loading = false
|
||||
}).catch(() => {
|
||||
state.loading = false
|
||||
site.loading = false
|
||||
})
|
||||
}
|
||||
getHomeSiteFn()
|
||||
|
||||
// 切换应用
|
||||
const cutAppFn = (app:any) => {
|
||||
state.params.app = app
|
||||
site.params.app = app
|
||||
getHomeSiteFn()
|
||||
}
|
||||
|
||||
@ -137,17 +149,12 @@ const getWebConfigFn = () => {
|
||||
}
|
||||
getWebConfigFn()
|
||||
|
||||
const query = () => {
|
||||
state.params.page = 1
|
||||
getHomeSiteFn()
|
||||
}
|
||||
|
||||
const selectSite = (site: any) => {
|
||||
storage.set({ key: 'siteId', data: site.site_id })
|
||||
storage.set({ key: 'siteInfo', data: site })
|
||||
storage.set({ key: 'comparisonSiteIdStorage', data: site.site_id })
|
||||
useUserStore().$patch((state) => {
|
||||
state.siteInfo = site
|
||||
useUserStore().$patch((site) => {
|
||||
site.siteInfo = site
|
||||
})
|
||||
location.href = `${location.origin}/site/`
|
||||
}
|
||||
|
||||
@ -11,18 +11,24 @@
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="flex mt-[24px]">
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'installed' }]"
|
||||
@click="activeNameTabFn('installed')">
|
||||
{{ t('installLabel') }}
|
||||
<div class="flex mt-[24px] justify-between">
|
||||
<div class="flex">
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'installed' }]"
|
||||
@click="activeNameTabFn('installed')">
|
||||
{{ t('installLabel') }}
|
||||
</div>
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'uninstalled' }]"
|
||||
@click="activeNameTabFn('uninstalled')">
|
||||
{{ t('uninstalledLabel') }}
|
||||
</div>
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'all' }]"
|
||||
@click="activeNameTabFn('all')">
|
||||
{{ t('buyLabel') }}
|
||||
</div>
|
||||
</div>
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'uninstalled' }]"
|
||||
@click="activeNameTabFn('uninstalled')">
|
||||
{{ t('uninstalledLabel') }}
|
||||
</div>
|
||||
<div :class="['flex items-center text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-[#E0E0E0] rounded-full px-[15px] mr-[24px] cursor-pointer bg-[#f8f8f8] hover:bg-[#fff]', { 'text-[#fff] !bg-[#000] border-[#000]': activeName === 'all' }]"
|
||||
@click="activeNameTabFn('all')">
|
||||
{{ t('buyLabel') }}
|
||||
<div :class="['flex items-center text-white text-[14px] h-[32px] border-[1px] border-solid my-[3px] border-primary rounded-full px-[15px] cursor-pointer bg-primary hover:bg-primary']"
|
||||
@click="handleCloudBuild">
|
||||
{{ t('cloudBuild') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-[25px]">
|
||||
@ -100,8 +106,6 @@
|
||||
<span v-else-if="row.is_download && row.install_info <= 0">{{ t('installDown') }}</span>
|
||||
<span v-else>{{ t('down') }}</span>
|
||||
</el-button>
|
||||
<el-button class="!text-[13px]" type="primary" v-if="row.install_info && Object.keys(row.install_info)?.length" link @click="handleCloudBuild">{{
|
||||
t('cloudBuild') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<el-container
|
||||
:class="['w-full h-screen bg-page flex flex-col', { 'login-wrap': loginType == 'admin' }, { 'site-login-wrap': loginType == 'site' }]">
|
||||
<!-- 平台端登录 -->
|
||||
<el-main class="login-main items-center justify-center" v-if="!imgLoading && loginType == 'admin'">
|
||||
<el-main class="login-main items-center justify-center flex-1 h-0" v-if="loginType == 'admin'">
|
||||
<div class="flex rounded-2xl overflow-hidden">
|
||||
<div class="login-main-left w-[450px] flex flex-wrap justify-center">
|
||||
<el-image v-if="loginConfig.bg" class="w-[450px] h-[400px]" :src="img(loginConfig.bg)" fit="cover" />
|
||||
@ -49,44 +49,59 @@
|
||||
<img v-if="loginConfig.site_bg" class="hidden h-[100%] lg:block" :src="img(loginConfig.site_bg)" />
|
||||
<img v-else class="hidden h-[100%] lg:block" src="@/app/assets/images/site_login_bg.png" />
|
||||
<div
|
||||
class="w-[100%] bg-[#F8FAFF] flex justify-center items-center absolute right-0 top-0 h-screen lg:w-[60%]">
|
||||
<div class="site-login-item w-[45%] py-[30px] relative rounded-[13px] max-w-[350px] bg-[#fff]">
|
||||
<div class="w-[80%] mx-auto">
|
||||
<h3 class="text-3xl mb-[30px]">{{ t('siteLogin') }}</h3>
|
||||
<el-form :model="form" ref="formRef" :rules="formRules">
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="form.username" @keyup.enter="handleLogin(formRef)"
|
||||
class="w-50 m-1 h-[40px]" :placeholder="t('userPlaceholder')">
|
||||
<template #prefix>
|
||||
<icon name="element-User" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
class="w-[100%] bg-[#F8FAFF] flex flex-col absolute right-0 top-0 h-screen lg:w-[60%]">
|
||||
<div class="flex justify-center items-center flex-1 h-0">
|
||||
<div class="site-login-item w-[45%] py-[30px] relative rounded-[13px] max-w-[350px] bg-[#fff]">
|
||||
<div class="w-[80%] mx-auto">
|
||||
<h3 class="text-3xl mb-[30px]">{{ t('siteLogin') }}</h3>
|
||||
<el-form :model="form" ref="formRef" :rules="formRules">
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="form.username" @keyup.enter="handleLogin(formRef)"
|
||||
class="w-50 m-1 h-[40px]" :placeholder="t('userPlaceholder')">
|
||||
<template #prefix>
|
||||
<icon name="element-User" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="password">
|
||||
<el-input type="password" v-model="form.password" @keyup.enter="handleLogin(formRef)"
|
||||
:show-password="true" class="w-50 m-1 h-[40px]"
|
||||
:placeholder="t('passwordPlaceholder')">
|
||||
<template #prefix>
|
||||
<icon name="element-Lock" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="password">
|
||||
<el-input type="password" v-model="form.password" @keyup.enter="handleLogin(formRef)"
|
||||
:show-password="true" class="w-50 m-1 h-[40px]"
|
||||
:placeholder="t('passwordPlaceholder')">
|
||||
<template #prefix>
|
||||
<icon name="element-Lock" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="mt-[30px] h-[40px] w-full"
|
||||
@click="handleLogin(formRef)" :loading="loading">{{ loading ? t('logging') :
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="mt-[30px] h-[40px] w-full"
|
||||
@click="handleLogin(formRef)" :loading="loading">{{ loading ? t('logging') :
|
||||
t('login') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <img class="w-[15%] max-w-[50px] absolute top-0 right-0" src="@/app/assets/images/login/site_code.png"/> -->
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-center mt-[20px] text-[#999] text-sm pb-8 " v-if="copyright">
|
||||
<a :href="copyright.gov_url" v-if="copyright.gov_record" class="flex" target="_blank">
|
||||
<img src="@/app/assets/images/gov_icon.png" alt="" class="h-[20px] mr-1">
|
||||
<span class="mr-3">公安备案号:{{ copyright.gov_record }}</span>
|
||||
</a>
|
||||
<a href="https://beian.miit.gov.cn/" target="_blank" v-if="copyright.icp">
|
||||
<span class="mr-3">备案号:{{ copyright.icp }}</span>
|
||||
</a>
|
||||
<a :href="copyright.copyright_link" target="_blank">
|
||||
<span class="mr-3" v-if="copyright.company_name">{{ copyright.company_name }}</span>
|
||||
<span class="mr-3" v-if="copyright.copyright_desc">©{{ copyright.copyright_desc }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-main>
|
||||
|
||||
<div class="flex items-center justify-center mt-[20px] text-[#999] text-sm pb-10 " v-if="copyright">
|
||||
<div class="flex items-center justify-center mt-[20px] text-[#999] text-sm pb-8" v-if="copyright && loginType == 'admin'">
|
||||
<a :href="copyright.gov_url" v-if="copyright.gov_record" class="flex" target="_blank">
|
||||
<img src="@/app/assets/images/gov_icon.png" alt="" class="h-[20px] mr-1">
|
||||
<span class="mr-3">公安备案号:{{ copyright.gov_record }}</span>
|
||||
|
||||
@ -47,8 +47,8 @@
|
||||
:placeholder="t('memberInfoPlaceholder')" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="t('balanceType')" prop="from_type">
|
||||
<el-select v-model="memberAccountLogTableData.balance_type" clearable
|
||||
<el-form-item :label="t('balanceType')" prop="balance_type">
|
||||
<el-select v-model="memberAccountLogTableData.searchParam.balance_type" clearable
|
||||
:placeholder="t('fromTypePlaceholder')" class="input-width" @change="checkAccountType">
|
||||
<el-option :label="t('selectPlaceholder')" value="" />
|
||||
<el-option :label="item.name" :value="item.type" v-for="(item, key) in balanceStatus" :key="key"/>
|
||||
@ -81,7 +81,7 @@
|
||||
<template #empty>
|
||||
<span>{{ !memberAccountLogTableData.loading ? t('emptyData') : '' }}</span>
|
||||
</template>
|
||||
<el-table-column prop="member_id" :label="t('memberId')" min-width="80" :show-overflow-tooltip="true">
|
||||
<el-table-column prop="member_id" :label="t('memberId')" min-width="100" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
{{ row.member.member_no }}
|
||||
</template>
|
||||
@ -104,10 +104,12 @@
|
||||
{{ row.member.mobile || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="account_data" :label="t('accountData')" min-width="70" align="right">
|
||||
<el-table-column prop="account_data" :label="t('accountData')" min-width="100" align="right">
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.account_data >= 0">+{{ row.account_data }}</span>
|
||||
<span v-else>{{ row.account_data }}</span>
|
||||
<div class="whitespace-nowrap">
|
||||
<span v-if="row.account_data >= 0">+{{ row.account_data }}</span>
|
||||
<span v-else>{{ row.account_data }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="account_sum" :label="t('accountSum')" min-width="110" align="right" />
|
||||
@ -165,10 +167,9 @@ const memberAccountLogTableData = reactive({
|
||||
from_type: '',
|
||||
create_time: '',
|
||||
mobile: '',
|
||||
member_id: member_id
|
||||
|
||||
},
|
||||
balance_type: ''
|
||||
member_id: member_id,
|
||||
balance_type: ''
|
||||
}
|
||||
})
|
||||
|
||||
const fromTypeList = ref([])
|
||||
@ -193,7 +194,7 @@ const resetForm = (formEl: FormInstance | undefined) => {
|
||||
const loadMemberAccountLogList = (page: number = 1) => {
|
||||
memberAccountLogTableData.loading = true
|
||||
memberAccountLogTableData.page = page
|
||||
if (memberAccountLogTableData.balance_type == '' || memberAccountLogTableData.balance_type == 'balance') {
|
||||
if (memberAccountLogTableData.searchParam.balance_type == '' || memberAccountLogTableData.searchParam.balance_type == 'balance') {
|
||||
getBalanceList({
|
||||
page: memberAccountLogTableData.page,
|
||||
limit: memberAccountLogTableData.limit,
|
||||
@ -267,12 +268,13 @@ const checkBalanceStatus = () => {
|
||||
checkBalanceStatus()
|
||||
|
||||
const checkAccountType = () => {
|
||||
let account_type = memberAccountLogTableData.balance_type
|
||||
if (memberAccountLogTableData.balance_type == '') {
|
||||
account_type = 'balance'
|
||||
let accountType = memberAccountLogTableData.searchParam.balance_type
|
||||
|
||||
if (accountType == '') {
|
||||
accountType = 'balance'
|
||||
}
|
||||
getAccountType({
|
||||
account_type
|
||||
account_type: accountType
|
||||
}).then(res => {
|
||||
fromTypeList.value = res.data
|
||||
})
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<div class="main-container">
|
||||
<el-card class="box-card !border-none" shadow="never">
|
||||
<div class="flex justify-between items-center mb-[5px]">
|
||||
<span class="text-[20x]">{{ pageName }}</span>
|
||||
<span class="text-[20px]">{{ pageName }}</span>
|
||||
</div>
|
||||
<el-card class="box-card !border-none base-bg !px-[35px]" shadow="never">
|
||||
<el-row class="flex">
|
||||
|
||||
@ -257,31 +257,14 @@ const addonDevelopBuildFn = (data: any) => {
|
||||
loading.value = true
|
||||
addonDevelopBuild(data.key).then(res => {
|
||||
loading.value = false
|
||||
ElMessageBox.confirm(t('addonDownloadText'), t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'success',
|
||||
}
|
||||
).then(() => {
|
||||
addonDevelopDownloadFn(data)
|
||||
})
|
||||
addonDevelopDownload(data.key).then(res => {
|
||||
ElMessageBox.alert(`插件打包成功,插件包所在位置:网站根目录${res.data}下请手动进行下载`, t('warning'))
|
||||
}).catch()
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
// 下载插件
|
||||
const addonDevelopDownloadFn = (data:any) => {
|
||||
addonDevelopDownload(data.key).then(res => {
|
||||
const blob = new Blob([res])
|
||||
const url = window.URL.createObjectURL(blob) // 创建 url 并指向 blob
|
||||
const a = document.createElement('a')
|
||||
a.href = url
|
||||
a.download = data.title + '.zip'
|
||||
a.click()
|
||||
window.URL.revokeObjectURL(url) // 释放该 url
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label=" ">
|
||||
<div class="text-sm text-gray-400 select-text">路径必须以“/”开头,例:/pages/index/index</div>
|
||||
<div class="text-sm text-gray-400 select-text">路径必须以“/”开头,例:/app/pages/index/index</div>
|
||||
</el-form-item>
|
||||
<el-form-item label=" ">
|
||||
<div class="text-sm text-gray-400 select-text">跳转外部链接“/”开头,例:https://baidu.com</div>
|
||||
@ -188,7 +188,6 @@ const save = () => {
|
||||
|
||||
selectLink.value.parent = parentLinkName.value
|
||||
selectLink.value.name = parentLinkName.value
|
||||
selectLink.value.page = selectLink.value.url;
|
||||
selectLink.value.action = '';
|
||||
|
||||
}else if(parentLinkName.value == 'DIY_PAGE'){
|
||||
@ -199,6 +198,7 @@ const save = () => {
|
||||
|
||||
value.value = cloneDeep(selectLink.value)
|
||||
showDialog.value = false
|
||||
|
||||
emit('success')
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ interface User {
|
||||
addonIndexRoute: Record<string, symbol>
|
||||
}
|
||||
|
||||
const useSystemStore = defineStore('user', {
|
||||
const userStore = defineStore('user', {
|
||||
state: (): User => {
|
||||
return {
|
||||
token: getToken() || '',
|
||||
@ -96,4 +96,4 @@ const useSystemStore = defineStore('user', {
|
||||
}
|
||||
})
|
||||
|
||||
export default useSystemStore
|
||||
export default userStore
|
||||
|
||||
@ -120,7 +120,7 @@ class AddonDevelop extends BaseAdminController
|
||||
*/
|
||||
public function download($key){
|
||||
|
||||
return (new AddonDevelopService())->download($key);
|
||||
return success(data:(new AddonDevelopService())->download($key));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -23,25 +23,38 @@ use think\Response;
|
||||
*/
|
||||
class Config extends BaseAdminController
|
||||
{
|
||||
/**
|
||||
* 获取底部导航列表
|
||||
* @return Response
|
||||
*/
|
||||
public function getBottomList()
|
||||
{
|
||||
return success((new DiyConfigService())->getBottomList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航
|
||||
* @return Response
|
||||
*/
|
||||
public function getBottom()
|
||||
public function getBottomConfig()
|
||||
{
|
||||
return success((new DiyConfigService())->getBottomConfig());
|
||||
$params = $this->request->params([
|
||||
[ 'key', 'app' ],
|
||||
]);
|
||||
return success((new DiyConfigService())->getBottomConfig($params[ 'key' ]));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置底部导航
|
||||
* @return Response
|
||||
*/
|
||||
public function setBottom()
|
||||
public function setBottomConfig()
|
||||
{
|
||||
$data = $this->request->params([
|
||||
['menu', []]
|
||||
[ 'value', [] ],
|
||||
[ 'key', 'app' ]
|
||||
]);
|
||||
(new DiyConfigService())->setBottomConfig($data['menu']);
|
||||
(new DiyConfigService())->setBottomConfig($data[ 'value' ], $data[ 'key' ]);
|
||||
return success();
|
||||
}
|
||||
|
||||
|
||||
@ -166,9 +166,11 @@ class Diy extends BaseAdminController
|
||||
public function getTemplate()
|
||||
{
|
||||
$params = $this->request->params([
|
||||
[ 'type', '' ], // 页面类型模板
|
||||
[ 'key', '' ], // 页面模板标识
|
||||
[ 'action', '' ], // 页面是否装修标识,为空标识不装修,decorate:装修
|
||||
[ 'mode', '' ] // 页面展示模式,diy:自定义,fixed:固定
|
||||
[ 'mode', '' ], // 页面展示模式,diy:自定义,fixed:固定
|
||||
[ 'type', '' ], // 页面类型,index:首页、member_index:个人中心,空:普通页面
|
||||
[ 'addon', '' ], // 插件标识
|
||||
]);
|
||||
$diy_service = new DiyService();
|
||||
return success($diy_service->getTemplate($params));
|
||||
@ -223,15 +225,15 @@ class Diy extends BaseAdminController
|
||||
public function getTemplatePages()
|
||||
{
|
||||
$params = $this->request->params([
|
||||
[ 'type', '' ],
|
||||
[ 'mode', '' ]
|
||||
[ 'type', '' ], // 页面类型
|
||||
[ 'mode', '' ] // 页面模式:diy:自定义,fixed:固定
|
||||
]);
|
||||
$pages = PagesDict::getPages($params);
|
||||
return success($pages);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面的应用插件列表
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @return Response
|
||||
*/
|
||||
public function getApps()
|
||||
|
||||
@ -30,8 +30,9 @@ class DiyRoute extends BaseAdminController
|
||||
public function lists()
|
||||
{
|
||||
$data = $this->request->params([
|
||||
[ 'title', '' ],
|
||||
[ 'addon_name', '' ]
|
||||
[ 'title', '' ], // 页面名称
|
||||
[ 'url', '' ], // 路由地址,格式:/app/pages/index/index
|
||||
[ 'addon_name', '' ] // 插件标识
|
||||
]);
|
||||
return success((new DiyRouteService())->getList($data));
|
||||
}
|
||||
@ -121,4 +122,14 @@ class DiyRoute extends BaseAdminController
|
||||
return success('MODIFY_SUCCESS');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @return Response
|
||||
*/
|
||||
public function getApps()
|
||||
{
|
||||
return success((new DiyRouteService())->getApps());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -67,9 +67,6 @@ class Login extends BaseAdminController
|
||||
}
|
||||
|
||||
public function test(){
|
||||
// (new CoreMenuService())->refreshAddonMenu('shop');
|
||||
// (new CoreAddonDevelopBuildService())->build('shop');
|
||||
// (new CoreFileService())->driver(0);
|
||||
dd((new CoreOrderRefundService())->refundSuccess('20240118393625662873600'));
|
||||
dd(rtrim(dirname(root_path()) . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR));
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ class SiteAccount extends BaseAdminController
|
||||
{
|
||||
$data = $this->request->params([
|
||||
['type', ''],
|
||||
['trade_no', ''],
|
||||
['create_time', []],
|
||||
]);
|
||||
return success((new SiteAccountLogService())->getPage($data));
|
||||
|
||||
@ -62,6 +62,9 @@ Route::group('diy', function() {
|
||||
// 自定义路由列表
|
||||
Route::get('route', 'diy.DiyRoute/lists');
|
||||
|
||||
// 获取路由列表(存在的应用插件列表)
|
||||
Route::get('route/apps', 'diy.DiyRoute/getApps');
|
||||
|
||||
// 获取自定义路由分享内容
|
||||
Route::get('route/info', 'diy.DiyRoute/getInfoByName');
|
||||
|
||||
@ -71,16 +74,19 @@ Route::group('diy', function() {
|
||||
// 编辑自定义页面分享内容
|
||||
Route::put('diy/share', 'diy.Diy/modifyShare');
|
||||
|
||||
// 获取模板页面的应用插件列表
|
||||
// 获取模板页面(存在的应用插件列表)
|
||||
Route::get('apps', 'diy.Diy/getApps');
|
||||
|
||||
/***************************************************** 配置相关 *****************************************************/
|
||||
|
||||
// 底部导航查询
|
||||
Route::get('bottom', 'diy.Config/getBottom');
|
||||
// 底部导航列表
|
||||
Route::get('bottom', 'diy.Config/getBottomList');
|
||||
|
||||
// 底部导航配置
|
||||
Route::post('bottom', 'diy.Config/setBottom');
|
||||
Route::get('bottom/config', 'diy.Config/getBottomConfig');
|
||||
|
||||
// 设置底部导航
|
||||
Route::post('bottom', 'diy.Config/setBottomConfig');
|
||||
|
||||
})->middleware([
|
||||
AdminCheckToken::class,
|
||||
|
||||
@ -30,7 +30,7 @@ class Diy extends BaseApiController
|
||||
[ 'id', '' ],
|
||||
[ 'name', '' ]
|
||||
]);
|
||||
return success(( new DiyService() )->getInfo($params));
|
||||
return success((new DiyService())->getInfo($params));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -39,7 +39,10 @@ class Diy extends BaseApiController
|
||||
*/
|
||||
public function tabbar()
|
||||
{
|
||||
return success(( new DiyConfigService() )->getBottomConfig());
|
||||
$params = $this->request->params([
|
||||
[ 'key', 'app' ],
|
||||
]);
|
||||
return success((new DiyConfigService())->getBottomConfig($params[ 'key' ]));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -52,6 +55,6 @@ class Diy extends BaseApiController
|
||||
[ 'route', '' ],
|
||||
[ 'params', '' ]
|
||||
]);
|
||||
return success(( new DiyRouteService() )->getShare($data));
|
||||
return success((new DiyRouteService())->getShare($data));
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,13 +20,15 @@ use core\dict\DictLoader;
|
||||
*/
|
||||
class LinkDict
|
||||
{
|
||||
public static function getLink()
|
||||
public static function getLink($params = [])
|
||||
{
|
||||
$system_links = [
|
||||
'SYSTEM_LINK' => [
|
||||
'key' => '',
|
||||
'addon_title' => get_lang('dict_diy.system_title'),
|
||||
'title' => get_lang('dict_diy.system_link'),
|
||||
'addon_info' => [
|
||||
'title' => '系统',
|
||||
'key' => 'app'
|
||||
],
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'INDEX',
|
||||
@ -38,9 +40,11 @@ class LinkDict
|
||||
]
|
||||
],
|
||||
'MEMBER_LINK' => [
|
||||
'key' => '',
|
||||
'addon_title' => get_lang('dict_diy.system_title'),
|
||||
'title' => get_lang('dict_diy.member_link'),
|
||||
'addon_info' => [
|
||||
'title' => '系统',
|
||||
'key' => 'app'
|
||||
],
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'MEMBER_CENTER',
|
||||
@ -87,19 +91,37 @@ class LinkDict
|
||||
]
|
||||
],
|
||||
'DIY_PAGE' => [
|
||||
'key' => '',
|
||||
'addon_title' => '',
|
||||
'title' => get_lang('dict_diy.diy_page'),
|
||||
'addon_info' => [
|
||||
'title' => '系统',
|
||||
'key' => 'app'
|
||||
],
|
||||
'child_list' => []
|
||||
],
|
||||
'DIY_LINK' => [
|
||||
'key' => '',
|
||||
'addon_title' => '',
|
||||
'title' => get_lang('dict_diy.diy_link'),
|
||||
'addon_info' => [
|
||||
'title' => '系统',
|
||||
'key' => 'app'
|
||||
],
|
||||
'child_list' => []
|
||||
]
|
||||
];
|
||||
return ( new DictLoader("UniappLink") )->load($system_links);
|
||||
|
||||
// 查询存在页面路由的应用插件列表
|
||||
if (!empty($params[ 'query' ]) && $params[ 'query' ] == 'addon') {
|
||||
$system = [
|
||||
'app' => [
|
||||
'title' => '系统',
|
||||
'key' => 'app'
|
||||
]
|
||||
];
|
||||
$addons = (new DictLoader("UniappLink"))->load([], $params);
|
||||
$app = array_merge($system, $addons);
|
||||
return $app;
|
||||
} else {
|
||||
return (new DictLoader("UniappLink"))->load($system_links, $params);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -782,7 +782,12 @@ class PagesDict
|
||||
]
|
||||
];
|
||||
|
||||
$pages = ( new DictLoader("UniappPages") )->load($system_pages);
|
||||
if (!empty($params[ 'addon' ])) {
|
||||
$pages = (new DictLoader("UniappPages"))->load($params);
|
||||
} else {
|
||||
$pages = (new DictLoader("UniappPages"))->load($system_pages);
|
||||
}
|
||||
|
||||
if (!empty($params[ 'type' ])) {
|
||||
if (!empty($pages[ $params[ 'type' ] ])) {
|
||||
$temp = $pages[ $params[ 'type' ] ];
|
||||
@ -797,7 +802,6 @@ class PagesDict
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $pages;
|
||||
|
||||
@ -15,8 +15,6 @@ use core\dict\DictLoader;
|
||||
|
||||
/**
|
||||
* 页面模板
|
||||
* Class TemplateDict
|
||||
* @package app\dict\diy
|
||||
*/
|
||||
class TemplateDict
|
||||
{
|
||||
@ -27,17 +25,20 @@ class TemplateDict
|
||||
'DIY_INDEX' => [
|
||||
'title' => get_lang('dict_diy.page_index'),
|
||||
'page' => '/app/pages/index/index',
|
||||
'action' => 'decorate' // 页面是否装修标识,为空标识不装修,decorate:装修
|
||||
'action' => 'decorate', // 页面是否装修标识,为空标识不装修,decorate:装修
|
||||
'type' => 'index' // 页面类型,index:首页、member_index:个人中心,空:普通页面
|
||||
],
|
||||
'DIY_MEMBER_INDEX' => [
|
||||
'title' => get_lang('dict_diy.page_member_index'),
|
||||
'page' => '/app/pages/member/index',
|
||||
'action' => 'decorate'
|
||||
'action' => 'decorate',
|
||||
'type' => 'member_index'
|
||||
],
|
||||
'DIY_PAGE' => [
|
||||
'title' => get_lang('dict_diy.page_diy'),
|
||||
'page' => '/app/pages/index/diy',
|
||||
'action' => ''
|
||||
'action' => '',
|
||||
'type' => ''
|
||||
]
|
||||
];
|
||||
|
||||
@ -50,15 +51,18 @@ class TemplateDict
|
||||
'list' => $system_pages
|
||||
]
|
||||
];
|
||||
$addon = (new DictLoader("UniappTemplate"))->load($params);
|
||||
$addon = (new DictLoader("UniappTemplate"))->load([], $params);
|
||||
$app = array_merge($system, $addon);
|
||||
return $app;
|
||||
} else {
|
||||
// 查询应用插件下的模板页面数据
|
||||
$pages = (new DictLoader("UniappTemplate"))->load($system_pages);
|
||||
if (!empty($params[ 'type' ])) {
|
||||
|
||||
$pages = (new DictLoader("UniappTemplate"))->load($system_pages, $params);
|
||||
|
||||
// 根据关键字查询
|
||||
if (!empty($params[ 'key' ])) {
|
||||
$temp = [];
|
||||
foreach ($params[ 'type' ] as $k => $v) {
|
||||
foreach ($params[ 'key' ] as $k => $v) {
|
||||
if (!empty($pages[ $v ])) {
|
||||
$temp[ $v ] = $pages[ $v ];
|
||||
}
|
||||
@ -66,13 +70,24 @@ class TemplateDict
|
||||
return $temp;
|
||||
}
|
||||
|
||||
// 查询指定类型的页面
|
||||
if (!empty($params[ 'type' ])) {
|
||||
$temp = [];
|
||||
foreach ($pages as $k => $v) {
|
||||
if (isset($v[ 'type' ]) && $params[ 'type' ] == $v[ 'type' ]) {
|
||||
$temp[ $k ] = $v;
|
||||
}
|
||||
}
|
||||
return $temp;
|
||||
}
|
||||
|
||||
// 查询可装修的页面类型
|
||||
if (!empty($params[ 'action' ])) {
|
||||
$temp = [];
|
||||
foreach ($pages as $k => $v) {
|
||||
if (isset($v[ 'action' ]) && $params[ 'action' ] == $v[ 'action' ]) {
|
||||
$temp[ $k ] = $v;
|
||||
}
|
||||
|
||||
}
|
||||
return $temp;
|
||||
}
|
||||
|
||||
@ -108,6 +108,19 @@ return
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'menu_name' => '编辑',
|
||||
'menu_key' => 'diy_tabbar_edit',
|
||||
'menu_type' => 1,
|
||||
'icon' => '',
|
||||
'api_url' => 'diy/bottom/edit',
|
||||
'router_path' => 'tabbar_edit',
|
||||
'view_path' => 'diy/tabbar_edit',
|
||||
'methods' => 'post',
|
||||
'sort' => 100,
|
||||
'status' => 1,
|
||||
'is_show' => 0,
|
||||
],
|
||||
[
|
||||
'menu_name' => '素材管理',
|
||||
'menu_key' => 'attachment',
|
||||
|
||||
@ -60,6 +60,9 @@ $system_event = [
|
||||
'AdminIndex' => [
|
||||
'app\listener\system\AdminIndexListener'
|
||||
],
|
||||
'BottomNavigation' => [
|
||||
'app\listener\system\BottomNavigationListener'
|
||||
],
|
||||
//消息模板数据内容
|
||||
'NoticeData' => [
|
||||
'app\listener\notice_template\VerifyCode',//手机验证码
|
||||
|
||||
@ -203,7 +203,7 @@ return [
|
||||
'dict_diy' => [
|
||||
'page_index' => '首页',
|
||||
'page_member_index' => '个人中心',
|
||||
'page_diy' => '自定义页面',
|
||||
'page_diy' => '微页面',
|
||||
'component_type_basic' => '基础组件',
|
||||
|
||||
'system_title' => '系统',
|
||||
|
||||
@ -12,57 +12,139 @@
|
||||
namespace app\listener\site;
|
||||
|
||||
|
||||
use app\dict\diy\TemplateDict;
|
||||
use app\service\admin\diy\DiyRouteService;
|
||||
use app\service\admin\diy\DiyService;
|
||||
|
||||
/**
|
||||
* 添加站点成功后事件
|
||||
* Class AddSiteAfterListener
|
||||
* @package app\listener\site
|
||||
*/
|
||||
class AddSiteAfterListener
|
||||
{
|
||||
/**
|
||||
* 初始化站点
|
||||
* @param $data
|
||||
* @param array $params
|
||||
*/
|
||||
public function handle($params = [])
|
||||
{
|
||||
if (count($params['main_app']) > 1) {
|
||||
$site_id = $params['site_id'];
|
||||
request()->siteId($site_id);
|
||||
$site_id = $params[ 'site_id' ];
|
||||
request()->siteId($site_id);
|
||||
|
||||
$diy_service = new DiyService();
|
||||
$count = count($params[ 'main_app' ]);
|
||||
$addon = array_merge([ '' ], $params[ 'main_app' ]);
|
||||
|
||||
// 设置 商城 首页 模板
|
||||
$index_flag = 'DIY_INDEX';
|
||||
$index_template_name = 'default_index';
|
||||
$index_template = $diy_service->getPageData($index_flag, $index_template_name);
|
||||
foreach ($addon as $k => $v) {
|
||||
if ($count > 1) {
|
||||
// 站点多应用,使用系统的页面
|
||||
if ($k == 0) {
|
||||
$is_start = 1;
|
||||
} else {
|
||||
$is_start = 0;
|
||||
}
|
||||
} else {
|
||||
// 站点单应用,将应用的设为使用中
|
||||
if ($k == 0) {
|
||||
$is_start = 0;
|
||||
} else {
|
||||
$is_start = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 设置 首页 默认模板
|
||||
$this->setDiyData([
|
||||
'key' => 'DIY_INDEX',
|
||||
'type' => 'index',
|
||||
'addon' => $v,
|
||||
'is_start' => $is_start,
|
||||
'site_id' => $site_id
|
||||
]);
|
||||
|
||||
// 设置 个人中心 默认模板
|
||||
$this->setDiyData([
|
||||
'key' => 'DIY_MEMBER_INDEX',
|
||||
'type' => 'member_index',
|
||||
'addon' => $v,
|
||||
'is_start' => $is_start,
|
||||
'site_id' => $site_id
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 首页/个人中心 的第一个模板 设置为启动页
|
||||
* @param $params
|
||||
*/
|
||||
private function setDiyData($params)
|
||||
{
|
||||
$addon = $params[ 'addon' ] ?? '';
|
||||
$addon_flag = $params[ 'key' ];
|
||||
|
||||
// 默认
|
||||
$default_template = TemplateDict::getTemplate([
|
||||
'key' => [ $params[ 'key' ] ]
|
||||
]);
|
||||
|
||||
$addon_template_info = array_shift($default_template);
|
||||
|
||||
// 查询插件定义的页面类型
|
||||
$addon_template = TemplateDict::getTemplate([
|
||||
'type' => $params[ 'type' ],
|
||||
'addon' => $addon
|
||||
]);
|
||||
|
||||
if (!empty($addon_template)) {
|
||||
$addon_flag = array_keys($addon_template)[ 0 ];
|
||||
$addon_template_info = array_shift($addon_template);
|
||||
}
|
||||
|
||||
$diy_service = new DiyService();
|
||||
$addon_index_template = $diy_service->getFirstPageData($addon_flag, $addon);
|
||||
|
||||
if (!empty($addon_index_template)) {
|
||||
|
||||
$diy_service->add([
|
||||
"title" => $index_template[ 'title' ],
|
||||
"name" => "DIY_INDEX",
|
||||
"type" => "DIY_INDEX",
|
||||
"template" => $index_template_name,
|
||||
"mode" => 'diy',
|
||||
"value" => json_encode($index_template['data']),
|
||||
"title" => $addon_index_template[ 'title' ],
|
||||
"name" => $addon_flag,
|
||||
"type" => $addon_flag,
|
||||
"template" => $addon_index_template[ 'template' ],
|
||||
"mode" => $addon_index_template[ 'mode' ],
|
||||
"value" => json_encode($addon_index_template[ 'data' ]),
|
||||
"is_default" => 1,
|
||||
"is_change" => 0
|
||||
]);
|
||||
// 设置 商城 个人中心 模板
|
||||
$member_index_flag = 'DIY_MEMBER_INDEX';
|
||||
$member_index_template_name = 'default_member_index_one';
|
||||
$member_index_template = $diy_service->getPageData($member_index_flag, $member_index_template_name);
|
||||
|
||||
$diy_service->add([
|
||||
"title" => $member_index_template[ 'title' ],
|
||||
"name" => "DIY_MEMBER_INDEX",
|
||||
"type" => "DIY_MEMBER_INDEX",
|
||||
"template" => $member_index_template_name,
|
||||
"mode" => 'diy',
|
||||
"value" => json_encode($member_index_template['data']),
|
||||
"is_default" => 1,
|
||||
"is_change" => 0
|
||||
]);
|
||||
$diy_page_list = $diy_service->getList([
|
||||
[ 'site_id', '=', $params[ 'site_id' ] ],
|
||||
[ 'type', '=', $params[ 'key' ] ]
|
||||
], 'id,name,type');
|
||||
|
||||
// 多应用时,将首页和个人中心设为系统的
|
||||
foreach ($diy_page_list as $k => $v) {
|
||||
if ($v[ 'name' ] == $params[ 'key' ]) {
|
||||
$diy_service->setUse($v[ 'id' ]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($params[ 'is_start' ] == 1) {
|
||||
// 查询链接,设置启动页
|
||||
$other_page = (new DiyRouteService())->getList([ 'url' => $addon_template_info[ 'page' ], 'addon' => $addon ]);
|
||||
if (!empty($other_page)) {
|
||||
|
||||
$diy_service->changeTemplate([
|
||||
'type' => $params[ 'key' ], // 页面类型
|
||||
'name' => $other_page[ 0 ][ 'name' ], // 链接名称标识
|
||||
'parent' => $other_page[ 0 ][ 'parent' ], // 链接父级名称标识
|
||||
'page' => $other_page[ 0 ][ 'page' ], // 链接路由
|
||||
'title' => $other_page[ 0 ][ 'title' ], // 链接标题
|
||||
'action' => $other_page[ 0 ][ 'action' ] // 是否存在操作,decorate 表示支持装修
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
68
niucloud/app/listener/system/BottomNavigationListener.php
Normal file
68
niucloud/app/listener/system/BottomNavigationListener.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | Niucloud-admin 企业快速开发的多应用管理平台
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方网址:https://www.niucloud.com
|
||||
// +----------------------------------------------------------------------
|
||||
// | niucloud团队 版权所有 开源版本可自由商用
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Niucloud Team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\listener\system;
|
||||
|
||||
|
||||
/**
|
||||
* 底部导航
|
||||
*/
|
||||
class BottomNavigationListener
|
||||
{
|
||||
/**
|
||||
* @param array $params
|
||||
* @return array|void
|
||||
*/
|
||||
public function handle($params = [])
|
||||
{
|
||||
$key = 'app';
|
||||
|
||||
if (!empty($params) && $params[ 'key' ] != $key) return;
|
||||
|
||||
$addon_info = [
|
||||
'title' => '系统',
|
||||
];
|
||||
return [
|
||||
'key' => $key,
|
||||
'info' => $addon_info,
|
||||
'value' => [
|
||||
'backgroundColor' => '#ffffff',
|
||||
'textColor' => '#606266',
|
||||
'textHoverColor' => '#007aff',
|
||||
'type' => '1',
|
||||
'list' => [
|
||||
[
|
||||
"text" => "首页",
|
||||
"link" => [
|
||||
"parent" => "SYSTEM_LINK",
|
||||
"name" => "INDEX",
|
||||
"title" => "首页",
|
||||
"url" => "/app/pages/index/index"
|
||||
],
|
||||
"iconPath" => "static/resource/images/tabbar/index.png",
|
||||
"iconSelectPath" => "static/resource/images/tabbar/index-selected.png"
|
||||
],
|
||||
[
|
||||
"text" => "我的",
|
||||
"link" => [
|
||||
"parent" => "MEMBER_LINK",
|
||||
"name" => "MEMBER_CENTER",
|
||||
"title" => "个人中心",
|
||||
"url" => "/app/pages/member/index"
|
||||
],
|
||||
"iconPath" => "static/resource/images/tabbar/my.png",
|
||||
"iconSelectPath" => "static/resource/images/tabbar/my-selected.png"
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -73,7 +73,7 @@ class Diy extends BaseModel
|
||||
public function getTypePageAttr($value, $data)
|
||||
{
|
||||
if (!empty($data[ 'type' ])) {
|
||||
return TemplateDict::getTemplate([ 'type' => [ $data[ 'type' ] ] ])[ $data[ 'type' ] ][ 'page' ] ?? '';
|
||||
return TemplateDict::getTemplate([ 'key' => [ $data[ 'type' ] ] ])[ $data[ 'type' ] ][ 'page' ] ?? '';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
@ -87,7 +87,7 @@ class Diy extends BaseModel
|
||||
public function getTypeNameAttr($value, $data)
|
||||
{
|
||||
if (!empty($data[ 'type' ])) {
|
||||
return TemplateDict::getTemplate([ 'type' => [ $data[ 'type' ] ] ])[ $data[ 'type' ] ][ 'title' ] ?? '';
|
||||
return TemplateDict::getTemplate([ 'key' => [ $data[ 'type' ] ] ])[ $data[ 'type' ] ][ 'title' ] ?? '';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ class Refund extends BaseModel
|
||||
public function searchOutTradeNoAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->where('out_trade_no', '=', $value);
|
||||
$query->where('out_trade_no', 'like', "%$value%");
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ class Refund extends BaseModel
|
||||
public function searchRefundNoAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->where('refund_no', '=', $value);
|
||||
$query->where('refund_no', 'like', "%$value%");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,6 +95,13 @@ class SiteAccountLog extends BaseModel
|
||||
}
|
||||
}
|
||||
|
||||
public function searchTradeNoAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('trade_no', 'like', "%$value%");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建时间搜索器
|
||||
* @param Query $query
|
||||
|
||||
@ -13,6 +13,7 @@ namespace app\service\admin\diy;
|
||||
|
||||
use app\model\sys\SysConfig;
|
||||
use app\service\core\diy\CoreDiyConfigService;
|
||||
use app\service\core\site\CoreSiteService;
|
||||
use core\base\BaseAdminService;
|
||||
use think\Model;
|
||||
|
||||
@ -24,23 +25,49 @@ use think\Model;
|
||||
class DiyConfigService extends BaseAdminService
|
||||
{
|
||||
|
||||
/**
|
||||
* 获取底部导航列表
|
||||
* @param array $params
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getBottomList($params = [])
|
||||
{
|
||||
$list = (new CoreDiyConfigService())->getBottomList($params);
|
||||
|
||||
$site_addon = (new CoreSiteService())->getSiteCache($this->site_id);
|
||||
|
||||
// 单应用,排除 系统 底部导航设置
|
||||
if (count($site_addon[ 'apps' ]) == 1) {
|
||||
foreach ($list as $k=>$v){
|
||||
if($v['key'] = 'app'){
|
||||
unset($list[$k]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$list = array_values($list);
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航配置
|
||||
* @param $key
|
||||
* @return array
|
||||
*/
|
||||
public function getBottomConfig()
|
||||
public function getBottomConfig($key)
|
||||
{
|
||||
return (new CoreDiyConfigService())->getBottomConfig($this->site_id);
|
||||
return (new CoreDiyConfigService())->getBottomConfig($this->site_id, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 底部导航配置
|
||||
* @param $data
|
||||
* @param $key
|
||||
* @return SysConfig|bool|Model
|
||||
*/
|
||||
public function setBottomConfig($data)
|
||||
public function setBottomConfig($data, $key)
|
||||
{
|
||||
return (new CoreDiyConfigService())->setBottomConfig($this->site_id, $data);
|
||||
return (new CoreDiyConfigService())->setBottomConfig($this->site_id, $data, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -50,7 +77,7 @@ class DiyConfigService extends BaseAdminService
|
||||
*/
|
||||
public function setStartUpPageConfig($data)
|
||||
{
|
||||
return ( new CoreDiyConfigService() )->setStartUpPageConfig($this->site_id, $data);
|
||||
return (new CoreDiyConfigService())->setStartUpPageConfig($this->site_id, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,7 +87,7 @@ class DiyConfigService extends BaseAdminService
|
||||
*/
|
||||
public function getStartUpPageConfig($name)
|
||||
{
|
||||
return ( new CoreDiyConfigService() )->getStartUpPageConfig($this->site_id, $name);
|
||||
return (new CoreDiyConfigService())->getStartUpPageConfig($this->site_id, $name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -36,25 +36,45 @@ class DiyRouteService extends BaseAdminService
|
||||
*/
|
||||
public function getList(array $where = [])
|
||||
{
|
||||
$link = LinkDict::getLink();
|
||||
$condition = [];
|
||||
if (!empty($where[ 'addon' ])) {
|
||||
$condition[ 'addon' ] = $where[ 'addon' ];
|
||||
}
|
||||
$link = LinkDict::getLink($condition);
|
||||
|
||||
$diy_route_list = [];
|
||||
$sort = 0;
|
||||
foreach ($link as $k => $v) {
|
||||
if (!empty($v[ 'child_list' ])) {
|
||||
foreach ($v[ 'child_list' ] as $ck => $cv) {
|
||||
if (!empty($cv[ 'url' ])) {
|
||||
if (empty($where[ 'title' ]) || (!empty($where[ 'title' ]) && str_contains($cv[ 'title' ], $where[ 'title' ]))) {
|
||||
$diy_route_list[] = [
|
||||
'key' => $v[ 'key' ] ?? '',
|
||||
'addon_title' => $v[ 'addon_title' ] ?? '',
|
||||
'title' => $cv[ 'title' ],
|
||||
'name' => $cv[ 'name' ],
|
||||
'parent' => $k,
|
||||
'page' => $cv[ 'url' ],
|
||||
'is_share' => $cv[ 'is_share' ],
|
||||
'action' => $cv[ 'action' ] ?? '',
|
||||
'sort' => ++$sort
|
||||
];
|
||||
$is_add = true;
|
||||
|
||||
if (!empty($where[ 'title' ]) && !str_contains($cv[ 'title' ], $where[ 'title' ])) {
|
||||
$is_add = false;
|
||||
}
|
||||
|
||||
if (!empty($where[ 'url' ]) && $where[ 'url' ] != $cv[ 'url' ]) {
|
||||
$is_add = false;
|
||||
}
|
||||
|
||||
if (!empty($where[ 'addon_name' ]) && $where[ 'addon_name' ] != $v[ 'addon_info' ][ 'key' ]) {
|
||||
$is_add = false;
|
||||
}
|
||||
|
||||
$item = [
|
||||
'addon_info' => $v[ 'addon_info' ] ?? '',
|
||||
'title' => $cv[ 'title' ],
|
||||
'name' => $cv[ 'name' ],
|
||||
'parent' => $k,
|
||||
'page' => $cv[ 'url' ],
|
||||
'is_share' => $cv[ 'is_share' ],
|
||||
'action' => $cv[ 'action' ] ?? '',
|
||||
'sort' => ++$sort
|
||||
];
|
||||
|
||||
if ($is_add) {
|
||||
$diy_route_list[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -86,7 +106,6 @@ class DiyRouteService extends BaseAdminService
|
||||
public function getInfo(int $id)
|
||||
{
|
||||
$field = 'title,name,page,share,is_share,sort';
|
||||
|
||||
return $this->model->field($field)->where([ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ])->findOrEmpty()->toArray();
|
||||
}
|
||||
|
||||
@ -153,4 +172,16 @@ class DiyRouteService extends BaseAdminService
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由列表(存在的应用插件列表)
|
||||
* @return array|null
|
||||
*/
|
||||
public function getApps()
|
||||
{
|
||||
$link = LinkDict::getLink([
|
||||
'query' => 'addon'
|
||||
]);
|
||||
return $link;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -192,7 +192,7 @@ class DiyService extends BaseAdminService
|
||||
$diy_config_service = new DiyConfigService();
|
||||
$start_up_page = $diy_config_service->getStartUpPageConfig($params[ 'name' ]);
|
||||
if (!empty($start_up_page)) {
|
||||
if ($start_up_page[ 'parent' ] == 'DIY_PAGE') {
|
||||
if (!empty($start_up_page[ 'parent' ]) && $start_up_page[ 'parent' ] == 'DIY_PAGE') {
|
||||
$id = str_replace('/app/pages/index/diy?id=', '', $start_up_page[ 'page' ]);
|
||||
$data = $this->getInfo($id);
|
||||
if (!empty($data)) {
|
||||
@ -375,8 +375,8 @@ class DiyService extends BaseAdminService
|
||||
foreach ($page_template as $k => $v) {
|
||||
// 查询页面数据
|
||||
$page_params = [
|
||||
'type' => $k,
|
||||
'mode' => $params[ 'mode' ] ?? ''
|
||||
'type' => $k, // 页面类型
|
||||
'mode' => $params[ 'mode' ] ?? '' // 页面模式:diy:自定义,fixed:固定
|
||||
];
|
||||
$page_template[ $k ][ 'template' ] = PagesDict::getPages($page_params);
|
||||
}
|
||||
@ -398,11 +398,12 @@ class DiyService extends BaseAdminService
|
||||
/**
|
||||
* 获取默认页面数据
|
||||
* @param $type
|
||||
* @param string $addon
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getFirstPageData($type)
|
||||
public function getFirstPageData($type, $addon = '')
|
||||
{
|
||||
$pages = PagesDict::getPages([ 'type' => $type ]);
|
||||
$pages = PagesDict::getPages([ 'type' => $type, 'addon' => $addon ]);
|
||||
if (!empty($pages)) {
|
||||
$template = array_key_first($pages);
|
||||
$page = array_shift($pages);
|
||||
@ -425,16 +426,13 @@ class DiyService extends BaseAdminService
|
||||
{
|
||||
|
||||
// 查询当前装修的页面信息
|
||||
$template = $this->getTemplate([ 'action' => 'decorate', 'type' => [ $params[ 'type' ] ] ])[ $params[ 'type' ] ];
|
||||
$template = $this->getTemplate([ 'action' => 'decorate', 'key' => [ $params[ 'type' ] ] ])[ $params[ 'type' ] ];
|
||||
|
||||
$template[ 'domain_url' ] = (new SystemService())->getUrl();
|
||||
|
||||
// 查询默认页面数据
|
||||
$default_page_data = $this->getFirstPageData($params[ 'type' ]);
|
||||
|
||||
// 查询其他页面,排除特定页面(不能分享的页面)
|
||||
$other_page = (new DiyRouteService())->getList();
|
||||
|
||||
$use_template = [
|
||||
'type' => $params[ 'type' ], // 页面类型标识
|
||||
'name' => '', // 链接标识
|
||||
@ -460,19 +458,11 @@ class DiyService extends BaseAdminService
|
||||
$use_template[ 'action' ] = $start_up_page[ 'action' ] ?? '';
|
||||
$use_template[ 'url' ] = $use_template[ 'page' ];
|
||||
$use_template[ 'parent' ] = $start_up_page[ 'parent' ] ?? '';
|
||||
|
||||
} elseif (!empty($info)) {
|
||||
$use_template[ 'id' ] = $info[ 'id' ];
|
||||
$use_template[ 'title' ] = $info[ 'title' ];
|
||||
|
||||
// 查询链接的名称标识
|
||||
foreach ($other_page as $ck => $cv) {
|
||||
if ($cv[ 'page' ] == $use_template[ 'page' ]) {
|
||||
$use_template[ 'name' ] = $cv[ 'name' ];
|
||||
$use_template[ 'parent' ] = $cv[ 'parent' ];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 查询模板页面数据
|
||||
$page_data = $this->getPageData($params[ 'type' ], $info[ 'template' ]);
|
||||
if (!empty($page_data)) {
|
||||
@ -486,6 +476,15 @@ class DiyService extends BaseAdminService
|
||||
}
|
||||
}
|
||||
|
||||
// 查询链接的名称标识,保证数据准确性
|
||||
$other_page = (new DiyRouteService())->getList([ 'url' => $use_template[ 'page' ] ]);
|
||||
if (!empty($other_page)) {
|
||||
$use_template[ 'title' ] = $other_page[ 0 ][ 'title' ] ?? '';
|
||||
$use_template[ 'name' ] = $other_page[ 0 ][ 'name' ];
|
||||
$use_template[ 'parent' ] = $other_page[ 0 ][ 'parent' ];
|
||||
$use_template[ 'action' ] = $other_page[ 0 ][ 'action' ];
|
||||
}
|
||||
|
||||
// 如果没有预览图,并且没有地址,则赋值默认页面地址
|
||||
if (empty($use_template[ 'cover' ]) && empty($use_template[ 'url' ])) {
|
||||
$use_template[ 'url' ] = $template[ 'page' ];
|
||||
@ -517,7 +516,7 @@ class DiyService extends BaseAdminService
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面的应用插件列表
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @return array
|
||||
*/
|
||||
public function getApps()
|
||||
|
||||
@ -39,7 +39,7 @@ class SiteAccountLogService extends BaseAdminService
|
||||
{
|
||||
|
||||
$field = 'id, site_id, type, money, trade_no, create_time';
|
||||
$search_model = $this->model->where([ [ 'site_id', '=', $this->site_id ] ])->withSearch([ 'create_time', 'type' ], $where)->field($field)->append([ 'type_name', 'pay_info', 'money' ])->order('create_time desc');
|
||||
$search_model = $this->model->where([ [ 'site_id', '=', $this->site_id ] ])->withSearch([ 'create_time', 'type', 'trade_no' ], $where)->field($field)->append([ 'type_name', 'pay_info', 'money' ])->order('create_time desc');
|
||||
return $this->pageQuery($search_model);
|
||||
}
|
||||
|
||||
@ -68,4 +68,4 @@ class SiteAccountLogService extends BaseAdminService
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -143,7 +143,7 @@ class SiteService extends BaseAdminService
|
||||
return $site_id;
|
||||
} catch ( Exception $e) {
|
||||
Db::rollback();
|
||||
throw new AdminException($e->getMessage());
|
||||
throw new AdminException($e->getMessage().$e->getFile().$e->getLine());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ class RestoreService extends UpgradeService
|
||||
if (is_dir(public_path() . 'wap')) del_target_dir(public_path() . 'wap', true);
|
||||
if (is_dir(public_path() . 'web')) del_target_dir(public_path() . 'web', true);
|
||||
|
||||
dir_copy($backup_dir, $this->root_path);
|
||||
dir_copy($backup_dir, rtrim($this->root_path, DIRECTORY_SEPARATOR));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -473,6 +473,7 @@ class UpgradeService extends BaseAdminService
|
||||
$this->clearUpgradeTask(5);
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
$this->clearUpgradeTask(5);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
namespace app\service\api\diy;
|
||||
|
||||
use app\service\core\diy\CoreDiyConfigService;
|
||||
use app\service\core\site\CoreSiteService;
|
||||
use core\base\BaseApiService;
|
||||
|
||||
/**
|
||||
@ -24,11 +25,19 @@ class DiyConfigService extends BaseApiService
|
||||
|
||||
/**
|
||||
* 获取底部导航配置
|
||||
* @param $key
|
||||
* @return array
|
||||
*/
|
||||
public function getBottomConfig()
|
||||
public function getBottomConfig($key)
|
||||
{
|
||||
return (new CoreDiyConfigService())->getBottomConfig($this->site_id);
|
||||
// 检测当前站点是多应用还是单应用
|
||||
if ($key == 'app') {
|
||||
$site_addon = (new CoreSiteService())->getSiteCache($this->site_id);
|
||||
if (count($site_addon[ 'apps' ]) == 1) {
|
||||
$key = $site_addon[ 'apps' ][ 0 ][ 'key' ];
|
||||
}
|
||||
}
|
||||
return (new CoreDiyConfigService())->getBottomConfig($this->site_id, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -46,7 +46,10 @@ class DiyService extends BaseApiService
|
||||
$diy_config_service = new DiyConfigService();
|
||||
$start_up_page = $diy_config_service->getStartUpPageConfig($params[ 'name' ]);
|
||||
|
||||
$page_template = TemplateDict::getTemplate([ 'type' => [ $params[ 'name' ] ] ])[ $params[ 'name' ] ];
|
||||
$page_template = TemplateDict::getTemplate([ 'key' => [ $params[ 'name' ] ] ]);
|
||||
if (!empty($page_template)) {
|
||||
$page_template = $page_template [ $params[ 'name' ] ];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($start_up_page) && !empty($page_template) && !empty($start_up_page[ 'page' ]) && $start_up_page[ 'page' ] != $page_template[ 'page' ]) {
|
||||
|
||||
@ -72,11 +72,8 @@ class CoreAddonDevelopBuildService extends BaseCoreService
|
||||
*/
|
||||
public function download(string $addon) {
|
||||
$zip_file = runtime_path() . $addon . '.zip';
|
||||
|
||||
if (!file_exists($zip_file)) throw new AddonException('ADDON_ZIP_ERROR');//下载失败
|
||||
$content = file_get_contents($zip_file);
|
||||
@unlink($zip_file);
|
||||
return download($content, $addon . '.zip', true);
|
||||
return str_replace(project_path(), '', $zip_file);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -89,7 +86,7 @@ class CoreAddonDevelopBuildService extends BaseCoreService
|
||||
*/
|
||||
public function menu(string $app_type) {
|
||||
$where = [ ['app_type', '=', $app_type], ['addon', '=', $this->addon] ];
|
||||
$field = 'menu_name,menu_key,parent_key,menu_type,icon,api_url,router_path,view_path,methods,sort,status,is_show';
|
||||
$field = 'menu_name,menu_key,menu_short_name,parent_key,menu_type,icon,api_url,router_path,view_path,methods,sort,status,is_show';
|
||||
$menu = (new SysMenu())->where($where)->field($field)->order('sort', 'desc')->select()->toArray();
|
||||
if (!empty($menu)) {
|
||||
$menu = (new MenuService())->menuToTree($menu, 'menu_key', 'parent_key', 'children');
|
||||
@ -114,7 +111,7 @@ class CoreAddonDevelopBuildService extends BaseCoreService
|
||||
}
|
||||
$content = '';
|
||||
foreach ($array as $k => $v) {
|
||||
if (in_array($k, ['status_name', 'menu_type_name'])) continue;
|
||||
if (in_array($k, ['status_name', 'menu_type_name']) || ($level > 2 && $k == 'parent_key')) continue;
|
||||
if (is_array($v)) {
|
||||
$content .= $tab;
|
||||
if (is_string($k)) {
|
||||
@ -142,6 +139,10 @@ class CoreAddonDevelopBuildService extends BaseCoreService
|
||||
if (is_dir($addon_admin_path)) del_target_dir($addon_admin_path, true);
|
||||
dir_copy($admin_path, $addon_admin_path);
|
||||
|
||||
// 打包admin icon文件
|
||||
$icon_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'styles' . DIRECTORY_SEPARATOR . 'icon' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon;
|
||||
if (is_dir($icon_dir)) dir_copy($icon_dir, $addon_admin_path . 'icon');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -288,7 +288,12 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
|
||||
// 安装admin管理端
|
||||
if (file_exists($from_admin_dir)) {
|
||||
dir_copy($from_admin_dir, $to_admin_dir, $this->files['admin']);
|
||||
dir_copy($from_admin_dir, $to_admin_dir, $this->files['admin'], exclude_dirs:['icon']);
|
||||
// 判断图标目录是否存在
|
||||
if (is_dir($from_admin_dir . 'icon')) {
|
||||
$addon_icon_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'styles' . DIRECTORY_SEPARATOR . 'icon' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon;
|
||||
dir_copy($from_admin_dir . 'icon', $addon_icon_dir);
|
||||
}
|
||||
// 编译后台图标库文件
|
||||
$this->compileAdminIcon();
|
||||
}
|
||||
@ -588,6 +593,10 @@ class CoreAddonInstallService extends CoreAddonBaseService
|
||||
|
||||
// 卸载admin管理端
|
||||
if (is_dir($to_admin_dir)) del_target_dir($to_admin_dir, true);
|
||||
// 移除admin图标
|
||||
$addon_icon_dir = $this->root_path . 'admin' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'styles' . DIRECTORY_SEPARATOR . 'icon' . DIRECTORY_SEPARATOR . 'addon' . DIRECTORY_SEPARATOR . $this->addon;
|
||||
if (is_dir($addon_icon_dir)) del_target_dir($addon_icon_dir, true);
|
||||
|
||||
// 编译后台图标库文件
|
||||
$this->compileAdminIcon();
|
||||
|
||||
|
||||
@ -109,7 +109,7 @@ trait WapTrait
|
||||
$content .= " </view>\n";
|
||||
$content .= " <template v-if=\"diyStore.mode == '' && data.global.bottomTabBarSwitch\">\n";
|
||||
$content .= " <view class=\"pt-[20rpx]\"></view>\n";
|
||||
$content .= " <tabbar />\n";
|
||||
$content .= " <tabbar :addon=\"tabbarAddonName\" />\n";
|
||||
$content .= " </template>\n";
|
||||
$content .= " </view>\n";
|
||||
$content .= "</template>\n";
|
||||
@ -121,9 +121,10 @@ trait WapTrait
|
||||
}
|
||||
|
||||
$content .= " import useDiyStore from '@/app/stores/diy';\n";
|
||||
$content .= " import { onMounted, nextTick, computed, ref,watch } from 'vue';\n";
|
||||
$content .= " import { onMounted, nextTick, computed } from 'vue';\n";
|
||||
$content .= " import Sortable from 'sortablejs';\n";
|
||||
$content .= " import { range } from 'lodash-es';\n";
|
||||
$content .= " import useConfigStore from '@/stores/config'\n";
|
||||
|
||||
$content .= " const props = defineProps(['data','pullDownRefreshCount']);\n";
|
||||
$content .= " const diyStore = useDiyStore();\n\n";
|
||||
@ -136,6 +137,10 @@ trait WapTrait
|
||||
$content .= " }\n";
|
||||
$content .= " })\n\n";
|
||||
|
||||
$content .= " const tabbarAddonName = computed(() => {\n";
|
||||
$content .= " return useConfigStore().addon;\n";
|
||||
$content .= " })\n\n";
|
||||
|
||||
$content .= " onMounted(() => {\n";
|
||||
$content .= " // #ifdef H5\n";
|
||||
$content .= " if (diyStore.mode == 'decorate') {\n";
|
||||
|
||||
@ -22,64 +22,69 @@ use think\Model;
|
||||
* Class CoreDiyConfigService
|
||||
* @package app\service\core\diy
|
||||
*/
|
||||
class CoreDiyConfigService extends BaseCoreService
|
||||
class CoreDiyConfigService extends BaseCoreService
|
||||
{
|
||||
public function getBottomList($params = [])
|
||||
{
|
||||
$list = array_values(array_filter(event('BottomNavigation', $params)));
|
||||
$app_bottom_nav_config = [];
|
||||
foreach ($list as $k => &$v) {
|
||||
|
||||
// 将系统底部导航放到第一个位置
|
||||
if ($v[ 'key' ] == 'app') {
|
||||
$app_bottom_nav_config = $v;
|
||||
unset($list[ $k ]);
|
||||
}
|
||||
}
|
||||
$list = array_values($list);
|
||||
if (!empty($app_bottom_nav_config)) {
|
||||
array_unshift($list, $app_bottom_nav_config);
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航
|
||||
* 获取底部导航配置
|
||||
* @param int $site_id
|
||||
* @param string $key
|
||||
* @return array
|
||||
*/
|
||||
public function getBottomConfig(int $site_id)
|
||||
public function getBottomConfig(int $site_id, string $key = 'app')
|
||||
{
|
||||
$info = (new CoreConfigService())->getConfig($site_id, ConfigKeyDict::DIY_BOTTOM)[ 'value' ] ?? [];
|
||||
if (empty($info)) {
|
||||
$info = [
|
||||
'backgroundColor' => '#ffffff',
|
||||
'textColor' => '#606266',
|
||||
'textHoverColor' => '#007aff',
|
||||
'type' => 1,
|
||||
'list' => [
|
||||
[
|
||||
"text" => "首页",
|
||||
"link" => [
|
||||
"parent" => "SYSTEM_LINK",
|
||||
"name" => "INDEX",
|
||||
"title" => "首页",
|
||||
"url" => "/app/pages/index/index"
|
||||
],
|
||||
"iconPath" => "static/resource/images/tabbar/index.png",
|
||||
"iconSelectPath" => "static/resource/images/tabbar/index-selected.png"
|
||||
],
|
||||
[
|
||||
"text" => "会员",
|
||||
"link" => [
|
||||
"parent" => "MEMBER_LINK",
|
||||
"name" => "MEMBER_CENTER",
|
||||
"title" => "个人中心",
|
||||
"url" => "/app/pages/member/index"
|
||||
],
|
||||
"iconPath" => "static/resource/images/tabbar/my.png",
|
||||
"iconSelectPath" => "static/resource/images/tabbar/my-selected.png"
|
||||
]
|
||||
]
|
||||
];
|
||||
$default_config = $this->getBottomList([ 'key' => $key ])[ 0 ] ?? [];
|
||||
|
||||
$config_key = ConfigKeyDict::DIY_BOTTOM . '_' . $key;
|
||||
$info = (new CoreConfigService())->getConfig($site_id, $config_key)[ 'value' ] ?? [];
|
||||
|
||||
if (!empty($default_config)) {
|
||||
if (!empty($info)) {
|
||||
$value = $info;
|
||||
$res[ 'key' ] = $default_config[ 'key' ];
|
||||
$res[ 'info' ] = $default_config[ 'info' ];
|
||||
$res[ 'value' ] = $value;
|
||||
$info = $res;
|
||||
} else {
|
||||
$info = $default_config;
|
||||
}
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置底部导航
|
||||
* 设置底部导航
|
||||
* @param int $site_id
|
||||
* @param array $data
|
||||
* @param string $key
|
||||
* @return SysConfig|bool|Model
|
||||
*/
|
||||
public function setBottomConfig(int $site_id, array $data)
|
||||
public function setBottomConfig(int $site_id, array $data, string $key = 'app')
|
||||
{
|
||||
return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::DIY_BOTTOM, $data);
|
||||
return (new CoreConfigService())->setConfig($site_id, ConfigKeyDict::DIY_BOTTOM . '_' . $key, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置启动页
|
||||
* @param int $site_id
|
||||
* @param array $data
|
||||
* @return SysConfig|bool|Model
|
||||
*/
|
||||
@ -90,7 +95,8 @@ class CoreDiyConfigService extends BaseCoreService
|
||||
|
||||
/**
|
||||
* 获取启动页配置
|
||||
* @param $name
|
||||
* @param int $site_id
|
||||
* @param string $type
|
||||
* @return array
|
||||
*/
|
||||
public function getStartUpPageConfig(int $site_id, string $type)
|
||||
|
||||
@ -134,7 +134,7 @@ class CorePayEventService extends BaseCoreService
|
||||
$pay_fun = 'wap';
|
||||
break;
|
||||
case ChannelDict::PC://pc
|
||||
$pay_fun = 'web';
|
||||
$pay_fun = 'scan';
|
||||
break;
|
||||
case ChannelDict::APP://app
|
||||
$pay_fun = 'app';
|
||||
@ -290,4 +290,4 @@ class CorePayEventService extends BaseCoreService
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'version' => '0.0.9',
|
||||
'code' => '202401250001'
|
||||
'version' => '0.1.0',
|
||||
'code' => '202401310001'
|
||||
];
|
||||
|
||||
@ -11,33 +11,66 @@
|
||||
namespace core\dict;
|
||||
|
||||
|
||||
use app\service\admin\addon\AddonService;
|
||||
|
||||
class UniappLink extends BaseDict
|
||||
{
|
||||
/**
|
||||
* 系统uniapp页面链接
|
||||
* @param array $data
|
||||
* @return array|mixed
|
||||
* @param array $params
|
||||
* @return array|false|mixed|string
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function load(array $data)
|
||||
public function load(array $data = [], array $params = [])
|
||||
{
|
||||
$addons = $this->getLocalAddons();
|
||||
if (!empty($params[ 'addon' ])) {
|
||||
$addons = [ $params[ 'addon' ] ];
|
||||
} else {
|
||||
$addons = $this->getLocalAddons();
|
||||
}
|
||||
|
||||
$link_files = [];
|
||||
|
||||
foreach ($addons as $v) {
|
||||
$link_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "links.php";
|
||||
if (is_file($link_path)) {
|
||||
$link_files[] = $link_path;
|
||||
$link_files[ $v ] = $link_path;
|
||||
}
|
||||
}
|
||||
$link_files_data = $this->loadFiles($link_files);
|
||||
$links = $data;
|
||||
|
||||
foreach ($link_files_data as $file_data) {
|
||||
if (empty($links)) {
|
||||
$links = $file_data;
|
||||
} else {
|
||||
$links = array_merge2($links, $file_data);
|
||||
$addon_service = new AddonService();
|
||||
$addon_info_list = $addon_service->getAddonListByKeys(array_keys($link_files));
|
||||
|
||||
if (!empty($params[ 'query' ]) && $params[ 'query' ] == 'addon') {
|
||||
$list_key = array_column($addon_info_list, 'key');
|
||||
$addon_info_list = array_combine($list_key, $addon_info_list);
|
||||
return $addon_info_list;
|
||||
} else {
|
||||
|
||||
$links = $data;
|
||||
|
||||
foreach ($link_files as $k => $v) {
|
||||
$addon_link = include $v;
|
||||
if (!empty($addon_link)) {
|
||||
$addon_info = [];
|
||||
foreach ($addon_info_list as $ck => $cv) {
|
||||
if ($cv[ 'key' ] == $k) {
|
||||
$addon_info = $cv;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($addon_link as $ck => $cv) {
|
||||
$addon_link[ $ck ][ 'addon_info' ] = $addon_info;
|
||||
}
|
||||
$links = array_merge($links, $addon_link);
|
||||
}
|
||||
}
|
||||
|
||||
return $links;
|
||||
}
|
||||
return $links;
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,9 +18,15 @@ class UniappPages extends BaseDict
|
||||
* @param array $data
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function load(array $data)
|
||||
public function load(array $data = [])
|
||||
{
|
||||
$addons = $this->getLocalAddons();
|
||||
// 筛选插件
|
||||
if (!empty($data[ 'addon' ])) {
|
||||
$addons = [ $data[ 'addon' ] ];
|
||||
} else {
|
||||
$addons = $this->getLocalAddons();
|
||||
}
|
||||
|
||||
$page_files = [];
|
||||
foreach ($addons as $v) {
|
||||
$page_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "pages.php";
|
||||
@ -29,7 +35,11 @@ class UniappPages extends BaseDict
|
||||
}
|
||||
}
|
||||
$page_files_data = $this->loadFiles($page_files);
|
||||
$pages = $data;
|
||||
if (!empty($data[ 'addon' ])) {
|
||||
$pages = [];
|
||||
} else {
|
||||
$pages = $data;
|
||||
}
|
||||
foreach ($page_files_data as $file_data) {
|
||||
if (empty($pages)) {
|
||||
$pages = $file_data;
|
||||
|
||||
@ -18,20 +18,42 @@ class UniappTemplate extends BaseDict
|
||||
/**
|
||||
* 系统uniapp页面模板
|
||||
* @param array $data
|
||||
* @return array|mixed
|
||||
* @param array $params
|
||||
* @return array|false|mixed|string
|
||||
*/
|
||||
public function load(array $data)
|
||||
public function load(array $data, $params = [])
|
||||
{
|
||||
$addons = $this->getLocalAddons();
|
||||
if (!empty($params[ 'addon' ])) {
|
||||
$addons = [ $params[ 'addon' ] ];
|
||||
} else {
|
||||
$addons = $this->getLocalAddons();
|
||||
}
|
||||
|
||||
$app_keys = []; // 应用插件key集合
|
||||
$apps = []; // 应用插件集合
|
||||
$page_files = []; // 模板页面文件集合
|
||||
|
||||
// 筛选插件
|
||||
if (!empty($params) && !empty($params[ 'addon' ])) {
|
||||
$is_pass = true;
|
||||
foreach ($addons as $k => $v) {
|
||||
if ($params[ 'addon' ] == $v) {
|
||||
$addons = [ $v ];
|
||||
$is_pass = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有匹配到,则返回系统的
|
||||
if ($is_pass) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($addons as $v) {
|
||||
$page_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "template.php";
|
||||
if (is_file($page_path)) {
|
||||
if (!empty($data[ 'query' ]) && $data[ 'query' ] == 'addon') {
|
||||
if (!empty($params[ 'query' ]) && $params[ 'query' ] == 'addon') {
|
||||
$file = include $page_path;
|
||||
if (!empty($file)) {
|
||||
$app_keys[] = $v;
|
||||
@ -44,7 +66,7 @@ class UniappTemplate extends BaseDict
|
||||
}
|
||||
|
||||
// 查询存在模板页面的应用插件列表
|
||||
if (!empty($data[ 'query' ]) && $data[ 'query' ] == 'addon') {
|
||||
if (!empty($params[ 'query' ]) && $params[ 'query' ] == 'addon') {
|
||||
$addon_service = new AddonService();
|
||||
$list = $addon_service->getAddonListByKeys($app_keys);
|
||||
$list_key = array_column($list, 'key');
|
||||
@ -56,7 +78,11 @@ class UniappTemplate extends BaseDict
|
||||
} else {
|
||||
// 查询应用插件下的模板页面数据
|
||||
$page_files_data = $this->loadFiles($page_files);
|
||||
$pages = $data;
|
||||
if (!empty($params) && !empty($params[ 'addon' ])) {
|
||||
$pages = [];
|
||||
} else {
|
||||
$pages = $data;
|
||||
}
|
||||
foreach ($page_files_data as $file_data) {
|
||||
if (empty($pages)) {
|
||||
$pages = $file_data;
|
||||
|
||||
@ -6,6 +6,7 @@ use app\dict\pay\OnlinePayDict;
|
||||
use app\dict\pay\RefundDict;
|
||||
use app\dict\pay\TransferDict;
|
||||
use core\exception\PayException;
|
||||
use Psr\Http\Message\MessageInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Throwable;
|
||||
use Yansongda\Pay\Exception\ContainerException;
|
||||
@ -54,6 +55,7 @@ class Alipay extends BasePay
|
||||
'out_trade_no' => $params['out_trade_no'],
|
||||
'total_amount' => $params['money'],
|
||||
'subject' => $params['boby'],
|
||||
'_method' => 'get',
|
||||
]));
|
||||
}
|
||||
|
||||
@ -184,6 +186,9 @@ class Alipay extends BasePay
|
||||
'out_trade_no' => $out_trade_no,
|
||||
]));
|
||||
//todo 支付宝关闭异步回调
|
||||
if (isset($result['sub_code']) && in_array($result['sub_code'], ['ACQ.REASON_ILLEGAL_STATUS', 'ACQ.REASON_TRADE_STATUS_INVALID', 'ACQ.TRADE_NOT_EXIST', 'ACQ.TRADE_STATUS_ERROR'])) {
|
||||
return true;
|
||||
}
|
||||
if (!empty($result['msg']) && $result['msg'] == 'Success') {
|
||||
return true;
|
||||
} else {
|
||||
@ -376,4 +381,4 @@ class Alipay extends BasePay
|
||||
{
|
||||
return ['url' => $params->getHeader('Location')[0]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,9 +164,6 @@ abstract class BasePay extends Storage
|
||||
} else {
|
||||
$return_value = $param;
|
||||
}
|
||||
if(isset($return_value['code'])){
|
||||
throw new PayException($return_value['message']);
|
||||
}
|
||||
return $return_value;
|
||||
}
|
||||
|
||||
|
||||
@ -450,4 +450,4 @@ class Wechatpay extends BasePay
|
||||
];
|
||||
return response($response, 400, [], 'json');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
import{d as l,r as d,o as i,c as p,a as t,b as u,e as m,w as f,u as x,f as v,E as h,p as b,g,h as I,i as w,t as S}from"./index-b19d04dd.js";/* empty css */import{_ as B}from"./_plugin-vue_export-helper-c27b6911.js";const k=""+new URL("error-da01d378.png",import.meta.url).href,o=e=>(b("data-v-8fc03fb0"),e=e(),g(),e),y={class:"error"},C={class:"flex items-center"},E=o(()=>t("div",null,[t("img",{class:"w-[300px]",src:k})],-1)),N={class:"text-left ml-[100px]"},R=o(()=>t("div",{class:"error-text text-[28px] font-bold"},"404错误!",-1)),U=o(()=>t("div",{class:"text-[#222] text-[20px] mt-[15px]"},"哎呀,出错了!您访问的页面不存在...",-1)),V=o(()=>t("div",{class:"text-[#c4c2c2] text-[12px] mt-[5px]"},"尝试检查URL的错误,然后点击浏览器刷新按钮。",-1)),L={class:"mt-[40px]"},$=l({__name:"404",setup(e){let s=null;const a=d(5),c=v();return s=setInterval(()=>{a.value===0?(clearInterval(s),c.go(-1)):a.value--},1e3),i(()=>{s&&clearInterval(s)}),(r,n)=>{const _=h;return I(),p("div",y,[t("div",C,[u(r.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[m(_,{class:"bottom",onClick:n[0]||(n[0]=D=>x(c).go(-1))},{default:f(()=>[w(S(a.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const z=B($,[["__scopeId","data-v-8fc03fb0"]]);export{z as default};
|
||||
import{d as l,r as d,o as i,c as p,a as t,b as u,e as m,w as f,u as x,f as v,E as h,p as b,g,h as I,i as w,t as S}from"./index-4ce69858.js";/* empty css */import{_ as B}from"./_plugin-vue_export-helper-c27b6911.js";const k=""+new URL("error-da01d378.png",import.meta.url).href,o=e=>(b("data-v-8fc03fb0"),e=e(),g(),e),y={class:"error"},C={class:"flex items-center"},E=o(()=>t("div",null,[t("img",{class:"w-[300px]",src:k})],-1)),N={class:"text-left ml-[100px]"},R=o(()=>t("div",{class:"error-text text-[28px] font-bold"},"404错误!",-1)),U=o(()=>t("div",{class:"text-[#222] text-[20px] mt-[15px]"},"哎呀,出错了!您访问的页面不存在...",-1)),V=o(()=>t("div",{class:"text-[#c4c2c2] text-[12px] mt-[5px]"},"尝试检查URL的错误,然后点击浏览器刷新按钮。",-1)),L={class:"mt-[40px]"},$=l({__name:"404",setup(e){let s=null;const a=d(5),c=v();return s=setInterval(()=>{a.value===0?(clearInterval(s),c.go(-1)):a.value--},1e3),i(()=>{s&&clearInterval(s)}),(r,n)=>{const _=h;return I(),p("div",y,[t("div",C,[u(r.$slots,"content",{},()=>[E],!0),t("div",N,[R,U,V,t("div",L,[m(_,{class:"bottom",onClick:n[0]||(n[0]=D=>x(c).go(-1))},{default:f(()=>[w(S(a.value)+" 秒后返回上一页",1)]),_:1})])])])])}}});const z=B($,[["__scopeId","data-v-8fc03fb0"]]);export{z as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as j,f as S,r as v,v as I,a0 as N,h as T,c as q,a as e,t as o,u as n,N as a,e as s,w as t,aJ as w,i as b,R as B,aC as z,aD as F,a1 as R,E as $,ak as D,al as M,am as J,V as P,an as Q}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as U}from"./wechat-1d393ae2.js";import{_ as W}from"./_plugin-vue_export-helper-c27b6911.js";const G={class:"w-full p-5 bg-white"},H={class:"flex justify-between items-center mb-[20px]"},K={class:"text-[20px]"},L={class:"p-[20px]"},O={class:"text-[16px] mb-[20px]"},X={class:"text-[14px] text-[#303133] font-[700]"},Y={class:"text-[#999]"},Z={class:"mt-[20px] mb-[40px] h-[32px]"},ee={class:"text-[14px] text-[#303133] font-[700]"},te={class:"text-[#999]"},se={class:"mt-[20px] mb-[40px] h-[32px]"},ne={class:"text-[14px] text-[#303133] font-[700]"},ae={class:"text-[#999]"},oe={class:"mt-[20px] mb-[40px] h-[32px]"},le={class:"flex justify-center"},ce={class:"w-[100%] h-[100%] flex items-center justify-center bg-[#f5f7fa]"},ie={class:"mt-[22px] text-center"},pe={class:"text-[14px] text-[#303133] font-[700]"},de=j({__name:"access",setup(re){const r=S(),_=v("/channel/wechat"),c=v(2),p=v("");I(async()=>{const i=await U();p.value=i.data.qr_code});const y=i=>{window.open(i,"_blank")},k=i=>{r.push({path:_.value})};return(i,l)=>{const u=z,C=F,x=N("CircleCheckFilled"),m=R,f=$,h=D,E=M,g=J,A=P,V=Q;return T(),q("div",G,[e("div",H,[e("span",K,o(n(a)("title")),1)]),s(C,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=d=>_.value=d),class:"demo-tabs",onTabChange:k},{default:t(()=>[s(u,{label:n(a)("wechatAccessFlow"),name:"/channel/wechat"},null,8,["label"]),s(u,{label:n(a)("customMenu"),name:"/channel/wechat/menu"},null,8,["label"]),s(u,{label:n(a)("wechatTemplate"),name:"/channel/wechat/message"},null,8,["label"])]),_:1},8,["modelValue"]),e("div",L,[e("p",O,o(n(a)("wechatInlet")),1),s(V,null,{default:t(()=>[s(g,{span:20},{default:t(()=>[s(E,{direction:"vertical"},{default:t(()=>[s(h,null,w({title:t(()=>[e("p",X,o(n(a)("wechatAttestation")),1)]),description:t(()=>[e("span",Y,o(n(a)("wechatAttestation1")),1),e("div",Z,[s(f,{type:"primary",onClick:l[1]||(l[1]=d=>y("https://mp.weixin.qq.com/"))},{default:t(()=>[b(o(n(a)("clickAccess")),1)]),_:1})])]),_:2},[c.value>1?{name:"icon",fn:t(()=>[s(m,{size:"25px",class:"text-color"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==1?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 1")]),key:"2"}]),1024),s(h,null,w({title:t(()=>[e("p",ee,o(n(a)("wechatSetting")),1)]),description:t(()=>[e("span",te,o(n(a)("wechatSetting1")),1),e("div",se,[s(f,{type:"primary",plain:"",onClick:l[2]||(l[2]=d=>n(r).push("/channel/wechat/config"))},{default:t(()=>[b(o(n(a)("settingInfo")),1)]),_:1})])]),_:2},[c.value>2?{name:"icon",fn:t(()=>[s(m,{size:"25px"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==2?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 2")]),key:"2"}]),1024),s(h,null,w({title:t(()=>[e("p",ne,o(n(a)("wechatAccess")),1)]),description:t(()=>[e("span",ae,o(n(a)("wechatAccess")),1),e("div",oe,[s(f,{type:"primary",plain:"",onClick:l[3]||(l[3]=d=>n(r).push("/channel/wechat/course"))},{default:t(()=>[b(o(n(a)("releaseCourse")),1)]),_:1})])]),_:2},[c.value>3?{name:"icon",fn:t(()=>[s(m,{size:"25px"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==3?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 3")]),key:"2"}]),1024)]),_:1})]),_:1}),s(g,{span:4},{default:t(()=>[e("div",le,[s(A,{class:"w-[180px] h-[180px]",src:p.value?n(B)(p.value):""},{error:t(()=>[e("div",ce,[e("span",null,o(p.value?n(a)("fileErr"):n(a)("emptyQrCode")),1)])]),_:1},8,["src"])]),e("div",ie,[e("p",pe,o(n(a)("clickAccess2")),1)])]),_:1})]),_:1})])])}}});const ye=W(de,[["__scopeId","data-v-594351e7"]]);export{ye as default};
|
||||
import{d as j,f as S,r as v,v as I,a0 as N,h as T,c as q,a as e,t as o,u as n,N as a,e as s,w as t,aJ as w,i as b,R as B,aC as z,aD as F,a1 as R,E as $,al as D,am as M,an as J,V as P,ao as Q}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{g as U}from"./wechat-bce3215c.js";import{_ as W}from"./_plugin-vue_export-helper-c27b6911.js";const G={class:"w-full p-5 bg-white"},H={class:"flex justify-between items-center mb-[20px]"},K={class:"text-[20px]"},L={class:"p-[20px]"},O={class:"text-[16px] mb-[20px]"},X={class:"text-[14px] text-[#303133] font-[700]"},Y={class:"text-[#999]"},Z={class:"mt-[20px] mb-[40px] h-[32px]"},ee={class:"text-[14px] text-[#303133] font-[700]"},te={class:"text-[#999]"},se={class:"mt-[20px] mb-[40px] h-[32px]"},ne={class:"text-[14px] text-[#303133] font-[700]"},ae={class:"text-[#999]"},oe={class:"mt-[20px] mb-[40px] h-[32px]"},le={class:"flex justify-center"},ce={class:"w-[100%] h-[100%] flex items-center justify-center bg-[#f5f7fa]"},ie={class:"mt-[22px] text-center"},pe={class:"text-[14px] text-[#303133] font-[700]"},de=j({__name:"access",setup(re){const r=S(),_=v("/channel/wechat"),c=v(2),p=v("");I(async()=>{const i=await U();p.value=i.data.qr_code});const y=i=>{window.open(i,"_blank")},k=i=>{r.push({path:_.value})};return(i,l)=>{const u=z,C=F,x=N("CircleCheckFilled"),m=R,f=$,h=D,E=M,g=J,A=P,V=Q;return T(),q("div",G,[e("div",H,[e("span",K,o(n(a)("title")),1)]),s(C,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=d=>_.value=d),class:"demo-tabs",onTabChange:k},{default:t(()=>[s(u,{label:n(a)("wechatAccessFlow"),name:"/channel/wechat"},null,8,["label"]),s(u,{label:n(a)("customMenu"),name:"/channel/wechat/menu"},null,8,["label"]),s(u,{label:n(a)("wechatTemplate"),name:"/channel/wechat/message"},null,8,["label"])]),_:1},8,["modelValue"]),e("div",L,[e("p",O,o(n(a)("wechatInlet")),1),s(V,null,{default:t(()=>[s(g,{span:20},{default:t(()=>[s(E,{direction:"vertical"},{default:t(()=>[s(h,null,w({title:t(()=>[e("p",X,o(n(a)("wechatAttestation")),1)]),description:t(()=>[e("span",Y,o(n(a)("wechatAttestation1")),1),e("div",Z,[s(f,{type:"primary",onClick:l[1]||(l[1]=d=>y("https://mp.weixin.qq.com/"))},{default:t(()=>[b(o(n(a)("clickAccess")),1)]),_:1})])]),_:2},[c.value>1?{name:"icon",fn:t(()=>[s(m,{size:"25px",class:"text-color"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==1?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 1")]),key:"2"}]),1024),s(h,null,w({title:t(()=>[e("p",ee,o(n(a)("wechatSetting")),1)]),description:t(()=>[e("span",te,o(n(a)("wechatSetting1")),1),e("div",se,[s(f,{type:"primary",plain:"",onClick:l[2]||(l[2]=d=>n(r).push("/channel/wechat/config"))},{default:t(()=>[b(o(n(a)("settingInfo")),1)]),_:1})])]),_:2},[c.value>2?{name:"icon",fn:t(()=>[s(m,{size:"25px"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==2?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 2")]),key:"2"}]),1024),s(h,null,w({title:t(()=>[e("p",ne,o(n(a)("wechatAccess")),1)]),description:t(()=>[e("span",ae,o(n(a)("wechatAccess")),1),e("div",oe,[s(f,{type:"primary",plain:"",onClick:l[3]||(l[3]=d=>n(r).push("/channel/wechat/course"))},{default:t(()=>[b(o(n(a)("releaseCourse")),1)]),_:1})])]),_:2},[c.value>3?{name:"icon",fn:t(()=>[s(m,{size:"25px"},{default:t(()=>[s(x)]),_:1})]),key:"0"}:c.value==3?{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] box-border rounded-full bg-color1 flex items-center justify-center"},[e("div",{class:"h-[12px] w-[12px] bg-color rounded-full"})])]),key:"1"}:{name:"icon",fn:t(()=>[e("div",{class:"w-[24px] h-[24px] text-[#fff] bg-[#778aa3] text-center leading-[24px] rounded-full"}," 3")]),key:"2"}]),1024)]),_:1})]),_:1}),s(g,{span:4},{default:t(()=>[e("div",le,[s(A,{class:"w-[180px] h-[180px]",src:p.value?n(B)(p.value):""},{error:t(()=>[e("div",ce,[e("span",null,o(p.value?n(a)("fileErr"):n(a)("emptyQrCode")),1)])]),_:1},8,["src"])]),e("div",ie,[e("p",pe,o(n(a)("clickAccess2")),1)])]),_:1})]),_:1})])])}}});const ye=W(de,[["__scopeId","data-v-594351e7"]]);export{ye as default};
|
||||
1
niucloud/public/admin/assets/account-2b933a95.js
Normal file
1
niucloud/public/admin/assets/account-2b933a95.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-96ffda8c.js";import"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./member-358d18c9.js";export{o as default};
|
||||
import{_ as o}from"./add-member.vue_vue_type_script_setup_true_lang-bf23051f.js";import"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import"./member-399a87da.js";export{o as default};
|
||||
@ -1 +1 @@
|
||||
import{d as M,r as b,n as $,q as B,N as l,h,I as v,w as m,a as I,e as s,i as V,t as y,u as r,y as H,W as R,X as j,Y as L,E as O,a9 as T,$ as z}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{p as A,q as S,r as W}from"./member-358d18c9.js";const X={class:"dialog-footer"},re=M({__name:"add-member",emits:["complete"],setup(Y,{expose:N,emit:P}){const p=b(!1),i=b(!1);let u="",c="";const f={member_id:"",nickname:"",member_no:"",init_member_no:"",mobile:"",password:"",password_copy:""},o=$({...f}),_=b(),D=B(()=>({member_no:[{required:!0,message:l("memberNoPlaceholder"),trigger:"blur"},{validator:C,trigger:"blur"}],mobile:[{required:!0,message:l("mobilePlaceholder"),trigger:"blur"},{validator:E,trigger:"blur"}],password:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"}],password_copy:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"},{validator:x,trigger:"blur"}]})),E=(d,e,a)=>{e&&!/^1[3-9]\d{9}$/.test(e)?a(new Error(l("mobileHint"))):a()},x=(d,e,a)=>{e!=o.password?a(l("doubleCipherHint")):a()},C=(d,e,a)=>{e&&!/^[0-9a-zA-Z]*$/g.test(e)?a(new Error(l("memberNoHint"))):a()},k=async()=>{await S().then(d=>{c=d.data}).catch(()=>{})},q=async d=>{if(i.value||!d)return;const e=W;await d.validate(async a=>{a&&(i.value=!0,e(o).then(w=>{i.value=!1,p.value=!1,P("complete")}).catch(()=>{i.value=!1}))})};return N({showDialog:p,setFormData:async(d=null)=>{if(i.value=!0,Object.assign(o,f),u=l("addMember"),d){u=l("updateMember");const e=await(await A(d.member_id)).data;e&&Object.keys(o).forEach(a=>{e[a]!=null&&(o[a]=e[a])})}else await k(),o.member_no=c,o.init_member_no=c;i.value=!1}}),(d,e)=>{const a=R,n=j,w=L,g=O,U=T,F=z;return h(),v(U,{modelValue:p.value,"onUpdate:modelValue":e[7]||(e[7]=t=>p.value=t),title:r(u),width:"500px","destroy-on-close":!0},{footer:m(()=>[I("span",X,[s(g,{onClick:e[5]||(e[5]=t=>p.value=!1)},{default:m(()=>[V(y(r(l)("cancel")),1)]),_:1}),s(g,{type:"primary",loading:i.value,onClick:e[6]||(e[6]=t=>q(_.value))},{default:m(()=>[V(y(r(l)("confirm")),1)]),_:1},8,["loading"])])]),default:m(()=>[H((h(),v(w,{model:o,"label-width":"90px",ref_key:"formRef",ref:_,rules:r(D),class:"page-form"},{default:m(()=>[s(n,{label:r(l)("memberNo"),prop:"member_no"},{default:m(()=>[s(a,{modelValue:o.member_no,"onUpdate:modelValue":e[0]||(e[0]=t=>o.member_no=t),clearable:"",maxlength:"20",placeholder:r(l)("memberNoPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("mobile"),prop:"mobile"},{default:m(()=>[s(a,{modelValue:o.mobile,"onUpdate:modelValue":e[1]||(e[1]=t=>o.mobile=t),clearable:"",placeholder:r(l)("mobilePlaceholder"),type:"number",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("nickname")},{default:m(()=>[s(a,{modelValue:o.nickname,"onUpdate:modelValue":e[2]||(e[2]=t=>o.nickname=t),clearable:"",placeholder:r(l)("nickNamePlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("password"),prop:"password"},{default:m(()=>[s(a,{modelValue:o.password,"onUpdate:modelValue":e[3]||(e[3]=t=>o.password=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("passwordCopy"),prop:"password_copy"},{default:m(()=>[s(a,{modelValue:o.password_copy,"onUpdate:modelValue":e[4]||(e[4]=t=>o.password_copy=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[F,i.value]])]),_:1},8,["modelValue","title"])}}});export{re as _};
|
||||
import{d as M,r as b,n as $,q as B,N as l,h,I as v,w as m,a as I,e as s,i as V,t as y,u as r,y as H,W as R,X as j,Y as L,E as O,aa as T,$ as z}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{p as A,q as S,r as W}from"./member-399a87da.js";const X={class:"dialog-footer"},re=M({__name:"add-member",emits:["complete"],setup(Y,{expose:N,emit:P}){const p=b(!1),i=b(!1);let u="",c="";const f={member_id:"",nickname:"",member_no:"",init_member_no:"",mobile:"",password:"",password_copy:""},o=$({...f}),_=b(),D=B(()=>({member_no:[{required:!0,message:l("memberNoPlaceholder"),trigger:"blur"},{validator:C,trigger:"blur"}],mobile:[{required:!0,message:l("mobilePlaceholder"),trigger:"blur"},{validator:E,trigger:"blur"}],password:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"}],password_copy:[{required:!0,message:l("passwordPlaceholder"),trigger:"blur"},{validator:x,trigger:"blur"}]})),E=(d,e,a)=>{e&&!/^1[3-9]\d{9}$/.test(e)?a(new Error(l("mobileHint"))):a()},x=(d,e,a)=>{e!=o.password?a(l("doubleCipherHint")):a()},C=(d,e,a)=>{e&&!/^[0-9a-zA-Z]*$/g.test(e)?a(new Error(l("memberNoHint"))):a()},k=async()=>{await S().then(d=>{c=d.data}).catch(()=>{})},q=async d=>{if(i.value||!d)return;const e=W;await d.validate(async a=>{a&&(i.value=!0,e(o).then(w=>{i.value=!1,p.value=!1,P("complete")}).catch(()=>{i.value=!1}))})};return N({showDialog:p,setFormData:async(d=null)=>{if(i.value=!0,Object.assign(o,f),u=l("addMember"),d){u=l("updateMember");const e=await(await A(d.member_id)).data;e&&Object.keys(o).forEach(a=>{e[a]!=null&&(o[a]=e[a])})}else await k(),o.member_no=c,o.init_member_no=c;i.value=!1}}),(d,e)=>{const a=R,n=j,w=L,g=O,U=T,F=z;return h(),v(U,{modelValue:p.value,"onUpdate:modelValue":e[7]||(e[7]=t=>p.value=t),title:r(u),width:"500px","destroy-on-close":!0},{footer:m(()=>[I("span",X,[s(g,{onClick:e[5]||(e[5]=t=>p.value=!1)},{default:m(()=>[V(y(r(l)("cancel")),1)]),_:1}),s(g,{type:"primary",loading:i.value,onClick:e[6]||(e[6]=t=>q(_.value))},{default:m(()=>[V(y(r(l)("confirm")),1)]),_:1},8,["loading"])])]),default:m(()=>[H((h(),v(w,{model:o,"label-width":"90px",ref_key:"formRef",ref:_,rules:r(D),class:"page-form"},{default:m(()=>[s(n,{label:r(l)("memberNo"),prop:"member_no"},{default:m(()=>[s(a,{modelValue:o.member_no,"onUpdate:modelValue":e[0]||(e[0]=t=>o.member_no=t),clearable:"",maxlength:"20",placeholder:r(l)("memberNoPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("mobile"),prop:"mobile"},{default:m(()=>[s(a,{modelValue:o.mobile,"onUpdate:modelValue":e[1]||(e[1]=t=>o.mobile=t),clearable:"",placeholder:r(l)("mobilePlaceholder"),type:"number",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("nickname")},{default:m(()=>[s(a,{modelValue:o.nickname,"onUpdate:modelValue":e[2]||(e[2]=t=>o.nickname=t),clearable:"",placeholder:r(l)("nickNamePlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("password"),prop:"password"},{default:m(()=>[s(a,{modelValue:o.password,"onUpdate:modelValue":e[3]||(e[3]=t=>o.password=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(n,{label:r(l)("passwordCopy"),prop:"password_copy"},{default:m(()=>[s(a,{modelValue:o.password_copy,"onUpdate:modelValue":e[4]||(e[4]=t=>o.password_copy=t),type:"password",placeholder:r(l)("passwordPlaceholder"),clearable:"",class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["model","rules"])),[[F,i.value]])]),_:1},8,["modelValue","title"])}}});export{re as _};
|
||||
@ -1 +1 @@
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-9ac8d41e.js";import"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./tools-e72ef746.js";export{o as default};
|
||||
import{_ as o}from"./add-table.vue_vue_type_script_setup_true_lang-55f6e97f.js";import"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./tools-5de7422d.js";export{o as default};
|
||||
@ -1 +1 @@
|
||||
import{d as T,f as E,r as u,n as L,q as k,h as p,I as _,w as o,a as h,y as x,u as t,t as b,N as n,e as d,i as B,ag as z,W as q,E as F,ai as I,a9 as P,$ as U}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{j as $,k as j}from"./tools-e72ef746.js";const G={class:""},te=T({__name:"add-table",setup(R,{expose:g}){const f=E(),m=u(!1),s=u(""),e=L({loading:!0,data:[],searchParam:{table_name:"",table_content:""}}),v=k(()=>e.data.filter(a=>!s.value||a.Name.toLowerCase().includes(s.value.toLowerCase())||a.Comment.toLowerCase().includes(s.value.toLowerCase()))),c=()=>{e.loading=!0,$().then(a=>{e.loading=!1,e.data=a.data}).catch(()=>{e.loading=!1})};c();const w=a=>{const l=a.Name;e.loading=!0,j({table_name:l}).then(i=>{e.loading=!1,m.value=!1,f.push({path:"/tools/code/edit",query:{id:i.data.id}})}).catch(()=>{e.loading=!1})};return g({showDialog:m,setFormData:async(a=null)=>{c()}}),(a,l)=>{const i=z,C=q,y=F,D=I,V=P,N=U;return p(),_(V,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=r=>m.value=r),title:t(n)("addCode"),width:"800px","destroy-on-close":!0},{default:o(()=>[h("div",G,[x((p(),_(D,{data:t(v),size:"large",height:"400"},{empty:o(()=>[h("span",null,b(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[d(i,{prop:"Name",label:t(n)("tableName"),"min-width":"150"},null,8,["label"]),d(i,{prop:"Comment",label:t(n)("tableComment"),"min-width":"120"},null,8,["label"]),d(i,{align:"right","min-width":"150"},{header:o(()=>[d(C,{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=r=>s.value=r),size:"small",placeholder:t(n)("searchPlaceholder")},null,8,["modelValue","placeholder"])]),default:o(r=>[d(y,{size:"small",type:"primary",onClick:W=>w(r.row)},{default:o(()=>[B(b(t(n)("addBtn")),1)]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[N,e.loading]])])]),_:1},8,["modelValue","title"])}}});export{te as _};
|
||||
import{d as T,f as E,r as u,n as L,q as k,h as p,I as _,w as o,a as h,y as x,u as t,t as b,N as n,e as d,i as B,ah as z,W as j,E as q,aj as F,aa as I,$ as P}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{j as U,k as $}from"./tools-5de7422d.js";const G={class:""},te=T({__name:"add-table",setup(R,{expose:f}){const g=E(),m=u(!1),s=u(""),e=L({loading:!0,data:[],searchParam:{table_name:"",table_content:""}}),v=k(()=>e.data.filter(a=>!s.value||a.Name.toLowerCase().includes(s.value.toLowerCase())||a.Comment.toLowerCase().includes(s.value.toLowerCase()))),c=()=>{e.loading=!0,U().then(a=>{e.loading=!1,e.data=a.data}).catch(()=>{e.loading=!1})};c();const w=a=>{const l=a.Name;e.loading=!0,$({table_name:l}).then(i=>{e.loading=!1,m.value=!1,g.push({path:"/tools/code/edit",query:{id:i.data.id}})}).catch(()=>{e.loading=!1})};return f({showDialog:m,setFormData:async(a=null)=>{c()}}),(a,l)=>{const i=z,C=j,y=q,D=F,V=I,N=P;return p(),_(V,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=r=>m.value=r),title:t(n)("addCode"),width:"800px","destroy-on-close":!0},{default:o(()=>[h("div",G,[x((p(),_(D,{data:t(v),size:"large",height:"400"},{empty:o(()=>[h("span",null,b(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[d(i,{prop:"Name",label:t(n)("tableName"),"min-width":"150"},null,8,["label"]),d(i,{prop:"Comment",label:t(n)("tableComment"),"min-width":"120"},null,8,["label"]),d(i,{align:"right","min-width":"150"},{header:o(()=>[d(C,{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=r=>s.value=r),size:"small",placeholder:t(n)("searchPlaceholder")},null,8,["modelValue","placeholder"])]),default:o(r=>[d(y,{size:"small",type:"primary",onClick:W=>w(r.row)},{default:o(()=>[B(b(t(n)("addBtn")),1)]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[N,e.loading]])])]),_:1},8,["modelValue","title"])}}});export{te as _};
|
||||
@ -1 +1 @@
|
||||
import{a2 as t}from"./index-b19d04dd.js";function o(n){return t.get("addon/local",n,{showSuccessMessage:!0})}function a(n){return t.post(`addon/install/${n.addon}`,n)}function s(n){return t.post(`addon/cloudinstall/${n.addon}`,n,{timeout:60*1e3})}function l(n){return t.post(`addon/uninstall/${n.addon}`,n,{showSuccessMessage:!0})}function d(n){return t.get(`addon/install/check/${n}`,{timeout:30*1e3})}function u(){return t.get("addon/installtask")}function c(n){return t.get(`addon/cloudinstall/${n}`)}function i(n){return t.get(`addon/uninstall/check/${n}`,{timeout:30*1e3})}function r(n){return t.put(`addon/install/cancel/${n}`,{},{showErrorMessage:!1})}function g(){return t.get("addon/list/install")}export{o as a,u as b,s as c,c as d,i as e,r as f,g,a as i,d as p,l as u};
|
||||
import{a2 as t}from"./index-4ce69858.js";function o(n){return t.get("addon/local",n,{showSuccessMessage:!0})}function a(n){return t.post(`addon/install/${n.addon}`,n)}function s(n){return t.post(`addon/cloudinstall/${n.addon}`,n,{timeout:60*1e3})}function l(n){return t.post(`addon/uninstall/${n.addon}`,n,{showSuccessMessage:!0})}function d(n){return t.get(`addon/install/check/${n}`,{timeout:30*1e3})}function u(){return t.get("addon/installtask")}function c(n){return t.get(`addon/cloudinstall/${n}`)}function i(n){return t.get(`addon/uninstall/check/${n}`,{timeout:30*1e3})}function r(n){return t.put(`addon/install/cancel/${n}`,{},{showErrorMessage:!1})}function g(){return t.get("addon/list/install")}export{o as a,u as b,s as c,c as d,i as e,r as f,g,a as i,d as p,l as u};
|
||||
@ -1 +1 @@
|
||||
import{d as N,O as B,r as g,n as C,h,c as E,a as r,t as p,u as s,y,I as D,w as m,e as o,N as i,i as I,aL as F,X as O,_ as S,Y as L,E as U,$ as j}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as J}from"./index-34e6dc3a.js";import"./el-form-item-4ed993c7.js";/* empty css */import{J as R,K as T}from"./sys-dbdff24e.js";import{_ as $}from"./_plugin-vue_export-helper-c27b6911.js";/* empty css */import"./index.vue_vue_type_style_index_0_lang-4806f3ef.js";/* empty css */import"./attachment-b6d6fc85.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-6089139d.js";/* empty css */const k={class:"main-container"},K={class:"flex ml-[18px] justify-between items-center mt-[20px]"},X={class:"text-[20px]"},Y={class:"panel-title !text-sm"},q={class:"form-tip"},z={class:"panel-title !text-sm"},A={class:"form-tip"},G={class:"fixed-footer-wrap"},H={class:"fixed-footer"},M=N({__name:"adminlogin",setup(P){const b=B().meta.title,_=g(!0),d=g(),e=C({is_captcha:0,is_site_captcha:0,bg:"",site_bg:""});(async(c=0)=>{const t=await(await R()).data;Object.keys(e).forEach(a=>{["is_captcha","is_site_captcha"].includes(a)?e[a]=Boolean(Number(t[a])):e[a]=t[a]}),_.value=!1})();const v=async c=>{_.value||!c||await c.validate(t=>{if(t){const a=JSON.parse(JSON.stringify(e));Object.keys(a).forEach(l=>{["is_captcha","is_site_captcha"].includes(l)&&(a[l]=Number(a[l]))}),T(a).then(()=>{_.value=!1}).catch(()=>{_.value=!1})}})};return(c,t)=>{const a=F,l=O,u=J,f=S,x=L,V=U,w=j;return h(),E("div",k,[r("div",K,[r("span",X,p(s(b)),1)]),y((h(),D(x,{model:e,"label-width":"150px",ref_key:"ruleFormRef",ref:d,class:"page-form"},{default:m(()=>[o(f,{class:"box-card !border-none",shadow:"never"},{default:m(()=>[r("h3",Y,p(s(i)("admin")),1),o(l,{label:s(i)("isCaptcha"),prop:"formData.is_auth_register"},{default:m(()=>[o(a,{modelValue:e.is_captcha,"onUpdate:modelValue":t[0]||(t[0]=n=>e.is_captcha=n)},null,8,["modelValue"])]),_:1},8,["label"]),o(l,{label:s(i)("bgImg")},{default:m(()=>[o(u,{modelValue:e.bg,"onUpdate:modelValue":t[1]||(t[1]=n=>e.bg=n)},null,8,["modelValue"]),r("div",q,p(s(i)("adminBgImgTip")),1)]),_:1},8,["label"])]),_:1}),o(f,{class:"box-card !border-none mt-4",shadow:"never"},{default:m(()=>[r("h3",z,p(s(i)("site")),1),o(l,{label:s(i)("isCaptcha"),prop:"formData.is_auth_register"},{default:m(()=>[o(a,{modelValue:e.is_site_captcha,"onUpdate:modelValue":t[2]||(t[2]=n=>e.is_site_captcha=n)},null,8,["modelValue"])]),_:1},8,["label"]),o(l,{label:s(i)("bgImg")},{default:m(()=>[o(u,{modelValue:e.site_bg,"onUpdate:modelValue":t[3]||(t[3]=n=>e.site_bg=n)},null,8,["modelValue"]),r("div",A,p(s(i)("siteBgImgTip")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[w,_.value]]),r("div",G,[r("div",H,[o(V,{type:"primary",onClick:t[4]||(t[4]=n=>v(d.value))},{default:m(()=>[I(p(s(i)("save")),1)]),_:1})])])])}}});const Ft=$(M,[["__scopeId","data-v-09344233"]]);export{Ft as default};
|
||||
import{d as N,O as B,r as g,n as C,h,c as E,a as r,t as p,u as s,y,I as D,w as m,e as o,N as i,i as I,aL as F,X as O,_ as S,Y as L,E as U,$ as j}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as J}from"./index-c520c584.js";import"./el-form-item-4ed993c7.js";/* empty css */import{J as R,K as T}from"./sys-e410b79c.js";import{_ as $}from"./_plugin-vue_export-helper-c27b6911.js";/* empty css */import"./index.vue_vue_type_style_index_0_lang-59777cba.js";/* empty css */import"./attachment-872c2aec.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-861395e6.js";/* empty css */const k={class:"main-container"},K={class:"flex ml-[18px] justify-between items-center mt-[20px]"},X={class:"text-[20px]"},Y={class:"panel-title !text-sm"},q={class:"form-tip"},z={class:"panel-title !text-sm"},A={class:"form-tip"},G={class:"fixed-footer-wrap"},H={class:"fixed-footer"},M=N({__name:"adminlogin",setup(P){const b=B().meta.title,_=g(!0),d=g(),e=C({is_captcha:0,is_site_captcha:0,bg:"",site_bg:""});(async(c=0)=>{const t=await(await R()).data;Object.keys(e).forEach(a=>{["is_captcha","is_site_captcha"].includes(a)?e[a]=Boolean(Number(t[a])):e[a]=t[a]}),_.value=!1})();const v=async c=>{_.value||!c||await c.validate(t=>{if(t){const a=JSON.parse(JSON.stringify(e));Object.keys(a).forEach(l=>{["is_captcha","is_site_captcha"].includes(l)&&(a[l]=Number(a[l]))}),T(a).then(()=>{_.value=!1}).catch(()=>{_.value=!1})}})};return(c,t)=>{const a=F,l=O,u=J,f=S,x=L,V=U,w=j;return h(),E("div",k,[r("div",K,[r("span",X,p(s(b)),1)]),y((h(),D(x,{model:e,"label-width":"150px",ref_key:"ruleFormRef",ref:d,class:"page-form"},{default:m(()=>[o(f,{class:"box-card !border-none",shadow:"never"},{default:m(()=>[r("h3",Y,p(s(i)("admin")),1),o(l,{label:s(i)("isCaptcha"),prop:"formData.is_auth_register"},{default:m(()=>[o(a,{modelValue:e.is_captcha,"onUpdate:modelValue":t[0]||(t[0]=n=>e.is_captcha=n)},null,8,["modelValue"])]),_:1},8,["label"]),o(l,{label:s(i)("bgImg")},{default:m(()=>[o(u,{modelValue:e.bg,"onUpdate:modelValue":t[1]||(t[1]=n=>e.bg=n)},null,8,["modelValue"]),r("div",q,p(s(i)("adminBgImgTip")),1)]),_:1},8,["label"])]),_:1}),o(f,{class:"box-card !border-none mt-4",shadow:"never"},{default:m(()=>[r("h3",z,p(s(i)("site")),1),o(l,{label:s(i)("isCaptcha"),prop:"formData.is_auth_register"},{default:m(()=>[o(a,{modelValue:e.is_site_captcha,"onUpdate:modelValue":t[2]||(t[2]=n=>e.is_site_captcha=n)},null,8,["modelValue"])]),_:1},8,["label"]),o(l,{label:s(i)("bgImg")},{default:m(()=>[o(u,{modelValue:e.site_bg,"onUpdate:modelValue":t[3]||(t[3]=n=>e.site_bg=n)},null,8,["modelValue"]),r("div",A,p(s(i)("siteBgImgTip")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[w,_.value]]),r("div",G,[r("div",H,[o(V,{type:"primary",onClick:t[4]||(t[4]=n=>v(d.value))},{default:m(()=>[I(p(s(i)("save")),1)]),_:1})])])])}}});const Ft=$(M,[["__scopeId","data-v-09344233"]]);export{Ft as default};
|
||||
@ -1 +1 @@
|
||||
import{d as v,O as y,n as x,f as k,h as m,c as E,e as a,w as o,a as i,t as r,u as t,y as C,I as N,N as n,i as p,ag as B,E as L,ai as T,_ as D,$ as A}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css */import{L as V}from"./sys-dbdff24e.js";const $={class:"main-container"},j={class:"flex justify-between items-center"},O={class:"text-[20px]"},R={class:"mt-[20px]"},Y=v({__name:"agreement",setup(z){const _=y().meta.title,e=x({loading:!0,data:[]});(()=>{e.loading=!0,e.data=[],V().then(l=>{Object.keys(l.data).forEach(d=>e.data.push(l.data[d])),e.loading=!1}).catch(()=>{e.loading=!1})})();const u=k(),g=l=>{u.push(`/setting/agreement/edit?key=${l.agreement_key}`)};return(l,d)=>{const s=B,h=L,f=T,b=D,w=A;return m(),E("div",$,[a(b,{class:"box-card !border-none",shadow:"never"},{default:o(()=>[i("div",j,[i("span",O,r(t(_)),1)]),i("div",R,[C((m(),N(f,{data:e.data,size:"large"},{empty:o(()=>[i("span",null,r(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[a(s,{prop:"type_name",label:t(n)("typeName"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{prop:"title",label:t(n)("title"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{label:t(n)("updateTime"),"min-width":"180",align:"center"},{default:o(({row:c})=>[p(r(c.update_time||""),1)]),_:1},8,["label"]),a(s,{label:t(n)("operation"),align:"right",fixed:"right",width:"100"},{default:o(({row:c})=>[a(h,{type:"primary",link:"",onClick:q=>g(c)},{default:o(()=>[p(r(t(n)("config")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[w,e.loading]])])]),_:1})])}}});export{Y as default};
|
||||
import{d as v,O as y,n as x,f as k,h as m,c as E,e as a,w as o,a as i,t as r,u as t,y as C,I as N,N as n,i as p,ah as B,E as L,aj as T,_ as D,$ as j}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css */import{L as A}from"./sys-e410b79c.js";const V={class:"main-container"},$={class:"flex justify-between items-center"},O={class:"text-[20px]"},R={class:"mt-[20px]"},Y=v({__name:"agreement",setup(z){const _=y().meta.title,e=x({loading:!0,data:[]});(()=>{e.loading=!0,e.data=[],A().then(l=>{Object.keys(l.data).forEach(d=>e.data.push(l.data[d])),e.loading=!1}).catch(()=>{e.loading=!1})})();const u=k(),g=l=>{u.push(`/setting/agreement/edit?key=${l.agreement_key}`)};return(l,d)=>{const s=B,h=L,f=T,b=D,w=j;return m(),E("div",V,[a(b,{class:"box-card !border-none",shadow:"never"},{default:o(()=>[i("div",$,[i("span",O,r(t(_)),1)]),i("div",R,[C((m(),N(f,{data:e.data,size:"large"},{empty:o(()=>[i("span",null,r(e.loading?"":t(n)("emptyData")),1)]),default:o(()=>[a(s,{prop:"type_name",label:t(n)("typeName"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{prop:"title",label:t(n)("title"),"min-width":"100","show-overflow-tooltip":!0},null,8,["label"]),a(s,{label:t(n)("updateTime"),"min-width":"180",align:"center"},{default:o(({row:c})=>[p(r(c.update_time||""),1)]),_:1},8,["label"]),a(s,{label:t(n)("operation"),align:"right",fixed:"right",width:"100"},{default:o(({row:c})=>[a(h,{type:"primary",link:"",onClick:q=>g(c)},{default:o(()=>[p(r(t(n)("config")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[w,e.loading]])])]),_:1})])}}});export{Y as default};
|
||||
@ -1 +1 @@
|
||||
import{d as R,O as $,f as I,r as y,cM as P,n as S,q as T,N as r,h as k,c as j,a as l,u as o,t as p,y as q,I as O,w as m,e as s,i as x,W as U,X as A,Y as M,_ as z,E as L,$ as W}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as X}from"./index.vue_vue_type_script_setup_true_lang-337d68b2.js";import"./el-form-item-4ed993c7.js";/* empty css */import{M as Y,N as G}from"./sys-dbdff24e.js";import"./index.vue_vue_type_style_index_0_lang-4806f3ef.js";/* empty css */import"./attachment-b6d6fc85.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-6089139d.js";/* empty css */import"./_plugin-vue_export-helper-c27b6911.js";const H={class:"main-container"},J={class:"detail-head"},K=l("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),Q={class:"ml-[1px]"},Z=l("span",{class:"adorn"},"|",-1),ee={class:"right"},te={class:"fixed-footer-wrap"},oe={class:"fixed-footer"},Se=R({__name:"agreement_edit",setup(ae){const u=$(),_=I(),f=u.query.key||"",i=y(!1),V=P(),w=u.meta.title,g={agreement_key:"",content:"",title:"",agreement_key_name:""},t=S({...g});i.value=!0,f&&(async(c="")=>{Object.assign(t,g);const e=await(await Y(c)).data;Object.keys(t).forEach(a=>{e[a]!=null&&(t[a]=e[a])}),i.value=!1})(f);const v=y(),E=T(()=>({title:[{required:!0,message:r("titlePlaceholder"),trigger:"blur"}]})),C=async c=>{i.value||!c||await c.validate(async e=>{if(e){i.value=!0;const a=t;a.key=t.agreement_key,G(a).then(d=>{i.value=!1,b()}).catch(()=>{i.value=!1})}})},b=()=>{V.removeTab(u.path),_.push({path:"/setting/agreement"})};return(c,e)=>{const a=U,d=A,D=X,N=M,B=z,h=L,F=W;return k(),j("div",H,[l("div",J,[l("div",{class:"left",onClick:e[0]||(e[0]=n=>o(_).push({path:"/setting/agreement"}))},[K,l("span",Q,p(o(r)("returnToPreviousPage")),1)]),Z,l("span",ee,p(o(w)),1)]),q((k(),O(B,{class:"box-card !border-none",shadow:"never"},{default:m(()=>[s(N,{model:t,"label-width":"90px",ref_key:"formRef",ref:v,rules:o(E),class:"page-form"},{default:m(()=>[s(d,{label:o(r)("type")},{default:m(()=>[s(a,{modelValue:t.agreement_key_name,"onUpdate:modelValue":e[1]||(e[1]=n=>t.agreement_key_name=n),readonly:"",class:"input-width"},null,8,["modelValue"])]),_:1},8,["label"]),s(d,{label:o(r)("title"),prop:"title"},{default:m(()=>[s(a,{modelValue:t.title,"onUpdate:modelValue":e[2]||(e[2]=n=>t.title=n),clearable:"",placeholder:o(r)("titlePlaceholder"),class:"input-width",maxlength:"20"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(d,{label:o(r)("content")},{default:m(()=>[s(D,{modelValue:t.content,"onUpdate:modelValue":e[3]||(e[3]=n=>t.content=n)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])]),_:1})),[[F,i.value]]),l("div",te,[l("div",oe,[s(h,{type:"primary",onClick:e[4]||(e[4]=n=>C(v.value))},{default:m(()=>[x(p(o(r)("save")),1)]),_:1}),s(h,{onClick:e[5]||(e[5]=n=>b())},{default:m(()=>[x(p(o(r)("cancel")),1)]),_:1})])])])}}});export{Se as default};
|
||||
import{d as R,O as $,f as I,r as y,cM as P,n as S,q as T,N as r,h as k,c as j,a as l,u as o,t as p,y as q,I as O,w as m,e as s,i as x,W as U,X as A,Y as M,_ as z,E as L,$ as W}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as X}from"./index.vue_vue_type_script_setup_true_lang-ca9ca6be.js";import"./el-form-item-4ed993c7.js";/* empty css */import{M as Y,N as G}from"./sys-e410b79c.js";import"./index.vue_vue_type_style_index_0_lang-59777cba.js";/* empty css */import"./attachment-872c2aec.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-861395e6.js";/* empty css */import"./_plugin-vue_export-helper-c27b6911.js";const H={class:"main-container"},J={class:"detail-head"},K=l("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),Q={class:"ml-[1px]"},Z=l("span",{class:"adorn"},"|",-1),ee={class:"right"},te={class:"fixed-footer-wrap"},oe={class:"fixed-footer"},Se=R({__name:"agreement_edit",setup(ae){const u=$(),_=I(),f=u.query.key||"",i=y(!1),V=P(),w=u.meta.title,g={agreement_key:"",content:"",title:"",agreement_key_name:""},t=S({...g});i.value=!0,f&&(async(c="")=>{Object.assign(t,g);const e=await(await Y(c)).data;Object.keys(t).forEach(a=>{e[a]!=null&&(t[a]=e[a])}),i.value=!1})(f);const v=y(),E=T(()=>({title:[{required:!0,message:r("titlePlaceholder"),trigger:"blur"}]})),C=async c=>{i.value||!c||await c.validate(async e=>{if(e){i.value=!0;const a=t;a.key=t.agreement_key,G(a).then(d=>{i.value=!1,b()}).catch(()=>{i.value=!1})}})},b=()=>{V.removeTab(u.path),_.push({path:"/setting/agreement"})};return(c,e)=>{const a=U,d=A,D=X,N=M,B=z,h=L,F=W;return k(),j("div",H,[l("div",J,[l("div",{class:"left",onClick:e[0]||(e[0]=n=>o(_).push({path:"/setting/agreement"}))},[K,l("span",Q,p(o(r)("returnToPreviousPage")),1)]),Z,l("span",ee,p(o(w)),1)]),q((k(),O(B,{class:"box-card !border-none",shadow:"never"},{default:m(()=>[s(N,{model:t,"label-width":"90px",ref_key:"formRef",ref:v,rules:o(E),class:"page-form"},{default:m(()=>[s(d,{label:o(r)("type")},{default:m(()=>[s(a,{modelValue:t.agreement_key_name,"onUpdate:modelValue":e[1]||(e[1]=n=>t.agreement_key_name=n),readonly:"",class:"input-width"},null,8,["modelValue"])]),_:1},8,["label"]),s(d,{label:o(r)("title"),prop:"title"},{default:m(()=>[s(a,{modelValue:t.title,"onUpdate:modelValue":e[2]||(e[2]=n=>t.title=n),clearable:"",placeholder:o(r)("titlePlaceholder"),class:"input-width",maxlength:"20"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),s(d,{label:o(r)("content")},{default:m(()=>[s(D,{modelValue:t.content,"onUpdate:modelValue":e[3]||(e[3]=n=>t.content=n)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model","rules"])]),_:1})),[[F,i.value]]),l("div",te,[l("div",oe,[s(h,{type:"primary",onClick:e[4]||(e[4]=n=>C(v.value))},{default:m(()=>[x(p(o(r)("save")),1)]),_:1}),s(h,{onClick:e[5]||(e[5]=n=>b())},{default:m(()=>[x(p(o(r)("cancel")),1)]),_:1})])])])}}});export{Se as default};
|
||||
@ -1 +1 @@
|
||||
import{a2 as t}from"./index-b19d04dd.js";function e(){return t.get("aliapp/config")}function p(a){return t.put("aliapp/config",a,{showSuccessMessage:!0})}function n(){return t.get("aliapp/static")}export{n as a,e as g,p as s};
|
||||
import{a2 as t}from"./index-4ce69858.js";function e(){return t.get("aliapp/config")}function p(a){return t.put("aliapp/config",a,{showSuccessMessage:!0})}function n(){return t.get("aliapp/static")}export{n as a,e as g,p as s};
|
||||
@ -1 +1 @@
|
||||
import{d as C,f as V,K as N,r as y,n as R,y as M,h as l,c as x,a as e,t as s,u as a,N as o,e as u,w as c,F as j,G as D,R as T,I as U,i as $,B as k,ad as b,U as w,E as z,V as G,ah as K,aj as O,ac as P,$ as q,p as H,g as J}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as Q}from"./apply_empty-cdca3e85.js";import{g as W}from"./addon-898c6ab6.js";import{_ as X}from"./_plugin-vue_export-helper-c27b6911.js";const Y=""+new URL("app_store_default-c0531792.png",import.meta.url).href,f=_=>(H("data-v-e51b31c1"),_=_(),J(),_),Z={class:"box-border pt-[68px] px-[76px] overview-top"},ee={key:0},te={class:"flex justify-between items-center"},se={class:"font-[600] text-[26px] text-[#222] leading-[37px]"},ae={class:"font-[500] text-[14px] text-[#222] leading-[20px] mt-[12px]"},oe=f(()=>e("div",{class:"mr-[9px] text-[#3F3F3F] iconfont iconxiazai01"},null,-1)),ne={class:"font-[600] text-[14px] text-[#222] leading-[20px]"},pe={class:"flex flex-wrap mt-[40px]"},ce=["onClick"],ie={class:"bg-[#F7FAFB] py-[18px] px-[24px] flex items-center app-item-head"},re=f(()=>e("div",{class:"image-slot"},[e("img",{class:"w-[40px] h-[40px] rounded-[8px]",src:Y})],-1)),le={class:"py-[18px] px-[24px]"},_e={class:"font-[600] leading-[1] text-[14px] text-[#222]"},de={class:"text-[13px] text-[#6D7278] leading-[18px] mt-[6px] truncate"},xe=f(()=>e("div",{class:"w-[230px] mx-auto"},[e("img",{src:Q,class:"max-w-full",alt:""})],-1)),ue={class:"flex items-center"},me=C({__name:"app_manage",setup(_){const v=V(),m=N(),n=y(!0),d=R({appList:[]}),h=y({});(()=>{n.value=!0,W().then(p=>{Object.values(p.data).forEach((t,i)=>{t.type=="app"&&d.appList.push(t)}),m.routers.forEach((t,i)=>{t.children&&t.children.length?(t.name=b(t.children),h.value[t.meta.app]=b(t.children)):h.value[t.meta.app]=t.name}),n.value=!1}).catch(()=>{n.value=!1})})();const L=p=>{w.set({key:"menuAppStorage",data:p.key}),w.set({key:"plugMenuTypeStorage",data:""});const t=m.appMenuList;t.push(p.key),m.setAppMenuList(t);const i=h.value[p.key];v.push({name:i})},g=()=>{v.push("/app_manage/app_store")};return(p,t)=>{const i=z,F=G,E=K,S=O,I=P,A=q;return M((l(),x("div",Z,[d.appList&&!n.value?(l(),x("div",ee,[e("div",te,[e("div",null,[e("div",se,s(a(o)("app")),1),e("div",ae,s(a(o)("versionInfo"))+" "+s(a(o)("currentVersion")),1)]),u(i,{onClick:g,class:"px-[15px]"},{default:c(()=>[oe,e("span",ne,s(a(o)("appStore")),1)]),_:1})]),e("div",pe,[(l(!0),x(j,null,D(d.appList,(r,B)=>(l(),x("div",{key:B,class:"app-item w-[280px] box-border !bg-[#fff] rounded-[6px] cursor-pointer mr-[20px] mb-[20px] overflow-hidden",onClick:fe=>L(r)},[e("div",ie,[u(F,{class:"w-[44px] h-[44px] rounded-[8px]",src:a(T)(r.icon),fit:"contain"},{error:c(()=>[re]),_:2},1032,["src"])]),e("div",le,[e("div",_e,s(r.title),1),u(E,{class:"box-item",effect:"light",content:r.desc,placement:"bottom-start"},{default:c(()=>[e("div",de,s(r.desc),1)]),_:2},1032,["content"])])],8,ce))),128)),!d.appList.length&&!n.value?(l(),U(I,{key:0,class:"mx-auto overview-empty"},{image:c(()=>[xe]),description:c(()=>[e("p",ue,[e("span",null,s(a(o)("descriptionLeft")),1),u(S,{type:"primary",onClick:g,class:"mx-[5px]"},{default:c(()=>[$(s(a(o)("link")),1)]),_:1}),e("span",null,s(a(o)("descriptionRight")),1)])]),_:1})):k("",!0)])])):k("",!0)])),[[A,n.value]])}}});const Be=X(me,[["__scopeId","data-v-e51b31c1"]]);export{Be as default};
|
||||
import{d as C,f as V,K as N,r as y,n as R,y as M,h as l,c as x,a as e,t as s,u as a,N as o,e as u,w as c,F as D,G as T,R as U,I as j,i as $,B as k,ae as b,U as w,E as z,V as G,ai as K,ak as O,ad as P,$ as q,p as H,g as J}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import{_ as Q}from"./apply_empty-cdca3e85.js";import{g as W}from"./addon-74eac974.js";import{_ as X}from"./_plugin-vue_export-helper-c27b6911.js";const Y=""+new URL("app_store_default-c0531792.png",import.meta.url).href,f=_=>(H("data-v-e51b31c1"),_=_(),J(),_),Z={class:"box-border pt-[68px] px-[76px] overview-top"},ee={key:0},te={class:"flex justify-between items-center"},se={class:"font-[600] text-[26px] text-[#222] leading-[37px]"},ae={class:"font-[500] text-[14px] text-[#222] leading-[20px] mt-[12px]"},oe=f(()=>e("div",{class:"mr-[9px] text-[#3F3F3F] iconfont iconxiazai01"},null,-1)),ne={class:"font-[600] text-[14px] text-[#222] leading-[20px]"},pe={class:"flex flex-wrap mt-[40px]"},ce=["onClick"],ie={class:"bg-[#F7FAFB] py-[18px] px-[24px] flex items-center app-item-head"},re=f(()=>e("div",{class:"image-slot"},[e("img",{class:"w-[40px] h-[40px] rounded-[8px]",src:Y})],-1)),le={class:"py-[18px] px-[24px]"},_e={class:"font-[600] leading-[1] text-[14px] text-[#222]"},de={class:"text-[13px] text-[#6D7278] leading-[18px] mt-[6px] truncate"},xe=f(()=>e("div",{class:"w-[230px] mx-auto"},[e("img",{src:Q,class:"max-w-full",alt:""})],-1)),ue={class:"flex items-center"},me=C({__name:"app_manage",setup(_){const v=V(),m=N(),n=y(!0),d=R({appList:[]}),h=y({});(()=>{n.value=!0,W().then(p=>{Object.values(p.data).forEach((t,i)=>{t.type=="app"&&d.appList.push(t)}),m.routers.forEach((t,i)=>{t.children&&t.children.length?(t.name=b(t.children),h.value[t.meta.app]=b(t.children)):h.value[t.meta.app]=t.name}),n.value=!1}).catch(()=>{n.value=!1})})();const L=p=>{w.set({key:"menuAppStorage",data:p.key}),w.set({key:"plugMenuTypeStorage",data:""});const t=m.appMenuList;t.push(p.key),m.setAppMenuList(t);const i=h.value[p.key];v.push({name:i})},g=()=>{v.push("/app_manage/app_store")};return(p,t)=>{const i=z,F=G,E=K,S=O,I=P,A=q;return M((l(),x("div",Z,[d.appList&&!n.value?(l(),x("div",ee,[e("div",te,[e("div",null,[e("div",se,s(a(o)("app")),1),e("div",ae,s(a(o)("versionInfo"))+" "+s(a(o)("currentVersion")),1)]),u(i,{onClick:g,class:"px-[15px]"},{default:c(()=>[oe,e("span",ne,s(a(o)("appStore")),1)]),_:1})]),e("div",pe,[(l(!0),x(D,null,T(d.appList,(r,B)=>(l(),x("div",{key:B,class:"app-item w-[280px] box-border !bg-[#fff] rounded-[6px] cursor-pointer mr-[20px] mb-[20px] overflow-hidden",onClick:fe=>L(r)},[e("div",ie,[u(F,{class:"w-[44px] h-[44px] rounded-[8px]",src:a(U)(r.icon),fit:"contain"},{error:c(()=>[re]),_:2},1032,["src"])]),e("div",le,[e("div",_e,s(r.title),1),u(E,{class:"box-item",effect:"light",content:r.desc,placement:"bottom-start"},{default:c(()=>[e("div",de,s(r.desc),1)]),_:2},1032,["content"])])],8,ce))),128)),!d.appList.length&&!n.value?(l(),j(I,{key:0,class:"mx-auto overview-empty"},{image:c(()=>[xe]),description:c(()=>[e("p",ue,[e("span",null,s(a(o)("descriptionLeft")),1),u(S,{type:"primary",onClick:g,class:"mx-[5px]"},{default:c(()=>[$(s(a(o)("link")),1)]),_:1}),e("span",null,s(a(o)("descriptionRight")),1)])]),_:1})):k("",!0)])])):k("",!0)])),[[A,n.value]])}}});const Be=X(me,[["__scopeId","data-v-e51b31c1"]]);export{Be as default};
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as _,r as d,h as m,c as p,e,w as o,F as u,G as f,u as h,N as v,aC as y,aD as b,_ as x}from"./index-b19d04dd.js";/* empty css *//* empty css */import{a as C}from"./attachment-b6d6fc85.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-6089139d.js";/* empty css */import"./sys-dbdff24e.js";import"./_plugin-vue_export-helper-c27b6911.js";const E={class:"main-container attachment-container"},tt=_({__name:"attachment",setup(V){const a=["image","video","icon"],r=d(a[0]);return(g,n)=>{const i=y,s=b,l=x;return m(),p("div",E,[e(l,{class:"box-card !border-none full-container",shadow:"never"},{default:o(()=>[e(s,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=t=>r.value=t),class:""},{default:o(()=>[(m(),p(u,null,f(a,(t,c)=>e(i,{label:h(v)(t),name:t,key:c},{default:o(()=>[e(C,{scene:"attachment",type:t},null,8,["type"])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})])}}});export{tt as default};
|
||||
import{d as _,r as d,h as m,c as p,e,w as o,F as u,G as f,u as h,N as v,aC as y,aD as b,_ as x}from"./index-4ce69858.js";/* empty css *//* empty css */import{a as C}from"./attachment-872c2aec.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-861395e6.js";/* empty css */import"./sys-e410b79c.js";import"./_plugin-vue_export-helper-c27b6911.js";const E={class:"main-container attachment-container"},tt=_({__name:"attachment",setup(V){const a=["image","video","icon"],r=d(a[0]);return(g,n)=>{const i=y,s=b,l=x;return m(),p("div",E,[e(l,{class:"box-card !border-none full-container",shadow:"never"},{default:o(()=>[e(s,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=t=>r.value=t),class:""},{default:o(()=>[(m(),p(u,null,f(a,(t,c)=>e(i,{label:h(v)(t),name:t,key:c},{default:o(()=>[e(C,{scene:"attachment",type:t},null,8,["type"])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})])}}});export{tt as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
niucloud/public/admin/assets/balance-cdc59b1d.js
Normal file
1
niucloud/public/admin/assets/balance-cdc59b1d.js
Normal file
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as D,O,r as v,n as x,h as i,c as E,a as b,t as u,u as r,y as I,I as d,w as t,e as n,N as s,B as f,i as p,F as S,G as W,aL as G,X as H,W as L,ay as j,az as P,aA as $,cN as M,_ as X,Y,E as q,$ as J}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{b as K,H as Q,I as Z}from"./member-358d18c9.js";const ee={class:"main-container"},ae={class:"flex ml-[18px] justify-between items-center mt-[20px]"},te={class:"text-[20px]"},oe=b("span",{class:"ml-2"},"%",-1),le={class:"fixed-footer-wrap"},se={class:"fixed-footer"},Ee=D({__name:"cash_out",setup(re){const k=O().meta.title,c=v(!0),g=v(),a=x({is_auto_transfer:"0",is_auto_verify:"0",is_open:"0",min:"0.01",rate:"0",transfer_type:[]}),h=v([]);(async()=>{h.value=await(await K()).data})(),(async(m=0)=>{const e=await(await Q()).data;Object.keys(a).forEach(o=>{e[o]!=null&&(a[o]=e[o])}),a.is_open=Boolean(Number(a.is_open)),c.value=!1})();const N=x({min:[{validator:(m,e,o)=>{Number(e)<.01?o(new Error(s("cashWithdrawalAmountHint"))):o()},trigger:"blur"}],rate:[{validator:(m,e,o)=>{Number(e)>100||Number(e)<0?o(new Error(s("commissionRatioHint"))):o()},trigger:"blur"}]}),R=async m=>{c.value||!m||await m.validate(e=>{if(e){const o={...a};o.is_open=Number(o.is_open).toString(),Z(o).then(()=>{c.value=!1}).catch(()=>{c.value=!1})}})};return(m,e)=>{const o=G,_=H,V=L,y=j,w=P,C=$,F=M,B=X,T=Y,z=q,A=J;return i(),E("div",ee,[b("div",ae,[b("span",te,u(r(k)),1)]),I((i(),d(T,{model:a,"label-width":"150px",ref_key:"ruleFormRef",ref:g,rules:N,class:"page-form"},{default:t(()=>[n(B,{class:"box-card !border-none",shadow:"never"},{default:t(()=>[n(_,{label:r(s)("isOpen")},{default:t(()=>[n(o,{modelValue:a.is_open,"onUpdate:modelValue":e[0]||(e[0]=l=>a.is_open=l)},null,8,["modelValue"])]),_:1},8,["label"]),a.is_open?(i(),d(_,{key:0,label:r(s)("cashWithdrawalAmount"),prop:"min"},{default:t(()=>[n(V,{modelValue:a.min,"onUpdate:modelValue":e[1]||(e[1]=l=>a.min=l),type:"number",class:"input-width",placeholder:r(s)("cashWithdrawalAmountPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:1,label:r(s)("commissionRatio"),prop:"rate"},{default:t(()=>[n(V,{modelValue:a.rate,"onUpdate:modelValue":e[2]||(e[2]=l=>a.rate=l),type:"number",class:"input-width",placeholder:r(s)("commissionRatioPlaceholder")},null,8,["modelValue","placeholder"]),oe]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:2,label:r(s)("audit"),class:"items-center"},{default:t(()=>[n(w,{modelValue:a.is_auto_verify,"onUpdate:modelValue":e[3]||(e[3]=l=>a.is_auto_verify=l)},{default:t(()=>[n(y,{label:"0",size:"large"},{default:t(()=>[p(u(r(s)("manualAudit")),1)]),_:1}),n(y,{label:"1",size:"large"},{default:t(()=>[p(u(r(s)("automaticAudit")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:3,label:r(s)("transfer"),class:"items-center"},{default:t(()=>[n(w,{modelValue:a.is_auto_transfer,"onUpdate:modelValue":e[4]||(e[4]=l=>a.is_auto_transfer=l)},{default:t(()=>[n(y,{label:"0",size:"large"},{default:t(()=>[p(u(r(s)("manualTransfer")),1)]),_:1}),n(y,{label:"1",size:"large"},{default:t(()=>[p(u(r(s)("automatedTransit")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:4,label:r(s)("transferMode"),class:"items-center"},{default:t(()=>[n(F,{modelValue:a.transfer_type,"onUpdate:modelValue":e[5]||(e[5]=l=>a.transfer_type=l),size:"large"},{default:t(()=>[(i(!0),E(S,null,W(h.value,(l,U)=>(i(),d(C,{label:l.key,key:"a"+U},{default:t(()=>[p(u(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0)]),_:1})]),_:1},8,["model","rules"])),[[A,c.value]]),b("div",le,[b("div",se,[n(z,{type:"primary",onClick:e[6]||(e[6]=l=>R(g.value))},{default:t(()=>[p(u(r(s)("save")),1)]),_:1})])])])}}});export{Ee as default};
|
||||
import{d as D,O,r as v,n as x,h as i,c as E,a as b,t as u,u as r,y as I,I as d,w as t,e as n,N as s,B as f,i as p,F as S,G as W,aL as G,X as H,W as L,ay as j,az as P,aA as $,cN as M,_ as X,Y,E as q,$ as J}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{b as K,H as Q,I as Z}from"./member-399a87da.js";const ee={class:"main-container"},ae={class:"flex ml-[18px] justify-between items-center mt-[20px]"},te={class:"text-[20px]"},oe=b("span",{class:"ml-2"},"%",-1),le={class:"fixed-footer-wrap"},se={class:"fixed-footer"},Ee=D({__name:"cash_out",setup(re){const k=O().meta.title,c=v(!0),g=v(),a=x({is_auto_transfer:"0",is_auto_verify:"0",is_open:"0",min:"0.01",rate:"0",transfer_type:[]}),h=v([]);(async()=>{h.value=await(await K()).data})(),(async(m=0)=>{const e=await(await Q()).data;Object.keys(a).forEach(o=>{e[o]!=null&&(a[o]=e[o])}),a.is_open=Boolean(Number(a.is_open)),c.value=!1})();const N=x({min:[{validator:(m,e,o)=>{Number(e)<.01?o(new Error(s("cashWithdrawalAmountHint"))):o()},trigger:"blur"}],rate:[{validator:(m,e,o)=>{Number(e)>100||Number(e)<0?o(new Error(s("commissionRatioHint"))):o()},trigger:"blur"}]}),R=async m=>{c.value||!m||await m.validate(e=>{if(e){const o={...a};o.is_open=Number(o.is_open).toString(),Z(o).then(()=>{c.value=!1}).catch(()=>{c.value=!1})}})};return(m,e)=>{const o=G,_=H,V=L,y=j,w=P,C=$,F=M,B=X,T=Y,z=q,A=J;return i(),E("div",ee,[b("div",ae,[b("span",te,u(r(k)),1)]),I((i(),d(T,{model:a,"label-width":"150px",ref_key:"ruleFormRef",ref:g,rules:N,class:"page-form"},{default:t(()=>[n(B,{class:"box-card !border-none",shadow:"never"},{default:t(()=>[n(_,{label:r(s)("isOpen")},{default:t(()=>[n(o,{modelValue:a.is_open,"onUpdate:modelValue":e[0]||(e[0]=l=>a.is_open=l)},null,8,["modelValue"])]),_:1},8,["label"]),a.is_open?(i(),d(_,{key:0,label:r(s)("cashWithdrawalAmount"),prop:"min"},{default:t(()=>[n(V,{modelValue:a.min,"onUpdate:modelValue":e[1]||(e[1]=l=>a.min=l),type:"number",class:"input-width",placeholder:r(s)("cashWithdrawalAmountPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:1,label:r(s)("commissionRatio"),prop:"rate"},{default:t(()=>[n(V,{modelValue:a.rate,"onUpdate:modelValue":e[2]||(e[2]=l=>a.rate=l),type:"number",class:"input-width",placeholder:r(s)("commissionRatioPlaceholder")},null,8,["modelValue","placeholder"]),oe]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:2,label:r(s)("audit"),class:"items-center"},{default:t(()=>[n(w,{modelValue:a.is_auto_verify,"onUpdate:modelValue":e[3]||(e[3]=l=>a.is_auto_verify=l)},{default:t(()=>[n(y,{label:"0",size:"large"},{default:t(()=>[p(u(r(s)("manualAudit")),1)]),_:1}),n(y,{label:"1",size:"large"},{default:t(()=>[p(u(r(s)("automaticAudit")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:3,label:r(s)("transfer"),class:"items-center"},{default:t(()=>[n(w,{modelValue:a.is_auto_transfer,"onUpdate:modelValue":e[4]||(e[4]=l=>a.is_auto_transfer=l)},{default:t(()=>[n(y,{label:"0",size:"large"},{default:t(()=>[p(u(r(s)("manualTransfer")),1)]),_:1}),n(y,{label:"1",size:"large"},{default:t(()=>[p(u(r(s)("automatedTransit")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0),a.is_open?(i(),d(_,{key:4,label:r(s)("transferMode"),class:"items-center"},{default:t(()=>[n(F,{modelValue:a.transfer_type,"onUpdate:modelValue":e[5]||(e[5]=l=>a.transfer_type=l),size:"large"},{default:t(()=>[(i(!0),E(S,null,W(h.value,(l,U)=>(i(),d(C,{label:l.key,key:"a"+U},{default:t(()=>[p(u(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label"])):f("",!0)]),_:1})]),_:1},8,["model","rules"])),[[A,c.value]]),b("div",le,[b("div",se,[n(z,{type:"primary",onClick:e[6]||(e[6]=l=>R(g.value))},{default:t(()=>[p(u(r(s)("save")),1)]),_:1})])])])}}});export{Ee as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as S,O as k,r as m,n as q,aK as I,s as N,a3 as d,N as e,y as D,h as R,c as B,a as n,t as l,u as s,e as o,w as a,X as F,W as V,_ as L,Y as U,$,p as j,g as K}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{q as M}from"./sys-dbdff24e.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";const P=""+new URL("preview-52aad803.png",import.meta.url).href,W=r=>(j("data-v-13e767fe"),r=r(),K(),r),X={class:"main-container"},Y={class:"flex ml-[18px] justify-between items-center mt-[20px]"},z={class:"text-[20px]"},A=W(()=>n("img",{class:"w-[500px]",src:P,alt:""},null,-1)),G=S({__name:"config",setup(r){const f=k().meta.title,p=m(!0),t=q({is_open:!1,request_url:""}),v=m();M().then(c=>{t.request_url=c.data.web_url+"/",p.value=!1});const{copy:g,isSupported:w,copied:i}=I(),h=c=>{if(!w.value){d({message:e("notSupportCopy"),type:"warning"});return}g(c)};N(i,()=>{i.value&&d({message:e("copySuccess"),type:"success"})});const y=()=>{window.open(t.request_url)};return(c,_)=>{const u=F,x=V,b=L,C=U,E=$;return D((R(),B("div",X,[n("div",Y,[n("span",z,l(s(f)),1)]),o(C,{model:t,"label-width":"150px",ref_key:"formRef",ref:v,class:"page-form"},{default:a(()=>[o(b,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[o(u,{label:s(e)("preview"),prop:"weapp_name"},{default:a(()=>[A]),_:1},8,["label"]),o(u,{label:s(e)("PCDomainName")},{default:a(()=>[o(x,{"model-value":t.request_url,class:"input-width",readonly:!0},{append:a(()=>[n("div",{class:"cursor-pointer",onClick:_[0]||(_[0]=J=>h(t.request_url))},l(s(e)("copy")),1)]),_:1},8,["model-value"]),n("span",{class:"ml-2 cursor-pointer visit-btn",onClick:y},l(s(e)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])])),[[E,p.value]])}}});const ne=O(G,[["__scopeId","data-v-13e767fe"]]);export{ne as default};
|
||||
import{d as S,O as k,r as m,n as q,aK as I,s as N,a3 as d,N as e,y as D,h as R,c as B,a as n,t as l,u as s,e as o,w as a,X as F,W as V,_ as L,Y as U,$,p as j,g as K}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{q as M}from"./sys-e410b79c.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";const P=""+new URL("preview-52aad803.png",import.meta.url).href,W=r=>(j("data-v-13e767fe"),r=r(),K(),r),X={class:"main-container"},Y={class:"flex ml-[18px] justify-between items-center mt-[20px]"},z={class:"text-[20px]"},A=W(()=>n("img",{class:"w-[500px]",src:P,alt:""},null,-1)),G=S({__name:"config",setup(r){const f=k().meta.title,p=m(!0),t=q({is_open:!1,request_url:""}),v=m();M().then(c=>{t.request_url=c.data.web_url+"/",p.value=!1});const{copy:g,isSupported:w,copied:i}=I(),h=c=>{if(!w.value){d({message:e("notSupportCopy"),type:"warning"});return}g(c)};N(i,()=>{i.value&&d({message:e("copySuccess"),type:"success"})});const y=()=>{window.open(t.request_url)};return(c,_)=>{const u=F,x=V,b=L,C=U,E=$;return D((R(),B("div",X,[n("div",Y,[n("span",z,l(s(f)),1)]),o(C,{model:t,"label-width":"150px",ref_key:"formRef",ref:v,class:"page-form"},{default:a(()=>[o(b,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[o(u,{label:s(e)("preview"),prop:"weapp_name"},{default:a(()=>[A]),_:1},8,["label"]),o(u,{label:s(e)("PCDomainName")},{default:a(()=>[o(x,{"model-value":t.request_url,class:"input-width",readonly:!0},{append:a(()=>[n("div",{class:"cursor-pointer",onClick:_[0]||(_[0]=J=>h(t.request_url))},l(s(e)("copy")),1)]),_:1},8,["model-value"]),n("span",{class:"ml-2 cursor-pointer visit-btn",onClick:y},l(s(e)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])])),[[E,p.value]])}}});const ne=O(G,[["__scopeId","data-v-13e767fe"]]);export{ne as default};
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{a2 as y,d as D,O as I,r as v,n as F,aK as O,s as R,a3 as g,N as a,h,c as $,a as n,t as u,u as l,y as j,I as H,w as i,e as r,i as L,aL as M,X as U,W as K,_ as T,Y as W,E as X,$ as Y}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{q as z}from"./sys-dbdff24e.js";import{_ as A}from"./_plugin-vue_export-helper-c27b6911.js";function G(){return y.get("channel/h5/config")}function J(_){return y.put("channel/h5/config",_,{showSuccessMessage:!0})}const P={class:"main-container"},Q={class:"flex ml-[18px] justify-between items-center mt-[20px]"},Z={class:"text-[20px]"},ee={class:"fixed-footer-wrap"},te={class:"fixed-footer"},oe=D({__name:"config",setup(_){const w=I().meta.title,s=v(!0),e=F({is_open:!0,request_url:""}),d=v();G().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),s.value=!1}),z().then(t=>{e.request_url=t.data.wap_url+"/"});const{copy:x,isSupported:b,copied:m}=O(),C=t=>{if(!b.value){g({message:a("notSupportCopy"),type:"warning"});return}x(t)};R(m,()=>{m.value&&g({message:a("copySuccess"),type:"success"})});const E=()=>{window.open(e.request_url)},k=async t=>{s.value||!t||await t.validate(async o=>{if(o){s.value=!0;const c={...e};c.is_open=Number(c.is_open),J(c).then(()=>{s.value=!1}).catch(()=>{s.value=!1})}})};return(t,o)=>{const c=M,f=U,N=K,q=T,V=W,B=X,S=Y;return h(),$("div",P,[n("div",Q,[n("span",Z,u(l(w)),1)]),j((h(),H(V,{model:e,"label-width":"150px",ref_key:"formRef",ref:d,class:"page-form"},{default:i(()=>[r(q,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[r(f,{label:l(a)("isOpen")},{default:i(()=>[r(c,{modelValue:e.is_open,"onUpdate:modelValue":o[0]||(o[0]=p=>e.is_open=p)},null,8,["modelValue"])]),_:1},8,["label"]),r(f,{label:l(a)("h5DomainName")},{default:i(()=>[r(N,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:i(()=>[n("div",{class:"cursor-pointer",onClick:o[1]||(o[1]=p=>C(e.request_url))},u(l(a)("copy")),1)]),_:1},8,["model-value"]),n("span",{class:"ml-2 cursor-pointer visit-btn",onClick:E},u(l(a)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[S,s.value]]),n("div",ee,[n("div",te,[r(B,{type:"primary",loading:s.value,onClick:o[2]||(o[2]=p=>k(d.value))},{default:i(()=>[L(u(l(a)("save")),1)]),_:1},8,["loading"])])])])}}});const me=A(oe,[["__scopeId","data-v-69e17aca"]]);export{me as default};
|
||||
import{a2 as y,d as D,O as I,r as v,n as F,aK as O,s as R,a3 as g,N as a,h,c as $,a as n,t as u,u as l,y as j,I as H,w as i,e as r,i as L,aL as M,X as U,W as K,_ as T,Y as W,E as X,$ as Y}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";/* empty css */import{q as z}from"./sys-e410b79c.js";import{_ as A}from"./_plugin-vue_export-helper-c27b6911.js";function G(){return y.get("channel/h5/config")}function J(_){return y.put("channel/h5/config",_,{showSuccessMessage:!0})}const P={class:"main-container"},Q={class:"flex ml-[18px] justify-between items-center mt-[20px]"},Z={class:"text-[20px]"},ee={class:"fixed-footer-wrap"},te={class:"fixed-footer"},oe=D({__name:"config",setup(_){const w=I().meta.title,s=v(!0),e=F({is_open:!0,request_url:""}),d=v();G().then(t=>{Object.assign(e,t.data),e.is_open=Boolean(Number(e.is_open)),s.value=!1}),z().then(t=>{e.request_url=t.data.wap_url+"/"});const{copy:x,isSupported:b,copied:m}=O(),C=t=>{if(!b.value){g({message:a("notSupportCopy"),type:"warning"});return}x(t)};R(m,()=>{m.value&&g({message:a("copySuccess"),type:"success"})});const E=()=>{window.open(e.request_url)},k=async t=>{s.value||!t||await t.validate(async o=>{if(o){s.value=!0;const c={...e};c.is_open=Number(c.is_open),J(c).then(()=>{s.value=!1}).catch(()=>{s.value=!1})}})};return(t,o)=>{const c=M,f=U,N=K,q=T,V=W,B=X,S=Y;return h(),$("div",P,[n("div",Q,[n("span",Z,u(l(w)),1)]),j((h(),H(V,{model:e,"label-width":"150px",ref_key:"formRef",ref:d,class:"page-form"},{default:i(()=>[r(q,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[r(f,{label:l(a)("isOpen")},{default:i(()=>[r(c,{modelValue:e.is_open,"onUpdate:modelValue":o[0]||(o[0]=p=>e.is_open=p)},null,8,["modelValue"])]),_:1},8,["label"]),r(f,{label:l(a)("h5DomainName")},{default:i(()=>[r(N,{"model-value":e.request_url,class:"input-width",readonly:!0},{append:i(()=>[n("div",{class:"cursor-pointer",onClick:o[1]||(o[1]=p=>C(e.request_url))},u(l(a)("copy")),1)]),_:1},8,["model-value"]),n("span",{class:"ml-2 cursor-pointer visit-btn",onClick:E},u(l(a)("clickVisit")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["model"])),[[S,s.value]]),n("div",ee,[n("div",te,[r(B,{type:"primary",loading:s.value,onClick:o[2]||(o[2]=p=>k(d.value))},{default:i(()=>[L(u(l(a)("save")),1)]),_:1},8,["loading"])])])])}}});const me=A(oe,[["__scopeId","data-v-69e17aca"]]);export{me as default};
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
import{d as k,r as g,n as f,N as o,h as v,c as U,y as E,I as P,w as i,e as a,a as c,t as u,u as t,i as D,X as N,W as R,_ as C,Y as B,E as F,$ as I}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{_ as L}from"./index-34e6dc3a.js";import{Q as S,R as O}from"./sys-dbdff24e.js";/* empty css */import"./index.vue_vue_type_style_index_0_lang-4806f3ef.js";/* empty css */import"./attachment-b6d6fc85.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-6089139d.js";/* empty css */import"./_plugin-vue_export-helper-c27b6911.js";const $={class:"main-container"},j={class:"panel-title !text-sm"},q={class:"panel-title !text-sm"},Q={class:"fixed-footer-wrap"},T={class:"fixed-footer"},Ve=k({__name:"copyright",setup(W){const n=g(!0),l=f({icp:"",gov_record:"",gov_url:"",market_supervision_url:"",logo:"",company_name:"",copyright_link:"",copyright_desc:""});(async(m=0)=>{const e=await(await S()).data;Object.keys(l).forEach(p=>{e[p]!=null&&(l[p]=e[p])}),n.value=!1})();const _=g(),b=f({site_name:[{required:!0,message:o("siteNamePlaceholder"),trigger:"blur"}]}),y=async m=>{n.value||!m||await m.validate(async e=>{e&&(n.value=!0,O(l).then(()=>{n.value=!1}).catch(()=>{n.value=!1}))})};return(m,e)=>{const p=L,d=N,s=R,h=C,V=B,w=F,x=I;return v(),U("div",$,[E((v(),P(V,{model:l,"label-width":"150px",ref_key:"formRef",ref:_,rules:b,class:"page-form"},{default:i(()=>[a(h,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[c("h3",j,u(t(o)("copyrightEdit")),1),a(d,{label:t(o)("logo")},{default:i(()=>[a(p,{modelValue:l.logo,"onUpdate:modelValue":e[0]||(e[0]=r=>l.logo=r)},null,8,["modelValue"])]),_:1},8,["label"]),a(d,{label:t(o)("companyName"),prop:"company_name"},{default:i(()=>[a(s,{modelValue:l.company_name,"onUpdate:modelValue":e[1]||(e[1]=r=>l.company_name=r),placeholder:t(o)("companyNamePlaceholder"),class:"input-width",clearable:"",maxlength:"30"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("copyrightLink")},{default:i(()=>[a(s,{modelValue:l.copyright_link,"onUpdate:modelValue":e[2]||(e[2]=r=>l.copyright_link=r),placeholder:t(o)("copyrightLinkPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("copyrightDesc")},{default:i(()=>[a(s,{modelValue:l.copyright_desc,"onUpdate:modelValue":e[3]||(e[3]=r=>l.copyright_desc=r),type:"textarea",rows:"4",clearable:"",placeholder:t(o)("copyrightDescPlaceholder"),class:"input-width",maxlength:"150"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1}),a(h,{class:"box-card !border-none mt-[16px]",shadow:"never"},{default:i(()=>[c("h3",q,u(t(o)("putOnRecordEdit")),1),a(d,{label:t(o)("icp"),prop:"icp"},{default:i(()=>[a(s,{modelValue:l.icp,"onUpdate:modelValue":e[4]||(e[4]=r=>l.icp=r),placeholder:t(o)("icpPlaceholder"),class:"input-width",clearable:"",maxlength:"20"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("govRecord")},{default:i(()=>[a(s,{modelValue:l.gov_record,"onUpdate:modelValue":e[5]||(e[5]=r=>l.gov_record=r),placeholder:t(o)("govRecordPlaceholder"),class:"input-width",clearable:"",maxlength:"50"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("govUrl")},{default:i(()=>[a(s,{modelValue:l.gov_url,"onUpdate:modelValue":e[6]||(e[6]=r=>l.gov_url=r),placeholder:t(o)("govUrlPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("marketSupervisionUrl")},{default:i(()=>[a(s,{modelValue:l.market_supervision_url,"onUpdate:modelValue":e[7]||(e[7]=r=>l.market_supervision_url=r),rows:"4",clearable:"",placeholder:t(o)("marketSupervisionUrlPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["model","rules"])),[[x,n.value]]),c("div",Q,[c("div",T,[a(w,{type:"primary",loading:n.value,onClick:e[8]||(e[8]=r=>y(_.value))},{default:i(()=>[D(u(t(o)("save")),1)]),_:1},8,["loading"])])])])}}});export{Ve as default};
|
||||
import{d as k,r as g,n as f,N as o,h as v,c as U,y as E,I as P,w as i,e as a,a as c,t as u,u as t,i as D,X as N,W as R,_ as C,Y as B,E as F,$ as I}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{_ as L}from"./index-c520c584.js";import{Q as S,R as O}from"./sys-e410b79c.js";/* empty css */import"./index.vue_vue_type_style_index_0_lang-59777cba.js";/* empty css */import"./attachment-872c2aec.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-861395e6.js";/* empty css */import"./_plugin-vue_export-helper-c27b6911.js";const $={class:"main-container"},j={class:"panel-title !text-sm"},q={class:"panel-title !text-sm"},Q={class:"fixed-footer-wrap"},T={class:"fixed-footer"},Ve=k({__name:"copyright",setup(W){const n=g(!0),l=f({icp:"",gov_record:"",gov_url:"",market_supervision_url:"",logo:"",company_name:"",copyright_link:"",copyright_desc:""});(async(m=0)=>{const e=await(await S()).data;Object.keys(l).forEach(p=>{e[p]!=null&&(l[p]=e[p])}),n.value=!1})();const _=g(),b=f({site_name:[{required:!0,message:o("siteNamePlaceholder"),trigger:"blur"}]}),y=async m=>{n.value||!m||await m.validate(async e=>{e&&(n.value=!0,O(l).then(()=>{n.value=!1}).catch(()=>{n.value=!1}))})};return(m,e)=>{const p=L,d=N,s=R,h=C,V=B,w=F,x=I;return v(),U("div",$,[E((v(),P(V,{model:l,"label-width":"150px",ref_key:"formRef",ref:_,rules:b,class:"page-form"},{default:i(()=>[a(h,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[c("h3",j,u(t(o)("copyrightEdit")),1),a(d,{label:t(o)("logo")},{default:i(()=>[a(p,{modelValue:l.logo,"onUpdate:modelValue":e[0]||(e[0]=r=>l.logo=r)},null,8,["modelValue"])]),_:1},8,["label"]),a(d,{label:t(o)("companyName"),prop:"company_name"},{default:i(()=>[a(s,{modelValue:l.company_name,"onUpdate:modelValue":e[1]||(e[1]=r=>l.company_name=r),placeholder:t(o)("companyNamePlaceholder"),class:"input-width",clearable:"",maxlength:"30"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("copyrightLink")},{default:i(()=>[a(s,{modelValue:l.copyright_link,"onUpdate:modelValue":e[2]||(e[2]=r=>l.copyright_link=r),placeholder:t(o)("copyrightLinkPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("copyrightDesc")},{default:i(()=>[a(s,{modelValue:l.copyright_desc,"onUpdate:modelValue":e[3]||(e[3]=r=>l.copyright_desc=r),type:"textarea",rows:"4",clearable:"",placeholder:t(o)("copyrightDescPlaceholder"),class:"input-width",maxlength:"150"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1}),a(h,{class:"box-card !border-none mt-[16px]",shadow:"never"},{default:i(()=>[c("h3",q,u(t(o)("putOnRecordEdit")),1),a(d,{label:t(o)("icp"),prop:"icp"},{default:i(()=>[a(s,{modelValue:l.icp,"onUpdate:modelValue":e[4]||(e[4]=r=>l.icp=r),placeholder:t(o)("icpPlaceholder"),class:"input-width",clearable:"",maxlength:"20"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("govRecord")},{default:i(()=>[a(s,{modelValue:l.gov_record,"onUpdate:modelValue":e[5]||(e[5]=r=>l.gov_record=r),placeholder:t(o)("govRecordPlaceholder"),class:"input-width",clearable:"",maxlength:"50"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("govUrl")},{default:i(()=>[a(s,{modelValue:l.gov_url,"onUpdate:modelValue":e[6]||(e[6]=r=>l.gov_url=r),placeholder:t(o)("govUrlPlaceholder"),class:"input-width",clearable:""},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(d,{label:t(o)("marketSupervisionUrl")},{default:i(()=>[a(s,{modelValue:l.market_supervision_url,"onUpdate:modelValue":e[7]||(e[7]=r=>l.market_supervision_url=r),rows:"4",clearable:"",placeholder:t(o)("marketSupervisionUrlPlaceholder"),class:"input-width"},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["model","rules"])),[[x,n.value]]),c("div",Q,[c("div",T,[a(w,{type:"primary",loading:n.value,onClick:e[8]||(e[8]=r=>y(_.value))},{default:i(()=>[D(u(t(o)("save")),1)]),_:1},8,["loading"])])])])}}});export{Ve as default};
|
||||
@ -1 +1 @@
|
||||
import{d as w,O as u,f,r as g,n as v,h as y,c as b,a as t,u as s,t as e,N as n,e as c,w as r,i as o,E as T,_ as k}from"./index-b19d04dd.js";/* empty css *//* empty css */import{g as E}from"./wechat-1d393ae2.js";const O=""+new URL("wechat_1-0a26d3a6.png",import.meta.url).href,R=""+new URL("wechat_4-94a271d5.png",import.meta.url).href,C=""+new URL("wechat_2-0513f476.png",import.meta.url).href,j=""+new URL("wechat_3-0a96f3fe.png",import.meta.url).href,L={class:"main-container"},N={class:"detail-head"},U=t("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),B={class:"ml-[1px]"},q=t("span",{class:"adorn"},"|",-1),V={class:"right"},D={class:"mt-[20px]"},P={class:"flex"},S=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),z={class:"flex items-center text-[14px]"},A=t("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),K=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:O})],-1),W={class:"flex items-center text-[14px] mt-[20px]"},$=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:R})],-1),F={class:"flex mt-[40px]"},G=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),H={class:"flex items-center text-[14px]"},I=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:C})],-1),J={class:"flex mt-[40px]"},M=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),Q={class:"flex items-center text-[14px]"},X={class:"text-primary"},Y=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:j})],-1),at=w({__name:"course",setup(Z){const p=u().meta.title,_=f(),l=g(!0),d=v({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});E().then(i=>{Object.assign(d,i.data),l.value=!1});const m=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(i,a)=>{const x=T,h=k;return y(),b("div",L,[t("div",N,[t("div",{class:"left",onClick:a[0]||(a[0]=st=>s(_).push({path:"/channel/wechat"}))},[U,t("span",B,e(s(n)("returnToPreviousPage")),1)]),q,t("span",V,e(s(p)),1)]),c(h,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[t("div",D,[t("div",P,[S,t("div",null,[t("p",z,[o(e(s(n)("writingTipsOne1"))+"--",1),c(x,{link:"",type:"primary",onClick:m},{default:r(()=>[o(e(s(n)("writingTipsOne2")),1)]),_:1}),o(", "+e(s(n)("writingTipsOne3")),1),A,o(e(s(n)("writingTipsOne4")),1)]),K,t("p",W,e(s(n)("writingTipsOne5")),1),$])]),t("div",F,[G,t("div",null,[t("p",H,e(s(n)("writingTipsTwo1")),1),I])]),t("div",J,[M,t("div",null,[t("p",Q,[o(e(s(n)("writingTipsThree1")),1),t("span",X,e(s(n)("writingTipsThree2")),1)]),Y])])])]),_:1})])}}});export{at as default};
|
||||
import{d as w,O as u,f,r as g,n as v,h as y,c as b,a as t,u as s,t as e,N as n,e as c,w as r,i as o,E as T,_ as k}from"./index-4ce69858.js";/* empty css *//* empty css */import{g as E}from"./wechat-bce3215c.js";const O=""+new URL("wechat_1-0a26d3a6.png",import.meta.url).href,R=""+new URL("wechat_4-94a271d5.png",import.meta.url).href,C=""+new URL("wechat_2-0513f476.png",import.meta.url).href,j=""+new URL("wechat_3-0a96f3fe.png",import.meta.url).href,L={class:"main-container"},N={class:"detail-head"},U=t("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),B={class:"ml-[1px]"},q=t("span",{class:"adorn"},"|",-1),V={class:"right"},D={class:"mt-[20px]"},P={class:"flex"},S=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),z={class:"flex items-center text-[14px]"},A=t("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),K=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:O})],-1),W={class:"flex items-center text-[14px] mt-[20px]"},$=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:R})],-1),F={class:"flex mt-[40px]"},G=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),H={class:"flex items-center text-[14px]"},I=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:C})],-1),J={class:"flex mt-[40px]"},M=t("div",{class:"min-w-[60px]"},[t("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),Q={class:"flex items-center text-[14px]"},X={class:"text-primary"},Y=t("div",{class:"w-[100%] mt-[10px]"},[t("img",{class:"w-[100%]",src:j})],-1),at=w({__name:"course",setup(Z){const p=u().meta.title,_=f(),l=g(!0),d=v({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});E().then(i=>{Object.assign(d,i.data),l.value=!1});const m=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(i,a)=>{const x=T,h=k;return y(),b("div",L,[t("div",N,[t("div",{class:"left",onClick:a[0]||(a[0]=st=>s(_).push({path:"/channel/wechat"}))},[U,t("span",B,e(s(n)("returnToPreviousPage")),1)]),q,t("span",V,e(s(p)),1)]),c(h,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[t("div",D,[t("div",P,[S,t("div",null,[t("p",z,[o(e(s(n)("writingTipsOne1"))+"--",1),c(x,{link:"",type:"primary",onClick:m},{default:r(()=>[o(e(s(n)("writingTipsOne2")),1)]),_:1}),o(", "+e(s(n)("writingTipsOne3")),1),A,o(e(s(n)("writingTipsOne4")),1)]),K,t("p",W,e(s(n)("writingTipsOne5")),1),$])]),t("div",F,[G,t("div",null,[t("p",H,e(s(n)("writingTipsTwo1")),1),I])]),t("div",J,[M,t("div",null,[t("p",Q,[o(e(s(n)("writingTipsThree1")),1),t("span",X,e(s(n)("writingTipsThree2")),1)]),Y])])])]),_:1})])}}});export{at as default};
|
||||
@ -1 +1 @@
|
||||
import{d as m,O as h,f as u,h as w,c as f,a as s,u as t,t as e,N as n,e as r,w as a,i,E as v,_ as g}from"./index-b19d04dd.js";/* empty css *//* empty css */const y=""+new URL("weapp_1-7017a047.png",import.meta.url).href,b=""+new URL("weapp_2-8fac7fa5.png",import.meta.url).href,T=""+new URL("weapp_3-07a2249e.png",import.meta.url).href,k=""+new URL("weapp_4-d837a9b1.png",import.meta.url).href,E={class:"main-container"},R={class:"detail-head"},j=s("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),C={class:"ml-[1px]"},L=s("span",{class:"adorn"},"|",-1),N={class:"right"},U={class:"mt-[20px]"},B={class:"flex"},O=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),V={class:"flex items-center text-[14px]"},q=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:y})],-1),F={class:"flex mt-[40px]"},P=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),S={class:"flex items-center text-[14px]"},z=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:b})],-1),A={class:"flex mt-[40px]"},D=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),K={class:"flex items-center text-[14px]"},$={class:"text-primary"},G=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:T})],-1),H={class:"flex mt-[40px]"},I=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"4")],-1),J={class:"flex items-center text-[14px]"},M=s("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),Q=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:k})],-1),es=m({__name:"course",setup(W){const c=h(),p=u(),l=c.meta.title,d=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(X,o)=>{const _=v,x=g;return w(),f("div",E,[s("div",R,[s("div",{class:"left",onClick:o[0]||(o[0]=Y=>t(p).push({path:"/channel/weapp"}))},[j,s("span",C,e(t(n)("returnToPreviousPage")),1)]),L,s("span",N,e(t(l)),1)]),r(x,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[s("div",U,[s("div",B,[O,s("div",null,[s("p",V,[i(e(t(n)("writingTipsOne1")),1),r(_,{link:"",type:"primary",onClick:d},{default:a(()=>[i(e(t(n)("writingTipsOne2")),1)]),_:1}),i(","+e(t(n)("writingTipsOne3")),1)]),q])]),s("div",F,[P,s("div",null,[s("p",S,e(t(n)("writingTipsTwo1")),1),z])]),s("div",A,[D,s("div",null,[s("p",K,[i(e(t(n)("writingTipsThree1")),1),s("span",$,e(t(n)("writingTipsThree2")),1)]),G])]),s("div",H,[I,s("div",null,[s("p",J,[i(e(t(n)("writingTipsFour1")),1),M,i(e(t(n)("writingTipsFour2")),1)]),Q])])])]),_:1})])}}});export{es as default};
|
||||
import{d as m,O as h,f as u,h as w,c as f,a as s,u as t,t as e,N as n,e as r,w as a,i,E as v,_ as g}from"./index-4ce69858.js";/* empty css *//* empty css */const y=""+new URL("weapp_1-7017a047.png",import.meta.url).href,b=""+new URL("weapp_2-8fac7fa5.png",import.meta.url).href,T=""+new URL("weapp_3-07a2249e.png",import.meta.url).href,k=""+new URL("weapp_4-d837a9b1.png",import.meta.url).href,E={class:"main-container"},R={class:"detail-head"},j=s("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),C={class:"ml-[1px]"},L=s("span",{class:"adorn"},"|",-1),N={class:"right"},U={class:"mt-[20px]"},B={class:"flex"},O=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),V={class:"flex items-center text-[14px]"},q=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:y})],-1),F={class:"flex mt-[40px]"},P=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),S={class:"flex items-center text-[14px]"},z=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:b})],-1),A={class:"flex mt-[40px]"},D=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),K={class:"flex items-center text-[14px]"},$={class:"text-primary"},G=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:T})],-1),H={class:"flex mt-[40px]"},I=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"4")],-1),J={class:"flex items-center text-[14px]"},M=s("span",{class:"text-primary"},"URL / Token / EncondingAESKey",-1),Q=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:k})],-1),es=m({__name:"course",setup(W){const c=h(),p=u(),l=c.meta.title,d=()=>{window.open("https://mp.weixin.qq.com/","_blank")};return(X,o)=>{const _=v,x=g;return w(),f("div",E,[s("div",R,[s("div",{class:"left",onClick:o[0]||(o[0]=Y=>t(p).push({path:"/channel/weapp"}))},[j,s("span",C,e(t(n)("returnToPreviousPage")),1)]),L,s("span",N,e(t(l)),1)]),r(x,{class:"box-card !border-none",shadow:"never"},{default:a(()=>[s("div",U,[s("div",B,[O,s("div",null,[s("p",V,[i(e(t(n)("writingTipsOne1")),1),r(_,{link:"",type:"primary",onClick:d},{default:a(()=>[i(e(t(n)("writingTipsOne2")),1)]),_:1}),i(","+e(t(n)("writingTipsOne3")),1)]),q])]),s("div",F,[P,s("div",null,[s("p",S,e(t(n)("writingTipsTwo1")),1),z])]),s("div",A,[D,s("div",null,[s("p",K,[i(e(t(n)("writingTipsThree1")),1),s("span",$,e(t(n)("writingTipsThree2")),1)]),G])]),s("div",H,[I,s("div",null,[s("p",J,[i(e(t(n)("writingTipsFour1")),1),M,i(e(t(n)("writingTipsFour2")),1)]),Q])])])]),_:1})])}}});export{es as default};
|
||||
@ -1 +1 @@
|
||||
import{d as g,O as y,f as v,r as b,n as C,h as R,c as T,a as s,u as t,t as e,N as a,e as o,w as i,i as c,E as k,am as L,an as U,_ as j}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css */import{g as E}from"./wechat-1d393ae2.js";const N=""+new URL("alipay1-029c00a2.png",import.meta.url).href,O=""+new URL("alipay2-f74219b9.png",import.meta.url).href,B=""+new URL("alipay3-0895ce6e.png",import.meta.url).href,V=""+new URL("alipay4-92fef352.png",import.meta.url).href,D=""+new URL("alipay4_1-ad9b08e3.jpg",import.meta.url).href,P=""+new URL("alipay4_2-cbaa820b.jpg",import.meta.url).href,q=""+new URL("alipay4_3-4a213289.jpg",import.meta.url).href,z=""+new URL("alipay4_4-7924cbdd.jpg",import.meta.url).href,S=""+new URL("alipay5-6dba1989.png",import.meta.url).href,W=""+new URL("alipay6-f1e18995.png",import.meta.url).href,$=""+new URL("alipay7-c805d7c0.png",import.meta.url).href,A=""+new URL("alipay8-3097d150.png",import.meta.url).href,F={class:"main-container"},G={class:"detail-head"},H=s("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),I={class:"ml-[1px]"},J=s("span",{class:"adorn"},"|",-1),K={class:"right"},M={class:"mt-[20px]"},Q={class:"flex"},X=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),Y={class:"flex items-center text-[14px]"},Z=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:N})],-1),ss={class:"flex items-center text-[14px] mt-[20px]"},ts=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:O})],-1),es=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:B})],-1),as={class:"flex mt-[40px]"},os=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),is={class:"flex items-center text-[14px]"},ns={class:"w-[100%] mt-[10px] flex flex-wrap"},cs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:V})],-1),rs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:D})],-1),ps=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:P})],-1),ls=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:q})],-1),_s=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:z})],-1),ds={class:"flex mt-[40px]"},ms=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),xs={class:"flex items-center text-[14px]"},hs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:S})],-1),us=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:W})],-1),ws={class:"flex items-center text-[14px] mt-[20px]"},fs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:$})],-1),gs={class:"flex items-center text-[14px] mt-[20px]"},ys=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:A})],-1),Us=g({__name:"course",setup(vs){const l=y(),_=v(),d=l.meta.title,m=b(!0),x=C({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});E().then(r=>{Object.assign(x,r.data),m.value=!1});const h=()=>{window.open("https://open.alipay.com/develop/manage","_blank")};return(r,p)=>{const u=k,n=L,w=U,f=j;return R(),T("div",F,[s("div",G,[s("div",{class:"left",onClick:p[0]||(p[0]=bs=>t(_).push({path:"/channel/aliapp"}))},[H,s("span",I,e(t(a)("returnToPreviousPage")),1)]),J,s("span",K,e(t(d)),1)]),o(f,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[s("div",M,[s("div",Q,[X,s("div",null,[s("p",Y,[c(e(t(a)("alipayCourseTipsOne1"))+"--",1),o(u,{link:"",type:"primary",onClick:h},{default:i(()=>[c(e(t(a)("alipayCourseTipsOne2")),1)]),_:1}),c(", "+e(t(a)("alipayCourseTipsOne3")),1)]),Z,s("p",ss,e(t(a)("alipayCourseTipsTwo1")),1),ts,es])]),s("div",as,[os,s("div",null,[s("p",is,e(t(a)("alipayCourseTipsTwo2")),1),s("div",ns,[cs,s("div",null,[o(w,{gutter:20},{default:i(()=>[o(n,{span:6},{default:i(()=>[rs]),_:1}),o(n,{span:6},{default:i(()=>[ps]),_:1}),o(n,{span:6},{default:i(()=>[ls]),_:1}),o(n,{span:6},{default:i(()=>[_s]),_:1})]),_:1})])])])]),s("div",ds,[ms,s("div",null,[s("p",xs,e(t(a)("alipayCourseTipsThree1")),1),hs,us,s("p",ws,e(t(a)("alipayCourseTipsThree2")),1),fs,s("p",gs,e(t(a)("alipayCourseTipsThree3")),1),ys])])])]),_:1})])}}});export{Us as default};
|
||||
import{d as g,O as y,f as v,r as b,n as C,h as R,c as T,a as s,u as t,t as e,N as a,e as o,w as i,i as c,E as k,an as L,ao as U,_ as j}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css */import{g as E}from"./wechat-bce3215c.js";const N=""+new URL("alipay1-029c00a2.png",import.meta.url).href,O=""+new URL("alipay2-f74219b9.png",import.meta.url).href,B=""+new URL("alipay3-0895ce6e.png",import.meta.url).href,V=""+new URL("alipay4-92fef352.png",import.meta.url).href,D=""+new URL("alipay4_1-ad9b08e3.jpg",import.meta.url).href,P=""+new URL("alipay4_2-cbaa820b.jpg",import.meta.url).href,q=""+new URL("alipay4_3-4a213289.jpg",import.meta.url).href,z=""+new URL("alipay4_4-7924cbdd.jpg",import.meta.url).href,S=""+new URL("alipay5-6dba1989.png",import.meta.url).href,W=""+new URL("alipay6-f1e18995.png",import.meta.url).href,$=""+new URL("alipay7-c805d7c0.png",import.meta.url).href,A=""+new URL("alipay8-3097d150.png",import.meta.url).href,F={class:"main-container"},G={class:"detail-head"},H=s("span",{class:"iconfont iconxiangzuojiantou !text-xs"},null,-1),I={class:"ml-[1px]"},J=s("span",{class:"adorn"},"|",-1),K={class:"right"},M={class:"mt-[20px]"},Q={class:"flex"},X=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"1")],-1),Y={class:"flex items-center text-[14px]"},Z=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:N})],-1),ss={class:"flex items-center text-[14px] mt-[20px]"},ts=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:O})],-1),es=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:B})],-1),as={class:"flex mt-[40px]"},os=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"2")],-1),is={class:"flex items-center text-[14px]"},ns={class:"w-[100%] mt-[10px] flex flex-wrap"},cs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:V})],-1),rs=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:D})],-1),ps=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:P})],-1),ls=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:q})],-1),_s=s("div",{class:"w-[100%]"},[s("img",{class:"w-[100%]",src:z})],-1),ds={class:"flex mt-[40px]"},ms=s("div",{class:"min-w-[60px]"},[s("span",{class:"flex justify-center items-center block w-[40px] h-[40px] border-[1px] border-primary rounded-[999px] text-primary"},"3")],-1),xs={class:"flex items-center text-[14px]"},hs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:S})],-1),us=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:W})],-1),ws={class:"flex items-center text-[14px] mt-[20px]"},fs=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:$})],-1),gs={class:"flex items-center text-[14px] mt-[20px]"},ys=s("div",{class:"w-[100%] mt-[10px]"},[s("img",{class:"w-[100%]",src:A})],-1),Us=g({__name:"course",setup(vs){const l=y(),_=v(),d=l.meta.title,m=b(!0),x=C({wechat_name:"",wechat_original:"",app_id:"",app_secret:"",qr_code:"",token:"",encoding_aes_key:"",encryption_type:"not_encrypt"});E().then(r=>{Object.assign(x,r.data),m.value=!1});const h=()=>{window.open("https://open.alipay.com/develop/manage","_blank")};return(r,p)=>{const u=k,n=L,w=U,f=j;return R(),T("div",F,[s("div",G,[s("div",{class:"left",onClick:p[0]||(p[0]=bs=>t(_).push({path:"/channel/aliapp"}))},[H,s("span",I,e(t(a)("returnToPreviousPage")),1)]),J,s("span",K,e(t(d)),1)]),o(f,{class:"box-card !border-none",shadow:"never"},{default:i(()=>[s("div",M,[s("div",Q,[X,s("div",null,[s("p",Y,[c(e(t(a)("alipayCourseTipsOne1"))+"--",1),o(u,{link:"",type:"primary",onClick:h},{default:i(()=>[c(e(t(a)("alipayCourseTipsOne2")),1)]),_:1}),c(", "+e(t(a)("alipayCourseTipsOne3")),1)]),Z,s("p",ss,e(t(a)("alipayCourseTipsTwo1")),1),ts,es])]),s("div",as,[os,s("div",null,[s("p",is,e(t(a)("alipayCourseTipsTwo2")),1),s("div",ns,[cs,s("div",null,[o(w,{gutter:20},{default:i(()=>[o(n,{span:6},{default:i(()=>[rs]),_:1}),o(n,{span:6},{default:i(()=>[ps]),_:1}),o(n,{span:6},{default:i(()=>[ls]),_:1}),o(n,{span:6},{default:i(()=>[_s]),_:1})]),_:1})])])])]),s("div",ds,[ms,s("div",null,[s("p",xs,e(t(a)("alipayCourseTipsThree1")),1),hs,us,s("p",ws,e(t(a)("alipayCourseTipsThree2")),1),fs,s("p",gs,e(t(a)("alipayCourseTipsThree3")),1),ys])])])]),_:1})])}}});export{Us as default};
|
||||
@ -1 +1 @@
|
||||
import{d as T,n as z,r as k,h as c,c as h,e as a,w as r,u as o,N as n,i as p,t as i,a as b,y as F,I as $,W as B,X as N,cJ as Y,E as U,Y as I,_ as L,ag as S,ai as j,as as H,$ as M}from"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{S as R}from"./sys-dbdff24e.js";import{_ as J}from"./cron-info.vue_vue_type_script_setup_true_lang-86542322.js";/* empty css */const W={class:"main-container"},X={class:"mt-[16px]"},q={key:0},A={key:1},G={class:"mt-[16px] flex justify-end"},he=T({__name:"cron",setup(K){const e=z({page:1,limit:10,total:0,loading:!0,data:[],searchParam:{title:"",type:"",last_time:""}}),y=k(),m=(d=1)=>{e.loading=!0,e.page=d,R({page:e.page,limit:e.limit,...e.searchParam}).then(l=>{e.loading=!1,e.data=l.data.data,e.total=l.data.total}).catch(()=>{e.loading=!1})};m();const _=k(null),w=d=>{_.value.setFormData(d),_.value.showDialog=!0};return(d,l)=>{const x=B,u=N,C=Y,f=U,D=I,v=L,s=S,E=j,P=H,V=M;return c(),h("div",W,[a(v,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[a(v,{class:"box-card !border-none my-[16px] table-search-wrap",shadow:"never"},{default:r(()=>[a(D,{inline:!0,model:e.searchParam,ref_key:"searchFormRef",ref:y},{default:r(()=>[a(u,{label:o(n)("title"),prop:"title"},{default:r(()=>[a(x,{modelValue:e.searchParam.title,"onUpdate:modelValue":l[0]||(l[0]=t=>e.searchParam.title=t),placeholder:o(n)("titlePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(u,{label:o(n)("lastTime"),prop:"last_time"},{default:r(()=>[a(C,{modelValue:e.searchParam.last_time,"onUpdate:modelValue":l[1]||(l[1]=t=>e.searchParam.last_time=t),type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss","start-placeholder":o(n)("startDate"),"end-placeholder":o(n)("endDate")},null,8,["modelValue","start-placeholder","end-placeholder"])]),_:1},8,["label"]),a(u,null,{default:r(()=>[a(f,{type:"primary",onClick:l[2]||(l[2]=t=>m())},{default:r(()=>[p(i(o(n)("search")),1)]),_:1}),a(f,{onClick:l[3]||(l[3]=t=>{var g;return(g=y.value)==null?void 0:g.resetFields()})},{default:r(()=>[p(i(o(n)("reset")),1)]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),b("div",X,[F((c(),$(E,{data:e.data,size:"large"},{empty:r(()=>[b("span",null,i(e.loading?"":o(n)("emptyData")),1)]),default:r(()=>[a(s,{prop:"title","show-overflow-tooltip":!0,label:o(n)("title"),"min-width":"150"},null,8,["label"]),a(s,{prop:"type_name",label:o(n)("typeName"),"min-width":"120"},null,8,["label"]),a(s,{label:o(n)("crondType"),"min-width":"180",align:"center"},{default:r(({row:t})=>[t.type=="crond"?(c(),h("span",q,i(t.crond_length)+i(t.crond_type_name),1)):(c(),h("span",A,i(o(n)("cron")),1))]),_:1},8,["label"]),a(s,{prop:"count",label:o(n)("count"),"min-width":"120"},null,8,["label"]),a(s,{label:o(n)("lastTime"),"min-width":"180",align:"center"},{default:r(({row:t})=>[p(i(t.last_time||""),1)]),_:1},8,["label"]),a(s,{label:o(n)("nextTime"),"min-width":"180",align:"center"},{default:r(({row:t})=>[p(i(t.next_time||""),1)]),_:1},8,["label"]),a(s,{label:o(n)("operation"),align:"right",fixed:"right",width:"100"},{default:r(({row:t})=>[a(f,{type:"primary",link:"",onClick:g=>w(t)},{default:r(()=>[p(i(o(n)("info")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[V,e.loading]]),b("div",G,[a(P,{"current-page":e.page,"onUpdate:current-page":l[4]||(l[4]=t=>e.page=t),"page-size":e.limit,"onUpdate:page-size":l[5]||(l[5]=t=>e.limit=t),layout:"total, sizes, prev, pager, next, jumper",total:e.total,onSizeChange:l[6]||(l[6]=t=>m()),onCurrentChange:m},null,8,["current-page","page-size","total"])])])]),_:1}),a(J,{ref_key:"cronDialog",ref:_,onComplete:m},null,512)])}}});export{he as default};
|
||||
import{d as T,n as z,r as k,h as c,c as h,e as a,w as r,u as o,N as n,i as p,t as i,a as b,y as F,I as $,W as B,X as N,cJ as Y,E as U,Y as j,_ as I,ah as L,aj as S,a4 as H,$ as M}from"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-4ed993c7.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";import{S as R}from"./sys-e410b79c.js";import{_ as J}from"./cron-info.vue_vue_type_script_setup_true_lang-67dd29a7.js";/* empty css */const W={class:"main-container"},X={class:"mt-[16px]"},q={key:0},A={key:1},G={class:"mt-[16px] flex justify-end"},he=T({__name:"cron",setup(K){const e=z({page:1,limit:10,total:0,loading:!0,data:[],searchParam:{title:"",type:"",last_time:""}}),y=k(),m=(d=1)=>{e.loading=!0,e.page=d,R({page:e.page,limit:e.limit,...e.searchParam}).then(l=>{e.loading=!1,e.data=l.data.data,e.total=l.data.total}).catch(()=>{e.loading=!1})};m();const _=k(null),w=d=>{_.value.setFormData(d),_.value.showDialog=!0};return(d,l)=>{const x=B,u=N,C=Y,f=U,D=j,v=I,s=L,E=S,P=H,V=M;return c(),h("div",W,[a(v,{class:"box-card !border-none",shadow:"never"},{default:r(()=>[a(v,{class:"box-card !border-none my-[16px] table-search-wrap",shadow:"never"},{default:r(()=>[a(D,{inline:!0,model:e.searchParam,ref_key:"searchFormRef",ref:y},{default:r(()=>[a(u,{label:o(n)("title"),prop:"title"},{default:r(()=>[a(x,{modelValue:e.searchParam.title,"onUpdate:modelValue":l[0]||(l[0]=t=>e.searchParam.title=t),placeholder:o(n)("titlePlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(u,{label:o(n)("lastTime"),prop:"last_time"},{default:r(()=>[a(C,{modelValue:e.searchParam.last_time,"onUpdate:modelValue":l[1]||(l[1]=t=>e.searchParam.last_time=t),type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss","start-placeholder":o(n)("startDate"),"end-placeholder":o(n)("endDate")},null,8,["modelValue","start-placeholder","end-placeholder"])]),_:1},8,["label"]),a(u,null,{default:r(()=>[a(f,{type:"primary",onClick:l[2]||(l[2]=t=>m())},{default:r(()=>[p(i(o(n)("search")),1)]),_:1}),a(f,{onClick:l[3]||(l[3]=t=>{var g;return(g=y.value)==null?void 0:g.resetFields()})},{default:r(()=>[p(i(o(n)("reset")),1)]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),b("div",X,[F((c(),$(E,{data:e.data,size:"large"},{empty:r(()=>[b("span",null,i(e.loading?"":o(n)("emptyData")),1)]),default:r(()=>[a(s,{prop:"title","show-overflow-tooltip":!0,label:o(n)("title"),"min-width":"150"},null,8,["label"]),a(s,{prop:"type_name",label:o(n)("typeName"),"min-width":"120"},null,8,["label"]),a(s,{label:o(n)("crondType"),"min-width":"180",align:"center"},{default:r(({row:t})=>[t.type=="crond"?(c(),h("span",q,i(t.crond_length)+i(t.crond_type_name),1)):(c(),h("span",A,i(o(n)("cron")),1))]),_:1},8,["label"]),a(s,{prop:"count",label:o(n)("count"),"min-width":"120"},null,8,["label"]),a(s,{label:o(n)("lastTime"),"min-width":"180",align:"center"},{default:r(({row:t})=>[p(i(t.last_time||""),1)]),_:1},8,["label"]),a(s,{label:o(n)("nextTime"),"min-width":"180",align:"center"},{default:r(({row:t})=>[p(i(t.next_time||""),1)]),_:1},8,["label"]),a(s,{label:o(n)("operation"),align:"right",fixed:"right",width:"100"},{default:r(({row:t})=>[a(f,{type:"primary",link:"",onClick:g=>w(t)},{default:r(()=>[p(i(o(n)("info")),1)]),_:2},1032,["onClick"])]),_:1},8,["label"])]),_:1},8,["data"])),[[V,e.loading]]),b("div",G,[a(P,{"current-page":e.page,"onUpdate:current-page":l[4]||(l[4]=t=>e.page=t),"page-size":e.limit,"onUpdate:page-size":l[5]||(l[5]=t=>e.limit=t),layout:"total, sizes, prev, pager, next, jumper",total:e.total,onSizeChange:l[6]||(l[6]=t=>m()),onCurrentChange:m},null,8,["current-page","page-size","total"])])])]),_:1}),a(J,{ref_key:"cronDialog",ref:_,onComplete:m},null,512)])}}});export{he as default};
|
||||
@ -1 +1 @@
|
||||
import{_ as o}from"./cron-info.vue_vue_type_script_setup_true_lang-86542322.js";import"./index-b19d04dd.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";export{o as default};
|
||||
import{_ as o}from"./cron-info.vue_vue_type_script_setup_true_lang-67dd29a7.js";import"./index-4ce69858.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-form-item-4ed993c7.js";export{o as default};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user