优化
* 平台端 站点端界面改版优化
* 插件支持多选批量升级
* 万能表单 日期组件、时间组件优化
* 万能表单完善语言包
* 微信开放平台管理端优化,增加小程序撤回审核、授权记录
* 插件支持多选批量升级
* 升级框架/插件时,增加是否备份、是否云编译等控制选项
* 操作日志增加清空功能
* 站点端`本地存储`调整为`默认存储`,若无配置,则使用管理端设置的默认存储方式及配置
* 后台提现列表样式优化
* 隐私协议弹框样式优化
* 待付款订单界面优化
* 商品列表 推广支持微信小程序二维码
* 商品分类列表 推广支持微信小程序二维码
* 优惠券列表 推广支持微信小程序二维码
* 重构限时折扣活动,支持添加N个商品,提供扩展性
* 限时折扣增加批量设置减钱、促销价
* 商品搜索页面增加 搜索关键字、排行榜
* 订单退款详情、优惠券领取记录、退款维权详情改为抽屉弹框样式

新增
* 增加升级记录
* 增加备份记录,支持手动备份、恢复等功能
* 增加主题风格,自定义配色功能
* 自定义链接支持扩展,增加万能表单选择
* 自定义页面增加弹窗广告设置
* 平台端增加清理缓存功能
* 增加定时清理计划任务日志数据
* 牛云短信功能
* 会员增加身份证、备注等信息
* 个人资料增加万能表单
* 后台会员列表增加全选所有页/全选当前页,方便批量操作
* 自定义页面增加弹窗广告设置
* 增加定时清理计划任务
* 站点增加初始化操作,用于清空整个站点数据
* 支持第三方云编译服务搭建
* 商品列表,商品分类展示限时折扣标识
* 价格展示逻辑调整,同时参与会员价、限时折扣,优先展示最低价
* 商品榜单列表增加会员价、限时折扣标识
* 商品收藏列表、足迹列表,显示会员价/限时折扣展示
* 同城配送功能新增预约时间设置,支持用户选择具体配送时段,提升配送体验。
* 自定义商品详情
* 增加商品排序设置
* 增加门店自提核销功能
* 优惠券列表增加发劵功能
* 商品列表、商品详情增加副标题展示
* 商品增加视频
* 后台增加`关闭售后`按钮
* 添加/编辑商品,支持选择多个参数模板
* 商品详情左上角返回增加悬浮菜单导航
* 商品品牌支持自定义样式设置
* 商品标签增加复制功能
* 增加商品搜索设置
* 增加商品编码唯一性设置
* 自定义链接增加选择商品、选择商品分类、选择优惠券、选择积分商品
* 满减送列表增加批量关闭、删除功能
* 后台商品列表增加批量操作(商品标签、商品服务、虚拟销量、商品分类、商品品牌、商品海报、是否赠品、配送设置、批量修改库存)
This commit is contained in:
wangchen147 2025-08-28 17:03:19 +08:00
parent 8ddd9a6afb
commit 2849ad591c
4988 changed files with 150207 additions and 99158 deletions

View File

@ -1,5 +1,3 @@
NODE_ENV = 'development'
# api请求地址
VITE_APP_BASE_URL='/adminapi/'
@ -10,4 +8,4 @@ VITE_IMG_DOMAIN=''
VITE_REQUEST_HEADER_TOKEN_KEY='token'
# 请求时header中站点的参数名
VITE_REQUEST_HEADER_SITEID_KEY='site-id'
VITE_REQUEST_HEADER_SITEID_KEY='site-id'

View File

@ -1,5 +1,3 @@
NODE_ENV = 'production'
# api请求地址
VITE_APP_BASE_URL='/adminapi/'
@ -10,4 +8,4 @@ VITE_IMG_DOMAIN=''
VITE_REQUEST_HEADER_TOKEN_KEY='token'
# 请求时header中站点的参数名
VITE_REQUEST_HEADER_SITEID_KEY='site-id'
VITE_REQUEST_HEADER_SITEID_KEY='site-id'

View File

@ -1,6 +1,7 @@
// Generated by 'unplugin-auto-import'
export {}
declare global {
const ElMessage: typeof import('element-plus/es')['ElMessage']
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
const ElNotification: typeof import('element-plus/es')['ElNotification']
}

View File

@ -84,12 +84,14 @@ declare module '@vue/runtime-core' {
ExportSure: typeof import('./src/components/export-sure/index.vue')['default']
HeatMap: typeof import('./src/components/heat-map/index.vue')['default']
Icon: typeof import('./src/components/icon/index.vue')['default']
Markdown: typeof import('./src/components/markdown/index.vue')['default']
PopoverInput: typeof import('./src/components/popover-input/index.vue')['default']
RangeInput: typeof import('./src/components/range-input/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SelectArea: typeof import('./src/components/select-area/index.vue')['default']
SelectIcon: typeof import('./src/components/select-icon/index.vue')['default']
SpreadPopup: typeof import('./src/components/spread-popup/index.vue')['default']
UploadAttachment: typeof import('./src/components/upload-attachment/index.vue')['default']
UploadFile: typeof import('./src/components/upload-file/index.vue')['default']
UploadImage: typeof import('./src/components/upload-image/index.vue')['default']

2742
admin/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -26,6 +26,7 @@
"qrcode": "1.5.1",
"sass": "1.58.0",
"sortablejs": "1.15.0",
"vditor": "^3.10.9",
"vue": "3.2.45",
"vue-i18n": "9.2.2",
"vue-jsonp": "2.0.0",
@ -55,4 +56,4 @@
"vite": "4.1.0",
"vue-tsc": "1.0.24"
}
}
}

View File

@ -833,7 +833,7 @@
for (i = 0; i < this.imageList.length; i++) {
data = this.imageList[i];
list.push({
src: prefix + data.url,
src: (data.url.indexOf('http://') == -1 && data.url.indexOf('https://') == -1) ? prefix + data.url : data.url,
_src: prefix + data.url,
alt: data.original,
floatStyle: align

View File

@ -328,7 +328,7 @@
for (var key in uploadVideoList) {
var file = uploadVideoList[key];
videoObjs.push({
url: uploadDir + file.url,
url: (file.url.indexOf('http://') == -1 && file.url.indexOf('https://') == -1) ? uploadDir + file.url : file.url,
width: width,
height: height,
align: align

View File

@ -38,7 +38,7 @@ function addOkListener() {
for (var j = 0, url; url = imageUrls[j++];) {
// console.log('url',src, url);
if (src.indexOf(url.name.replace(" ", "")) != -1) {
img.src = urlPrefix + url.url;
img.src = (url.url.indexOf('http://') == -1 && url.url.indexOf('https://') == -1) ? urlPrefix + url.url : url.url;
img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性
img.setAttribute("title", url.title);
domUtils.removeAttributes(img, ["data-word-image", "style", "width", "height"]);

View File

@ -145,7 +145,7 @@ div.edui-box {
background-color: white;
position: relative;
overflow: visible;
z-index: 1;
z-index: 1 !important;
}
.edui-editor div {

View File

@ -30460,7 +30460,7 @@ UE.plugin.register("simpleupload", function () {
if ('SUCCESS' === res.data.state && res.data.url) {
const loader = me.document.getElementById(loadingId);
domUtils.removeClasses(loader, "uep-loading");
const link = me.options.imageUrlPrefix + res.data.url;
const link = (res.data.url.indexOf('http://') == -1 && res.data.url.indexOf('https://') == -1) ? me.options.imageUrlPrefix + res.data.url : res.data.url;
loader.setAttribute("src", link);
loader.setAttribute("_src", link);
loader.setAttribute("alt", res.data.original || "");

View File

@ -108,8 +108,8 @@
"touppercase", // 字母大写
"tolowercase", // 字母小写
"|",
// "link", // 超链接
// "unlink", // 取消链接
"link", // 超链接
"unlink", // 取消链接
// "anchor", // 锚点
"|",
"imagenone", // 图片默认

View File

@ -5,15 +5,15 @@ import request from '@/utils/request'
* @returns
*/
export function getAddonLocal(params: Record<string, any>) {
return request.get('addon/local', params, { showSuccessMessage: true })
return request.get('addon/local', params)
}
/**
*
* @returns
*/
export function getAddonDetial(id: number) {
return request.get(`addon/${id}`)
export function getAddonDetail(id: number) {
return request.get(`addon/${ id }`)
}
/**
@ -22,7 +22,7 @@ export function getAddonDetial(id: number) {
* @returns
*/
export function installAddon(params: Record<string, any>) {
return request.post(`addon/install/${params.addon}`, params)
return request.post(`addon/install/${ params.addon }`, params)
}
/**
@ -31,7 +31,7 @@ export function installAddon(params: Record<string, any>) {
* @returns
*/
export function cloudInstallAddon(params: Record<string, any>) {
return request.post(`addon/cloudinstall/${params.addon}`, params)
return request.post(`addon/cloudinstall/${ params.addon }`, params)
}
/**
@ -40,7 +40,7 @@ export function cloudInstallAddon(params: Record<string, any>) {
* @returns
*/
export function uninstallAddon(params: Record<string, any>) {
return request.post(`addon/uninstall/${params.addon}`, params, { showSuccessMessage: true })
return request.post(`addon/uninstall/${ params.addon }`, params, { showSuccessMessage: true })
}
/**
@ -49,7 +49,7 @@ export function uninstallAddon(params: Record<string, any>) {
* @returns
*/
export function preInstallCheck(addon: string) {
return request.get(`addon/install/check/${addon}`)
return request.get(`addon/install/check/${ addon }`)
}
/**
@ -66,7 +66,7 @@ export function getAddonInstalltask() {
* @returns
*/
export function getAddonCloudInstallLog(addon: string) {
return request.get(`addon/cloudinstall/${addon}`)
return request.get(`addon/cloudinstall/${ addon }`)
}
/**
@ -75,7 +75,7 @@ export function getAddonCloudInstallLog(addon: string) {
* @returns
*/
export function preUninstallCheck(addon: string) {
return request.get(`addon/uninstall/check/${addon}`)
return request.get(`addon/uninstall/check/${ addon }`)
}
/**
@ -84,9 +84,25 @@ export function preUninstallCheck(addon: string) {
* @returns
*/
export function cancelInstall(addon: string) {
return request.put(`addon/install/cancel/${addon}`, {}, { showErrorMessage: false })
return request.put(`addon/install/cancel/${ addon }`, {}, { showErrorMessage: false })
}
export function getInstalledAddonList() {
return request.get('addon/list/install')
}
export function getGroupAppList() {
return request.get('home/site/group/app_list')
}
export function getAddonInit() {
return request.get('addon/init')
}
export function getAppIndex() {
return request.get('app/index')
}
export function getAdvList() {
return request.get('index/adv_list')
}

View File

@ -14,7 +14,7 @@ export function getAliappConfig() {
* @returns
*/
export function setAliappConfig(params: Record<string, any>) {
return request.put('aliapp/config', params, {showSuccessMessage: true})
return request.put('aliapp/config', params, { showSuccessMessage: true })
}
/**

View File

@ -6,7 +6,7 @@ import request from '@/utils/request'
* @param app_type
*/
export function login(params: Record<string, any>, app_type: string) {
return request.get(`login/${app_type}`, {params})
return request.get(`login/${ app_type }`, { params })
}
/**
@ -21,7 +21,7 @@ export function logout() {
* @returns
*/
export function getAuthMenus(params: Record<string, any>) {
return request.get('auth/authmenu', {params})
return request.get('auth/authmenu', { params })
}
/**

View File

@ -8,7 +8,7 @@ import request from '@/utils/request'
* @returns
*/
export function getDiyPageList(params: Record<string, any>) {
return request.get(`diy/diy`, {params})
return request.get(`diy/diy`, { params })
}
/**
@ -17,7 +17,7 @@ export function getDiyPageList(params: Record<string, any>) {
* @returns
*/
export function getDiyPageListByCarouselSearch(params: Record<string, any>) {
return request.get(`diy/carousel_search`, {params})
return request.get(`diy/carousel_search`, { params })
}
/**
@ -26,7 +26,7 @@ export function getDiyPageListByCarouselSearch(params: Record<string, any>) {
* @returns
*/
export function getDiyList(params: Record<string, any>) {
return request.get(`diy/list`, {params})
return request.get(`diy/list`, { params })
}
/**
@ -35,7 +35,7 @@ export function getDiyList(params: Record<string, any>) {
* @returns
*/
export function getDiyPageInfo(id: number) {
return request.get(`diy/diy/${id}`);
return request.get(`diy/diy/${ id }`);
}
/**
@ -44,7 +44,7 @@ export function getDiyPageInfo(id: number) {
* @returns
*/
export function addDiyPage(params: Record<string, any>) {
return request.post('diy/diy', params, {showSuccessMessage: true})
return request.post('diy/diy', params, { showSuccessMessage: true })
}
/**
@ -52,7 +52,7 @@ export function addDiyPage(params: Record<string, any>) {
* @param params
*/
export function editDiyPage(params: Record<string, any>) {
return request.put(`diy/diy/${params.id}`, params, {showSuccessMessage: true})
return request.put(`diy/diy/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -60,7 +60,7 @@ export function editDiyPage(params: Record<string, any>) {
* @param params
*/
export function setUseDiyPage(params: Record<string, any>) {
return request.put(`diy/use/${params.id}`, params, {showSuccessMessage: true})
return request.put(`diy/use/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -68,7 +68,7 @@ export function setUseDiyPage(params: Record<string, any>) {
* @param params
*/
export function editDiyPageShare(params: Record<string, any>) {
return request.put(`diy/diy/share`, params, {showSuccessMessage: true})
return request.put(`diy/diy/share`, params, { showSuccessMessage: true })
}
/**
@ -77,35 +77,35 @@ export function editDiyPageShare(params: Record<string, any>) {
* @returns
*/
export function deleteDiyPage(id: number) {
return request.delete(`diy/diy/${id}`, {showSuccessMessage: true})
return request.delete(`diy/diy/${ id }`, { showSuccessMessage: true })
}
/**
*
*/
export function initPage(params: Record<string, any>) {
return request.get(`diy/init`, {params})
return request.get(`diy/init`, { params })
}
/**
*
*/
export function getLink(params: Record<string, any>) {
return request.get(`diy/link`, {params})
return request.get(`diy/link`, { params })
}
/**
*
*/
export function getDiyBottomList(params: Record<string, any>) {
return request.get(`diy/bottom`, {params})
return request.get(`diy/bottom`, { params })
}
/**
*
*/
export function getDiyBottomConfig(params: Record<string, any>) {
return request.get(`diy/bottom/config`, {params})
return request.get(`diy/bottom/config`, { params })
}
/**
@ -114,21 +114,21 @@ export function getDiyBottomConfig(params: Record<string, any>) {
* @returns
*/
export function setDiyBottomConfig(params: Record<string, any>) {
return request.post('diy/bottom', params, {showSuccessMessage: true})
return request.post('diy/bottom', params, { showSuccessMessage: true })
}
/**
*
*/
export function getDiyTemplate(params: Record<string, any>) {
return request.get(`diy/template`, {params})
return request.get(`diy/template`, { params })
}
/**
*
*/
export function getDiyTemplatePages(params: Record<string, any>) {
return request.get(`diy/template/pages`, {params})
return request.get(`diy/template/pages`, { params })
}
/**
@ -137,7 +137,7 @@ export function getDiyTemplatePages(params: Record<string, any>) {
* @returns
*/
export function getDiyRouteList(params: Record<string, any>) {
return request.get(`diy/route`, {params})
return request.get(`diy/route`, { params })
}
/**
@ -145,7 +145,7 @@ export function getDiyRouteList(params: Record<string, any>) {
* @returns
*/
export function getDiyRouteAppList() {
return request.get(`diy/route/apps`)
return request.get(`diy/route/apps`)
}
/**
@ -153,7 +153,7 @@ export function getDiyRouteAppList() {
* @param params
*/
export function getDiyRouteInfo(params: Record<string, any>) {
return request.get(`diy/route/info`, {params});
return request.get(`diy/route/info`, { params });
}
/**
@ -161,7 +161,7 @@ export function getDiyRouteInfo(params: Record<string, any>) {
* @param params
*/
export function editDiyRouteShare(params: Record<string, any>) {
return request.put(`diy/route/share`, params, {showSuccessMessage: true})
return request.put(`diy/route/share`, params, { showSuccessMessage: true })
}
/**
@ -170,7 +170,7 @@ export function editDiyRouteShare(params: Record<string, any>) {
* @returns
*/
export function getDecoratePage(params: Record<string, any>) {
return request.get(`diy/decorate`, {params})
return request.get(`diy/decorate`, { params })
}
/**
@ -179,7 +179,7 @@ export function getDecoratePage(params: Record<string, any>) {
* @returns
*/
export function changeTemplate(params: Record<string, any>) {
return request.put(`diy/change`, params, {showSuccessMessage: true})
return request.put(`diy/change`, params, { showSuccessMessage: true })
}
/**
@ -188,7 +188,7 @@ export function changeTemplate(params: Record<string, any>) {
* @returns
*/
export function getApps(params: Record<string, any>) {
return request.get(`diy/apps`)
return request.get(`diy/apps`)
}
/**
@ -207,7 +207,7 @@ export function copyDiy(params: Record<string, any>) {
* @param params
*/
export function getDefaultTheme(params: Record<string, any>) {
return request.get(`diy/theme/color`, {params})
return request.get(`diy/theme/color`, { params })
}
@ -216,7 +216,7 @@ export function getDefaultTheme(params: Record<string, any>) {
* @param params
*/
export function getDiyTheme(params: Record<string, any>) {
return request.get(`diy/theme`, {params})
return request.get(`diy/theme`, { params })
}
/**
@ -232,21 +232,21 @@ export function addTheme(params: Record<string, any>) {
* @param params
*/
export function editTheme(params: Record<string, any>) {
return request.put(`diy/theme/edit/${params.id}`, params, {showSuccessMessage: true})
return request.put(`diy/theme/edit/${ params.id }`, params, { showSuccessMessage: true })
}
/**
*
* @param params
* @param id
*/
export function deleteTheme(id: number) {
return request.delete(`diy/theme/delete/${id}`, {showSuccessMessage: true})
return request.delete(`diy/theme/delete/${ id }`, { showSuccessMessage: true })
}
/**
*
*
* @param params
*/
export function setDiyTheme(params: Record<string, any>) {
return request.post(`diy/theme`, params, { showSuccessMessage: true })
}
}

View File

@ -19,6 +19,7 @@ export function getDiyFormPageList(params: Record<string, any>) {
export function getDiyFormList(params: Record<string, any>) {
return request.get(`diy/form/list`, { params })
}
/**
*
* @param params

View File

@ -125,6 +125,14 @@ export function editMemberDetail(params: Record<string, any>) {
return request.put(`member/member/modify/${params.member_id}/${params.field}`, params, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function memberBatchModify(params: Record<string, any>) {
return request.post(`member/member/batch_modify`, params, { showSuccessMessage: true })
}
/***************************************************** 会员零钱 ****************************************************/
@ -385,7 +393,7 @@ export function memberRemark(params: Record<string, any>) {
}
/**
*
* @param params
* @param id
*/
export function memberCheck(id: number) {
return request.put(`member/cash_out/check/${id}`, {}, { showSuccessMessage: true })
@ -504,14 +512,14 @@ export function getMemberLevelAll() {
*
*/
export function getMemberBenefitsContent() {
return request.get(`member/benefits/content`);
return request.post(`member/benefits/content`);
}
/**
*
*/
export function getMemberGiftsContent(params: Record<string, any>) {
return request.post(`member/gifts/content`, params );
return request.post(`member/gifts/content`, { params });
}
/**

View File

@ -11,7 +11,7 @@ export function getAuthInfo() {
*
*/
export function setAuthInfo(params: Record<string, any>) {
return request.post('niucloud/authinfo', params, {showSuccessMessage: true})
return request.post('niucloud/authinfo', params, { showSuccessMessage: true })
}
/**
@ -21,8 +21,6 @@ export function getAdminAuthInfo() {
return request.get('niucloud/admin/authinfo')
}
/**
*
* @returns
@ -45,7 +43,7 @@ export function getModuleVersion() {
* @returns
*/
export function downloadVersion(params: Record<string, any>) {
return request.post(`addon/download/${params.addon}`, params, { showSuccessMessage: true })
return request.post(`addon/download/${ params.addon }`, params, { showSuccessMessage: true })
}
/**
@ -63,3 +61,11 @@ export function getFrameworkNewVersion() {
export function getFrameworkVersionList() {
return request.get(`niucloud/framework/version/list`)
}
/**
* /
* @param params
*/
export function getAppVersionList(params: Record<string, any>) {
return request.get(`niucloud/app_version/list`, { params })
}

View File

@ -7,16 +7,7 @@ import request from '@/utils/request'
* @returns
*/
export function getNoticeList(params: any) {
return request.get('notice/notice', {params})
}
/**
*
* @param key
* @returns
*/
export function getNoticeInfo(key: string) {
return request.get(`notice/notice/${key}`)
return request.get('notice/notice', { params })
}
/**
@ -25,9 +16,17 @@ export function getNoticeInfo(key: string) {
* @returns
*/
export function getNoticeLog(params: any) {
return request.get(`notice/log`, {params})
return request.get(`notice/log`, { params })
}
/**
*
* @param key
* @returns
*/
export function getNoticeInfo(key: string) {
return request.get(`notice/notice/${ key }`)
}
/**
*
@ -35,7 +34,7 @@ export function getNoticeLog(params: any) {
* @returns
*/
export function editNoticeStatus(params: Record<string, any>) {
return request.post(`notice/notice/editstatus`, params, {showSuccessMessage: true})
return request.post(`notice/notice/editstatus`, params, { showSuccessMessage: true })
}
/**
@ -44,7 +43,7 @@ export function editNoticeStatus(params: Record<string, any>) {
* @returns
*/
export function editNotice(params: Record<string, any>) {
return request.post(`notice/notice/edit`, params, {showSuccessMessage: true})
return request.post(`notice/notice/edit`, params, { showSuccessMessage: true })
}
/**
@ -52,7 +51,7 @@ export function editNotice(params: Record<string, any>) {
* @returns
*/
export function getSmsList() {
return request.get('notice/notice/sms/list')
return request.get('notice/notice/sms')
}
/**
@ -61,7 +60,7 @@ export function getSmsList() {
* @returns
*/
export function getSmsInfo(sms_type: string) {
return request.get(`notice/notice/sms/${sms_type}`,)
return request.get(`notice/notice/sms/${ sms_type }`,)
}
/**
@ -69,7 +68,7 @@ export function getSmsInfo(sms_type: string) {
* @param params
*/
export function editSms(params: Record<string, any>) {
return request.put(`notice/notice/sms/${params.sms_type}`, params, {showSuccessMessage: true})
return request.put(`notice/notice/sms/${ params.sms_type }`, params, { showSuccessMessage: true })
}
/**
@ -79,3 +78,245 @@ export function editSms(params: Record<string, any>) {
export function getSmsLog(params: Record<string, any>) {
return request.get(`notice/sms/log`, { params })
}
/**
*
*/
export function getAccountIsLogin() {
return request.get(`notice/niusms/config`)
}
/**
*
* @param params
*/
export function loginAccount(params: Record<string, any>) {
return request.post(`notice/niusms/account/login`,params,{ showSuccessMessage: true })
}
/**
*
* @param params
*/
export function registerAccount(params: Record<string, any>) {
return request.post(`notice/niusms/account/register`,params,{ showSuccessMessage: true })
}
/**
*
* @param username
*/
export function getAccountInfo(username: string) {
return request.get(`notice/niusms/account/info/${username}`)
}
/**
*
* @param params
*/
export function getTemplateList(params: Record<string, any>) {
return request.get(`notice/niusms/template/list/${params.sms_type}/${params.username}`,{})
}
/**
*
* @param username
* @param params
*/
export function getSignList(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/sign/list/${username}`,{params})
}
/**
*
* @param username
* @param params
*/
export function addSign(username: string, params: Record<string, any>) {
return request.post(`notice/niusms/sign/report/${username}`, params, { showSuccessMessage: true });
}
/**
*
* @param username
* @param params
*/
export function deleteSign(username: string, params: Record<string, any>) {
return request.post(`notice/niusms/sign/delete/${username}`, params, { showSuccessMessage: true });
}
/**
*
* @param username
* @param params
*/
export function editAccount(username: string,params: Record<string, any>) {
return request.post(`notice/niusms/account/edit/${username}`, params, { showSuccessMessage: true });
}
/**
*
* @param username
* @param params
*/
export function getSmsSendList(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/account/send_list/${username}`,{params})
}
/**
*
* @param username
* @param params
*/
export function getSmsOrdersList(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/order/list/${username}`,{params})
}
/**
*
*/
export function getSmsPackagesList() {
return request.get(`notice/niusms/packages`)
}
/**
*
*/
export function getSmsCaptcha() {
return request.get(`notice/niusms/captcha`)
}
/**
*
*/
export function getsiteCaptcha() {
return request.get(`site/captcha/create`)
}
/**
*
* @param params
*/
export function getSmsSend(params: Record<string, any>) {
return request.post(`notice/niusms/send`,params,{ showSuccessMessage: true })
}
/**
*
*/
export function getSmsSignConfig() {
return request.get(`notice/niusms/sign/report/config`)
}
/**
*
*/
export function getTemplateReportConfig() {
return request.get(`notice/niusms/template/report/config`)
}
/**
*
* @param sms_type
* @param username
* @param sms_type
* @param username
* @param params
*/
export function reportTemplate(sms_type: string, username: string, params: Record<string, any>) {
return request.post(`notice/niusms/template/report/${sms_type}/${username}`,params,{ showSuccessMessage: true })
}
/**
*
* @param sms_type
* @param username
* @param sms_type
* @param username
* @param params
*/
export function getreportTemplateInfo(sms_type: string, username: string,params: Record<string, any>) {
return request.get(`notice/niusms/template/info/${sms_type}/${username}`,{params})
}
/**
*
* @param username
* @param params
*/
export function smsOrderCreate(username: string, params: Record<string, any>) {
return request.post(`notice/niusms/order/create/${username}`, params)
}
/**
*
* @param username
* @param params
*/
export function getOrderPayInfo(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/order/pay/${username}`, {params})
}
/**
*
* @param username
* @param params
*/
export function getOrderInfo(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/order/info/${username}`, {params})
}
/**
*
* @param username
* @param params
*/
export function getOrderPayStatus(username: string, params: Record<string, any>) {
return request.get(`notice/niusms/order/status/${username}`, {params})
}
/**
*
* @param username
* @param params
*/
export function calculateOrderPay(username: string, params: Record<string, any>) {
return request.post(`notice/niusms/order/calculate/${username}`, params)
}
/**
*
* @param params
*/
export function enableNiusms(params: Record<string, any>) {
return request.put(`notice/niusms/enable`,params,{ showSuccessMessage: true })
}
/**
*
* @param username
* @param sms_type
* @param username
*/
export function templateSync(sms_type: string, username: string) {
return request.get(`notice/niusms/template/sync/${sms_type}/${username}`)
}
/**
*
* @param username
* @param params
*/
export function resetPassword(username: string,params: Record<string, any>) {
return request.post(`notice/niusms/account/reset/password/${username}`,params,{ showSuccessMessage: true})
}
/**
*
* @param template_id
* @param username
* @param template_id
*/
export function clearTemplate(username: string,template_id: string) {
return request.delete(`notice/niusms/template/${username}/${template_id}`)
}

View File

@ -1,70 +0,0 @@
import request from '@/utils/request'
/***************************************************** 充值订单 ****************************************************/
/**
*
* @param params
* @returns
*/
export function getRechargeOrderList(params: Record<string, any>) {
return request.get(`order/recharge`, {params})
}
/**
*
* @param params
* @returns
*/
export function getRechargeStat(params: Record<string, any>) {
return request.get(`order/recharge/stat`, {params})
}
/**
*
* @param order_id
* @returns
*/
export function getRechargeOrderInfo(order_id: number) {
return request.get(`order/recharge/${order_id}`);
}
/**
*
* @returns
*/
export function getRechargeOrderStatusList() {
return request.get(`order/recharge/status`)
}
/**
* 退
* @returns
*/
export function getRechargeRefund(params: Record<string, any>) {
return request.get(`order/recharge/refund`, {params})
}
/**
* 退
* @returns
*/
export function getRechargeRefundStatus() {
return request.get(`order/recharge/refund/status`)
}
/**
* 退
* @returns
*/
export function rechargeRefund(id: number) {
return request.put(`order/recharge/refund/${id}`, {}, {showSuccessMessage: true});
}
/**
* 退
* @returns
*/
export function getRechargeRefundStat() {
return request.get(`order/recharge/refund/stat`);
}

View File

@ -54,6 +54,13 @@ export function getPayRefundInfo(refund_no: string) {
return request.get(`pay/refund/${refund_no}`)
}
/**
* 退
*/
export function getRefundStatus() {
return request.get(`pay/refund/status`)
}
/**
* 退
*/
@ -92,13 +99,15 @@ export function pay(params: Record<string, any>) {
/**
*
* @param params
* @returns
* @param tradeType
* @param tradeId
* @param channel
*/
export function getFriendsPay(tradeType: string, tradeId: number, channel: string) {
return request.get(`pay/friendspay/info/${tradeType}/${tradeId}/${channel}`, {showErrorMessage: false})
export function getFriendsPay(tradeType : string, tradeId : number, channel: string) {
return request.get(`pay/friendspay/info/${tradeType}/${tradeId}/${channel}`, { showErrorMessage: false })
}
/**
*
*/

View File

@ -14,5 +14,5 @@ export function getPcConfig() {
* @returns
*/
export function setPcConfig(params: Record<string, any>) {
return request.put('channel/pc/config', params, {showSuccessMessage: true})
return request.put('channel/pc/config', params, { showSuccessMessage: true })
}

View File

@ -13,6 +13,6 @@ export function getUserInfo() {
* @returns
*/
export function setUserInfo(params: Record<string, any>) {
return request.put(`auth/edit`, params, {showSuccessMessage: true});
return request.put(`auth/edit`, params, { showSuccessMessage: true });
}

View File

@ -6,7 +6,7 @@ import request from '@/utils/request'
* @returns
*/
export function getPosterPageList(params: Record<string, any>) {
return request.get(`sys/poster`, {params})
return request.get(`sys/poster`, { params })
}
/**
@ -15,7 +15,7 @@ export function getPosterPageList(params: Record<string, any>) {
* @returns
*/
export function getPosterList(params: Record<string, any>) {
return request.get(`sys/poster/list`, {params})
return request.get(`sys/poster/list`, { params })
}
/**
@ -24,7 +24,7 @@ export function getPosterList(params: Record<string, any>) {
* @returns
*/
export function getPosterInfo(id: number) {
return request.get(`sys/poster/${id}`);
return request.get(`sys/poster/${ id }`);
}
/**
@ -33,7 +33,7 @@ export function getPosterInfo(id: number) {
* @returns
*/
export function addPoster(params: Record<string, any>) {
return request.post('sys/poster', params, {showErrorMessage: true, showSuccessMessage: true})
return request.post('sys/poster', params, { showErrorMessage: true, showSuccessMessage: true })
}
/**
@ -42,7 +42,7 @@ export function addPoster(params: Record<string, any>) {
* @returns
*/
export function editPoster(params: Record<string, any>) {
return request.put(`sys/poster/${params.id}`, params, {
return request.put(`sys/poster/${ params.id }`, params, {
showErrorMessage: true,
showSuccessMessage: true
})
@ -54,7 +54,7 @@ export function editPoster(params: Record<string, any>) {
* @returns
*/
export function deletePoster(id: number) {
return request.delete(`sys/poster/${id}`, {showErrorMessage: true, showSuccessMessage: true})
return request.delete(`sys/poster/${ id }`, { showErrorMessage: true, showSuccessMessage: true })
}
/**
@ -62,7 +62,7 @@ export function deletePoster(id: number) {
* @param params
*/
export function modifyPosterStatus(params: Record<string, any>) {
return request.put(`sys/poster/status`, params, {showSuccessMessage: true})
return request.put(`sys/poster/status`, params, { showSuccessMessage: true })
}
/**
@ -70,7 +70,7 @@ export function modifyPosterStatus(params: Record<string, any>) {
* @param params
*/
export function modifyPosterDefault(params: Record<string, any>) {
return request.put(`sys/poster/default`, params, {showSuccessMessage: true})
return request.put(`sys/poster/default`, params, { showSuccessMessage: true })
}
/**
@ -79,7 +79,7 @@ export function modifyPosterDefault(params: Record<string, any>) {
* @returns
*/
export function getPosterType(params: Record<string, any>) {
return request.get(`sys/poster/type`, {params})
return request.get(`sys/poster/type`, { params })
}
/**
@ -88,21 +88,21 @@ export function getPosterType(params: Record<string, any>) {
* @returns
*/
export function getPosterTemplate(params: Record<string, any>) {
return request.get(`sys/poster/template`, {params})
return request.get(`sys/poster/template`, { params })
}
/**
*
*/
export function initPoster(params: Record<string, any>) {
return request.get(`sys/poster/init`, {params})
return request.get(`sys/poster/init`, { params })
}
/**
*
*/
export function getPreviewPoster(params: Record<string, any>) {
return request.get(`sys/poster/preview`, {params})
return request.get(`sys/poster/preview`, { params })
}
/**
@ -111,5 +111,5 @@ export function getPreviewPoster(params: Record<string, any>) {
* @returns
*/
export function getPosterGenerate(params: Record<string, any>) {
return request.get(`sys/poster/generate`, {params, showErrorMessage: false})
}
return request.get(`sys/poster/generate`, { params, showErrorMessage: false })
}

View File

@ -1,6 +1,6 @@
import request from '@/utils/request'
//包含站点管理,站点用户管理,站点操作日志
// 包含站点管理,站点用户管理,站点操作日志
/***************************************************** 站点管理 ****************************************************/
@ -18,7 +18,7 @@ export function getSiteList(params: Record<string, any>) {
* @param site_id
*/
export function getSiteInfo(site_id: number) {
return request.get(`site/site/${site_id}`);
return request.get(`site/site/${ site_id }`);
}
/**
@ -35,15 +35,15 @@ export function addSite(params: Record<string, any>) {
* @param params
*/
export function editSite(params: Record<string, any>) {
return request.put(`site/site/${params.site_id}`, params, { showSuccessMessage: true })
return request.put(`site/site/${ params.site_id }`, params, { showSuccessMessage: true })
}
/**
*
* @param siteId
*/
export function deleteSite(siteId: number) {
return request.delete(`site/site/${siteId}`)
export function deleteSite(params: Record<string, any>) {
return request.delete(`site/site/${ params.site_id }?captcha_code=${ params.captcha_code }&captcha_key=${ params.captcha_key }`)
}
/**
@ -51,15 +51,24 @@ export function deleteSite(siteId: number) {
* @param params
*/
export function closeSite(params: Record<string, any>) {
return request.put(`site/closesite/${params.site_id}`, params, { showSuccessMessage: true })
return request.put(`site/closesite/${ params.site_id }`, params, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function initSite(params: Record<string, any>) {
return request.post(`site/init`, params, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function openSite(params: Record<string, any>) {
return request.put(`site/opensite/${params.site_id}`, params, { showSuccessMessage: true })
return request.put(`site/opensite/${ params.site_id }`, params, { showSuccessMessage: true })
}
/**
@ -69,6 +78,19 @@ export function getStatusList() {
return request.get(`site/statuslist`)
}
/**
*
*/
export function getSiteAllowChange() {
return request.get(`site/allow_change`)
}
/**
*
*/
export function putSiteAllowChange(params: Record<string, any>) {
return request.put(`site/allow_change`,params, { showSuccessMessage: true })
}
/***************************************************** 站点分组管理 ****************************************************/
@ -86,7 +108,7 @@ export function getSiteGroupList(params: Record<string, any>) {
* @param groupId
*/
export function getSiteGroupInfo(groupId: number) {
return request.get(`site/group/${groupId}`);
return request.get(`site/group/${ groupId }`);
}
/**
@ -103,7 +125,7 @@ export function addSiteGroup(params: Record<string, any>) {
* @param params
*/
export function editSiteGroup(params: Record<string, any>) {
return request.put(`site/group/${params.group_id}`, params, { showSuccessMessage: true })
return request.put(`site/group/${ params.group_id }`, params, { showSuccessMessage: true })
}
/**
@ -111,7 +133,7 @@ export function editSiteGroup(params: Record<string, any>) {
* @param group_id
*/
export function deleteSiteGroup(group_id: number) {
return request.delete(`site/group/${group_id}`, { showSuccessMessage: true });
return request.delete(`site/group/${ group_id }`, { showSuccessMessage: true });
}
/**
@ -147,7 +169,7 @@ export function getUserList(params: Record<string, any>) {
* @param uid
*/
export function getUserInfo(uid: number) {
return request.get(`site/user/${uid}`);
return request.get(`site/user/${ uid }`);
}
/**
@ -164,29 +186,35 @@ export function addUser(params: Record<string, any>) {
* @param params
*/
export function editUser(params: Record<string, any>) {
return request.put(`site/user/${params.uid}`, params, { showSuccessMessage: true })
return request.put(`site/user/${ params.uid }`, params, { showSuccessMessage: true })
}
/**
*
* @param uid
* @returns
*/
export function lockUser(uid: number) {
return request.put(`site/user/lock/${uid}`)
return request.put(`site/user/lock/${ uid }`)
}
/**
*
* @param uid
* @returns
*/
export function unlockUser(uid: number) {
return request.put(`site/user/unlock/${uid}`)
return request.put(`site/user/unlock/${ uid }`)
}
/**
*
*
* @param uid
*/
export function deleteUser(uid: number) {
return request.delete(`site/user/${ uid }`)
}
/***************************************************** 操作日志 **************************************************/
@ -204,7 +232,15 @@ export function getLogList(params: Record<string, any>) {
* @param id
*/
export function getLogInfo(id: number) {
return request.get(`site/log/${id}`)
return request.get(`site/log/${ id }`)
}
/**
*
* @returns
*/
export function logDestroy() {
return request.delete(`site/log/destroy`)
}
/***************************************************** 账单列表 **************************************************/
@ -223,7 +259,7 @@ export function getAccountList(params: Record<string, any>) {
* @param id
*/
export function getAccountInfo(id: number) {
return request.get(`site/account/${id}`)
return request.get(`site/account/${ id }`)
}
/**
@ -257,3 +293,11 @@ export function getSiteAddons() {
export function getShowApp() {
return request.get('site/showApp')
}
/**
*
* @returns
*/
export function getShowMarketing() {
return request.get('site/showMarketing')
}

View File

@ -13,5 +13,4 @@ export function getStatInfo() {
*/
export function getSiteStatInfo() {
return request.get(`stat/siteindex`)
}
}

View File

@ -33,7 +33,7 @@ export function getRoleList(params: Record<string, any>) {
* @param roleId
*/
export function getRoleInfo(roleId: number) {
return request.get(`sys/role/${roleId}`)
return request.get(`sys/role/${ roleId }`)
}
/**
@ -50,7 +50,7 @@ export function addRole(params: Record<string, any>) {
* @param params
*/
export function editRole(params: Record<string, any>) {
return request.put(`sys/role/${params.role_id}`, params, { showSuccessMessage: true })
return request.put(`sys/role/${ params.role_id }`, params, { showSuccessMessage: true })
}
/**
@ -58,7 +58,15 @@ export function editRole(params: Record<string, any>) {
* @param roleId
*/
export function deleteRole(roleId: number) {
return request.delete(`sys/role/${roleId}`, { showSuccessMessage: true })
return request.delete(`sys/role/${ roleId }`, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function modifyRoleStatus(params: Record<string, any>) {
return request.put(`sys/role/status`, params, { showSuccessMessage: true })
}
/**
@ -76,7 +84,7 @@ export function allRole() {
* @returns
*/
export function getMenus(type: string) {
return request.get(`sys/menu/${type}`)
return request.get(`sys/menu/${ type }`)
}
/**
@ -85,7 +93,7 @@ export function getMenus(type: string) {
* @param menu_key
*/
export function getMenuInfo(app_type: string, menu_key: string) {
return request.get(`sys/menu/${app_type}/info/${menu_key}`);
return request.get(`sys/menu/${ app_type }/info/${ menu_key }`);
}
/**
@ -102,7 +110,7 @@ export function addMenu(params: Record<string, any>) {
* @param params
*/
export function editMenu(params: Record<string, any>) {
return request.put(`sys/menu/${params.app_type}/${params.menu_key}`, params, { showSuccessMessage: true })
return request.put(`sys/menu/${ params.app_type }/${ params.menu_key }`, params, { showSuccessMessage: true })
}
/**
@ -111,7 +119,7 @@ export function editMenu(params: Record<string, any>) {
* @param menu_key
*/
export function deleteMenu(app_type: string, menu_key: string) {
return request.delete(`sys/menu/${app_type}/${menu_key}`, { showSuccessMessage: true })
return request.delete(`sys/menu/${ app_type }/${ menu_key }`, { showSuccessMessage: true })
}
/**
@ -127,7 +135,7 @@ export function getSystemMenu() {
*
*/
export function getAddonMenu(key: any) {
return request.get(`sys/menu/addon_menu/${key}`)
return request.get(`sys/menu/addon_menu/${ key }`)
}
/**
@ -135,10 +143,9 @@ export function getAddonMenu(key: any) {
* @param key
*/
export function getMenuByTypeDir(key: any = 'system') {
return request.get(`sys/menu/dir/${key}`)
return request.get(`sys/menu/dir/${ key }`)
}
/***************************************************** 站点菜单 ****************************************************/
/**
@ -149,7 +156,6 @@ export function getSiteMenus() {
return request.get(`site/site/menu`)
}
/***************************************************** 设置 ****************************************************/
/**
@ -233,7 +239,7 @@ export function addAttachmentCategory(params: Record<string, any>) {
* @returns
*/
export function editAttachmentCategory(params: Record<string, any>) {
return request.put(`sys/attachment/category/${params.id}`, params, { showSuccessMessage: true })
return request.put(`sys/attachment/category/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -242,7 +248,7 @@ export function editAttachmentCategory(params: Record<string, any>) {
* @returns
*/
export function deleteAttachmentCategory(id: number) {
return request.delete(`sys/attachment/category/${id}`, { showSuccessMessage: true })
return request.delete(`sys/attachment/category/${ id }`, { showSuccessMessage: true })
}
/**
@ -279,24 +285,6 @@ export function getAuthMenu() {
return request.get(`auth/site/showmenu`)
}
/**
*
* @param params
* @returns
*/
export function getIconCategoryList(params: Record<string, any>) {
return request.get(`sys/attachment/icon_category`, { params })
}
/**
*
* @param params
* @returns
*/
export function getIconList(params: Record<string, any>) {
return request.get(`sys/attachment/icon`, { params })
}
/**
* evn
* @returns
@ -304,6 +292,7 @@ export function getIconList(params: Record<string, any>) {
export function getEnv() {
return request.get(`sys/env`)
}
/***************************************************** 地址管理 ****************************************************/
/**
@ -311,7 +300,7 @@ export function getEnv() {
* @param pid
*/
export function getAreaListByPid(pid: number = 0) {
return request.get(`sys/area/list_by_pid/${pid}`)
return request.get(`sys/area/list_by_pid/${ pid }`)
}
/**
@ -319,10 +308,9 @@ export function getAreaListByPid(pid: number = 0) {
* @param level
*/
export function getAreatree(level: number = 1) {
return request.get(`sys/area/tree/${level}`)
return request.get(`sys/area/tree/${ level }`)
}
/**
*
*/
@ -342,8 +330,9 @@ export function getContraryAddress(params: any) {
* @param code
*/
export function getAreaByCode(code: number | string) {
return request.get(`sys/area/code/${code}`)
return request.get(`sys/area/code/${ code }`)
}
/***************************************************** 存储设置 ****************************************************/
/**
@ -358,7 +347,7 @@ export function getStorageList() {
* @param type
*/
export function getStorageInfo(type: string) {
return request.get(`sys/storage/${type}`)
return request.get(`sys/storage/${ type }`)
}
/**
@ -367,7 +356,7 @@ export function getStorageInfo(type: string) {
* @returns
*/
export function editStorage(params: Record<string, any>) {
return request.put(`sys/storage/${params.storage_type}`, params, { showSuccessMessage: true })
return request.put(`sys/storage/${ params.storage_type }`, params, { showSuccessMessage: true })
}
/***************************************************** 支付设置 ****************************************************/
@ -377,7 +366,7 @@ export function editStorage(params: Record<string, any>) {
* @returns
*/
export function getPayConfig(type: string) {
return request.get(`pay/config/${type}`)
return request.get(`pay/config/${ type }`)
}
/**
@ -385,7 +374,7 @@ export function getPayConfig(type: string) {
* @returns
*/
export function setPayConfig(params: Record<string, any>) {
return request.put(`pay/config/${params.type}`, params, { showSuccessMessage: true });
return request.put(`pay/config/${ params.type }`, params, { showSuccessMessage: true });
}
/**
@ -402,7 +391,7 @@ export function getPayList() {
* @param channel
*/
export function getTransferInfo(channel: string) {
return request.get(`pay/channel/lists/${channel}`)
return request.get(`pay/channel/lists/${ channel }`)
}
/**
@ -411,7 +400,7 @@ export function getTransferInfo(channel: string) {
* @returns
*/
export function setTransferInfo(params: Record<string, any>) {
return request.post(`pay/channel/set/transfer`, params)
return request.post(`pay/channel/set/transfer`, params, { showSuccessMessage: true })
}
/***************************************************** 定时任务 ****************************************************/
@ -429,7 +418,7 @@ export function getCronList(params: any) {
* @returns
*/
export function getCronInfo(id: string) {
return request.get(`sys/cron/${id}`);
return request.get(`sys/cron/${ id }`);
}
/**
@ -469,7 +458,7 @@ export function addCron(params: Record<string, any>) {
* @returns
*/
export function editCron(params: Record<string, any>) {
return request.put(`sys/schedule/${params.id}`, params, { showSuccessMessage: true })
return request.put(`sys/schedule/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -477,7 +466,51 @@ export function editCron(params: Record<string, any>) {
* @returns
*/
export function deleteCron(id: string) {
return request.delete(`sys/schedule/${id}`, { showSuccessMessage: true })
return request.delete(`sys/schedule/${ id }`, { showSuccessMessage: true })
}
/**
*
* @returns
*/
export function doCron(params: Record<string, any>) {
return request.put(`sys/schedule/do/${ params.id }`, params, {
showErrorMessage: true,
showSuccessMessage: true
})
}
/**
*
* @returns
*/
export function getCronLogList(params: any) {
return request.get(`sys/schedule/log/list`, { params })
}
/**
*
* @returns
*/
export function deleteCronLog(params: Record<string, any>) {
return request.put(`sys/schedule/log/delete`, params, { showSuccessMessage: true })
}
/**
*
* @returns
*/
export function clearCronLog(params: Record<string, any>) {
return request.put(`sys/schedule/log/clear`, params, { showSuccessMessage: true })
}
/**
*
* @returns
*/
export function resetCron() {
return request.post(`sys/schedule/reset`, { showSuccessMessage: true })
}
/***************************************************** 协议管理 ****************************************************/
@ -495,7 +528,7 @@ export function getAgreementList() {
* @returns
*/
export function getAgreementInfo(key: string) {
return request.get(`sys/agreement/${key}`);
return request.get(`sys/agreement/${ key }`);
}
/**
@ -503,7 +536,7 @@ export function getAgreementInfo(key: string) {
* @returns
*/
export function editAgreement(params: Record<string, any>) {
return request.put(`sys/agreement/${params.key}`, params, { showSuccessMessage: true })
return request.put(`sys/agreement/${ params.key }`, params, { showSuccessMessage: true })
}
/**
@ -514,7 +547,6 @@ export function getChannelType() {
return request.get(`sys/channel`);
}
/**
*
* @returns
@ -555,13 +587,12 @@ export function setPatConfig(params: Record<string, any>) {
return request.post(`pay/channel/set/all`, params, { showSuccessMessage: true })
}
/***************************************************** 刷新菜单 ****************************************************/
/**
*
*/
export function menuRefresh(params: Record<string, any>) {
return request.post(`sys/menu/refresh`, {}, { showSuccessMessage: true })
return request.post(`sys/menu/refresh`, {})
}
/**
@ -571,6 +602,12 @@ export function clearSchemaCache(params: Record<string, any>) {
return request.post(`sys/schema/clear`, {}, { showSuccessMessage: true })
}
/**
*
*/
export function clearCache(params: Record<string, any>) {
return request.post(`sys/cache/clear`, {}, { showSuccessMessage: true })
}
/***************************************************** 获取应用 ****************************************************/
/**
@ -608,7 +645,7 @@ export function getPayAuditList(params: Record<string, any>) {
* @returns
*/
export function payAuditPass(outTradeNo: string) {
return request.put(`pay/pass/${outTradeNo}`, {}, { showSuccessMessage: true })
return request.put(`pay/pass/${ outTradeNo }`, {}, { showSuccessMessage: true })
}
/**
@ -616,14 +653,14 @@ export function payAuditPass(outTradeNo: string) {
* @returns
*/
export function payAuditRefuse(params: Record<string, any>) {
return request.put(`pay/refuse/${params.out_trade_no}`, params, { showSuccessMessage: true })
return request.put(`pay/refuse/${ params.out_trade_no }`, params, { showSuccessMessage: true })
}
/**
*
*/
export function getPayDetail(id: number) {
return request.get(`pay/detail/${id}`)
return request.get(`pay/detail/${ id }`)
}
/**
@ -650,7 +687,6 @@ export function setDeveloperToken(params: Record<string, any>) {
return request.put(`sys/config/developer_token`, params, { showSuccessMessage: true })
}
/**
*
* @returns
@ -693,7 +729,6 @@ export function setThemecolor(params: Record<string, any>) {
return request.put(`sys/config/themecolor`, params)
}
/***************************************************** 报表导出 ****************************************************/
/**
@ -725,7 +760,7 @@ export function getExportKeyList() {
* @returns
*/
export function exportData(type: string, params: Record<string, any>) {
return request.get(`sys/export/${type}`, { params })
return request.get(`sys/export/${ type }`, { params })
}
/**
@ -733,7 +768,7 @@ export function exportData(type: string, params: Record<string, any>) {
* @returns
*/
export function exportDataCheck(type: string, params: Record<string, any>) {
return request.get(`sys/export/check/${type}`, { params })
return request.get(`sys/export/check/${ type }`, { params })
}
/**
@ -741,7 +776,7 @@ export function exportDataCheck(type: string, params: Record<string, any>) {
* @param id
*/
export function deleteExport(id: number) {
return request.delete(`sys/export/${id}`, { showSuccessMessage: true })
return request.delete(`sys/export/${ id }`, { showSuccessMessage: true })
}
/**
@ -752,17 +787,18 @@ export function getWxoplatform() {
return request.get('sys/wxoplatform/config')
}
/**
*
* @returns
*/
export function getQrcode(params: Record<string, any>) {
return request.post(`sys/qrcode`, params, { showErrorMessage: false })
}
/**
*
* @returns
*/
export function checkIsRestart() {
return request.get('sys/web/restart', { showErrorMessage: false })
}
/**
*
*/
export function clearCache(params: Record<string, any>) {
return request.post(`sys/cache/clear`, {}, { showSuccessMessage: true })
}

View File

@ -6,7 +6,7 @@ import request from '@/utils/request'
* @returns
*/
export function getAddonDevelop(params: Record<string, any>) {
return request.get(`addon_develop`, {params});
return request.get(`addon_develop`, { params });
}
/**
@ -14,7 +14,7 @@ export function getAddonDevelop(params: Record<string, any>) {
* @returns
*/
export function getAddontype() {
return request.get(`addon/type`);
return request.get(`addontype`);
}
/**
@ -22,7 +22,7 @@ export function getAddontype() {
* @returns
*/
export function getAddonDevelopInfo(key: any) {
return request.get(`addon_develop/${key}`)
return request.get(`addon_develop/${ key }`)
}
/**
@ -30,7 +30,7 @@ export function getAddonDevelopInfo(key: any) {
* @returns
*/
export function getAddonDevelopCheck(key: any) {
return request.get(`addon_develop/check/${key}`)
return request.get(`addon_develop/check/${ key }`)
}
/**
@ -48,7 +48,7 @@ export function getAddonKeyBlackList() {
* @returns
*/
export function addAddonDevelop(key: any, params: Record<string, any>) {
return request.post(`addon_develop/${key}`, params)
return request.post(`addon_develop/${ key }`, params)
}
/**
@ -58,7 +58,7 @@ export function addAddonDevelop(key: any, params: Record<string, any>) {
* @returns
*/
export function editAddonDevelop(key: any, params: Record<string, any>) {
return request.put(`addon_develop/${key}`, params)
return request.put(`addon_develop/${ key }`, params)
}
/**
@ -67,7 +67,7 @@ export function editAddonDevelop(key: any, params: Record<string, any>) {
* @returns
*/
export function deleteAddonDevelop(key: any) {
return request.delete(`addon_develop/${key}`, {showSuccessMessage: true})
return request.delete(`addon_develop/${ key }`, { showSuccessMessage: true })
}
/**
@ -75,7 +75,7 @@ export function deleteAddonDevelop(key: any) {
* @returns
*/
export function addonDevelopBuild(key: any) {
return request.post(`addon_develop/build/${key}`)
return request.post(`addon_develop/build/${ key }`)
}
/**
@ -83,8 +83,9 @@ export function addonDevelopBuild(key: any) {
* @returns
*/
export function addonDevelopDownload(key: any) {
return request.post(`addon_develop/download/${key}`, {})
return request.post(`addon_develop/download/${ key }`, {})
}
/***************************************************** 代码生成 ****************************************************/
/**
@ -93,7 +94,7 @@ export function addonDevelopDownload(key: any) {
* @returns
*/
export function getGenerateTableList(params: Record<string, any>) {
return request.get(`generator/generator`, {params})
return request.get(`generator/generator`, { params })
}
/**
@ -102,7 +103,7 @@ export function getGenerateTableList(params: Record<string, any>) {
* @returns
*/
export function getGenerateTableInfo(id: number) {
return request.get(`generator/generator/${id}`);
return request.get(`generator/generator/${ id }`);
}
/**
@ -111,7 +112,7 @@ export function getGenerateTableInfo(id: number) {
* @returns
*/
export function addGenerateTable(params: Record<string, any>) {
return request.post('generator/generator', params, {showSuccessMessage: true})
return request.post('generator/generator', params, { showSuccessMessage: true })
}
/**
@ -119,7 +120,7 @@ export function addGenerateTable(params: Record<string, any>) {
* @param params
*/
export function editGenerateTable(params: Record<string, any>) {
return request.put(`generator/generator/${params.id}`, params, {showSuccessMessage: true})
return request.put(`generator/generator/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -128,7 +129,7 @@ export function editGenerateTable(params: Record<string, any>) {
* @returns
*/
export function deleteGenerateTable(id: number) {
return request.delete(`generator/generator/${id}`, {showSuccessMessage: true})
return request.delete(`generator/generator/${ id }`, { showSuccessMessage: true })
}
/**
@ -137,7 +138,7 @@ export function deleteGenerateTable(id: number) {
* @returns
*/
export function generateCreate(params: Record<string, any>) {
return request.post('/generator/download', params)
return request.post(`generator/download`, params)
}
/**
@ -146,7 +147,7 @@ export function generateCreate(params: Record<string, any>) {
* @returns
*/
export function generatePreview(id: number) {
return request.get(`generator/preview/${id}`)
return request.get(`generator/preview/${ id }`)
}
/**
@ -167,26 +168,26 @@ export function getSystem() {
*
*/
export function getGeneratorAllModel(params: any) {
return request.get(`generator/all_model`, {params})
return request.get(`generator/all_model`, { params })
}
/**
*
*/
export function getGeneratorTableColumn(params: any) {
return request.get(`generator/table_column`, {params})
return request.get(`generator/table_column`, { params })
}
/**
*
*/
export function generatorCheckFile(params: Record<string, any>) {
return request.get(`generator/check_file`, {params})
return request.get(`generator/check_file`, { params })
}
/**
*
*/
export function getGeneratorModelTableColumn(params: any) {
return request.get(`generator/model_table_column`, {params})
return request.get(`generator/model_table_column`, { params })
}

View File

@ -6,7 +6,7 @@ import request from '@/utils/request'
* @param addon
*/
export function getUpgradeContent(addon: string = '') {
return request.get(addon ? `upgrade/${addon}` : 'upgrade')
return request.get(addon ? `upgrade/${ addon }` : 'upgrade')
}
/**
@ -19,9 +19,10 @@ export function getUpgradeTask() {
/**
*
* @param addon
* @param params
*/
export function upgradeAddon(addon: string = '') {
return request.post(addon ? `upgrade/${addon}` : 'upgrade')
export function upgradeAddon(addon: string = '', params: Record<string, any> = {}) {
return request.post(addon ? `upgrade/${ addon }` : 'upgrade', params)
}
/**
@ -35,7 +36,7 @@ export function executeUpgrade() {
*
*/
export function preUpgradeCheck(addon: string = '') {
return request.get(addon ? `upgrade/check/${addon}` : 'upgrade/check')
return request.get(addon ? `upgrade/check/${ addon }` : 'upgrade/check')
}
/**
@ -44,3 +45,118 @@ export function preUpgradeCheck(addon: string = '') {
export function clearUpgradeTask() {
return request.post('upgrade/clear')
}
/**
*
* @param operate
*/
export function upgradeUserOperate(operate: string) {
return request.post(`upgrade/operate/${ operate }`)
}
/**
*
* @param params
* @returns
*/
export function getUpgradeRecords(params: Record<string, any>) {
return request.get(`upgrade/records`, { params })
}
/**
*
* @param params
*/
export function delUpgradeRecords(params: Record<string, any>) {
return request.delete(`upgrade/records`, { params })
}
/**
*
* @param params
* @returns
*/
export function getBackupRecords(params: Record<string, any>) {
return request.get(`backup/records`, { params })
}
/**
*
* @param params
*/
export function modifyBackupRemark(params: Record<string, any>) {
return request.put(`backup/remark`, params, { showSuccessMessage: true })
}
/**
*
*/
export function checkDirExist(params: Record<string, any>) {
return request.post('backup/check_dir', params)
}
/**
*
*/
export function checkPermission(params: Record<string, any>) {
return request.post('backup/check_permission', params)
}
/**
*
*/
export function restoreUpgradeBackup(params: Record<string, any>) {
return request.post('backup/restore', params, { showErrorMessage: false })
}
/**
*
*/
export function deleteRecords(params: Record<string, any>) {
return request.post('backup/delete', params, { showSuccessMessage: true })
}
/**
*
*/
export function manualBackup(params: Record<string, any>) {
return request.post("backup/manual", params)
}
/**
*
* @param params
*/
export function performRecoveryTasks(params: Record<string, any>) {
return request.get("backup/restore_task", params)
}
/**
*
* @param params
*/
export function performBackupTasks(params: Record<string, any>) {
return request.get("backup/task", params)
}
/**
*
* @param params
*/
export function connectTest(params: Record<string, any>) {
return request.post("niucloud/build/connect_test", params)
}
/**
*
* @param params
*/
export function setLocalUrl(params: Record<string, any>) {
return request.post("niucloud/build/set_local_url", params)
}
/**
*
* @param params
*/
export function getLocalUrl(params: Record<string, any>) {
return request.get("niucloud/build/get_local_url", params)
}

View File

@ -19,7 +19,7 @@ export function getUserList(params: Record<string, any>) {
* @returns
*/
export function getUserInfo(uid: number) {
return request.get(`user/user/${uid}`);
return request.get(`user/user/${ uid }`);
}
/**
@ -32,9 +32,17 @@ export function addUser(params: Record<string, any>) {
}
/**
*
*
* @param uid
*/
export function deleteUser(uid: number) {
return request.delete(`user/user/${ uid }`, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function editUser(params: Record<string, any>) {
return request.put(`user/user/${ params.uid }`, params, { showSuccessMessage: true })
}
@ -48,6 +56,15 @@ export function getAllUserList(params: Record<string, any>) {
return request.get(`user/user_all`, { params })
}
/**
*
* @param params
* @returns
*/
export function getUserListSelect(params: Record<string, any>) {
return request.get(`user/user_select`, { params })
}
/**
*
* @param username
@ -59,10 +76,10 @@ export function checkUsernameIsExist(username: string) {
/**
*
* @param params
* @param uid
*/
export function getUserCreateSiteLimit(uid: number) {
return request.get(`user/user/create_site_limit/${uid}`)
return request.get(`user/user/create_site_limit/${ uid }`)
}
/**
@ -70,7 +87,7 @@ export function getUserCreateSiteLimit(uid: number) {
* @param id
*/
export function getUserCreateSiteLimitInfo(id: number) {
return request.get(`user/user/create_site_limit/info/${id}`)
return request.get(`user/user/create_site_limit/info/${ id }`)
}
/**
@ -86,13 +103,13 @@ export function addUserCreateSiteLimit(params: Record<string, any>) {
* @param params
*/
export function editUserCreateSiteLimit(params: Record<string, any>) {
return request.put(`user/user/create_site_limit/${params.id}`, params, { showSuccessMessage: true })
return request.put(`user/user/create_site_limit/${ params.id }`, params, { showSuccessMessage: true })
}
/**
*
* @param params
* @param id
*/
export function delUserCreateSiteLimit(id: number) {
return request.delete(`user/user/create_site_limit/${id}`, { showSuccessMessage: true })
return request.delete(`user/user/create_site_limit/${ id }`, { showSuccessMessage: true })
}

View File

@ -18,7 +18,7 @@ export function getVerifyRecord(params: Record<string, any>) {
* @returns
*/
export function getVerifyDetail(verifyCode: string) {
return request.get(`verify/verify/${verifyCode}`)
return request.get(`verify/verify/${ verifyCode }`)
}
/***************************************************** 核销员 ****************************************************/
@ -34,7 +34,6 @@ export function getVerifierList(params: Record<string, any>) {
/**
*
* @param params
* @returns
*/
export function getVerifierSelect() {
@ -65,5 +64,21 @@ export function addVerifier(params: Record<string, any>) {
* @returns
*/
export function deleteVerifier(id: number) {
return request.delete(`verify/verifier/${id}`, { showSuccessMessage: true })
}
return request.delete(`verify/verifier/${ id }`, { showSuccessMessage: true })
}
/**
*
* @returns
*/
export function getVerifyInfo(id: number) {
return request.get(`verify/verifier/${ id }`)
}
/**
*
* @returns
*/
export function editVerifier(params: Record<string, any>) {
return request.post(`verify/verifier/${ params.id }`, params,{ showSuccessMessage: true })
}

View File

@ -33,6 +33,7 @@ export function getTemplateList() {
export function getBatchAcquisition(params: Record<string, any>) {
return request.put('weapp/template/sync', params, { showSuccessMessage: true })
}
/**
*
* @param params
@ -65,7 +66,7 @@ export function getWeappVersionList(params: Record<string, any>) {
* @returns
*/
export function getWeappUploadLog(key: string) {
return request.get(`weapp/upload/${key}`)
return request.get(`weapp/upload/${ key }`)
}
/***************************************************** 管理端 ****************************************************/
@ -103,7 +104,7 @@ export function getVersionList(params: Record<string, any>) {
* @returns
*/
export function getVersionInfo(id: string) {
return request.get(`applet/version/${id}`)
return request.get(`applet/version/${ id }`)
}
/**
@ -112,7 +113,7 @@ export function getVersionInfo(id: string) {
* @returns
*/
export function editVersion(params: Record<string, any>) {
return request.put(`applet/version/${params.id}`, params, { showSuccessMessage: true })
return request.put(`applet/version/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -121,7 +122,7 @@ export function editVersion(params: Record<string, any>) {
* @returns
*/
export function deleteVersion(id: string) {
return request.delete(`applet/version/${id}`)
return request.delete(`applet/version/${ id }`)
}
/**
@ -150,7 +151,6 @@ export function setWeappPrivacySetting(params: Record<string, any>) {
/**
*
* @param params
*/
export function getWeappPrivacySetting() {
return request.get('weapp/privacysetting')

View File

@ -21,7 +21,7 @@ export function getWechatStatic() {
* @returns
*/
export function editWechatConfig(params: Record<string, any>) {
return request.put('wechat/config', params, {showSuccessMessage: true})
return request.put('wechat/config', params, { showSuccessMessage: true })
}
/**
@ -38,7 +38,7 @@ export function getWechatMenu() {
* @returns
*/
export function editWechatMenu(params: Record<string, any>) {
return request.put('wechat/menu', params, {showSuccessMessage: true})
return request.put('wechat/menu', params, { showSuccessMessage: true })
}
/**
@ -49,14 +49,13 @@ export function getTemplateList() {
return request.get('wechat/template')
}
/**
*
* @param params
* @returns
*/
export function getBatchAcquisition(params: Record<string, any>) {
return request.put('wechat/template/sync', params, {showSuccessMessage: true})
return request.put('wechat/template/sync', params, { showSuccessMessage: true })
}
/**
@ -70,7 +69,7 @@ export function getKeywordsReplyList(params: Record<string, any>) {
*
*/
export function editKeywordsReply(params: Record<string, any>) {
return request.put(`wechat/reply/keywords/${params.id}`, params, { showSuccessMessage: true })
return request.put(`wechat/reply/keywords/${ params.id }`, params, { showSuccessMessage: true })
}
/**
@ -85,14 +84,14 @@ export function addKeywordsReply(params: Record<string, any>) {
* @param id
*/
export function getKeywordsReplyInfo(id: number) {
return request.get(`wechat/reply/keywords/${id}`)
return request.get(`wechat/reply/keywords/${ id }`)
}
/**
*
*/
export function delKeywordsReply(id: number) {
return request.delete(`wechat/reply/keywords/${id}`, { showSuccessMessage: true })
return request.delete(`wechat/reply/keywords/${ id }`, { showSuccessMessage: true })
}
/**
@ -131,7 +130,6 @@ export function getMediaList(params: Record<string, any>) {
return request.get('wechat/media', { params })
}
/**
*
*/

View File

@ -75,3 +75,23 @@ export function getSiteGroupCommitRecord(params: Record<string, any>) {
return request.get('wxoplatform/sitegroup/commit', { params })
}
/**
*
* @param params
*/
export function undoAudit(params: Record<string, any>) {
return request.put('wxoplatform/undo/weappaudit', params, { showSuccessMessage: true })
}
export function syncSiteWeapp(params: Record<string, any>) {
return request.post('wxoplatform/async/siteweapp', params, { showSuccessMessage: true })
}
/**
*
* @param params
*/
export function getAuthRecord(params: Record<string, any>) {
return request.get('wxoplatform/authorization/record', { params })
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,68 +1,108 @@
<template>
<el-dialog v-model="showDialog" :title="t('cloudbuild.title')" width="850px" :close-on-click-modal="false" :close-on-press-escape="false" :before-close="dialogClose">
<div v-if="active == 'build'" class="h-[60vh]" v-loading="loading">
<div class="h-[60vh] flex flex-col" v-if="cloudBuildCheck && !cloudBuildTask">
<el-scrollbar>
<div v-show="active == 'build'" class="h-[50vh]" v-loading="loading">
<div class="h-[50vh] flex flex-col" v-if="cloudBuildCheck && !cloudBuildTask">
<!-- <el-scrollbar> -->
<div class="bg-[#fff] my-3" v-if="cloudBuildCheck.dir">
<p class="pt-[20px] pl-[20px] ">{{ t('cloudbuild.dirPermission') }}</p>
<div>
<p class="pl-[20px] ">{{ t('cloudbuild.dirPermission') }}</p>
<div class="mt-[10px] mx-[20px] text-[14px] cursor-pointer text-primary flex items-center justify-between bg-[#EFF6FF] rounded-[4px] p-[10px]" @click="cloudBuildCheckDirFn">
<div class="flex items-center">
<el-icon :size="17"><QuestionFilled /></el-icon>
<span class="ml-[5px] leading-[20px]">编译权限错误查看解决方案</span></div>
<div class="border-[1px] border-primary rounded-[3px] w-[72px] h-[26px] leading-[25px] text-center">立即查看</div>
</div>
</div>
<div class="px-[20px] pt-[10px] text-[14px] el-table">
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
<el-col :span="12">
<el-col :span="18">
<span>{{ t('cloudbuild.path') }}</span>
</el-col>
<el-col :span="6">
<el-col :span="3">
<span>{{ t('cloudbuild.demand') }}</span>
</el-col>
<el-col :span="6">
<el-col :span="3">
<span>{{ t('status') }}</span>
</el-col>
</el-row>
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_readable">
<el-col :span="12">
<span>{{ item.dir }}</span>
</el-col>
<el-col :span="6">
<span>{{ t('cloudbuild.readable') }}</span>
</el-col>
<el-col :span="6">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else>
<el-scrollbar style="height: calc(300px); overflow: auto">
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_readable">
<el-col :span="18">
<span>{{ item.dir }}</span>
</el-col>
<el-col :span="3">
<span>{{ t('cloudbuild.readable') }}</span>
</el-col>
<el-col :span="3">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon>
</span>
</el-col>
</el-row>
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_write">
<el-col :span="18">
<span>{{ item.dir }}</span>
</el-col>
<el-col :span="3">
<span>{{ t('cloudbuild.write') }}</span>
</el-col>
<el-col :span="3" >
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon>
</span>
</el-col>
</el-row>
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_write">
<el-col :span="12">
<span>{{ item.dir }}</span>
</el-col>
<el-col :span="6">
<span>{{ t('cloudbuild.write') }}</span>
</el-col>
<el-col :span="6">
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
<span v-else>
<el-icon color="red">
<CloseBold />
</el-icon>
</span>
</el-col>
</el-row>
</el-col>
</el-row>
</el-scrollbar>
</div>
</div>
</el-scrollbar>
<!-- </el-scrollbar> -->
</div>
<div class="h-[60vh]" v-show="cloudBuildTask">
<terminal ref="terminalRef" context="" :init-log="null" :show-header="false" :show-log-time="true" @exec-cmd="onExecCmd"/>
<div class="h-[45vh]" v-show="cloudBuildTask">
<terminal ref="terminalRef" :name="`cloud-build-${terminalId}`" context="" :init-log="null" :show-header="false" :show-log-time="true" @exec-cmd="onExecCmd"/>
</div>
<div class="flex justify-end mt-[20px]" v-show="cloudBuildTask">
<el-button @click="dialogCancel()" class="!w-[90px]">取消</el-button>
<el-button type="primary" :loading="timeloading" class="!w-[140px]">已用时 {{ formattedDuration }}</el-button>
</div>
</div>
<div v-if="active == 'complete'">
<div class="h-[60vh] flex flex-col">
<div class="flex-1 h-0">
<el-result icon="success" :title="t('cloudbuild.cloudbuildSuccess')"></el-result>
<div v-show="active == 'error'">
<div class="h-[50vh] flex flex-col">
<div class="flex-1 h-0 flex justify-center items-center flex-col">
<el-result icon="error" :title="t('编译失败')">
<template #icon>
<img src="@/app/assets/images/error_icon.png" alt="">
</template>
<template #extra>
<el-scrollbar class="max-h-[150px] !overflow-auto text-[15px] text-[#4F516D] mb-[15px] mt-[-15px]">
{{errorInfo}}
</el-scrollbar>
<el-button @click="handleReturn" class="!w-[90px]">错误信息</el-button>
<el-button @click="showDialog=false" type="primary" class="!w-[90px]">完成</el-button>
</template>
</el-result>
</div>
</div>
</div>
<div v-show="active == 'complete'">
<div class="h-[50vh] flex flex-col">
<div class="flex-1 h-0 flex justify-center items-center flex-col">
<el-result icon="success" :title="t('cloudbuild.cloudbuildSuccess')" :sub-title="`编译耗时${formattedDuration},成功编译完成。`">
<template #icon>
<img src="@/app/assets/images/success_icon.png" alt="">
</template>
<template #extra>
<el-button @click="handleReturn" class="!w-[90px]">返回</el-button>
<el-button @click="showDialog=false" type="primary" class="!w-[90px]">完成</el-button>
</template>
</el-result>
</div>
</div>
</div>
@ -70,23 +110,35 @@
</template>
<script lang="ts" setup>
import { ref, h, watch } from 'vue'
import { ref, h, watch, computed } from 'vue'
import { t } from '@/lang'
import { getCloudBuildLog, getCloudBuildTask, cloudBuild, clearCloudBuildTask, preBuildCheck } from '@/app/api/cloud'
import { Terminal, TerminalFlash } from 'vue-web-terminal'
import 'vue-web-terminal/lib/theme/dark.css'
import { AnyObject } from "@/types/global"
import { ElNotification, ElMessageBox } from "element-plus"
import { AnyObject } from '@/types/global'
import { ElNotification, ElMessageBox } from 'element-plus'
const showDialog = ref<boolean>(false)
const terminalId = ref(Date.now());
const cloudBuildTask = ref<null | AnyObject>(null)
const active = ref('build')
const cloudBuildCheck = ref<null | AnyObject>(null)
const loading = ref(false)
const terminalRef = ref(null)
const emits = defineEmits(['complete'])
let cloudBuildLog = []
//
const buildStartTime = ref<number | null>(null)
const buildDuration = ref<number>(0)
let buildTimer: number | null = null
const formattedDuration = computed(() => {
const seconds = buildDuration.value
const mins = Math.floor(seconds / 60)
const secs = seconds % 60
return mins > 0 ? `${mins}${secs}` : `${secs}`
})
/**
* 查询升级任务
*/
@ -97,42 +149,82 @@ const getCloudBuildTaskFn = () => {
cloudBuildTask.value = data
if (!showDialog.value) {
showElNotification()
// showElNotification()
localStorage.setItem('cloud_build_task', 'true')
}
}).catch()
}
getCloudBuildTaskFn()
const errorInfo = ref('')
const timeloading = ref(false)
const getCloudBuildLogFn = () => {
timeloading.value = true
getCloudBuildLog().then(res => {
if (!res.data) {
if (showDialog.value && cloudBuildLog.length) {
active.value = 'complete'
timeloading.value = false
terminalRef.value.execute('clear')
clearCloudBuildTask()
buildTimer && clearInterval(buildTimer) //
localStorage.removeItem('cloud_build_start_time')
localStorage.removeItem('cloud_build_task')
}
notificationEl && notificationEl.close()
cloudBuildTask.value = null
// cloudBuildTask.value = null
return
}
const data = res.data.data ?? [];
const data = res.data.data ?? []
let error = ''
if (data[0] && data[0].length && showDialog.value) {
if (cloudBuildLog.length == 0) {
const storedTime = localStorage.getItem('cloud_build_start_time')
if (storedTime) {
buildStartTime.value = Number(storedTime)
} else {
const now = Date.now()
buildStartTime.value = now
localStorage.setItem('cloud_build_start_time', String(now))
}
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
buildTimer && clearInterval(buildTimer)
buildTimer = setInterval(() => {
if (buildStartTime.value) {
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
}
}, 1000)
terminalRef.value.execute('clear')
terminalRef.value.execute('开始编译')
}
data[0].forEach(item => {
if (!cloudBuildLog.includes(item.action)) {
terminalRef.value.pushMessage({ content: `正在执行:${item.action}` })
terminalRef.value.pushMessage({ content: `${item.action}` })
cloudBuildLog.push(item.action)
if (item.code == 0) {
error = item.msg
terminalRef.value.pushMessage({ content: item.msg, class: 'error' })
timeloading.value = false
active.value = 'error'
terminalRef.value.execute('clear')
clearCloudBuildTask()
errorInfo.value = item.msg
//
if (buildTimer) {
clearInterval(buildTimer)
buildTimer = null
}
// duration
if (buildStartTime.value) {
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
}
localStorage.removeItem('cloud_build_start_time')
localStorage.removeItem('cloud_build_task')
}
}
})
@ -146,22 +238,28 @@ const getCloudBuildLogFn = () => {
}).catch()
}
let notificationEl : any = null
const closeType = ref('normal')
const handleReturn = () => {
active.value = 'build'
closeType.value = 'success'
}
const notificationEl : any = null
/**
* 升级中任务提示
*/
const showElNotification = () => {
notificationEl = ElNotification.success({
title: t('warning'),
dangerouslyUseHTMLString: true,
message: h('div', {}, [
t('cloudbuild.executingTips'),
h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('cloudbuild.clickView')])
]),
duration: 0,
showClose: false
})
}
// const showElNotification = () => {
// notificationEl = ElNotification.success({
// title: t('warning'),
// dangerouslyUseHTMLString: true,
// message: h('div', {}, [
// t('cloudbuild.executingTips'),
// h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('cloudbuild.clickView')])
// ]),
// duration: 0,
// showClose: false
// })
// }
const elNotificationClick = () => {
showDialog.value = true
@ -172,7 +270,7 @@ const elNotificationClick = () => {
const open = async () => {
loading.value = true
active.value = 'build'
closeType.value = 'normal'
if (cloudBuildTask.value) {
showDialog.value = true
loading.value = false
@ -194,6 +292,7 @@ const open = async () => {
} else {
loading.value = false
cloudBuildCheck.value = data
showDialog.value = true
}
}).catch(() => {
showDialog.value = false
@ -216,9 +315,9 @@ const onExecCmd = (key, command, success, failed, name) => {
}
const makeIterator = (array: string[]) => {
var nextIndex = 0
let nextIndex = 0
return {
next() {
next () {
if ((nextIndex + 1) == array.length) {
nextIndex = 0
}
@ -228,7 +327,7 @@ const makeIterator = (array: string[]) => {
}
const dialogClose = (done: () => {}) => {
if (active.value == 'build' && cloudBuildTask.value) {
if (active.value == 'build' && cloudBuildTask.value && closeType.value == 'normal') {
ElMessageBox.confirm(
t('cloudbuild.showDialogCloseTips'),
t('warning'),
@ -239,19 +338,57 @@ const dialogClose = (done: () => {}) => {
}
).then(() => {
terminalRef.value.execute('clear')
localStorage.removeItem('cloud_build_start_time')
localStorage.removeItem('cloud_build_task')
done()
buildTimer && clearInterval(buildTimer)
buildTimer = null
buildStartTime.value = null
buildDuration.value = 0
}).catch(() => { })
} else {
done()
}
}
const dialogCancel = () => {
if (active.value == 'build' && cloudBuildTask.value && closeType.value == 'normal') {
ElMessageBox.confirm(
t('cloudbuild.showDialogCloseTips'),
t('warning'),
{
confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'),
type: 'warning'
}
).then(() => {
terminalRef.value.execute('clear')
localStorage.removeItem('cloud_build_start_time')
localStorage.removeItem('cloud_build_task')
buildTimer && clearInterval(buildTimer)
buildTimer = null
buildStartTime.value = null
buildDuration.value = 0
showDialog.value = false
}).catch(() => { })
} else {
showDialog.value = false
}
}
const cloudBuildCheckDirFn = () => {
window.open('https://doc.niucloud.com/v6.html?keywords=/chang-jian-wen-ti-chu-li/er-shi-wu-3001-sheng-7ea7-yun-bian-yi-mu-lu-du-xie-quan-xian-zhuang-tai-bu-tong-guo-ru-he-chu-li')
}
watch(() => showDialog.value, () => {
if (!showDialog.value) {
cloudBuildTask.value = null
active.value = 'build'
cloudBuildLog = []
flashInterval && clearInterval(flashInterval)
buildTimer && clearInterval(buildTimer)
buildStartTime.value = null
buildDuration.value = 0
clearCloudBuildTask()
}
})
@ -259,7 +396,9 @@ watch(() => showDialog.value, () => {
defineExpose({
open,
cloudBuildTask,
loading
loading,
elNotificationClick,
getCloudBuildTaskFn
})
</script>
@ -270,4 +409,30 @@ defineExpose({
:deep(.terminal .t-log-box span) {
white-space: pre-wrap;
}
:deep(.el-result__icon) {
color: unset !important; //
}
:deep(.el-dialog__title){
font-size: 20px;
font-weight: bold;
}
:deep(.el-result__title p){
font-size: 25px;
color: #1D1F3A;
font-weight: 500;
}
:deep(.el-result__subtitle p){
font-size: 15px;
color: #4F516D;
font-weight: 500;
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
}
:deep(.el-result){
margin-top: -80px !important;
}
</style>

View File

@ -0,0 +1,245 @@
<template>
<el-dialog v-model="dialogVisible" :title="t('gxx')" width="850" :destroy-on-close="true">
<el-card class="box-card !border-none" shadow="never" >
<div v-loading="loading">
<div class="text-page-title mb-[20px]">历史版本</div>
<div class="time-dialog h-[500px]" style="overflow: auto">
<el-scrollbar>
<el-timeline style="width: 100%" v-if="!loading">
<el-timeline-item v-for="(item, index) in frameworkVersionList" :key="index" placement="left" :color="color">
<div class="relative">
<span class="text-[#333333] text-[14px] absolute">{{ timeSplit(item.release_time)[0] }}</span>
<br />
<span class="text-[#999999] text-[14px] w-[78px] block mt-[10px] absolute text-right">{{ timeSplit(item.release_time)[1] }}</span>
</div>
<el-collapse v-model="activeName" accordion>
<el-collapse-item :name="index">
<template #title>
<span class="text-[#333] text-[14px]"> v{{ item.version_no }} </span>
</template>
<div class="px-[20px] py-[20px] bg-overlay timeline-log-wrap whitespace-pre-wrap rounded-[4px]" style="background: rgba(25, 103, 249, 0.03);" v-if="item['upgrade_log']">
<div v-html="item['upgrade_log']"></div>
</div>
</el-collapse-item>
</el-collapse>
</el-timeline-item>
</el-timeline>
</el-scrollbar>
</div>
</div>
</el-card>
</el-dialog>
</template>
<script lang="ts" setup>
import { computed, ref, defineProps, nextTick } from "vue"
import { t } from "@/lang"
import { getAppVersionList, getFrameworkVersionList } from "@/app/api/module"
const props = defineProps({
upgradeKey: {
type: String,
required: true
}
})
const frameworkVersionList = ref([])
const newVersion: any = computed(() => {
return frameworkVersionList.value.length ? frameworkVersionList.value[0] : null
})
const getAppVersionListFn = () => {
getAppVersionList({ app_key: props.upgradeKey }).then(({ data }) => {
loading.value = false
data.forEach((item: any, index) => {
if (index == 0) {
item.important = 1
} else {
item.important = 0
}
})
frameworkVersionList.value = data
if(frameworkVersionList.value.length == 0){
ElMessage.warning('暂无版本更新信息')
return
}else{
dialogVisible.value = true
}
})
}
const getFrameworkVersionListFn = () => {
getFrameworkVersionList().then(({ data }) => {
loading.value = false
data.forEach((item: any, index) => {
if (index == 0) {
item.important = 1
} else {
item.important = 0
}
})
frameworkVersionList.value = data
dialogVisible.value = true
})
}
const activeName = ref(0)
//
const loading = ref(true)
const dialogVisible = ref(false)
const open = async () => {
nextTick(() => {
activeName.value = 0 //
if (props.upgradeKey) {
getAppVersionListFn()
} else {
getFrameworkVersionListFn()
}
})
}
const timeSplit = (str: string) => {
const [date, time] = str.split(" ")
const [hours, minutes] = time.split(":")
return [date, `${ hours }:${ minutes }`]
}
defineExpose({
open
})
</script>
<style lang="scss" scoped></style>
<style scoped>
.el-timeline-item {
min-height: 75px;
}
.el-timeline-item >>> .el-timeline-item__node--normal {
left: 117px;
width: 18px;
height: 18px;
background: rgba(25, 103, 249, 0.12) !important;
border-radius: 50%;
/* 创建圆形 */
position: relative;
/* 用于定位伪元素 */
}
.el-timeline-item >>> .el-timeline-item__node--normal::before {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 8px;
/* 中心圆直径 */
height: 8px;
background-color: var(--el-color-primary);
/* 中心圆颜色 */
border-radius: 50%;
/* 中心圆为圆形 */
transform: translate(-50%, -50%);
/* 居中显示 */
}
.el-timeline-item >>> .el-timeline-item__tail {
left: 125px;
border-left-color: #dddddd;
border-left-style: dashed;
margin: 24px 0 12px;
height: calc(100% - 24px - 12px);
}
.time-dialog >>> .el-dialog__header {
padding: 10px 20px;
height: 25px;
line-height: 25px;
text-align: left;
background: #fff;
border-bottom: solid 1px #e4e7ed;
}
.time-dialog >>> .el-card__body {
padding: 8px;
}
.time-dialog >>> .el-card.is-always-shadow {
box-shadow: none;
}
.time-dialog >>> .el-dialog__headerbtn .el-dialog__close {
color: #666;
}
.time-dialog >>> .el-dialog__headerbtn:hover .el-dialog__close {
color: #666;
}
.time-dialog >>> .el-dialog__headerbtn {
top: 14px;
}
.time-dialog >>> .el-collapse {
margin-left: 119px;
border: none;
margin-top: -22px;
}
.time-dialog >>> .el-collapse-item__header {
border: none;
line-height: 25px;
height: 25px;
position: relative;
z-index: 999;
}
.time-dialog >>> .el-collapse-item__wrap {
border: none;
}
.time-dialog >>> .el-collapse-item__content {
margin-top: 15px;
padding-bottom: 0 !important;
}
.time-dialog >>> .el-timeline-item__node--01 {
width: 18px !important;
height: 18px !important;
left: 117px !important;
}
</style>
<style>
.time-dialog .el-dialog {
margin: 0 auto !important;
max-height: 90%;
overflow: hidden;
top: 5%;
}
.time-dialog .el-dialog {
margin: 0 auto !important;
height: 65%;
overflow: hidden;
top: 10%;
}
.time-dialog .el-dialog__body {
position: absolute;
left: 0;
top: 46px;
bottom: 0;
right: 0;
z-index: 1;
overflow: hidden;
overflow-y: auto;
padding: 10px 20px 0 0;
}
.time-dialog .el-timeline-item__wrapper {
top: -20px !important;
}
.el-scrollbar__bar{
z-index:999;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -2,13 +2,13 @@
<el-dialog v-model="dialogVisible" :title="t('accountSettings')" width="500">
<el-form :model="saveInfo" label-width="90px" ref="formRef" class="page-form">
<el-form-item :label="t('headImg')">
<upload-image v-model="saveInfo.head_img" :limit="1" :type="'avatar'" imageFit="cover" />
<upload-image v-model="saveInfo.head_img" :limit="1" imageFit="cover" />
</el-form-item>
<el-form-item :label="t('userName')">
<span>{{saveInfo.username}}</span>
</el-form-item>
<el-form-item :label="t('realName')">
<el-input v-model="saveInfo.real_name" :placeholder="t('realNamePlaceholder')" clearable class="input-width" />
<el-input v-model.trim="saveInfo.real_name" :placeholder="t('realNamePlaceholder')" clearable class="input-width" />
</el-form-item>
</el-form>
<template #footer>
@ -25,14 +25,11 @@ import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { deepClone } from '@/utils/common'
import { getUserInfo, setUserInfo } from '@/app/api/personal'
import { useRouter } from 'vue-router'
import useUserStore from '@/stores/modules/user'
const userStore = useUserStore()
const router = useRouter()
//
const saveInfo = reactive({})
const saveInfo: any = reactive({})
const formRef = ref<FormInstance>()
const loading = ref(true)
const dialogVisible = ref(false)
@ -61,7 +58,7 @@ const submitForm = (formEl: FormInstance | undefined) => {
setUserInfo(saveInfo).then((res: any) => {
loading.value = false
dialogVisible.value = false
let data = deepClone(userStore.userInfo)
let data: any = deepClone(userStore.userInfo)
data.head_img = saveInfo.head_img
userStore.setUserInfo(data)
}).catch(() => {
@ -77,5 +74,4 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
</style>

View File

@ -1,19 +1,19 @@
{
"companyName": "授权主体",
"siteAddress": "授权域名",
"contactName": "授权联系人",
"authCode": "授权码",
"authSecret": "授权秘钥",
"createTime": "授权时间",
"expireTime": "到期时间",
"authApp": "授权应用",
"authAppKey": "应用标识",
"siteAddressTips": "授权域名不匹配",
"authCodePlaceholder": "请输入授权码",
"authSecretPlaceholder": "请输入授权秘钥",
"updateCode": "重新绑定",
"notHaveAuth": "还没有授权?去购买",
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
"versionTips":"已经升级到最新版本"
"companyName": "授权主体",
"siteAddress": "授权域名",
"contactName": "授权联系人",
"authCode": "授权码",
"authSecret": "授权秘钥",
"createTime": "授权时间",
"expireTime": "到期时间",
"authApp": "授权应用",
"authAppKey": "应用标识",
"siteAddressTips": "授权域名不匹配",
"authCodePlaceholder": "请输入授权码",
"authSecretPlaceholder": "请输入授权秘钥",
"updateCode": "重新绑定",
"notHaveAuth": "还没有授权?去购买",
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
"versionTips": "已经升级到最新版本"
}

View File

@ -0,0 +1,18 @@
{
"companyName": "授权主体",
"siteAddress": "授权域名",
"contactName": "授权联系人",
"authCode": "授权码",
"authSecret": "授权秘钥",
"createTime": "授权时间",
"expireTime": "到期时间",
"authApp": "授权应用",
"authAppKey": "应用标识",
"siteAddressTips": "授权域名不匹配",
"authCodePlaceholder": "请输入授权码",
"authSecretPlaceholder": "请输入授权秘钥",
"updateCode": "重新绑定",
"notHaveAuth": "还没有授权?去购买",
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
"versionTips": "已经升级到最新版本"
}

View File

@ -1,6 +1,7 @@
{
"ip":"登录IP",
"username":"管理员姓名",
"operationLog": "操作日志",
"url":"链接",
"detail": "详情",
"params":"参数",
@ -14,6 +15,5 @@
"typePlaceholder":"请输入请求方式",
"createTimePlaceholder":"请输入操作时间",
"addSysUserLog":"添加管理员操作记录表",
"updateSysUserLog":"编辑管理员操作记录表",
"sys_user_logDeleteTips":"确定要删除该管理员操作记录表吗?"
"updateSysUserLog":"编辑管理员操作记录表"
}

View File

@ -8,7 +8,7 @@
"menuDeleteTips": "确定要删除该菜单吗?",
"addMenu": "添加菜单",
"initializeMenu":"重置菜单",
"initializeMenuTipsOne":"重置菜单会将应用或插件的dict目录下的菜单配置文件中菜单配置更新到数据库一般用做开发者修改了dict菜单配置文件后,同步到数据库操作。",
"initializeMenuTipsOne":"重置菜单会将应用或插件的resources/**/loader/menu/目录下的菜单配置文件中的菜单配置更新到数据库。一般用做开发者修改了菜单配置文件后,同步到数据库操作。",
"initializeMenuTipsTwo":"如果用户手动调整过以下菜单项,通常允许进行本项操作,操作会重置为原始菜单。 请谨慎使用!",
"updateMenu": "编辑菜单",
"routePath": "路由路径",

View File

@ -29,5 +29,14 @@
"managerPlaceholder": "请选择用户",
"managerTips": "选择或者新增用户作为管理员",
"newAddManager": "新增用户",
"userDeleteTips": "是否要删除该管理员?"
"userDeleteTips": "是否要删除该管理员?",
"addRole": "新增角色",
"updateRole": "编辑角色",
"roleName": "角色名称",
"roleDeleteTips": "确定要删除该角色吗?",
"roleNamePlaceholder": "请输入角色名称",
"rulesPlaceholder": "请选择权限",
"checkStrictly": "父子级不关联",
"permission": "权限",
"foldText":"展开/折叠"
}

View File

@ -43,5 +43,7 @@
"knownToKnow": "我已知晓,不需要再次提示",
"siteAuthTips": "上传代码需先绑定授权码,请联系平台管理员进行绑定",
"againUpload": "重新上传",
"uploadWeapp": "上传小程序"
"uploadWeapp": "上传小程序",
"undoAudit" : "撤回审核",
"undoAuditTips" : "撤回代码审核,单个账号每天审核撤回次数最多不超过 5 次每天的额度从0点开始生效一个月不超过 10 次。是否要继续撤回?"
}

View File

@ -14,6 +14,14 @@
"statusBarStyle": "导航栏样式",
"statusBarSwitchTips": "此处控制当前页面导航栏是否显示",
"bottomNavContent": "底部导航内容",
"popWindowAds": "弹窗广告",
"popAdsLink": "广告链接",
"popAdsImage": "广告图",
"popAdsType": "显示类型",
"popAdsIsEnabled": "是否显示",
"firstPop": "首次弹出",
"popWindowCountTips": "建议上传图片大小290px * 410px",
"everyTimePops": "每次弹出",
"diyPageTitle": "页面名称",
"diyPageTitlePlaceholder": "请输入页面名称",
"pageTitleTips": "页面名称用于后台显示",
@ -257,8 +265,9 @@
"horzLineStyleDashed": "虚线",
"horzLineBorderColor": "线条颜色",
"horzLineBorderWidth": "线条宽度",
"floatBtnBtton": "按钮位置",
"floatBtnButton": "按钮位置",
"floatBtnOffset": "上下偏移",
"lateralBtnOffset": "左右偏移",
"floatBtnImageSet": "图片设置",
"floatBtnImageSize": "图片大小",
"floatBtnAroundRadius": "图片圆角",

View File

@ -14,6 +14,14 @@
"statusBarStyle": "导航栏样式",
"statusBarSwitchTips": "此处控制当前页面导航栏是否显示",
"bottomNavContent": "底部导航内容",
"popWindowAds": "弹窗广告",
"popAdsLink": "广告链接",
"popAdsImage": "广告图",
"popAdsType": "显示类型",
"popAdsIsEnabled": "是否显示",
"firstPop": "首次弹出",
"popWindowCountTips": "建议上传图片大小290px * 410px",
"everyTimePops": "每次弹出",
"diyPageTitle": "页面名称",
"diyPageTitlePlaceholder": "请输入页面名称",
"pageTitleTips": "页面名称用于后台显示",
@ -362,7 +370,7 @@
"imageLimitErrorTips":"限制数量格式输入错误",
"imageLimitErrorTipsTwo":"限制数量不能小于0",
"imageLimitErrorTipsThree":"限制数量必须大于0",
"imafeLimitErrorTipsFour":"限制数量最大不能超过9",
"imageLimitErrorTipsFour":"限制数量最大不能超过9",
"defaultValueTips":"设置后,默认值会自动填充到输入框,填表人可在此基础上进行修改。",
"defaultErrorTips":"默认值格式输入错误",

View File

@ -120,8 +120,6 @@
"fillInFormTotal":"总计(表单填写数)",
"fieldStatistics":"字段统计",
"viewInformation":"查看信息",
"startDate":"开始时间",
"endDate":"结束时间",
"deleteTips":"确定删除该条数据吗"

View File

@ -50,7 +50,7 @@
"cashOutInfo":"收款方信息",
"transferCode":"收款码",
"realname":"真实姓名",
"account":"账号",
"account":"收款账号",
"bankRealname":"持卡人姓名",
"remark":"备注",
"remarkPlaceholder":"请输入备注",

View File

@ -1,76 +1,79 @@
{
"search":"搜索应用名称",
"appName":"应用名/版本信息",
"introduction":"简介",
"type":"类型",
"app":"应用",
"addon":"插件",
"noPlug":"暂无应用",
"install":"安装",
"unload":"卸载",
"installLabel":"已安装",
"uninstalledLabel":"未安装",
"version":"版本",
"title":"名称",
"desc":"简介",
"plugDetail": "插件信息",
"author": "作者",
"detail":"详情",
"addonInstall": "插件安装",
"dirPermission": "目录读写权限",
"path": "路径",
"demand": "要求",
"readable": "可读",
"write": "可写",
"packageManageTool": "包管理工具",
"name": "名称",
"addonInstallSuccess": "插件安装成功",
"envCheck": "环境检查",
"installProgress": "安装进度",
"installComplete": "安装完成",
"localAppText":"插件管理",
"marketAppText":"官方市场",
"installShowDialogCloseTips": "安装任务尚未完成,关闭将取消安装任务,是否要继续关闭?",
"marketDevelopMessage":"官方市场正在开发中!",
"jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen",
"conflictFiles": "冲突文件",
"process": "启动进程",
"open": "开启",
"down": "下载",
"installDown":"未安装(重新下载)",
"unloadDown":"已安装(重新下载)",
"addonVersion": "插件版本",
"versionCode": "版本号",
"createTime": "发布时间",
"buyLabel": "已购买",
"installTips": "安装后需手动更新插件引用的依赖和编译各个端口的前端源码",
"localInstall":"本地安装",
"cloudInstall": "一键云安装",
"cloudInstallTips": "云安装可实现一键安装,安装后无需手动更新依赖和编译前端源码",
"installingTips": "有插件正在安装中请等待安装完成之后再进行其他操作,点击查看",
"installPercent": "安装进度",
"downloading": "下载中",
"authTips": "云安装需先绑定授权码如果已有授权请先进行绑定没有授权可到niucloud官网购买云服务之后再进行操作",
"toBind": "绑定授权",
"toNiucloud": "去niucloud官网",
"descriptionLeft": "暂无任何应用,马上去",
"buyDescriptionLeft": "您还没有购买过应用,马上去",
"link": "官方应用市场",
"descriptionRight": "逛逛",
"installed-empty": "暂未安装任何应用",
"siteAddressTips": "授权域名不匹配",
"authCodePlaceholder": "请输入授权码",
"authSecretPlaceholder": "请输入授权秘钥",
"updateCode": "重新绑定",
"notHaveAuth": "还没有授权?去购买",
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
"addonUninstall": "插件卸载",
"appIdentification":"应用标识",
"tipText":"标识指开发应用或插件的文件夹名称",
"uninstallTips": "是否要卸载该插件?",
"upgrade": "升级",
"newVersion": "最新版本",
"cloudBuild": "云编译",
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
"deleteAddonTips": "删除插件会把插件目录连同文件全部删除,确定要删除吗?"
"search": "搜索应用名称",
"appName": "应用名/版本信息",
"introduction": "简介",
"type": "类型",
"app": "应用",
"addon": "插件",
"noPlug": "暂无应用",
"install": "安装",
"unload": "卸载",
"installLabel": "已安装",
"uninstalledLabel": "未安装",
"version": "版本",
"title": "名称",
"desc": "简介",
"plugDetail": "插件信息",
"author": "作者",
"detail": "详情",
"addonInstall": "插件安装",
"dirPermission": "目录读写权限",
"path": "路径",
"demand": "要求",
"readable": "可读",
"write": "可写",
"packageManageTool": "包管理工具",
"name": "名称",
"addonInstallSuccess": "插件安装成功",
"envCheck": "环境检查",
"installProgress": "安装进度",
"installComplete": "安装完成",
"localAppText": "插件管理",
"marketAppText": "官方市场",
"installShowDialogCloseTips": "安装任务尚未完成,关闭将取消安装任务,是否要继续关闭?",
"marketDevelopMessage": "官方市场正在开发中!",
"jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen",
"conflictFiles": "冲突文件",
"process": "启动进程",
"open": "开启",
"down": "下载",
"installDown": "未安装(重新下载)",
"unloadDown": "已安装(重新下载)",
"addonVersion": "插件版本",
"versionCode": "版本号",
"createTime": "发布时间",
"buyLabel": "已购买",
"recentlyUpdated": "最近更新",
"installTips": "本地安装过程仅对应用和插件的程序代码和数据库进行安装处理,并不会对前端代码进行编译,本地安装之后,必须对各前端端口进行编译,才能正常使用。",
"localInstall": "本地安装",
"cloudInstall": "一键云安装",
"cloudInstallTips": "云安装可实现一键安装,云安装不仅会把应用和插件的程序代码安装处理,同时,会在云端编译各前端代码。云安装完成之后即可正常使用程序! ",
"installingTips": "有插件正在安装中请等待安装完成之后再进行其他操作,点击查看",
"installPercent": "安装进度",
"downloading": "下载中",
"authTips": "云安装需先绑定授权码如果已有授权请先进行绑定没有授权可到niucloud官网购买云服务之后再进行操作",
"toBind": "绑定授权",
"toNiucloud": "去niucloud官网",
"descriptionLeft": "暂无任何应用,马上去",
"buyDescriptionLeft": "您还没有购买过应用,马上去",
"link": "官方应用市场",
"descriptionRight": "逛逛",
"installed-empty": "暂未安装任何应用",
"recentlyUpdatedEmpty": "暂无最近更新应用",
"siteAddressTips": "授权域名不匹配",
"authCodePlaceholder": "请输入授权码",
"authSecretPlaceholder": "请输入授权秘钥",
"updateCode": "重新绑定",
"notHaveAuth": "还没有授权?去购买",
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
"addonUninstall": "插件卸载",
"appIdentification": "应用标识",
"tipText": "标识指开发应用或插件的文件夹名称",
"uninstallTips": "是否要卸载该插件?",
"upgrade": "升级",
"newVersion": "最新版本",
"cloudBuild": "云编译",
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
"deleteAddonTips": "删除插件会把插件目录连同文件全部删除,确定要删除吗?",
"batchUpgrade": "批量升级"
}

View File

@ -29,6 +29,7 @@
"continueSign": "连签天数",
"continueSignFormatError": "连签天数格式错误",
"continueSignBerweenDays": "连签天数为2-365天",
"continueSignMustLessThanSignPeriod": "连签天数不能大于签到周期",
"receiveLimit": "领取限制",
"noLimit": "不限制",
"everyOneLimit": "每人限领",

View File

@ -1,31 +1,32 @@
{
"hotelVerify": "订单核销",
"verifyRecord": "核销记录",
"verifyTime": "核销时间",
"orderNo": "订单编号",
"orderNoPlaceholder": "请输入订单编号",
"OrderInfo": "订单信息",
"buyerInfo": "购买人信息",
"verifyCode": "核销码",
"verifyCodePlaceholder": "请输入核销码",
"verifyer": "核销人",
"startDate": "开始时间",
"endDate": "结束时间",
"mobile": "联系方式",
"searchValueEmptyTips": "请输入搜索内容",
"verify": "核销",
"buyInfo": "预订信息",
"orderRefunding": "该订单正在维权中不能进行核销",
"verifyTips": "是否要核销该订单?",
"toOrder": "查看订单",
"verifyType": "核销类型",
"verifyTypePlaceholder": "请选择核销类型",
"verifier": "核销员",
"createTime":"添加时间",
"addVerifier":"添加核销员",
"verifierDeleteTips":"确定要删除该核销员吗?",
"memberInfo": "会员信息",
"memberIdPlaceholder": "请选择会员",
"member": "会员",
"searchPlaceholder": "请输入会员昵称搜索"
"hotelVerify": "订单核销",
"verifyRecord": "核销记录",
"verifyTime": "核销时间",
"orderNo": "订单编号",
"orderNoPlaceholder": "请输入订单编号",
"OrderInfo": "订单信息",
"buyerInfo": "购买人信息",
"verifyCode": "核销码",
"verifyCodePlaceholder": "请输入核销码",
"verifyer": "核销人",
"startDate": "开始时间",
"endDate": "结束时间",
"mobile": "联系方式",
"searchValueEmptyTips": "请输入搜索内容",
"verify": "核销",
"buyInfo": "预订信息",
"orderRefunding": "该订单正在售后中不能进行核销",
"verifyTips": "是否要核销该订单?",
"toOrder": "查看订单",
"verifyType": "核销类型",
"verifyTypePlaceholder": "请选择核销类型",
"verifier": "核销员",
"createTime": "添加时间",
"addVerifier": "添加核销员",
"editVerifier":"编辑核销员",
"verifierDeleteTips": "确定要删除该核销员吗?",
"memberInfo": "会员信息",
"memberIdPlaceholder": "请选择会员",
"member": "会员",
"searchPlaceholder": "请输入会员编号/昵称/手机号"
}

View File

@ -1,32 +1,32 @@
{
"hotelVerify": "订单核销",
"verifyRecord": "核销记录",
"verifyTime": "核销时间",
"orderNo": "订单编号",
"orderNoPlaceholder": "请输入订单编号",
"verifyInfo": "核销信息",
"buyerInfo": "购买人信息",
"verifyCode": "核销码",
"verifyCodePlaceholder": "请输入核销码",
"verifyer": "核销人",
"startDate": "开始时间",
"endDate": "结束时间",
"mobile": "联系方式",
"searchValueEmptyTips": "请输入搜索内容",
"verify": "核销",
"buyInfo": "预订信息",
"orderRefunding": "该订单正在维权中不能进行核销",
"verifyTips": "是否要核销该订单?",
"toOrder": "查看订单",
"verifyType": "核销类型",
"verifyTypePlaceholder": "请选择核销类型",
"verifier": "核销员",
"verifierPlaceholder": "请选择核销员",
"createTime":"添加时间",
"addVerifier":"添加核销员",
"verifierDeleteTips":"确定要删除该核销员吗?",
"memberInfo": "会员信息",
"memberIdPlaceholder": "请选择会员",
"member": "会员",
"searchPlaceholder": "请输入会员昵称搜索"
"hotelVerify": "订单核销",
"verifyRecord": "核销记录",
"verifyTime": "核销时间",
"orderNo": "订单编号",
"orderNoPlaceholder": "请输入订单编号",
"verifyInfo": "核销信息",
"buyerInfo": "购买人信息",
"verifyCode": "核销码",
"verifyCodePlaceholder": "请输入核销码",
"verifyer": "核销人",
"startDate": "开始时间",
"endDate": "结束时间",
"mobile": "联系方式",
"searchValueEmptyTips": "请输入搜索内容",
"verify": "核销",
"buyInfo": "预订信息",
"orderRefunding": "该订单正在售后中不能进行核销",
"verifyTips": "是否要核销该订单?",
"toOrder": "查看订单",
"verifyType": "核销类型",
"verifyTypePlaceholder": "请选择核销类型",
"verifier": "核销员",
"verifierPlaceholder": "请选择核销员",
"createTime": "添加时间",
"addVerifier": "添加核销员",
"verifierDeleteTips": "确定要删除该核销员吗?",
"memberInfo": "会员信息",
"memberIdPlaceholder": "请选择会员",
"member": "会员",
"searchPlaceholder": "请输入会员昵称搜索"
}

View File

@ -1,82 +1,86 @@
{
"registerChannel":"注册来源",
"nickname":"会员昵称",
"memberNo":"会员编号",
"mobile":"手机号",
"createTime":"注册时间",
"lastVisitTime":"最后访问时间",
"addMember":"添加会员",
"nickNamePlaceholder":"请输入会员昵称",
"mobilePlaceholder":"请输入手机号",
"channelPlaceholder":"请选择注册类型",
"memberNoPlaceholder":"请选择会员编号",
"memberDeleteTips" : "确定要删除该会员吗?",
"edit": "编辑",
"memberDelete":"删除",
"adjust":"调整",
"startDate": "开始时间",
"endDate": "结束时间",
"essentialInfo": "基本信息",
"accountInfo": "账户信息",
"registeredSource": "注册来源",
"memberLabel": "会员标签",
"urserName": "用户名",
"point": "积分",
"balance": "余额",
"growth": "成长值",
"memo":"备注",
"adjustPoint":"调整积分",
"detaBirth": "出生日期",
"sex": "性别",
"wxUnionid": "微信unionid",
"weappOpenid": "微信小程序openid",
"wxOpenid": "微信用户openid",
"head": "会员头像",
"username": "用户名",
"usernamePlaceholder": "请输入用户名",
"password": "密码",
"passwordCopy": "确认密码",
"passwordPlaceholder": "请输入密码",
"doubleCipherHint": "输入的两次密码不一致",
"memberNoHint":"会员编号只能输入字母和数字",
"mobileHint": "请输入正确的手机号!",
"memberLabelTag": "标签",
"setLabel": "标签",
"memberLabelPlaceholder": "请选择会员标签",
"memberInfo":"会员信息",
"memberInfoPlaceholder":"请输入会员编号/昵称/手机号",
"lock": "锁定",
"normal": "正常",
"memberLevel": "会员等级",
"memberLevelPlaceholder": "请选择会员等级",
"adjustType":"调整类型",
"adjustReduceBalance":"减少余额",
"adjustAddBalance":"增加余额",
"adjustReducePoint":"减少积分",
"adjustAddPoint":"增加积分",
"adjustBalance":"调整余额",
"currBalance":"当前余额",
"currPoint":"当前积分",
"adjustPlaceholder":"请输入调整数量",
"memoPlaceholder":"请输入备注",
"adjustBalancePlaceholder":"请输入调整余额",
"adjustPointPlaceholder":"请输入调整积分",
"adjustBalanceMaxAccountMessage":"调整后余额需大于0",
"adjustPointMaxAccountMessage":"调整后积分需大于0",
"birthday": "出生日期",
"birthdayTip": "请输入出生日期",
"headimg": "会员头像",
"updateMember": "编辑会员信息",
"notAvailable":"暂无",
"girlSex":"女",
"manSex":"男",
"secrecySex":"保密",
"detail":"详情",
"accumulative":"累计",
"money":"可提现余额",
"commission":"佣金",
"memberNull":"未读取到会员详情信息",
"memberLevelUpdate": "修改等级至",
"memberLevelUpdateTips": "该操作只会修改会员等级不会发放等级礼包"
"registerChannel": "注册来源",
"nickname": "会员昵称",
"memberNo": "会员编号",
"mobile": "手机号",
"createTime": "注册时间",
"lastVisitTime": "最后访问时间",
"addMember": "添加会员",
"nickNamePlaceholder": "请输入会员昵称",
"mobilePlaceholder": "请输入手机号",
"channelPlaceholder": "请选择注册类型",
"memberNoPlaceholder": "请选择会员编号",
"memberDeleteTips": "确定要删除该会员吗?",
"edit": "编辑",
"memberDelete": "删除",
"adjust": "调整",
"startDate": "开始时间",
"endDate": "结束时间",
"essentialInfo": "基本信息",
"accountInfo": "账户信息",
"registeredSource": "注册来源",
"memberLabel": "会员标签",
"urserName": "用户名",
"point": "积分",
"balance": "余额",
"growth": "成长值",
"memo": "备注",
"adjustPoint": "调整积分",
"detaBirth": "出生日期",
"sex": "性别",
"wxUnionid": "微信unionid",
"weappOpenid": "微信小程序openid",
"wxOpenid": "微信用户openid",
"head": "会员头像",
"username": "用户名",
"usernamePlaceholder": "请输入用户名",
"password": "密码",
"passwordCopy": "确认密码",
"passwordPlaceholder": "请输入密码",
"doubleCipherHint": "输入的两次密码不一致",
"memberNoHint": "会员编号只能输入字母和数字",
"mobileHint": "请输入正确的手机号!",
"memberLabelTag": "标签",
"setLabel": "标签",
"memberLabelPlaceholder": "请选择会员标签",
"memberInfo": "会员信息",
"memberInfoPlaceholder": "请输入会员编号/昵称/手机号",
"lock": "锁定",
"normal": "正常",
"memberLevel": "会员等级",
"memberLevelPlaceholder": "请选择会员等级",
"adjustType": "调整类型",
"adjustReduceBalance": "减少余额",
"adjustAddBalance": "增加余额",
"adjustReducePoint": "减少积分",
"adjustAddPoint": "增加积分",
"adjustBalance": "调整余额",
"currBalance": "当前余额",
"currPoint": "当前积分",
"adjustPlaceholder": "请输入调整数量",
"memoPlaceholder": "请输入备注",
"adjustBalancePlaceholder": "请输入调整余额",
"adjustPointPlaceholder": "请输入调整积分",
"adjustBalanceMaxAccountMessage": "调整后余额需大于0",
"adjustPointMaxAccountMessage": "调整后积分需大于0",
"birthday": "出生日期",
"birthdayTip": "请输入出生日期",
"headimg": "会员头像",
"updateMember": "编辑会员信息",
"notAvailable": "暂无",
"girlSex": "女",
"manSex": "男",
"secrecySex": "保密",
"detail": "详情",
"accumulative": "累计",
"money": "可提现余额",
"commission": "佣金",
"memberNull": "未读取到会员详情信息",
"memberLevelUpdate": "修改等级至",
"memberLevelUpdateTips": "该操作只会修改会员等级不会发放等级礼包",
"idCard": "身份证",
"idCardPlaceholder": "请输入身份证号",
"remark": "备注",
"remarkPlaceholder": "请输入备注",
"batchEmptySelectedTips": "请选择要操作的数据"
}

View File

@ -1,55 +1,59 @@
{
"adjustType":"调整类型",
"adjustReduceBalance":"减少余额",
"adjustAddBalance":"增加余额",
"adjustReducePoint":"减少积分",
"adjustAddPoint":"增加积分",
"adjustBalance":"调整余额",
"memberNo":"会员编号",
"currBalance":"当前余额",
"currPoint":"当前积分",
"memo":"备注",
"adjustPlaceholder":"请输入调整数量",
"memoPlaceholder":"请输入备注",
"adjustBalancePlaceholder":"请输入调整余额",
"adjustPointPlaceholder":"请输入调整积分",
"adjustBalanceMaxAccountMessage":"调整后余额需大于0",
"adjustPointMaxAccountMessage":"调整后积分需大于0",
"birthday": "出生日期",
"birthdayTip": "请输入出生日期",
"sex": "性别",
"sexPlaceholder": "请选择性别",
"headimg": "会员头像",
"wxUnionid": "微信unionid",
"weappOpenid": "微信小程序openid",
"wxOpenid": "微信公众号openid",
"memberLabel": "会员标签",
"memberLabelPlaceholder": "请选择会员标签",
"nickNamePlaceholder": "请输入会员名称",
"updateMember": "编辑会员信息",
"notAvailable":"暂无",
"girlSex":"女",
"manSex":"男",
"secrecySex":"保密",
"essentialInfo": "基本信息",
"accountInfo": "账户信息",
"urserName": "用户名",
"nickname":"会员昵称",
"registeredSource": "注册来源",
"lastVisitTime":"最后登录时间",
"point": "积分",
"balance": "余额",
"growth": "成长值",
"adjust":"调整",
"mobile":"手机号",
"detail":"详情",
"accumulative":"累计",
"money":"可提现余额",
"adjustPoint":"调整积分",
"commission":"佣金",
"memberNull":"未读取到会员详情信息",
"memberLevel": "会员等级",
"memberLevelUpdate": "修改等级至",
"memberLevelUpdateTips": "该操作只会修改会员等级不会发放等级礼包",
"memberLevelPlaceholder": "请选择会员等级"
"adjustType": "调整类型",
"adjustReduceBalance": "减少余额",
"adjustAddBalance": "增加余额",
"adjustReducePoint": "减少积分",
"adjustAddPoint": "增加积分",
"adjustBalance": "调整余额",
"memberNo": "会员编号",
"currBalance": "当前余额",
"currPoint": "当前积分",
"memo": "备注",
"adjustPlaceholder": "请输入调整数量",
"memoPlaceholder": "请输入备注",
"adjustBalancePlaceholder": "请输入调整余额",
"adjustPointPlaceholder": "请输入调整积分",
"adjustBalanceMaxAccountMessage": "调整后余额需大于0",
"adjustPointMaxAccountMessage": "调整后积分需大于0",
"birthday": "出生日期",
"birthdayTip": "请输入出生日期",
"sex": "性别",
"sexPlaceholder": "请选择性别",
"headimg": "会员头像",
"wxUnionid": "微信unionid",
"weappOpenid": "微信小程序openid",
"wxOpenid": "微信公众号openid",
"memberLabel": "会员标签",
"memberLabelPlaceholder": "请选择会员标签",
"nickNamePlaceholder": "请输入会员名称",
"updateMember": "编辑会员信息",
"notAvailable": "暂无",
"girlSex": "女",
"manSex": "男",
"secrecySex": "保密",
"essentialInfo": "基本信息",
"accountInfo": "账户信息",
"urserName": "用户名",
"nickname": "会员昵称",
"registeredSource": "注册来源",
"lastVisitTime": "最后登录时间",
"point": "积分",
"balance": "余额",
"growth": "成长值",
"adjust": "调整",
"mobile": "手机号",
"detail": "详情",
"accumulative": "累计",
"money": "可提现余额",
"adjustPoint": "调整积分",
"commission": "佣金",
"memberNull": "未读取到会员详情信息",
"memberLevel": "会员等级",
"memberLevelUpdate": "修改等级至",
"memberLevelUpdateTips": "该操作只会修改会员等级不会发放等级礼包",
"memberLevelPlaceholder": "请选择会员等级",
"idCard": "身份证",
"idCardPlaceholder": "请输入身份证号",
"remark": "备注",
"remarkPlaceholder": "请输入备注"
}

View File

@ -3,6 +3,6 @@
"type": "协议类型",
"titlePlaceholder": "请输入协议标题",
"contentPlaceholder": "请填写协议内容",
"contentMaxTips": "协议内容字符数应在550000之间",
"contentMaxTips": "协议内容字符数应在510000之间",
"content": "内容"
}
}

View File

@ -6,7 +6,7 @@
"isMobile": "手机验证码登录",
"isMobileTip": "开启之后可以使用手机+验证码进行注册和登录或者快捷登录/注册",
"isBindMobile": "强制绑定手机",
"isBindMobileTip": "开启之后,会员注册时会强制绑定手机号,并且在相关页面也会引导会员强制绑定手机账号,否则将影响功能正常使用,方便会员在不同端口统一账号,也方便商家进行管理",
"isBindMobileTip": "开启之后,会员注册时会强制绑定手机号,并且在相关页面也会引导会员强制绑定手机账号,否则将影响功能正常使用,方便会员在不同端口统一账号,也方便商家进行管理,已注册会员不受影响",
"agreement": "政策协议",
"agreementTips": "注册时服务协议和隐私协议是否进行展示",
"tripartiteSetting": "第三方设置",
@ -20,4 +20,4 @@
"bgUrlPlaceholder": "建议图片尺寸750*669像素图片格式jpg、png、jpeg",
"desc": "描述",
"descPlaceholder": "请输入描述"
}
}

View File

@ -7,5 +7,9 @@
"prefixTips": "编码格式如:",
"length": "编码长度",
"lengthPlaceholder": "请输入编码长度",
"lengthTips": "编码长度包含前缀去除前缀最少不能低于4位,最多不能超过30位"
"lengthTips": "编码长度包含前缀去除前缀最少不能低于4位,最多不能超过30位",
"diyForm": "万能表单",
"diyFormPlaceholder": "请选择万能表单",
"addDiyForm": "添加表单",
"personalForm": "个人资料"
}

View File

@ -0,0 +1,52 @@
{
"oplatformSetting": "开放平台设置",
"appidPlaceholder": "请输入微信第三方平台AppId",
"appSecretPlaceholder": "请输入微信第三方平台AppSecret",
"tokenPlaceholder": "请输入消息校验Token",
"aesKeyPlaceholder": "请输入消息加解密Key",
"oplatformComm": "开放平台通信",
"empowerStartDomain": "授权发起页域名",
"empowerReceiveUrl": "授权事件接收URL",
"messageValidationToken": "消息校验Token",
"messageDecryptKey": "消息加解密Key",
"messageReceiveUrl": "消息与事件接收URL",
"wechatDomain": "公众号开发域名",
"weappDomain": "小程序服务器域名",
"weappBusinessDomain": "小程序业务域名",
"oplatformBuilder": "开发者设置",
"builderEmail": "开发者邮箱",
"builderMobile": "开发者手机号",
"builderQQ": "开发者QQ",
"builderWx": "开发者微信",
"messageDecryptKeyTips": "在代替公众号或小程序收发消息过程中使用。必须是长度为43位的字符串只能是字母和数字。",
"regenerate": "重新生成",
"messagesReceiving": "消息与事件接收",
"domainSetting": "域名配置",
"developerWeappUpload": "开发小程序配置",
"developerAppid": "开发小程序appid",
"uploadKey": "代码上传密钥",
"uploadKeyTips": "",
"developAppid": "开发小程序APPID",
"developAppidPlaceholder": "请输入开发小程序APPID",
"uploadIpTips": "如果小程序代码上传开启了ip白名单设置在ip白名单中添加ip",
"groupName": "站点套餐",
"lastTime": "上次同步时间",
"weappVersionUpdate": "同步模板库",
"weappVersionUpdateRecord": "模板库同步记录",
"createTime": "提交时间",
"userVersion": "版本号",
"failReason": "失败原因",
"updateTips": " 1、同步小程序时系统通过已绑定的开发小程序同步至微信第三方平台的普通模板库中。\n 2、同步完成后系统将自动为站点套餐下已授权的小程序提交代码。\n 3、一键同步功能支持按所有站点套餐进行批量同步同时也可针对单个站点套餐单独操作。\n 4、使用此功能前请确保已启动消息队列服务。",
"seeUpdateRecord": "查看同步记录",
"commitRecord": "同步记录",
"oneClickSync": "一键同步",
"syncTemplateError": "未能同步到模板库",
"templateID": "模板ID",
"siteWeappSync": "站点小程序同步",
"syncSiteWeappTips": "是否要给该套餐下已授权小程序的站点提交代码?",
"publicInfo": "公众平台信息",
"publicType": "公众平台类型",
"siteName": "站点名称",
"authTime": "授权时间",
"qrcode": "二维码"
}

View File

@ -1,35 +1,45 @@
{
"websiteInfo":"后台设置",
"contactAddress":"联系地址",
"siteName": "站点名称",
"keywords": "网站关键字",
"logo": "长方形Logo",
"desc": "网站简介",
"province": "省",
"city": "市",
"district": "区/县",
"selectAddress": "请选择地址",
"address": "详细地址",
"phone": "客服电话",
"businessHours": "营业时间",
"contactAddressPlaceholder":"联系地址",
"siteNamePlaceholder": "站点名称",
"keywordsPlaceholder": "网站关键字",
"descPlaceholder": "网站简介",
"addressPlaceholder": "详细地址",
"phonePlaceholder": "客服电话",
"businessHoursPlaceholder": "营业时间",
"businessHoursTips": "例上午9:00-12:00下午2:00-6:00",
"frontEndInfo": "前台设置",
"frontEndName": "前台名称",
"frontEndNamePlaceholder": "请输入前台名称",
"frontEndLogo": "前台Logo",
"icon": "正方形Logo",
"serviceInformation": "服务信息",
"wechatCode": "公众号二维码",
"customerServiceCode": "客服二维码",
"contactsTel": "联系电话",
"contactsTelPlaceholder": "请输入联系电话",
"logoPlaceholder": "建议图片尺寸210*30像素图片格式jpg、png、jpeg。",
"iconPlaceholder": "建议图片尺寸100*100像素图片格式jpg、png、jpeg。"
"websiteInfo": "后台设置",
"contactAddress": "联系地址",
"siteName": "站点名称",
"keywords": "网站关键字",
"logo": "长方形Logo",
"desc": "网站简介",
"province": "省",
"city": "市",
"district": "区/县",
"selectAddress": "请选择地址",
"address": "详细地址",
"phone": "客服电话",
"businessHours": "营业时间",
"contactAddressPlaceholder": "联系地址",
"siteNamePlaceholder": "站点名称",
"keywordsPlaceholder": "网站关键字",
"descPlaceholder": "网站简介",
"addressPlaceholder": "详细地址",
"phonePlaceholder": "客服电话",
"businessHoursPlaceholder": "营业时间",
"businessHoursTips": "例上午9:00-12:00下午2:00-6:00",
"frontEndInfo": "前台设置",
"frontEndName": "前台名称",
"frontEndNamePlaceholder": "请输入前台名称",
"frontEndLogo": "前台Logo",
"icon": "正方形Logo",
"serviceInformation": "服务信息",
"wechatCode": "公众号二维码",
"customerServiceCode": "客服二维码",
"contactsTel": "联系电话",
"contactsTelPlaceholder": "请输入联系电话",
"logoPlaceholder": "建议图片尺寸210*30像素图片格式jpg、png、jpeg。",
"iconPlaceholder": "建议图片尺寸100*100像素图片格式jpg、png、jpeg。",
"siteLoginLogo": "站点登录Logo",
"siteLoginLogoTips": "站点端登录Logo建议图片尺寸132*40像素图片格式jpg、png、jpeg。",
"siteLoginBgImg": "站点登录背景图",
"siteLoginBgImgTips": "站点端登录背景图建议图片尺寸1920*1280像素图片格式jpg、png、jpeg。",
"metaTitle": "Meta 标题",
"MetaPlaceholder": "请输入Meta 标题",
"metaDescription": "Meta 描述",
"metaDescriptionPlaceholder": "请输入Meta描述",
"metaKeywords": "Meta 关键字",
"metaKeywordsPlaceholder": "请输入Meta关键字"
}

View File

@ -29,6 +29,8 @@
"descPlaceholder": "网站简介",
"phonePlaceholder": "客服电话",
"app" : "站点应用",
"manager": "站点管理员",
"managerPlaceholder": "请选择站点管理员",
"addon" : "站点插件",
"siteDomain": "站点域名",
"siteDomainPlaceholder": "请输入站点域名",

View File

@ -0,0 +1,78 @@
{
"siteName":"站点名称",
"groupId":"套餐",
"app":"应用",
"logo":"站点logo",
"status":"状态",
"businessHours":"营业时间",
"createTime":"创建时间",
"expireTime":"到期时间",
"siteNamePlaceholder":"请输入站点名称/编号",
"createTimePlaceholder":"请输入创建时间",
"addSite":"添加站点",
"editSite":"编辑站点",
"updateSite":"编辑站点",
"statusExpire":"已到期",
"phone":"客服电话",
"groupIdPlaceholder":"请选择套餐",
"uIdPlaceholder":"请选择站点管理员",
"appIdPlaceholder":"请选择应用",
"keywordsPlaceholder":"请输入关键字",
"keywords":"关键字",
"username": "账号",
"realName": "真实姓名",
"passwordPlaceholder": "请输入管理员密码",
"usernamePlaceholder": "请输入管理员账号",
"realNamePlaceholder": "请输入真实姓名",
"confirmPasswordPlaceholder": "请再次确认密码",
"userRealNamePlaceholder": "请输入名称",
"expireTimePlaceholder":"请选择到期时间",
"confirmPasswordError": "两次输入的密码不一致",
"operationTip": "温馨提示:站点登录页面",
"siteId": "站点ID",
"siteInfo": "站点信息",
"siteInlet": "站点入口",
"enterSite": "访问站点",
"siteList": "站点列表",
"openClose": "开启/停止",
"closeTxt":"停止",
"openTxt":"开启",
"siteUrlDevelopMessage": "站点域名功能正在开发中",
"url": "域名",
"startDate":"开始时间",
"endDate":"结束时间",
"manager": "站点管理员",
"managerPlaceholder": "请选择站点管理员",
"newAddManager": "新增管理员",
"edit": "编辑",
"siteDeleteTips": "确定要删除该站点吗?该操作将删除该站点和站点相关数据,该操作无法退回,确定要继续删除吗?",
"siteDomain": "站点域名",
"siteDomainPlaceholder": "请输入站点域名",
"siteDomainTips": "站点域名的配置是针对站点的wap和web端",
"siteDomainTipsTwo": "需要将域名配置到您的服务器,同时域名需要解析您的服务器才可生效",
"siteDomainTipsThree": "站点域名不需要加http或者https末尾不需要加/",
"toSite": "访问站点",
"noPermission": "您没有该站点的管理权限",
"closeSiteTips": "是否要停止该站点?",
"addSiteGroup": "添加套餐",
"updateTime": "修改时间",
"groupName": "套餐名称",
"groupDesc": "套餐说明",
"groupRoles": "套餐权限",
"groupDeleteTips": "确定要删除该套餐吗?",
"groupNamePlaceholder": "请输入套餐名称",
"groupDescPlaceholder": "请输入套餐说明",
"groupRolesPlaceholder": "请选择套餐权限",
"groupPlaceholder": "请选择权限",
"permission": "权限",
"updateGroup":"编辑套餐",
"addGroup":"添加套餐",
"checkStrictly": "父子级不关联",
"remark": "套餐说明",
"reset": "重置",
"search": "搜索",
"foldText":"展开/折叠",
"appName": "套餐内含应用",
"addonName": "套餐内含插件",
"siteInitTips":"确定要初始化站点吗?该操作将删除站点内所有数据,该操作无法退回,确定要继续初始化吗?"
}

View File

@ -7,7 +7,7 @@
"key":"插件标识",
"keyPlaceholder":"请输入插件标识",
"keyPlaceholderErr":"插件标识格式不正确,只能以字母开头且只能输入字母、数字、下划线",
"keyPlaceholder1":"插件标识指开发插件的文件夹名称,申请之后不能修改(只能包括字母、数字和下划线且只能以字母开头格式如f1111、f11_22)",
"keyPlaceholder1":"插件标识指开发插件的文件夹名称,申请之后不能修改(仅允许使用字母、数字与下划线组合且必须以字母开头同时名称中至少包含一个下划线格式如a11_34、f11_22)",
"keyPlaceholder2":"插件标识设置后建议进行插件标识检测如果当前插件标识已经在niucloud官方市场注册则只能在本地使用无法在官方市场发布销售",
"desc":"插件描述",
"descPlaceholder":"请输入插件描述",
@ -23,7 +23,7 @@
"type":"插件类型",
"typePlaceholder":"请选择插件类型",
"typePlaceholder1":"应用指独立开发的系统比如商城零售erp等",
"typePlaceholder2":"插件:指不是独立的系统,可以是辅助应用的插件比如商城的拼团,也可以是独立的插件比如系统表单等",
"typePlaceholder2":"插件:指不是独立的系统,可以是辅助应用的插件比如商城的拼团,也可以是独立的插件比如万能表单等",
"supportType":"所属应用",
"supportApp":"支持应用",
"supportAppPlaceholder":"请选择支持应用",
@ -31,4 +31,4 @@
"successText":"检测当前插件标识尚未在应用市场注册插件开发后可以在niucloud官方市场发布",
"warningText":"检测到当前插件标识已经在niucloud官方市场注册开发的插件只能在本地使用无法在官方市场发布销售",
"onSaveSuccessText":"插件生成成功"
}
}

View File

@ -0,0 +1,30 @@
{
"developmentProcess":"开发流程",
"pluginList":"插件列表",
"addAddon":"新建插件",
"title":"插件名称",
"titlePlaceholder":"请输入插件名称",
"author":"作者",
"authorPlaceholder":"请输入作者",
"key":"插件标识",
"type":"插件类型",
"version":"版本号",
"status":"状态",
"codeDeleteTips":"删除插件后对应文件会一并删除,是否确认",
"step1":"新建一个插件",
"describe1":"点击新建插件,生成插件后系统会生成对应插件的基础代码",
"btn1":"新建插件",
"step2":"安装插件",
"describe2":"插件创建之后处于未安装状态,点击进入插件列表选择对应新建插件点击安装",
"btn2":"插件列表",
"step3":"开发插件",
"describe3":"插件安装成功之后就可以进行开发,具体查看开发教程",
"btn3":"查看教程",
"step4":"打包插件",
"describe4":"插件开发的前端代码是直接在对应开发环境运行的,并没有放入插件对应目录,点击打包后会将对应插件的代码整合到插件目录方便后期安装与打包发行版本",
"btn4":"插件列表",
"step5":"上传到云市场",
"describe5":"插件打包成功之后可以上传到官方云市场进行销售可以打包后选择下载代码zip格式然后在官网开发商引用选择上传版本",
"btn5":"官方市场",
"addonDownloadText":"插件打包成功,是否下载"
}

View File

@ -0,0 +1,28 @@
{
"manualBackup": "手动备份",
"manualBackupTips": "即将开始手动备份您的源码和数据库,为确保备份过程中顺利进行以及数据的完整性,建议您暂停所有相关操作,避免因数据写入或修改导致备份不一致,是否确定继续?",
"id": "编号",
"content": "内容",
"currentVersion": "备份版本",
"contentPlaceholder": "请输入内容",
"batchDelete": "批量删除",
"backupDir": "备份路径",
"completeTime": "备份时间",
"restore": "恢复",
"restoreTips": "此操作将恢复备份的源码和数据库,并且覆盖当前数据。为避免意外损失,请确认已了解此操作的影响,并确保已备份重要信息,是否确定继续?",
"deleteTips": "删除记录将会同步删除其备份文件,确定要操作吗?",
"batchEmptySelectedTips": "请选择需要批量删除的记录",
"restoreTitle": "恢复备份",
"backupCompleteTips": "备份成功",
"restoreCompleteTips": "恢复成功",
"showDialogCloseTips": "任务尚未完成,关闭将会造成数据丢失或系统损坏的影响,是否要继续关闭?",
"manualBackupTitle": "手动备份",
"checkDirectoryPermissions": "检测目录权限",
"backupFiles": "备份文件",
"startUpgrade": "开始恢复",
"upgradeEnd": "恢复完成",
"startBackUp": "开始备份",
"backUpEnd": "备份完成",
"remark": "备注",
"remarkEmpty": "无"
}

View File

@ -0,0 +1,49 @@
{
"tableName":"表名称",
"tableContent":"描述",
"addon":"插件",
"moduleName":"模块名",
"className":"类名",
"editType":"编辑方式",
"createTime":"创建时间",
"updateTime":"更新时间",
"popup":"弹出",
"page":"新页面",
"tableNamePlaceholder":"请输入表名",
"tableContentPlaceholder":"请输入描述",
"addonPlaceholder":"请选择插件",
"moduleNamePlaceholder":"请输入模块名",
"classNamePlaceholder":"请输入类名",
"editTypePlaceholder":"请选择编辑方式",
"addCode":"导入数据表",
"updateCode":"编辑代码生成",
"codeDeleteTips":"确定要删除吗?",
"tableComment":"表描述",
"tableCreateTime":"创建时间",
"tableUpdateTime":"修改时间",
"addBtn":"添加",
"searchPlaceholder":"请输入表名或表描述搜索",
"selectTableTips":"确认导入该数据表吗?",
"download":"下载代码",
"codeGeneration":"代码生成",
"codeList":"生成列表",
"step1":"选择数据表生成代码",
"describe1":"点击添加,选择对应数据表,添加之后会跳转到对应生成代码的配置管理页面",
"btn1":"添加",
"step2":"基础设置",
"describe2":"代码生成查看基础设置,包括基础的表名、描述、所属插件设置",
"btn2":"插件列表",
"step3":"字段设置",
"describe3":"代码中字段的管理,包括字段是否进行增加、编辑、列表、查询展示等",
"btn3":"查看教程",
"step4":"页面设置",
"describe4":"正在开发中,会将字段进行展示管理配置,同时提供预览,真正实现自定义表单配置",
"btn4":"插件列表",
"step5":"生成配置",
"describe5":"针对代码中展示页面配置,包括单独页面编辑表单还是弹框,生成的代码穿插到系统中还是进行下载等",
"btn5":"官方市场",
"saveAndSync":"同步代码",
"saveAndSyncText":"同步的代码与项目产生冲突,是否确认覆盖?",
"saveAndSyncText1":"同步的代码会加入到项目代码中,是否确认继续",
"addonName": "所属插件"
}

View File

@ -27,7 +27,7 @@
"min": "分",
"cronDeleteTips": "你确定要删除任务吗",
"addCron": "添加任务",
"cronTimeTips": "任务周期时间不能为空",
"cronTimeTips": "任务周期时间不能为空并且大于0",
"cronTipsOne": "启动计划任务方式:",
"cronTipsTwo": "1、使用命令启动php think workerman 如果更改了任务周期、状态、删除任务等操作后,需要重新启动下 php think workerman 确保生效",
"doOne": "执行一次",

View File

@ -13,5 +13,7 @@
"batchEmptySelectedCronLogTips": "请选择要删除的日志",
"batchDeleteTips": "确定要删除选中的日志吗?",
"clearAllTips": "确定要清空所有日志吗?",
"deleteTips": "确定要删除该条日志吗?"
}
"deleteTips": "确定要删除该条日志吗?",
"startDate": "开始日期",
"endDate": "结束日期"
}

View File

@ -0,0 +1,12 @@
{
"id": "编号",
"upgradeName": "内容",
"prevVersion": "前一版本",
"currentVersion": "版本",
"upgradeNamePlaceholder": "请输入内容",
"completeTime": "升级时间",
"status": "状态",
"failReason": "失败原因",
"batchDelete": "批量删除",
"deleteTips": "确定要删除吗?"
}

View File

@ -26,8 +26,9 @@
"developerAppid": "开发小程序appid",
"uploadKey": "代码上传密钥",
"uploadKeyTips": "",
"uploadIpTips": "",
"developAppid": "开发小程序APPID",
"developAppidPlaceholder": "请输入开发小程序APPID",
"uploadIpTips": "如果小程序代码上传开启了ip白名单设置在ip白名单中添加ip"
"uploadIpTips": "如果小程序代码上传开启了ip白名单设置在ip白名单中添加ip",
"siteWeappSync": "站点小程序同步",
"syncSiteWeappTips": "是否要给该套餐下已授权小程序的站点提交代码?"
}

View File

@ -1,14 +1,17 @@
{
"groupName": "站点套餐",
"lastTime": "上次同步时间",
"weappVersionUpdate": "小程序同步",
"weappVersionUpdateRecord": "小程序同步记录",
"createTime": "提交时间",
"userVersion": "版本号",
"failReason": "失败原因",
"updateTips": "1、同步小程序时系统通过已绑定的开发小程序同步至微信第三方平台的普通模板库中。\n 2、同步完成后系统将自动为站点套餐下已授权的小程序提交代码。\n 3、一键同步功能支持按所有站点套餐进行批量同步同时也可针对单个站点套餐单独操作。\n 4、使用此功能前请确保已启动消息队列服务。",
"seeUpdateRecord": "查看同步记录",
"commitRecord": "同步记录",
"oneClickSync": "一键同步",
"syncTemplateError": "未能同步到模板库"
"groupName": "站点套餐",
"lastTime": "上次同步时间",
"weappVersionUpdate": "同步模板库",
"weappVersionUpdateRecord": "模板库同步记录",
"createTime": "提交时间",
"userVersion": "版本号",
"failReason": "失败原因",
"updateTips": " 1、同步小程序时系统通过已绑定的开发小程序同步至微信第三方平台的普通模板库中。\n 2、同步完成后系统将自动为站点套餐下已授权的小程序提交代码。\n 3、一键同步功能支持按所有站点套餐进行批量同步同时也可针对单个站点套餐单独操作。\n 4、使用此功能前请确保已启动消息队列服务。",
"seeUpdateRecord": "查看同步记录",
"commitRecord": "同步记录",
"oneClickSync": "一键同步",
"syncTemplateError": "未能同步到模板库",
"templateID": "模板ID",
"siteWeappSync": "站点小程序同步",
"syncSiteWeappTips": "是否要给该套餐下已授权小程序的站点提交代码?"
}

View File

@ -1,48 +1,38 @@
<template>
<!--授权信息-->
<div class="main-container">
<el-card class="box-card !border-none" shadow="never" v-if="!loading">
<el-card class="box-card !border-none min-h-[300px]" shadow="never" v-loading="loading">
<div v-if="!loading">
<div class="title text-[16px] font-bold text-[#1D1F3A] mb-[30px]">授权信息</div>
<div>
<div class="flex items-center">
<div class="w-[92px] h-[92px] rounded-[10px] flex justify-center items-center mr-[20px]">
<img src="@/app/assets/images/tools/authorize.png" class="w-[92px] h-[92px]" />
</div>
<div class="flex flex-col justify-between font-500">
<div class="flex flex-wrap items-center mb-[12px]">
<span class="mr-[6px] text-[14px] text-[#666666] w-[70px] text-left">授权公司</span>
<span class="text-[14px] text-[#333]">{{ authinfo.company_name || "--" }}</span>
</div>
<div class="flex flex-wrap items-center mb-[12px]">
<span class="mr-[6px] text-[14px] text-[#666666] w-[70px] text-left">授权域名</span>
<span class="text-[14px] text-[#333]">{{ authinfo.site_address || "--" }}</span>
</div>
<div class="flex flex-wrap items-center">
<span class="mr-[6px] text-[14px] text-[#666666] w-[70px] text-left">授权码</span>
<span class="text-[14px] text-[#333]">
<span class="mr-[10px]">{{ authinfo.auth_code ? (isCheck ? authinfo.auth_code : hideAuthCode(authinfo.auth_code)) : "--" }}</span>
<el-icon v-if="!isCheck" @click="isCheck = !isCheck" class="text-[14px] cursor-pointer text-[#9699B6]">
<View />
</el-icon>
<el-icon v-else @click="isCheck = !isCheck" class="text-[14px] cursor-pointer text-[#9699B6]"> <Hide /> </el-icon>
</span>
</div>
</div>
</div>
<div class="flex">
<div class="w-[450px] mr-[20px] p-[50px] bg-[var(--el-color-info-light-9)]">
<div class="flex items-center justify-between">
<span class="text-page-title">版本信息</span>
<div class="flex-1 w-0 flex justify-end">
<el-button class="text-[#4C4C4C] w-[78px] h-[32px] !bg-transparent" @click="getFrameworkVersionListFn" v-if="!newVersion || (newVersion && newVersion.version_no == versions)">检测更新</el-button>
<el-button class="text-[#4C4C4C] w-[78px] h-[32px]" type="primary" @click="handleUpgrade" v-else>一键升级</el-button>
<el-button class="text-[#4C4C4C] w-[78px] h-[32px]" type="primary" @click="handleCloudBuild" :loading="cloudBuildRef?.loading">云编译</el-button>
</div>
</div>
<div class="mt-[30px] flex items-center text-[14px] text-[#797979]">
<span>当前版本</span>
<span class="text-[26px] ml-[15px] mr-[10px] text-[#656668]">{{versions}}</span>
<em class="text-[12px]" v-if="!newVersion || (newVersion && newVersion.version_no == versions)">(当前已是最新版本)</em>
<em class="text-[12px] text-[red]" v-else>(最新版本{{ newVersion.version_no }})</em>
</div>
</div>
<div class="flex flex-1 justify-between items-center p-[50px] bg-[var(--el-color-info-light-9)]">
<div class="flex flex-col">
<div class="flex flex-wrap items-center">
<p class="text-page-title mr-[20px]">授权信息</p>
<span class="text-[14px] text-[#666]">{{ authinfo.company_name || '--' }}</span>
</div>
<div class="mt-[46px] ml-[40px] flex flex-wrap">
<span class="text-[14px] mr-[84px]">授权域名<em class="ml-[12px] text-[12px]">{{ authinfo.site_address || '--' }}</em></span>
<span class="text-[14px] flex items-center">
<span>授权码</span>
<em class="ml-[12px] mr-[10px] text-[12px]">{{ authinfo.auth_code ? (isCheck ? authinfo.auth_code : hideAuthCode(authinfo.auth_code)) : '--' }}</em>
<el-icon v-if="!isCheck" @click="isCheck = !isCheck" class="text-[12px] cursor-pointer">
<View />
</el-icon>
<el-icon v-else @click="isCheck = !isCheck" class="text-[12px] cursor-pointer">
<Hide />
</el-icon>
</span>
</div>
</div>
<div class="flex flex-1 flex-wrap justify-end relative">
<el-button class="w-[154px] !h-[48px] mt-[8px]" type="primary" @click="authCodeApproveFn">授权码认证</el-button>
<div class="mt-[17px] ml-[110px]">
<el-button class="!w-[140px] !h-[32px] mt-[8px] !rounded-[4px]" type="primary" @click="authCodeApproveFn">授权码认证</el-button>
<el-popover ref="getAuthCodeDialog" placement="bottom-start" :width="478" trigger="click" class="mt-[8px]">
<div class="px-[18px] py-[8px]">
<p class="leading-[32px] text-[14px]">您在官方应用市场购买任意一款应用即可获得授权码输入正确授权码认证通过后即可支持在线升级和其它相关服务</p>
@ -52,7 +42,7 @@
</div>
</div>
<template #reference>
<el-button class="w-[154px] !h-[48px] mt-[8px] !text-[var(--el-color-primary)] hover:!text-[var(--el-color-primary)] !bg-transparent" plain type="primary">如何获取授权码?</el-button>
<el-button class="!w-[140px] !h-[32px] mt-[8px] !rounded-[4px] !text-[var(--el-color-primary)] hover:!text-[var(--el-color-primary)] !bg-transparent" plain type="primary">如何获取授权码?</el-button>
</template>
</el-popover>
</div>
@ -70,13 +60,13 @@
</el-form-item>
</div>
<div class="text-sm mt-[10px] text-info">{{ t('authInfoTips') }}</div>
<div class="text-sm mt-[10px] text-info">{{ t("authInfoTips") }}</div>
<div class="mt-[20px]">
<el-button type="primary" class="w-full" size="large" :loading="saveLoading" @click="save(formRef)">{{ t('confirm') }}</el-button>
<el-button type="primary" class="w-full" size="large" :loading="saveLoading" @click="save(formRef)">{{ t("confirm") }}</el-button>
</div>
<div class="mt-[10px] text-right">
<el-button type="primary" link @click="market">{{ t('notHaveAuth') }}</el-button>
<el-button type="primary" link @click="market">{{ t("notHaveAuth") }}</el-button>
</div>
</el-card>
</el-form>
@ -84,66 +74,24 @@
</div>
</div>
</el-card>
<el-card class="box-card !border-none " shadow="never" v-if="!loading">
<div class="text-page-title mb-[20px]">历史版本</div>
<el-timeline>
<el-timeline-item :timestamp="item['release_time'] + ' 版本:' + item['version_no']" v-for="(item,index) in frameworkVersionList" type="primary" :hollow="true" placement="top" :key="index">
<div class="mt-[10px] p-[20px] bg-overlay rounded-md timeline-log-wrap whitespace-pre-wrap" v-if="item['upgrade_log']">
<div v-html="item['upgrade_log']"></div>
</div>
</el-timeline-item>
</el-timeline>
</el-card>
<upgrade ref="upgradeRef" @cloudbuild="handleCloudBuild"/>
<cloud-build ref="cloudBuildRef" />
</div>
</template>
<script lang="ts" setup>
import { reactive, ref, computed } from 'vue'
import { t } from '@/lang'
import { getVersions } from '@/app/api/auth'
import { getAuthInfo, setAuthInfo, getFrameworkVersionList } from '@/app/api/module'
import { ElMessageBox, FormInstance, FormRules,ElMessage } from 'element-plus'
import Upgrade from '@/app/components/upgrade/index.vue'
import CloudBuild from '@/app/components/cloud-build/index.vue'
import { cloneDeep } from 'lodash-es'
import { reactive, ref } from "vue"
import { t } from "@/lang"
import { getVersions } from "@/app/api/auth"
import { getAuthInfo, setAuthInfo } from "@/app/api/module"
import { FormInstance, FormRules } from "element-plus"
import { cloneDeep } from "lodash-es"
const upgradeRef = ref<any>(null)
const cloudBuildRef = ref<any>(null)
const getAuthCodeDialog: Record<string, any> | null = ref(null)
const authCodeApproveDialog = ref(false)
const isCheck = ref(false)
const frameworkVersionList = ref([])
const checkVersion = ref(false)
const getFrameworkVersionListFn = () => {
getFrameworkVersionList().then(({ data }) => {
frameworkVersionList.value = data
if (checkVersion.value) {
if (!newVersion.value || (newVersion.value && newVersion.value.version_no == versions.value)) {
ElMessage({
message: t('versionTips'),
type: 'success'
})
}
} else {
checkVersion.value = true
}
})
}
getFrameworkVersionListFn()
const newVersion:any = computed(() => {
return frameworkVersionList.value.length ? frameworkVersionList.value[0] : null
})
const hideAuthCode = (res:any) => {
const hideAuthCode = (res: any) => {
const authCode = cloneDeep(res)
const data = authCode.slice(0, authCode.length / 2) + authCode.slice(authCode.length / 2, authCode.length - 1).replace(/./g, '*')
const data = authCode.slice(0, authCode.length / 2) + authCode.slice(authCode.length / 2, authCode.length - 1).replace(/./g, "*")
return data
}
@ -152,15 +100,15 @@ const authCodeApproveFn = () => {
}
interface AuthInfo {
company_name: string,
site_address: string,
company_name: string
site_address: string
auth_code: string
}
const authinfo = ref<AuthInfo>({
company_name: '',
site_address: '',
auth_code: ''
company_name: "",
site_address: "",
auth_code: ""
})
const loading = ref(true)
const saveLoading = ref(false)
@ -180,25 +128,21 @@ const checkAppMange = () => {
checkAppMange()
const formData = reactive<Record<string, string>>({
auth_code: '',
auth_secret: ''
auth_code: "",
auth_secret: ""
})
const formRef = ref<FormInstance>()
//
const formRules = reactive<FormRules>({
auth_code: [
{ required: true, message: t('authCodePlaceholder'), trigger: 'blur' }
],
auth_secret: [
{ required: true, message: t('authSecretPlaceholder'), trigger: 'blur' }
]
auth_code: [{ required: true, message: t("authCodePlaceholder"), trigger: "blur" }],
auth_secret: [{ required: true, message: t("authSecretPlaceholder"), trigger: "blur" }]
})
const save = async (formEl: FormInstance | undefined) => {
const save = async(formEl: FormInstance | undefined) => {
if (saveLoading.value || !formEl) return
await formEl.validate(async (valid) => {
await formEl.validate(async(valid) => {
if (valid) {
saveLoading.value = true
@ -214,47 +158,20 @@ const save = async (formEl: FormInstance | undefined) => {
}
const market = () => {
window.open('https://www.niucloud.com/app')
window.open("https://www.niucloud.com/app")
}
const versions = ref('')
const versions = ref("")
const getVersionsInfo = () => {
getVersions().then(res => {
getVersions().then((res) => {
versions.value = res.data.version.version
})
}
getVersionsInfo()
/**
* 升级
*/
const handleUpgrade = () => {
if (!authinfo.value.auth_code) {
authCodeApproveFn()
return
}
upgradeRef.value?.open()
}
const handleCloudBuild = () => {
if (!authinfo.value.auth_code) {
authCodeApproveFn()
return
}
if (cloudBuildRef.value.cloudBuildTask) {
cloudBuildRef.value?.open()
return
}
ElMessageBox.confirm(t('cloudBuildTips'), t('warning'),
{
confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'),
type: 'warning'
}
).then(() => {
cloudBuildRef.value?.open()
})
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
:deep(.el-button){
border-radius: 4px !important;
}
</style>

View File

@ -6,11 +6,11 @@
<template v-if="Object.keys(appList).length">
<template v-for="(item, index) in appList" :key="index + 'b'">
<div class="flex justify-between items-center">
<div class="flex justify-between items-center" v-if="item.list.length">
<span class="text-page-title">{{ item.title }}</span>
</div>
<div class="flex flex-wrap plug-list pb-10 plug-large">
<div class="flex flex-wrap plug-list pb-10 plug-large" v-if="item.list.length">
<div class="cursor-pointer mt-[20px] mr-4 bg-[#f7f7f7]" v-for="(childItem,childIndex) in item.list" :key="childIndex" @click="toLink(childItem)">
<div class="w-[264px] flex py-[20px] px-[17px] app-item relative">
<el-image class="w-[40px] h-[40px] mr-[10px]" :src="img(childItem.icon)" fit="contain">
@ -23,7 +23,7 @@
<div class="flex flex-col justify-between w-[180px]">
<div class="text-[14px] flex items-center">
<span class="app-text max-w-[170px]">{{ childItem.title }}</span>
<span class="iconfont iconxiaochengxu2 text-[#00b240] ml-[4px] !text-[14px]"></span>
<!-- <span class="iconfont iconxiaochengxu2 text-[#00b240] ml-[4px] !text-[14px]"></span>-->
</div>
<!-- <el-icon color="#666">
<QuestionFilled />
@ -45,7 +45,7 @@
<script lang="ts" setup>
import { ref } from 'vue'
import { getSiteAddons,getShowApp } from '@/app/api/site'
import { getSiteAddons, getShowApp } from '@/app/api/site'
import { img } from '@/utils/common'
import useUserStore from '@/stores/modules/user'
import { useRouter } from 'vue-router'
@ -61,14 +61,13 @@ const getAppList = async () => {
// appList.value = res.data
// loading.value = false
const res = await getShowApp();
const res = await getShowApp()
appList.value = res.data
loading.value = false
}
getAppList()
const toLink = (item: any) => {
console.log('tol', item)
if (item.url) {
router.push(item.url)
} else {
@ -88,6 +87,6 @@ const toLink = (item: any) => {
}
.app-item:hover{
transition: 0.5s;
box-shadow: 0px 2px 8px 0px rgba(0,0,0,0.1);
box-shadow: 0 2px 8px 0 rgba(0,0,0,0.1);
}
</style>

Some files were not shown because too many files have changed in this diff Show More