chore: 初始开源发布
iotlcm-app:小程序端 + 用户端服务。 - app/:uni-app 小程序前端(基于 unibest,MIT) - 微信 AppID → YOUR_WX_APPID,uni-app AppID → __UNI__YOURAPPID - 内网后端地址 → admin.iotlcm.example.com - 应用标题与 unibest 模板 README 重写(保留上游致谢与 MIT 声明) - server/:GoFrame 用户端服务(基于 XiuAdmin,Apache-2.0) - module xiuadmin → git.5iot.com/iotlcm-public/iotlcm-app(360 文件) - 支付回调地址 → app.iotlcm.example.com,商户名与应用名泛化 - 真实手机号 → 合法 11 位编造号(保留号段前 3 位 + 后 4 位) - 依赖号码尾部的断言同步更新 - 补 server/LICENSE(Apache-2.0) - 移除内部资产:CI 触发器 - 补根 README,LF 行尾 + .gitattributes 已知:TestSysDept_RefreshDeptAncestors 在源仓同一提交上同样失败,属既有缺陷。
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import { existsSync, readFileSync } from 'node:fs'
|
||||
import { resolve } from 'node:path'
|
||||
import process from 'node:process'
|
||||
|
||||
const root = process.cwd()
|
||||
|
||||
const expectedPages = [
|
||||
['business', 'renew', '套餐续费确认'],
|
||||
['business', 'change', '套餐变更确认'],
|
||||
['business', 'addon', '订购加油包'],
|
||||
['business', 'diagnosis', '智能诊断'],
|
||||
['business', 'workOrder', '工单列表'],
|
||||
['business', 'workOrderCreate', '提交工单'],
|
||||
['business', 'workOrderDetail', '工单详情'],
|
||||
['card', 'detail', '卡片详情'],
|
||||
['card', 'packageDetail', '套餐详情'],
|
||||
['message', 'systemDetail', '系统消息详情'],
|
||||
['message', 'cardDetail', '卡片消息详情'],
|
||||
['user', 'profile', '账号资料'],
|
||||
['user', 'realName', '实名信息'],
|
||||
['user', 'notification', '通知设置'],
|
||||
['user', 'feedback', '帮助与反馈'],
|
||||
['user', 'contact', '联系客服'],
|
||||
['user', 'agreement', '协议与隐私'],
|
||||
['user', 'about', '关于我们'],
|
||||
]
|
||||
|
||||
for (const [owner, name, title] of expectedPages) {
|
||||
const file = resolve(root, `src/pages/${owner}/views/${name}/index.vue`)
|
||||
if (!existsSync(file)) {
|
||||
throw new Error(`缺少子界面文件:src/pages/${owner}/views/${name}/index.vue`)
|
||||
}
|
||||
|
||||
const source = readFileSync(file, 'utf8')
|
||||
if (!source.includes('definePage({')) {
|
||||
throw new Error(`子界面缺少 definePage:${file}`)
|
||||
}
|
||||
if (!source.includes(`navigationBarTitleText: '${title}'`)) {
|
||||
throw new Error(`子界面标题不匹配:${file},期望 ${title}`)
|
||||
}
|
||||
}
|
||||
|
||||
const entryFiles = [
|
||||
'src/pages/business/index.vue',
|
||||
'src/pages/card/components/CardList.vue',
|
||||
'src/pages/card/components/PackageList.vue',
|
||||
'src/pages/message/components/MessageList.vue',
|
||||
'src/pages/user/components/UserServiceCells.vue',
|
||||
'src/pages/user/components/UserSupportCells.vue',
|
||||
]
|
||||
|
||||
for (const relative of entryFiles) {
|
||||
const source = readFileSync(resolve(root, relative), 'utf8')
|
||||
if (!source.includes('RouterPath')) {
|
||||
throw new Error(`入口未使用 RouterPath 跳转:${relative}`)
|
||||
}
|
||||
if (!source.includes('navigateTo')) {
|
||||
throw new Error(`入口未调用 navigateTo:${relative}`)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('sub pages checked')
|
||||
Reference in New Issue
Block a user