+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{errorMsg}}
-
- 错误信息
- 完成
-
-
-
-
-
-
-
-
-
- {{ t('upgrade.upgradeCompleteTips') }}
- 本次升级用时{{ formatUpgradeDuration }}
-
- 返回
- 完成
+
+
+
+
+
+
+
+
+
+
+ {{ t('upgrade.upgradeCompleteTips') }}
+
+
+
+
+ 警告:
+ 升级过程中发生云编译错误
+
+
+
+
为了保证系统稳定,建议您做以下处理:
+
如果您是开发者,安装的框架或者插件二开过或者正在开发中,可能是因为您的本地代码不完整导致的云编译失败,需要自己调试并重新进行编译才算升级完成(云编译会把本地插件前端代码上传编译)。
+
如果您没有二开过任何代码,可能是本地插件存在兼容性问题,请联系插件开发者或者官方客服解决。
+
如果您的项目已经投入正式运营中,请立即回滚。
-
-
-
-
+
+
编译信息错误
+
+ {{ upgradeTask.cloud_build_error }}
+
+
+
+ 更多信息
+ 我已知晓
+ 回滚
+
+
+
+ 返回
+ 完成
+
+
+
+
+
+
+
+
+
+
+
+ {{errorMsg}}
+
+ 错误信息
+ 完成
+
+
@@ -354,8 +357,6 @@ const getUpgradeTaskFn = () => {
errorMsg.value = item
}
})
- errorDialog.value = true
- showTerminal.value = false
if (upgradeTimer) {
clearInterval(upgradeTimer)
upgradeTimer = null
@@ -365,12 +366,17 @@ const getUpgradeTaskFn = () => {
// 恢复完毕
if (data.step == 'restoreComplete') {
flashInterval && clearInterval(flashInterval)
+ step.value = 3
+ active.value = 'fail'
return
}
// 升级完成
if (data.step == 'upgradeComplete') {
+ if (data.cloud_build_error) {
+ terminalRef.value.pushMessage({ content: data.cloud_build_error, class: 'error' })
+ }
+ step.value = 3
active.value = 'complete'
- showTerminal.value = false
numberOfSteps.value = 4
notificationEl && notificationEl.close()
emits('complete')
@@ -379,12 +385,13 @@ const getUpgradeTaskFn = () => {
upgradeTimer = null
}
timeloading.value = false
- clearUpgradeTask()
return
}
numberOfSteps.value = 2
active.value = 'upgrade'
executeUpgradeFn()
+ }).catch((err) => {
+ console.log(err)
})
}
@@ -395,6 +402,7 @@ const handleBack = () => {
isBack.value = true
showTerminal.value = true
errorDialog.value = false // 隐藏错误弹窗
+ step.value = 2
}
const formatUpgradeDuration = computed(() => {
@@ -646,6 +654,12 @@ const cloudBuildError = (event: string) => {
getUpgradeTaskFn()
})
break
+ case 'cloud_build_error_rollback':
+ upgradeUserOperate(event).then(() => {
+ handleBack()
+ executeUpgradeFn()
+ })
+ break
}
}
diff --git a/admin/src/app/lang/zh-cn/channel.weapp.code.json b/admin/src/app/lang/zh-cn/channel.weapp.code.json
index 0f4a0fade..e5a156356 100644
--- a/admin/src/app/lang/zh-cn/channel.weapp.code.json
+++ b/admin/src/app/lang/zh-cn/channel.weapp.code.json
@@ -45,5 +45,6 @@
"againUpload": "重新上传",
"uploadWeapp": "上传小程序",
"undoAudit" : "撤回审核",
- "undoAuditTips" : "撤回代码审核,单个账号每天审核撤回次数最多不超过 5 次(每天的额度从0点开始生效),一个月不超过 10 次。是否要继续撤回?"
+ "undoAuditTips" : "撤回代码审核,单个账号每天审核撤回次数最多不超过 5 次(每天的额度从0点开始生效),一个月不超过 10 次。是否要继续撤回?",
+ "helpInfo": "查看帮助"
}
diff --git a/admin/src/app/lang/zh-cn/channel.wechat.config.json b/admin/src/app/lang/zh-cn/channel.wechat.config.json
index 73e8a1b72..fed35519a 100644
--- a/admin/src/app/lang/zh-cn/channel.wechat.config.json
+++ b/admin/src/app/lang/zh-cn/channel.wechat.config.json
@@ -32,5 +32,5 @@
"safeModeTips": "安全模式下,消息包为纯密文,需要开发者加密和解密,安全系数高",
"wechatBaseUri": "借权域名",
"wechatBaseUriPlaceholder": "",
- "wechatBaseUriTips": "默认留空,填写后将替换https://open.weixin.gg.com/获取授权!"
+ "wechatBaseUriTips": "默认留空,填写后将替换https://open.weixin.qq.com/获取授权!"
}
diff --git a/admin/src/app/lang/zh-cn/diy.edit.json b/admin/src/app/lang/zh-cn/diy.edit.json
index 02fe72870..fac445428 100644
--- a/admin/src/app/lang/zh-cn/diy.edit.json
+++ b/admin/src/app/lang/zh-cn/diy.edit.json
@@ -243,7 +243,7 @@
"carouselSearchSwiperSet": "轮播图设置",
"carouselSearchSwiperControl": "展示开关",
"carouselSearchSwiperInterval": "切换间隔 / 秒",
- "carouselSearchSwiperTips": "建议上传尺寸相同的图片,推荐尺寸750*350;鼠标拖拽可调整图片顺序",
+ "carouselSearchSwiperTips": "建议上传尺寸相同的图片,推荐尺寸750*580;鼠标拖拽可调整图片顺序",
"carouselSearchTabStyle": "选项卡样式",
"carouselSearchStyle": "搜索框样式",
"noColor": "常规颜色",
diff --git a/admin/src/app/lang/zh-cn/diy_form.edit.json b/admin/src/app/lang/zh-cn/diy_form.edit.json
index d731cc525..952fe36bc 100644
--- a/admin/src/app/lang/zh-cn/diy_form.edit.json
+++ b/admin/src/app/lang/zh-cn/diy_form.edit.json
@@ -244,7 +244,7 @@
"carouselSearchSwiperSet": "轮播图设置",
"carouselSearchSwiperControl": "展示开关",
"carouselSearchSwiperInterval": "切换间隔 / 秒",
- "carouselSearchSwiperTips": "建议上传尺寸相同的图片,推荐尺寸750*350;鼠标拖拽可调整图片顺序",
+ "carouselSearchSwiperTips": "建议上传尺寸相同的图片,推荐尺寸750*580;鼠标拖拽可调整图片顺序",
"carouselSearchTabStyle": "选项卡样式",
"carouselSearchStyle": "搜索框样式",
"noColor": "常规颜色",
diff --git a/admin/src/app/lang/zh-cn/setting.adminlogin.json b/admin/src/app/lang/zh-cn/setting.adminlogin.json
index 6924ef39a..d9a112f43 100644
--- a/admin/src/app/lang/zh-cn/setting.adminlogin.json
+++ b/admin/src/app/lang/zh-cn/setting.adminlogin.json
@@ -4,5 +4,9 @@
"admin": "平台端",
"adminBgImgTip": "建议上传尺寸为450*400px",
"site": "站点端",
- "siteBgImgTip": "建议上传尺寸为620*980px"
+ "siteBgImgTip": "建议上传尺寸为620*980px",
+ "siteLoginLogo": "站点登录Logo",
+ "siteLoginLogoTips": "站点端登录Logo,建议图片尺寸:132*40像素;图片格式:jpg、png、jpeg。",
+ "siteLoginBgImg": "站点登录背景图",
+ "siteLoginBgImgTips": "站点端登录背景图,建议图片尺寸:1920*1280像素;图片格式:jpg、png、jpeg。"
}
diff --git a/admin/src/app/lang/zh-cn/setting.oplatform.json b/admin/src/app/lang/zh-cn/setting.oplatform.json
index 9a2846a1e..622a9cfff 100644
--- a/admin/src/app/lang/zh-cn/setting.oplatform.json
+++ b/admin/src/app/lang/zh-cn/setting.oplatform.json
@@ -48,5 +48,6 @@
"publicType": "公众平台类型",
"siteName": "站点名称",
"authTime": "授权时间",
- "qrcode": "二维码"
+ "qrcode": "二维码",
+ "delWeappVersionTips": "是否确定要删除该版本?"
}
diff --git a/admin/src/app/lang/zh-cn/site.manage.json b/admin/src/app/lang/zh-cn/site.manage.json
index 2d3545c33..ca7d010b9 100644
--- a/admin/src/app/lang/zh-cn/site.manage.json
+++ b/admin/src/app/lang/zh-cn/site.manage.json
@@ -74,5 +74,9 @@
"foldText":"展开/折叠",
"appName": "套餐内含应用",
"addonName": "套餐内含插件",
- "siteInitTips":"确定要初始化站点吗?该操作将删除站点内所有数据,该操作无法退回,确定要继续初始化吗?"
+ "siteInitTips":"确定要初始化站点吗?该操作将删除站点内所有数据,该操作无法退回,确定要继续初始化吗?",
+ "createTimeStartDate": "开始时间(创建时间)",
+ "createTimeEndDate": "结束时间(创建时间)",
+ "expireTimeStartDate": "开始时间(到期时间)",
+ "expireTimeEndDate": "结束时间(到期时间)"
}
diff --git a/admin/src/app/lang/zh-cn/tools.backup_records.json b/admin/src/app/lang/zh-cn/tools.backup_records.json
index c17032eb0..72ad42d86 100644
--- a/admin/src/app/lang/zh-cn/tools.backup_records.json
+++ b/admin/src/app/lang/zh-cn/tools.backup_records.json
@@ -24,5 +24,6 @@
"startBackUp": "开始备份",
"backUpEnd": "备份完成",
"remark": "备注",
- "remarkEmpty": "无"
+ "remarkEmpty": "无",
+ "status": "状态"
}
diff --git a/admin/src/app/lang/zh-cn/wxoplatform.weapp_version.json b/admin/src/app/lang/zh-cn/wxoplatform.weapp_version.json
index 676b13911..c47a4d041 100644
--- a/admin/src/app/lang/zh-cn/wxoplatform.weapp_version.json
+++ b/admin/src/app/lang/zh-cn/wxoplatform.weapp_version.json
@@ -13,5 +13,6 @@
"syncTemplateError": "未能同步到模板库",
"templateID": "模板ID",
"siteWeappSync": "站点小程序同步",
- "syncSiteWeappTips": "是否要给该套餐下已授权小程序的站点提交代码?"
+ "syncSiteWeappTips": "是否要给该套餐下已授权小程序的站点提交代码?",
+ "helpInfo": "查看帮助"
}
diff --git a/admin/src/app/views/app/index.vue b/admin/src/app/views/app/index.vue
index 084e46ec7..73dc83c21 100644
--- a/admin/src/app/views/app/index.vue
+++ b/admin/src/app/views/app/index.vue
@@ -70,7 +70,13 @@ getAppList()
const toLink = (item: any) => {
if (item.url) {
- router.push(item.url)
+ // 判断如果携带is_target=true就通过新窗口打开
+ if (item.url.indexOf('is_target=true') != -1) {
+ const url = router.resolve(item.url)
+ window.open(url.href)
+ } else {
+ router.push(item.url)
+ }
} else {
addonIndexRoute[item.key] && router.push({ name: addonIndexRoute[item.key] })
}
diff --git a/admin/src/app/views/auth/components/edit-menu.vue b/admin/src/app/views/auth/components/edit-menu.vue
index e8a498713..e707a1662 100644
--- a/admin/src/app/views/auth/components/edit-menu.vue
+++ b/admin/src/app/views/auth/components/edit-menu.vue
@@ -24,10 +24,10 @@
@@ -184,6 +184,38 @@ const getAddonMenuFn = async (key: any) => {
addonMenuList.value = data
}
+const markMenuDisabled = (menuList: any[], menuType: number): any[] => {
+ return menuList.map(item => {
+ const newItem = { ...item }
+ // 判断当前节点是否可选
+ if (item.menu_key === '') {
+ // “顶级”节点(仅存在于 sysMenuList)
+ newItem.disabled = menuType === 2 // 按钮不能选顶级
+ } else {
+ if (menuType === 2) {
+ // 当前要创建的是按钮 → 只允许选择 menu_type === 1(菜单)
+ newItem.disabled = item.menu_type !== 1
+ } else {
+ // 当前要创建的是目录/菜单 → 只允许选择 menu_type === 0(目录)
+ newItem.disabled = item.menu_type !== 0
+ }
+ }
+ // 递归处理 children
+ if (Array.isArray(item.children) && item.children.length > 0) {
+ newItem.children = markMenuDisabled(item.children, menuType)
+ }
+ return newItem
+ })
+}
+
+const sysMenuListWithDisabled = computed(() => {
+ return markMenuDisabled(sysMenuList.value, formData.menu_type)
+})
+
+const addonMenuListWithDisabled = computed(() => {
+ return markMenuDisabled(addonMenuList.value, formData.menu_type)
+})
+
// 选择应用
const addonChange = async (val: any) => {
formData.parent_key = ''
diff --git a/admin/src/app/views/auth/log.vue b/admin/src/app/views/auth/log.vue
index f11efa5fc..c196e580e 100644
--- a/admin/src/app/views/auth/log.vue
+++ b/admin/src/app/views/auth/log.vue
@@ -19,13 +19,19 @@
+
+
+
+
{{ t('search') }}
{{ t('reset') }}
-
+
{{ t('清空日志') }}
@@ -83,7 +89,8 @@ const sysUserLogTableData = reactive({
searchParam: {
ip: '',
username: '',
- url: ''
+ url: '',
+ create_time:''
}
})
diff --git a/admin/src/app/views/channel/weapp/code.vue b/admin/src/app/views/channel/weapp/code.vue
index 10d3993cb..4bb251c62 100644
--- a/admin/src/app/views/channel/weapp/code.vue
+++ b/admin/src/app/views/channel/weapp/code.vue
@@ -135,6 +135,14 @@
+
+
+
@@ -470,6 +478,10 @@ const handleFailReason = (data: any) => {
failReasonDialogVisible.value = true
}
+const helpInfo = () => {
+ window.open('https://doc.niucloud.com/saasUse.html?keywords=/configFAQ/minWaChatUpload')
+}
+
const knownToKnow = () => {
Storage.set({ key: 'weappUploadTipsLock', data: true })
uploadSuccessShowDialog.value = false
diff --git a/admin/src/app/views/diy/member.vue b/admin/src/app/views/diy/member.vue
index 1a6aad4b3..20850f6e5 100644
--- a/admin/src/app/views/diy/member.vue
+++ b/admin/src/app/views/diy/member.vue
@@ -30,8 +30,8 @@
-
- {{ t('changePage') }}
+
+ {{ t('changePage') }}
{{ t('decorate') }}
diff --git a/admin/src/app/views/diy_form/records.vue b/admin/src/app/views/diy_form/records.vue
index 59fc02a97..33ef5b716 100644
--- a/admin/src/app/views/diy_form/records.vue
+++ b/admin/src/app/views/diy_form/records.vue
@@ -115,7 +115,7 @@
+ @size-change="getFormRecordsMemberFn()" @current-change="getFormRecordsMemberFn" />
diff --git a/admin/src/app/views/home/index.vue b/admin/src/app/views/home/index.vue
index 9328798d1..1ca6187c3 100644
--- a/admin/src/app/views/home/index.vue
+++ b/admin/src/app/views/home/index.vue
@@ -203,11 +203,11 @@
{{ item.site_group.group_name }}
-
+
-
+
@@ -363,6 +363,7 @@ const selectSite = (site: any) => {
}
const toHome = () => {
+ window.localStorage.setItem('admin.siteId', 0)
if (!window.localStorage.getItem('admin.token')) {
window.localStorage.setItem('admin.token', getToken())
window.localStorage.setItem('admin.comparisonTokenStorage', getToken())
diff --git a/admin/src/app/views/index/store.vue b/admin/src/app/views/index/store.vue
index 9e01807cb..c27d87873 100644
--- a/admin/src/app/views/index/store.vue
+++ b/admin/src/app/views/index/store.vue
@@ -62,9 +62,9 @@
-
+ :class="{'selected': batchUpgradeApp.includes(row.key)}" v-for="row in localList[activeName]" :key="row.key">
@@ -87,9 +87,24 @@
{{ row.key }}
-
+
+
+ 下载
+
+
+ 安装
+
+
+
+ 更新
+
+
+ 最新
+
+
+
-
+
版本:
{{ row.install_info && Object.keys(row.install_info)?.length ? row.install_info.version : row.version }}
@@ -98,26 +113,17 @@
{{ row.version }}
-
更新记录
-
-
-
-
- 立即下载
-
-
- 立即安装
- 删除
-
-
-
- 立即更新
-
-
- 已是最新
-
- 卸载
-
+
+
+
+
+ {{ t("detail") }}
+ 更新记录
+ 删除
+ 卸载
+
+
+
@@ -446,7 +452,14 @@
-
+
+
+
+
+
+ 已用时 {{ formatUpgradeDuration }}
+
+
@@ -639,6 +652,8 @@ const downEventHintFn = () => {
downEvent(currDownData.value, true)
}
+const batchUpgradeApp = ref
([])
+
const activeNameTabFn = (data: any) => {
activeName.value = data
storage.set({ key: 'storeActiveName', data })
@@ -873,12 +888,6 @@ let notificationEl = null
const getInstallTask = (first: boolean = true) => {
getAddonInstalltask().then((res) => {
if (res.data) {
- upgradeStartTime.value = Date.now()
- upgradeDuration.value = 0
- if (upgradeTimer) clearInterval(upgradeTimer)
- upgradeTimer = setInterval(() => {
- upgradeDuration.value++
- }, 1000)
if (first) {
installLog = []
currAddon.value = res.data.addon
@@ -894,9 +903,14 @@ const getInstallTask = (first: boolean = true) => {
showClose: false
})
}
+ if (upgradeTimer) clearInterval(upgradeTimer)
+ upgradeDuration.value = parseInt(Date.now() / 1000) - res.data.timestamp
+ upgradeTimer = setInterval(() => {
+ upgradeDuration.value++
+ }, 1000)
}
if (res.data.error) {
- terminalRef.value.pushMessage({ content: res.data.error, class: 'error' })
+ terminalRef.value?.pushMessage({ content: res.data.error, class: 'error' })
errorMsg.value = res.data.error
errorDialog.value = true
if (upgradeTimer) {
@@ -912,7 +926,6 @@ const getInstallTask = (first: boolean = true) => {
setTimeout(() => {
getInstallTask(false)
}, 2000)
-
} else {
if (!first) {
installStep.value = 2
@@ -922,11 +935,12 @@ const getInstallTask = (first: boolean = true) => {
}
localListFn()
userStore.clearRouters()
- notificationEl.close()
+ notificationEl?.close()
}
}
}).catch((e) => {
- terminalRef.value.pushMessage({ content: e.message, class: 'error' })
+ console.log(e)
+ terminalRef.value?.pushMessage({ content: e.message, class: 'error' })
})
}
@@ -1252,8 +1266,6 @@ const versionJudge = (row: any) => {
return false
}
-const batchUpgradeApp = ref([])
-
const appKeyAllSelect = () => {
if (localList.value[activeName.value].length) {
if (localList.value[activeName.value].length == batchUpgradeApp.value.length) {
@@ -1583,6 +1595,11 @@ html.dark .table-head-bg {
.app-card {
width: calc((100% - 120px) / 5);
min-width: 260px;
+
+ &.selected {
+ background-color: var(--el-color-primary-light-9);
+ border-color: var(--el-color-primary-light-9);
+ }
}
diff --git a/admin/src/app/views/login/index.vue b/admin/src/app/views/login/index.vue
index 992d4648f..dde5dab08 100644
--- a/admin/src/app/views/login/index.vue
+++ b/admin/src/app/views/login/index.vue
@@ -33,8 +33,8 @@
-
-
+
+

@@ -119,7 +119,7 @@ route.redirectedFrom && (route.query.redirect = route.redirectedFrom.path)
const webSite: any = computed(() => useSystemStore().website)
const siteBackgroundStyle = computed(() => ({
- backgroundImage: webSite.value?.site_login_bg_img ? `url(${img(webSite.value.site_login_bg_img)})` : '',
+ backgroundImage: loginConfig.value?.site_login_bg_img ? `url(${img(loginConfig.value.site_login_bg_img)})` : '',
backgroundSize: 'cover',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'center'
diff --git a/admin/src/app/views/poster/list.vue b/admin/src/app/views/poster/list.vue
index 72462ac25..d28a4a524 100644
--- a/admin/src/app/views/poster/list.vue
+++ b/admin/src/app/views/poster/list.vue
@@ -279,6 +279,8 @@ const previewPoster = (data: any) => {
previewDialogVisible.value = true
}
isRepeat.value = false
+ }).catch(() => {
+ isRepeat.value = false
})
}
diff --git a/admin/src/app/views/setting/adminlogin.vue b/admin/src/app/views/setting/adminlogin.vue
index f638a12a1..e5246f760 100644
--- a/admin/src/app/views/setting/adminlogin.vue
+++ b/admin/src/app/views/setting/adminlogin.vue
@@ -23,6 +23,18 @@
{{t('siteBgImgTip')}}
+
+
+
+
{{ t('siteLoginLogoTips') }}
+
+
+
+
+
+
{{ t('siteLoginBgImgTips') }}
+
+
@@ -51,7 +63,9 @@ const formData = reactive>({
is_captcha: 0,
is_site_captcha: 0,
bg: '',
- site_bg: ''
+ site_bg: '',
+ site_login_logo: '',
+ site_login_bg_img: ''
})
const getFormData = async () => {
diff --git a/admin/src/app/views/setting/layout.vue b/admin/src/app/views/setting/layout.vue
index f4e9a4be9..2b1454e27 100644
--- a/admin/src/app/views/setting/layout.vue
+++ b/admin/src/app/views/setting/layout.vue
@@ -1,80 +1,80 @@
-
-
+
+
-
- {{ pageName }}
-
+
+ {{ pageName }}
+
-
-
-
- {{ !loading ? t('emptyData') : '' }}
-
+
+
+
+ {{ !loading ? t('emptyData') : '' }}
+
-
-
-
-
-
-
-

-
-
-
-
{{ row.title }}
-
-
-
-
-
-
- {{ t('setting') }}
-
-
-
-
-
-
-
-
-
-
-
-
{{ t('layout') }}
-
-
-
如何开发自定义布局
+
+
+
+
+
+
+
-
-
-
-
![]()
-
-
-
![]()
-
-
-
-
+
+
+ {{ row.title }}
+
+
+
+
+
+
+ {{ t('setting') }}
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
![]()
+
+
+
![]()
+
+
+
+
+
+
-
-
+
+
diff --git a/admin/src/app/views/setting/system.vue b/admin/src/app/views/setting/system.vue
index 4442f1102..be4e963e2 100644
--- a/admin/src/app/views/setting/system.vue
+++ b/admin/src/app/views/setting/system.vue
@@ -20,18 +20,6 @@
{{ t('iconPlaceholder') }}
-
-
-
-
{{ t('siteLoginLogoTips') }}
-
-
-
-
-
-
{{ t('siteLoginBgImgTips') }}
-
-
diff --git a/admin/src/app/views/site/list.vue b/admin/src/app/views/site/list.vue
index f562882bd..86bef9c25 100644
--- a/admin/src/app/views/site/list.vue
+++ b/admin/src/app/views/site/list.vue
@@ -36,14 +36,14 @@
+ value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('createTimeStartDate')"
+ :end-placeholder="t('createTimeEndDate')" />
+ value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="t('expireTimeStartDate')"
+ :end-placeholder="t('expireTimeEndDate')" />
@@ -53,7 +53,7 @@
-
+
{
let isAllowChange = allowChange.value ? true : false
localStorage.setItem('isAllowChange',isAllowChange.toString())
})
-
+
}
getSiteAllowChangeFn()
diff --git a/admin/src/app/views/tools/attachment.vue b/admin/src/app/views/tools/attachment.vue
index ce2520759..20da35e7b 100644
--- a/admin/src/app/views/tools/attachment.vue
+++ b/admin/src/app/views/tools/attachment.vue
@@ -44,7 +44,7 @@ const type = ref(attachmentType[0])
.el-tabs {
display: flex;
- flex-direction: column;
+ flex-direction: column-reverse;
height: calc(100% - 40px);
}
diff --git a/admin/src/app/views/wxoplatform/weapp_version.vue b/admin/src/app/views/wxoplatform/weapp_version.vue
index ae0580922..9ec1b24a4 100644
--- a/admin/src/app/views/wxoplatform/weapp_version.vue
+++ b/admin/src/app/views/wxoplatform/weapp_version.vue
@@ -53,7 +53,7 @@
- {{ t('weappVersionUpdate') }}
+ {{ t('weappVersionUpdate') }}
{{ t('weappVersionUpdateRecord') }}
{{ t('siteWeappSync') }}
@@ -82,6 +82,7 @@
+ {{ t('delete') }}
{{ t('failReason') }}
@@ -96,19 +97,27 @@
{{ failReason }}
+
+
+