diff --git a/admin/auto-imports.d.ts b/admin/auto-imports.d.ts index 08908edd6..8139ac907 100644 --- a/admin/auto-imports.d.ts +++ b/admin/auto-imports.d.ts @@ -1,5 +1,5 @@ // Generated by 'unplugin-auto-import' export {} declare global { - + const ElMessage: typeof import('element-plus/es')['ElMessage'] } diff --git a/admin/components.d.ts b/admin/components.d.ts index 2909be755..70150d5dc 100644 --- a/admin/components.d.ts +++ b/admin/components.d.ts @@ -18,7 +18,6 @@ declare module '@vue/runtime-core' { ElButton: typeof import('element-plus/es')['ElButton'] ElCard: typeof import('element-plus/es')['ElCard'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] - ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCol: typeof import('element-plus/es')['ElCol'] ElCollapse: typeof import('element-plus/es')['ElCollapse'] ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] @@ -34,7 +33,6 @@ declare module '@vue/runtime-core' { ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElEmpty: typeof import('element-plus/es')['ElEmpty'] - ElFooter: typeof import('element-plus/es')['ElFooter'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElHeader: typeof import('element-plus/es')['ElHeader'] @@ -43,20 +41,23 @@ declare module '@vue/runtime-core' { ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] ElMain: typeof import('element-plus/es')['ElMain'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] - ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElResult: typeof import('element-plus/es')['ElResult'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSlider: typeof import('element-plus/es')['ElSlider'] ElStatistic: typeof import('element-plus/es')['ElStatistic'] + ElStep: typeof import('element-plus/es')['ElStep'] + ElSteps: typeof import('element-plus/es')['ElSteps'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] @@ -67,6 +68,7 @@ declare module '@vue/runtime-core' { ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] ElUpload: typeof import('element-plus/es')['ElUpload'] + HeatMap: typeof import('./src/components/heat-map/index.vue')['default'] Icon: typeof import('./src/components/icon/index.vue')['default'] PopoverInput: typeof import('./src/components/popover-input/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] @@ -77,6 +79,9 @@ declare module '@vue/runtime-core' { UploadFile: typeof import('./src/components/upload-file/index.vue')['default'] UploadImage: typeof import('./src/components/upload-image/index.vue')['default'] UploadVideo: typeof import('./src/components/upload-video/index.vue')['default'] + Verify: typeof import('./src/components/verifition/Verify.vue')['default'] + VerifyPoints: typeof import('./src/components/verifition/Verify/VerifyPoints.vue')['default'] + VerifySlide: typeof import('./src/components/verifition/Verify/VerifySlide.vue')['default'] VideoPlayer: typeof import('./src/components/video-player/index.vue')['default'] } export interface ComponentCustomProperties { diff --git a/admin/src/api/module.ts b/admin/src/api/module.ts new file mode 100644 index 000000000..3a3656a0d --- /dev/null +++ b/admin/src/api/module.ts @@ -0,0 +1,50 @@ +import request from '@/utils/request' + +/** + * 获取授权信息 + */ +export function getAuthinfo() { + return request.get('niucloud/authinfo') +} + +/** + * 设置 授权配置 + */ +export function setAuthinfo(params: Record) { + return request.post('niucloud/authinfo', params, {showSuccessMessage: true}) +} + +/** + * 获取 授权配置 + */ +export function getAdminAuthinfo() { + return request.get('niucloud/admin/authinfo') +} + + + +/** + * 获取授权插件列表 + * @returns + */ +export function getModule() { + return request.get('niucloud/module') +} + +/** + * 获取插件版本 + * @param params + * @returns + */ +export function getModuleVersion() { + return request.get(`niucloud/module`) +} + +/** + * 下载版本 + * @param params + * @returns + */ +export function downloadVersion(addon) { + return request.post(`addon/download/${addon}`, {}, {showSuccessMessage: true}) +} \ No newline at end of file diff --git a/admin/src/api/sys.ts b/admin/src/api/sys.ts index 8cc8a0c5a..2e3dc6c21 100644 --- a/admin/src/api/sys.ts +++ b/admin/src/api/sys.ts @@ -25,7 +25,7 @@ export function getUrl() { * @returns */ export function getRoleList(params: Record) { - return request.get('sys/role', {params}) + return request.get('sys/role', { params }) } /** @@ -42,7 +42,7 @@ export function getRoleInfo(roleId: number) { * @returns */ export function addRole(params: Record) { - return request.post(`sys/role`, params, {showSuccessMessage: true}) + return request.post(`sys/role`, params, { showSuccessMessage: true }) } /** @@ -50,7 +50,7 @@ export function addRole(params: Record) { * @param params */ export function editRole(params: Record) { - 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,7 @@ export function editRole(params: Record) { * @param roleId */ export function deleteRole(roleId: number) { - return request.delete(`sys/role/${roleId}`, {showSuccessMessage: true}) + return request.delete(`sys/role/${roleId}`, { showSuccessMessage: true }) } /** @@ -93,7 +93,7 @@ export function getMenuInfo(menu_key: string) { * @returns */ export function addMenu(params: Record) { - return request.post('sys/menu', params, {showSuccessMessage: true}) + return request.post('sys/menu', params, { showSuccessMessage: true }) } /** @@ -101,7 +101,7 @@ export function addMenu(params: Record) { * @param params */ export function editMenu(params: Record) { - return request.put(`sys/menu/${params.menu_key}`, params, {showSuccessMessage: true}) + return request.put(`sys/menu/${params.menu_key}`, params, { showSuccessMessage: true }) } /** @@ -109,7 +109,7 @@ export function editMenu(params: Record) { * @param menu_key */ export function deleteMenu(menu_key: string) { - return request.delete(`sys/menu/${menu_key}`, {showSuccessMessage: true}) + return request.delete(`sys/menu/${menu_key}`, { showSuccessMessage: true }) } /***************************************************** 站点菜单 ****************************************************/ @@ -147,7 +147,7 @@ export function getWebConfig() { * @returns */ export function setWebsite(params: Record) { - return request.put(`sys/config/website`, params, {showSuccessMessage: true}) + return request.put(`sys/config/website`, params, { showSuccessMessage: true }) } /** @@ -172,7 +172,7 @@ export function getService() { * @returns */ export function setCopyright(params: Record) { - return request.put(`sys/config/copyright`, params, {showSuccessMessage: true}) + return request.put(`sys/config/copyright`, params, { showSuccessMessage: true }) } /** @@ -181,7 +181,7 @@ export function setCopyright(params: Record) { * @returns */ export function getAttachmentCategoryList(params: Record) { - return request.get(`sys/attachment/category`, {params}) + return request.get(`sys/attachment/category`, { params }) } /** @@ -189,7 +189,7 @@ export function getAttachmentCategoryList(params: Record) { * @param params */ export function addAttachmentCategory(params: Record) { - return request.post(`sys/attachment/category`, params, {showSuccessMessage: true}) + return request.post(`sys/attachment/category`, params, { showSuccessMessage: true }) } /** @@ -198,7 +198,7 @@ export function addAttachmentCategory(params: Record) { * @returns */ export function editAttachmentCategory(params: Record) { - return request.put(`sys/attachment/category/${params.id}`, params, {showSuccessMessage: true}) + return request.put(`sys/attachment/category/${params.id}`, params, { showSuccessMessage: true }) } /** @@ -207,7 +207,7 @@ export function editAttachmentCategory(params: Record) { * @returns */ export function deleteAttachmentCategory(id: number) { - return request.delete(`sys/attachment/category/${id}`, {showSuccessMessage: true}) + return request.delete(`sys/attachment/category/${id}`, { showSuccessMessage: true }) } /** @@ -216,7 +216,7 @@ export function deleteAttachmentCategory(id: number) { * @returns */ export function getAttachmentList(params: Record) { - return request.get(`sys/attachment`, {params}) + return request.get(`sys/attachment`, { params }) } /** @@ -225,7 +225,7 @@ export function getAttachmentList(params: Record) { * @returns */ export function deleteAttachment(params: Record) { - return request.delete(`sys/attachment/del`, {data: params, showSuccessMessage: true}) + return request.delete(`sys/attachment/del`, { data: params, showSuccessMessage: true }) } /** @@ -255,7 +255,7 @@ export function getShortcutMenu() { * 添加快捷菜单 */ export function setShortcutMenu(params: Record) { - return request.put(`sys/config/shortcut_menu`, params, {showSuccessMessage: true}) + return request.put(`sys/config/shortcut_menu`, params, { showSuccessMessage: true }) } /** @@ -264,7 +264,7 @@ export function setShortcutMenu(params: Record) { * @returns */ export function getIconCategoryList(params: Record) { - return request.get(`sys/attachment/icon_category`, {params}) + return request.get(`sys/attachment/icon_category`, { params }) } /** @@ -273,7 +273,7 @@ export function getIconCategoryList(params: Record) { * @returns */ export function getIconList(params: Record) { - return request.get(`sys/attachment/icon`, {params}) + return request.get(`sys/attachment/icon`, { params }) } /***************************************************** 地址管理 ****************************************************/ @@ -299,14 +299,14 @@ export function getAreatree(level: number = 1) { * 获取地址信息 */ export function getAddressInfo(params: any) { - return request.get(`sys/area/get_info`, {params}) + return request.get(`sys/area/get_info`, { params }) } /** * 获取地址信息 */ export function getContraryAddress(params: any) { - return request.get(`sys/area/contrary`, {params}) + return request.get(`sys/area/contrary`, { params }) } /***************************************************** 存储设置 ****************************************************/ @@ -332,7 +332,7 @@ export function getStorageInfo(type: string) { * @returns */ export function editStorage(params: Record) { - return request.put(`sys/storage/${params.storage_type}`, params, {showSuccessMessage: true}) + return request.put(`sys/storage/${params.storage_type}`, params, { showSuccessMessage: true }) } /***************************************************** 支付设置 ****************************************************/ @@ -350,7 +350,7 @@ export function getPayConfig(type: string) { * @returns */ export function setPayConfig(params: Record) { - return request.put(`pay/config/${params.type}`, params, {showSuccessMessage: true}); + return request.put(`pay/config/${params.type}`, params, { showSuccessMessage: true }); } /** @@ -386,7 +386,7 @@ export function setTransferInfo(params: Record) { * @returns */ export function getCronList(params: any) { - return request.get(`sys/schedule/list`, {params}) + return request.get(`sys/schedule/list`, { params }) } /** @@ -426,7 +426,7 @@ export function getWeek() { * @returns */ export function addCron(params: Record) { - return request.post(`sys/schedule`, params, {showSuccessMessage: true}) + return request.post(`sys/schedule`, params, { showSuccessMessage: true }) } /** @@ -434,7 +434,7 @@ export function addCron(params: Record) { * @returns */ export function editCron(params: Record) { - return request.put(`sys/schedule/${params.id}`, params, {showSuccessMessage: true}) + return request.put(`sys/schedule/${params.id}`, params, { showSuccessMessage: true }) } /** @@ -442,7 +442,7 @@ export function editCron(params: Record) { * @returns */ export function deleteCron(id: string) { - return request.delete(`sys/schedule/${id}`, {showSuccessMessage: true}) + return request.delete(`sys/schedule/${id}`, { showSuccessMessage: true }) } /***************************************************** 协议管理 ****************************************************/ @@ -468,7 +468,7 @@ export function getAgreementInfo(key: string) { * @returns */ export function editAgreement(params: Record) { - return request.put(`sys/agreement/${params.key}`, params, {showSuccessMessage: true}) + return request.put(`sys/agreement/${params.key}`, params, { showSuccessMessage: true }) } /** @@ -503,7 +503,7 @@ export function getConfigLogin() { * @returns */ export function setConfigLogin(params: Record) { - return request.put(`sys/config/login`, params, {showSuccessMessage: true}) + return request.put(`sys/config/login`, params, { showSuccessMessage: true }) } /** @@ -517,7 +517,7 @@ export function getPayConfigList() { * 设置支付配置 */ export function setPatConfig(params: Record) { - return request.post(`pay/channel/set/all`, params, {showSuccessMessage: true}) + return request.post(`pay/channel/set/all`, params, { showSuccessMessage: true }) } @@ -526,14 +526,14 @@ export function setPatConfig(params: Record) { * 刷新菜单 */ export function menuRefresh(params: Record) { - return request.post(`sys/menu/refresh`, {}, {showSuccessMessage: true}) + return request.post(`sys/menu/refresh`, {}, { showSuccessMessage: true }) } /** * 清理数据字段缓存 */ export function clearSchemaCache(params: Record) { - return request.post(`sys/schema/clear`, {}, {showSuccessMessage: true}) + return request.post(`sys/schema/clear`, {}, { showSuccessMessage: true }) } @@ -551,7 +551,7 @@ export function getAppMange() { * 设置地图key */ export function setMap(params: Record) { - return request.put(`sys/config/map`, params, {showSuccessMessage: true}) + return request.put(`sys/config/map`, params, { showSuccessMessage: true }) } /** @@ -573,5 +573,51 @@ export function getIndexList() { * 设置首页模版 */ export function setIndexList(params: Record) { - return request.put(`sys/config/site_index`, params, {showSuccessMessage: true}) + return request.put(`sys/config/site_index`, params, { showSuccessMessage: true }) +} + +/** + * 获取布局 + * @returns + */ +export function getLayouts() { + return request.get('sys/layout') +} + +/** + * 设置布局 + * @returns + */ +export function setLayout(key: string) { + return request.put('sys/layout', { key }, { showSuccessMessage: true }) +} + +/** + * 获取支付待审核记录 + */ +export function getPayAuditList(params: Record) { + return request.get('pay/audit', { params }) +} + +/** + * 支付审核通过 + * @returns + */ +export function payAuditPass(outTradeNo: string) { + return request.put(`pay/pass/${outTradeNo}`, {}, { showSuccessMessage: true }) +} + +/** + * 支付审核拒绝 + * @returns + */ +export function payAuditRefuse(params: Record) { + return request.put(`pay/refuse/${params.out_trade_no}`, params, { showSuccessMessage: true }) +} + +/** + * 获取支付单据详情 + */ +export function getPayDetail(id: number) { + return request.get(`pay/detail/${id}`) } diff --git a/admin/src/api/weapp.ts b/admin/src/api/weapp.ts index 5975b953d..ff344ea67 100644 --- a/admin/src/api/weapp.ts +++ b/admin/src/api/weapp.ts @@ -51,7 +51,7 @@ export function uploadVersion(params: Record) { * @returns */ export function addVersion(params: Record) { - return request.put('applet/version/add', params, {showSuccessMessage: true}) + return request.post('applet/version', params, {showSuccessMessage: true}) } /** @@ -78,7 +78,7 @@ export function getVersionInfo(id: string) { * @returns */ export function editVersion(params: Record) { - return request.get(`applet/version/${params.id}`, params, {showSuccessMessage: true}) + return request.put(`applet/version/${params.id}`, params, {showSuccessMessage: true}) } /** @@ -96,5 +96,5 @@ export function deleteVersion(id: string) { * @returns */ export function versionDown(id: string) { - return request.post(`applet/version/download/${id}`) + return request.get(`applet/version/download/${id}`, { "responseType": "blob" }) } \ No newline at end of file diff --git a/admin/src/components/heat-map/index.vue b/admin/src/components/heat-map/index.vue new file mode 100644 index 000000000..e7b712bb7 --- /dev/null +++ b/admin/src/components/heat-map/index.vue @@ -0,0 +1,684 @@ + + + + + \ No newline at end of file diff --git a/admin/src/lang/zh-cn/app.authorize.json b/admin/src/lang/zh-cn/app.authorize.json new file mode 100644 index 000000000..b18becf59 --- /dev/null +++ b/admin/src/lang/zh-cn/app.authorize.json @@ -0,0 +1,14 @@ +{ + "companyName": "授权主体", + "siteAddress": "授权域名", + "contactName": "授权联系人", + "authCode": "授权码", + "authSecret": "授权秘钥", + "createTime": "授权时间", + "expireTime": "到期时间", + "authApp": "授权应用", + "authAppKey": "应用标识", + "siteAddressTips": "授权域名不匹配", + "authCodePlaceholder": "请输入核销码", + "authSecretPlaceholder": "请输入授权秘钥" +} \ No newline at end of file diff --git a/admin/src/lang/zh-cn/app.store.json b/admin/src/lang/zh-cn/app.store.json index 37196b207..bd64a27c3 100644 --- a/admin/src/lang/zh-cn/app.store.json +++ b/admin/src/lang/zh-cn/app.store.json @@ -28,5 +28,10 @@ "jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen", "conflictFiles": "冲突文件", "process": "启动进程", - "open": "开启" + "open": "开启", + "down": "下载", + "addonVersion": "插件版本", + "versionCode": "版本号", + "createTime": "发布时间", + "buyLabel": "已购买" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/channel.weapp.code.json b/admin/src/lang/zh-cn/channel.weapp.code.json index a26dea451..076ddbf92 100644 --- a/admin/src/lang/zh-cn/channel.weapp.code.json +++ b/admin/src/lang/zh-cn/channel.weapp.code.json @@ -16,5 +16,7 @@ "codeDownTwoDesc": "上传代码", "codeDownTwoTips": "下载完成之后,使用微信开发工具进行上传", "codeDownThreeDesc": "发布小程序", - "codeDownThreeTips": "上传之后提交审核,审核通过发布小程序" + "codeDownThreeTips": "上传之后提交审核,审核通过发布小程序", + "weappVersion": "小程序版本", + "close": "关闭" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/common.json b/admin/src/lang/zh-cn/common.json index 81cd59873..7d1fd0e0c 100644 --- a/admin/src/lang/zh-cn/common.json +++ b/admin/src/lang/zh-cn/common.json @@ -76,7 +76,8 @@ "themeColor": "主题颜色", "detectionLoginOperation": "确定", "detectionLoginContent": "已检测到有其他账号登录,需要刷新后才能继续操作。", - "detectionLoginTip": "提示" + "detectionLoginTip": "提示", + "layoutStyle": "布局风格" }, "axios": { "unknownError": "未知错误", diff --git a/admin/src/lang/zh-cn/decorate.edit.json b/admin/src/lang/zh-cn/decorate.edit.json index a38a6a6a8..c80ec219b 100644 --- a/admin/src/lang/zh-cn/decorate.edit.json +++ b/admin/src/lang/zh-cn/decorate.edit.json @@ -109,5 +109,15 @@ "more": "文字", "morePlaceholder": "请输入文字", "moreIsShow": "是否显示", - "memberStyle": "会员样式" + "memberStyle": "会员样式", + "template": "模板", + "imageGap": "图片间隙", + "rubikCubeStyle": "魔方样式", + "hotArea": "热区", + "hotAreaSet": "热区设置", + "addHotArea": "添加热区", + "selectedAfterHotArea": "个热区", + "hotAreaManage": "热区管理", + "selectedHotArea": "请选择热区", + "hotAreaLink": "的链接地址" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/diy.edit.json b/admin/src/lang/zh-cn/diy.edit.json index a38a6a6a8..c80ec219b 100644 --- a/admin/src/lang/zh-cn/diy.edit.json +++ b/admin/src/lang/zh-cn/diy.edit.json @@ -109,5 +109,15 @@ "more": "文字", "morePlaceholder": "请输入文字", "moreIsShow": "是否显示", - "memberStyle": "会员样式" + "memberStyle": "会员样式", + "template": "模板", + "imageGap": "图片间隙", + "rubikCubeStyle": "魔方样式", + "hotArea": "热区", + "hotAreaSet": "热区设置", + "addHotArea": "添加热区", + "selectedAfterHotArea": "个热区", + "hotAreaManage": "热区管理", + "selectedHotArea": "请选择热区", + "hotAreaLink": "的链接地址" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/finance.offlinepay.json b/admin/src/lang/zh-cn/finance.offlinepay.json new file mode 100644 index 000000000..edfd91153 --- /dev/null +++ b/admin/src/lang/zh-cn/finance.offlinepay.json @@ -0,0 +1,18 @@ +{ + "money":"支付金额", + "outTradeNo": "交易流水号", + "voucher": "支付凭证", + "body": "支付内容", + "pass": "通过", + "refuse": "拒绝", + "refuseReason": "拒绝原因", + "passTips": "确认要通过该支付单据吗?", + "startDate": "开始时间", + "endDate": "结束时间", + "outTradeNoPlaceholder":"请输入交易流水号", + "detail": "详情", + "waitAudit": "待审核", + "passed": "已通过", + "notPass": "未通过", + "all": "全部" +} diff --git a/admin/src/lang/zh-cn/finance.pay_detail.json b/admin/src/lang/zh-cn/finance.pay_detail.json new file mode 100644 index 000000000..9af723cb3 --- /dev/null +++ b/admin/src/lang/zh-cn/finance.pay_detail.json @@ -0,0 +1,18 @@ +{ + "pass": "通过", + "refuse": "拒绝", + "refuseReason": "拒绝原因", + "passTips": "确认要通过该支付单据吗?", + "outTradeNo": "交易单号", + "createTime": "交易时间", + "money": "交易金额", + "body": "交易内容", + "channel": "支付场景", + "payStatus": "支付状态", + "payType": "支付方式", + "payTime": "支付时间", + "failTime": "失败时间", + "failReason": "失败原因", + "voucher": "支付凭证", + "auditVoucher": "审核支付凭证" +} diff --git a/admin/src/lang/zh-cn/setting.agreement.edit.json b/admin/src/lang/zh-cn/setting.agreement_edit.json similarity index 100% rename from admin/src/lang/zh-cn/setting.agreement.edit.json rename to admin/src/lang/zh-cn/setting.agreement_edit.json diff --git a/admin/src/lang/zh-cn/setting.pay.json b/admin/src/lang/zh-cn/setting.pay.json index f2772da62..acc6f15af 100644 --- a/admin/src/lang/zh-cn/setting.pay.json +++ b/admin/src/lang/zh-cn/setting.pay.json @@ -9,6 +9,7 @@ "config": "设置", "updateWechat": "微信支付", "updateAlipay": "支付宝支付", + "updateOfflinepay": "线下支付", "mchId": "商户号", "mchIdPlaceholder": "请输入商户号", "mchIdTips": "微信支付商户号(MCHID)", @@ -48,6 +49,13 @@ "setConfig": "设置支付配置", "open": "已开启", "notOpen": "未开启", - "cancel": "取消" - + "cancel": "取消", + "collectionName": "收款账户名称", + "collectionBank": "收款银行", + "collectionAccount": "收款账号", + "collectionDesc": "转账说明", + "collectionNamePlaceholder": "请输入收款账户名称", + "collectionBankPlaceholder": "请输入收款银行", + "collectionAccountPlaceholder": "请输入收款账号", + "collectionDescPlaceholder": "请输入转账说明" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/setting.system.json b/admin/src/lang/zh-cn/setting.system.json index 216a4dd0a..0658ee780 100644 --- a/admin/src/lang/zh-cn/setting.system.json +++ b/admin/src/lang/zh-cn/setting.system.json @@ -3,7 +3,7 @@ "contactAddress":"联系地址", "siteName": "站点名称", "keywords": "网站关键字", - "logo": "长方形logo", + "logo": "长方形Logo", "desc": "网站简介", "province": "省", "city": "市", @@ -24,7 +24,7 @@ "frontEndName": "前台名称", "frontEndNamePlaceholder": "请输入前台名称", "frontEndLogo": "前台Logo", - "icon": "网站方形logo", + "icon": "正方形Logo", "serviceInformation": "服务信息", "wechatCode": "公众号二维码", "customerServiceCode": "客服二维码", diff --git a/admin/src/lang/zh-cn/setting.weapp.json b/admin/src/lang/zh-cn/setting.weapp.json index fdeacbbb3..e3d16928f 100644 --- a/admin/src/lang/zh-cn/setting.weapp.json +++ b/admin/src/lang/zh-cn/setting.weapp.json @@ -7,5 +7,6 @@ "editVersion": "添加/编辑版本", "file": "文件", "filePlaceholder":"请上传版本文件", - "desc": "版本说明" + "desc": "版本说明", + "weappVersionDeleteTips": "确定要删除小程序版本吗" } \ No newline at end of file diff --git a/admin/src/lang/zh-cn/tools.schedule.json b/admin/src/lang/zh-cn/tools.schedule.json index 823f493d7..99e23f018 100644 --- a/admin/src/lang/zh-cn/tools.schedule.json +++ b/admin/src/lang/zh-cn/tools.schedule.json @@ -21,10 +21,13 @@ "cronTemplate": "任务模版", "cronTime": "任务周期", "openStatus": "任务状态", + "isopen": "是否启用", "day": "日", "hour": "时", "min": "分", "cronDeleteTips": "你确定要删除任务吗", "addCron": "添加任务", - "cronTimeTips": "任务周期时间不能为空" + "cronTimeTips": "任务周期时间不能为空", + "cronTipsOne": "启动计划任务方式:", + "cronTipsTwo": "1、使用命令启动:php think cron:schedule 如果更改了任务周期、状态、删除任务等操作后,需要重新启动下 php think cron:schedule 确保生效" } \ No newline at end of file diff --git a/admin/src/layout/default/components/header/layout-setting.vue b/admin/src/layout/default/components/header/layout-setting.vue index 84ce312a8..061c1619c 100644 --- a/admin/src/layout/default/components/header/layout-setting.vue +++ b/admin/src/layout/default/components/header/layout-setting.vue @@ -32,6 +32,21 @@ + +
+
{{ t('layout.layoutStyle') }}
+
+
+
+ {{ item.name }} +
+ +
+
+
@@ -41,11 +56,19 @@ import { ref, computed } from 'vue' import useSystemStore from '@/stores/modules/system' import { useDark, useToggle } from '@vueuse/core' -import { setThemeColor } from '@/utils/common' +import { setThemeColor, img } from '@/utils/common' import { t } from '@/lang' +import { getLayouts, setLayout } from '@/api/sys' +import Storage from '@/utils/storage' const drawer = ref(false) const systemStore = useSystemStore() +const layouts = ref([]) +const currLayout = ref(Storage.get('layout') || 'default') + +getLayouts().then(res => { + layouts.value = res.data +}).catch(() => { }) const isDark = useDark() const toggleDark = useToggle(isDark) @@ -71,7 +94,6 @@ const sidebar = computed({ } }) - const theme = computed({ get() { return systemStore.theme @@ -81,10 +103,23 @@ const theme = computed({ setThemeColor(systemStore.theme, systemStore.dark ? 'dark' : 'light') } }) + +const handleSetLayout = (key: string) => { + setLayout(key).then(() => { + Storage.set({ key: 'layout', data: key }) + location.reload() + }).catch(() => { }) +} diff --git a/admin/src/layout/hellow/index.vue b/admin/src/layout/hellow/index.vue new file mode 100644 index 000000000..d738f66b7 --- /dev/null +++ b/admin/src/layout/hellow/index.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/admin/src/layout/index.vue b/admin/src/layout/index.vue new file mode 100644 index 000000000..310f9e9ef --- /dev/null +++ b/admin/src/layout/index.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/admin/src/router/routers.ts b/admin/src/router/routers.ts index 35dfa382e..d817e0806 100644 --- a/admin/src/router/routers.ts +++ b/admin/src/router/routers.ts @@ -1,5 +1,5 @@ import { RouteRecordRaw, RouterView } from 'vue-router' -import Default from '@/layout/default/index.vue' +import Default from '@/layout/index.vue' import Decorate from '@/layout/decorate/index.vue' // 静态路由 diff --git a/admin/src/stores/modules/diy.ts b/admin/src/stores/modules/diy.ts index 7611b3208..211f6869c 100644 --- a/admin/src/stores/modules/diy.ts +++ b/admin/src/stores/modules/diy.ts @@ -2,7 +2,7 @@ import {defineStore} from 'pinia' import {t} from '@/lang' import {toRaw} from 'vue' import {ElMessage, ElMessageBox} from 'element-plus' -import {cloneDeep } from 'lodash-es' +import {cloneDeep} from 'lodash-es' const useDiyStore = defineStore('diy', { state: () => { @@ -11,11 +11,12 @@ const useDiyStore = defineStore('diy', { load: false, // 加载状态 currentIndex: -99, // 当前正在编辑的组件下标 currentComponent: 'edit-page', // 当前正在编辑的组件名称 + pageMode: 'diy', editTab: 'content',// 编辑页面 name: '', // 页面标识 type: '', // 页面模板 typeName: '', // 页面模板名称 - templateName : '', // 页面模板标识 + templateName: '', // 页面模板标识 isDefault: 0, // 是否默认页面 predefineColors: [ '#F4391c', @@ -204,6 +205,7 @@ const useDiyStore = defineStore('diy', { // 将数据发送到uniapp postMessage() { var diyData = JSON.stringify({ + pageMode: this.pageMode, currentIndex: this.currentIndex, global: toRaw(this.global), value: toRaw(this.value) diff --git a/admin/src/stores/modules/user.ts b/admin/src/stores/modules/user.ts index 769e8a349..a2b2cbb62 100644 --- a/admin/src/stores/modules/user.ts +++ b/admin/src/stores/modules/user.ts @@ -37,6 +37,7 @@ const useSystemStore = defineStore('user', { storage.set({ key: 'siteInfo', data: res.data.site_info }) storage.set({ key: 'comparisonSiteIdStorage', data: res.data.site_info.site_id }) storage.set({ key: 'comparisonTokenStorage', data: res.data.token }) + storage.set({ key: 'layout', data: (res.data.layout || 'default') }) resolve(res) }) .catch((error) => { diff --git a/admin/src/styles/icon/iconfont.css b/admin/src/styles/icon/iconfont.css index 164bfbae8..3d0d931ec 100644 --- a/admin/src/styles/icon/iconfont.css +++ b/admin/src/styles/icon/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 3883393 */ - src: url('//at.alicdn.com/t/c/font_3883393_0wpbzuop0spi.woff2?t=1688032173237') format('woff2'), - url('//at.alicdn.com/t/c/font_3883393_0wpbzuop0spi.woff?t=1688032173237') format('woff'), - url('//at.alicdn.com/t/c/font_3883393_0wpbzuop0spi.ttf?t=1688032173237') format('truetype'); + src: url('//at.alicdn.com/t/c/font_3883393_zqz8ttmm6uk.woff2?t=1689649791403') format('woff2'), + url('//at.alicdn.com/t/c/font_3883393_zqz8ttmm6uk.woff?t=1689649791403') format('woff'), + url('//at.alicdn.com/t/c/font_3883393_zqz8ttmm6uk.ttf?t=1689649791403') format('truetype'); } .iconfont { @@ -13,6 +13,50 @@ -moz-osx-font-smoothing: grayscale; } +.iconmofang-liangzuoliangyou:before { + content: "\e6c5"; +} + +.iconmofang-yishangliangxia:before { + content: "\e6c6"; +} + +.iconmofang-yizuoliangyou:before { + content: "\e6c7"; +} + +.iconxuanzemoban-yizuosanyou:before { + content: "\e6e9"; +} + +.iconrequ:before { + content: "\e68d"; +} + +.iconmofang1:before { + content: "\e64d"; +} + +.iconxinyongqia:before { + content: "\e785"; +} + +.iconmendian:before { + content: "\e60a"; +} + +.iconico_yuyueguanli_yuyuebiangeng:before { + content: "\e94a"; +} + +.iconsousuo:before { + content: "\e8b9"; +} + +.icongengduo:before { + content: "\e63b"; +} + .icona-02_luxian:before { content: "\e687"; } diff --git a/admin/src/styles/icon/iconfont.json b/admin/src/styles/icon/iconfont.json index 144d8e1fe..a79487e46 100644 --- a/admin/src/styles/icon/iconfont.json +++ b/admin/src/styles/icon/iconfont.json @@ -5,6 +5,83 @@ "css_prefix_text": "icon", "description": "系统图标", "glyphs": [ + { + "icon_id": "9924690", + "name": "魔方-两左两右", + "font_class": "mofang-liangzuoliangyou", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "9924691", + "name": "魔方-一上两下", + "font_class": "mofang-yishangliangxia", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "9924700", + "name": "魔方-一左两右", + "font_class": "mofang-yizuoliangyou", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "18287302", + "name": "选择模板-一左三右", + "font_class": "xuanzemoban-yizuosanyou", + "unicode": "e6e9", + "unicode_decimal": 59113 + }, + { + "icon_id": "33490811", + "name": "热区", + "font_class": "requ", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "30454135", + "name": "魔方", + "font_class": "mofang1", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "579624", + "name": "信用卡", + "font_class": "xinyongqia", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "2681698", + "name": "门店", + "font_class": "mendian", + "unicode": "e60a", + "unicode_decimal": 58890 + }, + { + "icon_id": "6607852", + "name": "ico_预约管理_预约变更", + "font_class": "ico_yuyueguanli_yuyuebiangeng", + "unicode": "e94a", + "unicode_decimal": 59722 + }, + { + "icon_id": "11372706", + "name": "搜索", + "font_class": "sousuo", + "unicode": "e8b9", + "unicode_decimal": 59577 + }, + { + "icon_id": "1703513", + "name": "更多", + "font_class": "gengduo", + "unicode": "e63b", + "unicode_decimal": 58939 + }, { "icon_id": "36212724", "name": "02_路线", diff --git a/admin/src/utils/request.ts b/admin/src/utils/request.ts index 71459b531..cfc9b93c0 100644 --- a/admin/src/utils/request.ts +++ b/admin/src/utils/request.ts @@ -49,15 +49,18 @@ class Request { // 全局响应拦截器 this.instance.interceptors.response.use( (response: requestResponse) => { - const res = response.data - if (res.code != 1) { - this.handleAuthError(res.code) - if (res.code != 401) ElMessage({ message: res.msg, type: 'error' }) - return Promise.reject(new Error(res.msg || 'Error')) - } else { - if (response.config.showSuccessMessage) ElMessage({ message: res.msg, type: 'success' }) - return res - } + if (response.request.responseType != 'blob') { + const res = response.data + if (res.code != 1) { + this.handleAuthError(res.code) + if (res.code != 401) ElMessage({ message: res.msg, type: 'error' }) + return Promise.reject(new Error(res.msg || 'Error')) + } else { + if (response.config.showSuccessMessage) ElMessage({ message: res.msg, type: 'success' }) + return res + } + } + return response.data }, (err: any) => { this.handleNetworkError(err) diff --git a/admin/src/views/app/authorize.vue b/admin/src/views/app/authorize.vue new file mode 100644 index 000000000..05822db57 --- /dev/null +++ b/admin/src/views/app/authorize.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/admin/src/views/app/store.vue b/admin/src/views/app/store.vue index 8338a1141..889b0c5dd 100644 --- a/admin/src/views/app/store.vue +++ b/admin/src/views/app/store.vue @@ -6,10 +6,10 @@ {{ t('localAppText') }} -
+
@@ -20,13 +20,13 @@
- +
- +
@@ -41,7 +41,7 @@
- +
@@ -65,25 +65,25 @@
- - + +
{{ item.title }} {{ item.desc }}
- {{ t('install') }} + {{ t('install') }} + {{ t('down') }}
- +
- - - - + + +
@@ -91,9 +91,9 @@

{{ item.desc }}

- {{ t('install') }} + {{ t('install') }} + {{ t('down') }}
-
@@ -101,6 +101,49 @@
+ +
+ +
+
+ + +
+
+
+ {{ item.title }} + {{ item.desc }} +
+ {{ t('unload') }} + {{ t('install') }} + {{ t('down') }} +
+
+ +
+
+
+ + + +
+
+
+

{{ item.title }}

+

{{ item.desc }}

+
+
+ {{ t('unload') }} + {{ t('install') }} + {{ t('down') }} +
+
+
+
+ + +
+
@@ -279,21 +322,27 @@ diff --git a/admin/src/views/diy/components/edit-hot-area.vue b/admin/src/views/diy/components/edit-hot-area.vue new file mode 100644 index 000000000..13c57ee6d --- /dev/null +++ b/admin/src/views/diy/components/edit-hot-area.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/diy/components/edit-image-ads.vue b/admin/src/views/diy/components/edit-image-ads.vue index 259776a59..b1f6657a5 100644 --- a/admin/src/views/diy/components/edit-image-ads.vue +++ b/admin/src/views/diy/components/edit-image-ads.vue @@ -117,7 +117,7 @@ var ratio = item.imgHeight / item.imgWidth; item.width = 375; item.height = item.width * ratio; - diyStore.editComponent.imageHeight = item.height; + diyStore.editComponent.imageHeight = parseInt(item.height); } }; }); diff --git a/admin/src/views/diy/components/edit-rubik-cube.vue b/admin/src/views/diy/components/edit-rubik-cube.vue new file mode 100644 index 000000000..e6d498253 --- /dev/null +++ b/admin/src/views/diy/components/edit-rubik-cube.vue @@ -0,0 +1,639 @@ + + + + + \ No newline at end of file diff --git a/admin/src/views/diy/edit.vue b/admin/src/views/diy/edit.vue index ae99914a9..4811df52c 100644 --- a/admin/src/views/diy/edit.vue +++ b/admin/src/views/diy/edit.vue @@ -284,6 +284,7 @@ initPage({ diyStore.typeName = data.type_name; diyStore.templateName = data.template; diyStore.isDefault = data.is_default; + diyStore.pageMode = data.mode; if (data.value) { let sources = JSON.parse(data.value); diyStore.global = sources.global; diff --git a/admin/src/views/finance/offlinepay.vue b/admin/src/views/finance/offlinepay.vue new file mode 100644 index 000000000..f595babc4 --- /dev/null +++ b/admin/src/views/finance/offlinepay.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/admin/src/views/finance/pay_detail.vue b/admin/src/views/finance/pay_detail.vue new file mode 100644 index 000000000..a6bffbad6 --- /dev/null +++ b/admin/src/views/finance/pay_detail.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/admin/src/views/setting/components/pay-offlinepay.vue b/admin/src/views/setting/components/pay-offlinepay.vue index 636647955..a45c41941 100644 --- a/admin/src/views/setting/components/pay-offlinepay.vue +++ b/admin/src/views/setting/components/pay-offlinepay.vue @@ -1,19 +1,33 @@