Compare commits
18 Commits
09eb3e089b
...
prod
Author | SHA1 | Date | |
---|---|---|---|
82ba645a60 | |||
c8dc5619ce | |||
1da056779d | |||
f431bfb325 | |||
80d2781c5a | |||
d0f666b72a | |||
96c2093004 | |||
a306981a08 | |||
393855028a | |||
0173799313 | |||
61a41a636c | |||
412667f966 | |||
f6bd77456c | |||
264053bd7e | |||
9f37ef8252 | |||
ca2cbf6467 | |||
6a22bd4cca | |||
f4456dc86d |
79
.gitea/workflows/dev.yml
Normal file
79
.gitea/workflows/dev.yml
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- prod
|
||||||
|
jobs:
|
||||||
|
Explore-Gitea-Actions:
|
||||||
|
runs-on: ubuntu64
|
||||||
|
steps:
|
||||||
|
- name: 拉取代码
|
||||||
|
uses: http://git.missmoc.top/mocheng/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
# - name: Setup Node.js
|
||||||
|
# uses: actions/setup-node@v3
|
||||||
|
# with:
|
||||||
|
# node-version: 16
|
||||||
|
# cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
npm install
|
||||||
|
# 安装HBuilderX命令行工具
|
||||||
|
npm install -g hbuilderx-cli
|
||||||
|
|
||||||
|
# - name: Build H5 project
|
||||||
|
# run: |
|
||||||
|
# # 执行HBuild项目构建
|
||||||
|
# npm run build
|
||||||
|
|
||||||
|
- name: Cloud package (Android)
|
||||||
|
run: |
|
||||||
|
# 使用HBuilderX CLI进行云打包
|
||||||
|
hbuilderx package \
|
||||||
|
--project . \
|
||||||
|
--platform android \
|
||||||
|
--appid ${{ secrets.HBUILDER_APPID }} \
|
||||||
|
--username ${{ secrets.HBUILDERX_USERNAME }} \
|
||||||
|
--password ${{ secrets.HBUILDERX_PASSWORD }} \
|
||||||
|
--output ./dist
|
||||||
|
env:
|
||||||
|
HBUILDER_CLOUD_PACKAGE: true
|
||||||
|
|
||||||
|
- name: Prepare release assets
|
||||||
|
run: |
|
||||||
|
# 重命名APK文件以便于识别版本
|
||||||
|
mv ./dist/*.apk ./dist/app-release-${{ github.sha }}.apk
|
||||||
|
# 对于iOS,根据实际打包输出调整
|
||||||
|
if [ -f ./dist/*.ipa ]; then
|
||||||
|
mv ./dist/*.ipa ./dist/app-release-${{ github.sha }}.ipa
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create Gitea Release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
release_name: Release ${{ github.ref_name }}
|
||||||
|
body: |
|
||||||
|
自动构建版本 ${{ github.ref_name }}
|
||||||
|
提交哈希: ${{ github.sha }}
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload Android Asset
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ./dist/app-release-${{ github.sha }}.apk
|
||||||
|
asset_name: app-android-${{ github.ref_name }}.apk
|
||||||
|
asset_content_type: application/vnd.android.package-archive
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
|
|
@@ -1,133 +0,0 @@
|
|||||||
name: Uniapp 自动化打包 CI/CD
|
|
||||||
|
|
||||||
# 触发条件:可根据需求调整(如 push 到 main 分支、打 tag 时触发)
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ] # 分支触发
|
|
||||||
# tag:
|
|
||||||
# - 'v*' # 版本 tag 触发(可选)
|
|
||||||
|
|
||||||
# 运行环境
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: 打包 Uniapp 项目
|
|
||||||
runs-on: ubuntu-latest # 云 Runner 环境(自建 Runner 可替换为自定义名称)
|
|
||||||
steps:
|
|
||||||
########################################################################
|
|
||||||
# 步骤 1:检出 Gitea 代码
|
|
||||||
########################################################################
|
|
||||||
- name: 1. 检出项目代码
|
|
||||||
uses: actions/checkout@v4 # Gitea 兼容的代码检出插件
|
|
||||||
with:
|
|
||||||
fetch-depth: 1 # 仅拉取最新代码,加速流程
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 2:安装 Node.js 环境(Uniapp 依赖 Node 处理项目依赖)
|
|
||||||
########################################################################
|
|
||||||
- name: 2. 安装 Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: '18.x' # 推荐 16.x+,适配 Uniapp 依赖
|
|
||||||
cache: 'npm' # 缓存 npm 依赖,加速后续构建
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 3:安装 Uniapp 项目依赖
|
|
||||||
########################################################################
|
|
||||||
- name: 3. 安装项目依赖
|
|
||||||
run: |
|
|
||||||
echo "开始安装项目依赖..."
|
|
||||||
npm install --registry=https://registry.npmmirror.com # 国内源加速(可选)
|
|
||||||
echo "项目依赖安装完成"
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 4:下载并部署 HBuilderX CLI(若 Runner 未预装)
|
|
||||||
########################################################################
|
|
||||||
- name: 4. 部署 HBuilderX CLI 到 /hbuilderxcli/HBuilderX
|
|
||||||
run: |
|
|
||||||
# 创建 CLI 目标目录
|
|
||||||
sudo mkdir -p /hbuilderxcli/HBuilderX
|
|
||||||
# 下载 HBuilderX Linux 完整版(版本 ≥3.1.5,可替换为最新版)
|
|
||||||
wget -O hbuilderx.zip https://download1.dcloud.net.cn/download/HBuilderX.4.0.14.20240528.full.zip
|
|
||||||
# 解压到目标目录
|
|
||||||
unzip -q hbuilderx.zip -d /hbuilderxcli/HBuilderX
|
|
||||||
# 赋予 CLI 执行权限
|
|
||||||
sudo chmod +x /hbuilderxcli/HBuilderX/cli
|
|
||||||
# 验证 CLI 版本(确保部署成功)
|
|
||||||
/hbuilderxcli/HBuilderX/cli -v
|
|
||||||
echo "HBuilderX CLI 部署完成,路径:/hbuilderxcli/HBuilderX/cli"
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 5:HBuilderX 密钥登录(安全读取账户信息)
|
|
||||||
########################################################################
|
|
||||||
- name: 5. HBuilderX 账户登录
|
|
||||||
id: hbx_login
|
|
||||||
run: |
|
|
||||||
echo "开始登录 HBuilderX 账户..."
|
|
||||||
# 执行登录命令(读取 Gitea Secrets 中的账户密码)
|
|
||||||
LOGIN_OUTPUT=$(/hbuilderxcli/HBuilderX/cli user login --username ${{ secrets.HBUILDERX_USERNAME }} --password ${{ secrets.HBUILDERX_PASSWORD }})
|
|
||||||
# 打印登录输出(便于调试,无敏感信息)
|
|
||||||
echo "登录结果:$LOGIN_OUTPUT"
|
|
||||||
# 验证登录是否成功(根据文档,成功返回 "0:user login:OK")
|
|
||||||
if [[ $? -ne 0 || $(echo "$LOGIN_OUTPUT" | grep -c "0:user login:OK") -eq 0 ]]; then
|
|
||||||
echo "HBuilderX 登录失败!"
|
|
||||||
exit 1 # 登录失败则终止 CI/CD 流程
|
|
||||||
fi
|
|
||||||
echo "HBuilderX 登录成功!"
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 6:实时显示打包进度 + 执行 Uniapp 打包
|
|
||||||
########################################################################
|
|
||||||
- name: 6. 打包 Uniapp(实时显示排队/进度)
|
|
||||||
id: uniapp_build
|
|
||||||
run: |
|
|
||||||
echo "开始打包 Uniapp 项目,当前时间:$(date +%Y-%m-%d_%H:%M:%S)"
|
|
||||||
echo "========================================"
|
|
||||||
echo "正在查询打包队列状态..."
|
|
||||||
# (可选)提前查询队列(部分场景下 HBuilderX 会返回排队信息)
|
|
||||||
/hbuilderxcli/HBuilderX/cli publish --platform android --query-queue
|
|
||||||
echo "========================================"
|
|
||||||
echo "开始执行打包(实时输出进度)..."
|
|
||||||
# 执行打包命令(根据目标平台调整 --platform 参数,支持 android/ios/h5 等)
|
|
||||||
# --project:指定项目根目录(当前检出目录)
|
|
||||||
# --output:指定产物输出目录(便于后续归档)
|
|
||||||
BUILD_OUTPUT=$(/hbuilderxcli/HBuilderX/cli publish \
|
|
||||||
--platform android \
|
|
||||||
--project ./ \
|
|
||||||
--output ./unpackage/dist/build/android \
|
|
||||||
--progress # 强制输出打包进度(部分版本需显式指定)
|
|
||||||
)
|
|
||||||
# 实时打印打包日志(包含排队进度、编译进度等信息)
|
|
||||||
echo "$BUILD_OUTPUT"
|
|
||||||
# 验证打包是否成功(根据实际输出调整判断条件,示例:找 "打包成功" 关键字)
|
|
||||||
if [[ $? -ne 0 || $(echo "$BUILD_OUTPUT" | grep -c "打包成功") -eq 0 ]]; then
|
|
||||||
echo "Uniapp 打包失败!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "========================================"
|
|
||||||
echo "Uniapp 打包完成!产物路径:./unpackage/dist/build/android"
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 步骤 7:归档打包产物(便于下载和后续部署)
|
|
||||||
########################################################################
|
|
||||||
- name: 7. 归档打包产物
|
|
||||||
uses: gitea/actions/upload-artifact@v1 # Gitea 产物归档插件
|
|
||||||
with:
|
|
||||||
name: uniapp-android-build # 产物压缩包名称
|
|
||||||
path: ./unpackage/dist/build/android # 产物目录(与步骤 6 的 --output 对应)
|
|
||||||
retention-days: 7 # 产物保留时间(7 天,可调整)
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
# 后置步骤:无论打包成功/失败,均执行 HBuilderX 登出(安全规范)
|
|
||||||
########################################################################
|
|
||||||
post:
|
|
||||||
- name: 8. HBuilderX 账户登出
|
|
||||||
run: |
|
|
||||||
echo "开始登出 HBuilderX 账户..."
|
|
||||||
LOGOUT_OUTPUT=$(/hbuilderxcli/HBuilderX/cli user logout)
|
|
||||||
echo "登出结果:$LOGOUT_OUTPUT"
|
|
||||||
# 验证登出是否成功(根据文档,成功返回 "0:user logout:OK")
|
|
||||||
if [[ $(echo "$LOGOUT_OUTPUT" | grep -c "0:user logout:OK") -eq 0 ]]; then
|
|
||||||
echo "HBuilderX 登出异常(非致命错误,不终止流程)"
|
|
||||||
else
|
|
||||||
echo "HBuilderX 登出成功!"
|
|
||||||
fi
|
|
@@ -40,7 +40,7 @@
|
|||||||
<view class="warn-info">预警位置:{{ item.deviceGroupName }}</view>
|
<view class="warn-info">预警位置:{{ item.deviceGroupName }}</view>
|
||||||
<view class="warn-info">预警时间:{{ item.reportTime }}</view>
|
<view class="warn-info">预警时间:{{ item.reportTime }}</view>
|
||||||
<view class="warn-info">预警设备:{{ item.deviceName }}</view>
|
<view class="warn-info">预警设备:{{ item.deviceName }}</view>
|
||||||
<view v-if="[20, 30, 31, 32].includes(item.state)" class="warn-eval-wrap" @click.stop="goDetail(item)">
|
<view v-if="[20, 30, 31, 32].includes(item.state)" class="warn-eval-wrap">
|
||||||
<view class="warn-eval-btn">去处理</view>
|
<view class="warn-eval-btn">去处理</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -141,17 +141,17 @@
|
|||||||
this.tabLoaded[idx] = true;
|
this.tabLoaded[idx] = true;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
},
|
},
|
||||||
goDetail(item) {
|
goDetail2(item) {
|
||||||
const itemStr = encodeURIComponent(JSON.stringify(item));
|
const itemStr = encodeURIComponent(JSON.stringify(item));
|
||||||
uni.navigateTo({
|
if([20, 30, 31, 32].includes(item.state)){
|
||||||
url: "/pages/sys/workbench/earlyWarning/warnDetail?item=" + itemStr,
|
uni.navigateTo({
|
||||||
});
|
url: "/pages/sys/workbench/earlyWarning/warnDetail?item=" + itemStr,
|
||||||
},
|
});
|
||||||
goDetail2(item) {
|
}else{
|
||||||
const itemStr = encodeURIComponent(JSON.stringify(item));
|
uni.navigateTo({
|
||||||
uni.navigateTo({
|
url: "/pages/sys/workbench/earlyWarning/warnDetail?item=" + itemStr + "&pageType=detail",
|
||||||
url: "/pages/sys/workbench/earlyWarning/warnDetail?item=" + itemStr + "&pageType=detail",
|
});
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
goStatistics() {
|
goStatistics() {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
|
@@ -29,10 +29,17 @@
|
|||||||
<view class="detail-value remark"><text>备注:</text>{{ detail.remark }}</view>
|
<view class="detail-value remark"><text>备注:</text>{{ detail.remark }}</view>
|
||||||
<view class="detail-value"><text class="detail-key">工单图片:</text></view>
|
<view class="detail-value"><text class="detail-key">工单图片:</text></view>
|
||||||
<view class="image-list" v-if="orderImgUrls.length > 0">
|
<view class="image-list" v-if="orderImgUrls.length > 0">
|
||||||
<u-image v-for="(imgUrl, index) in orderImgUrls" :key="index" :src="imgUrl"
|
<u-image
|
||||||
width="200rpx" height="200rpx" border-radius="10rpx"
|
v-for="(imgUrl, index) in orderImgUrls"
|
||||||
|
:key="index"
|
||||||
|
:src="imgUrl"
|
||||||
|
width="200rpx"
|
||||||
|
height="200rpx"
|
||||||
|
border-radius="10rpx"
|
||||||
@click="previewImage(orderImgUrls, index)"
|
@click="previewImage(orderImgUrls, index)"
|
||||||
style="margin-right: 20rpx; margin-bottom: 20rpx;"></u-image>
|
style="margin-right: 20rpx; margin-bottom: 20rpx;"
|
||||||
|
mode="aspectFill"
|
||||||
|
></u-image>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
@@ -123,10 +130,14 @@
|
|||||||
},
|
},
|
||||||
previewImage(urls, index) {
|
previewImage(urls, index) {
|
||||||
// 使用uView的图片预览组件
|
// 使用uView的图片预览组件
|
||||||
this.$u.previewImage({
|
// 过滤掉空值
|
||||||
urls: urls.filter(url => url.trim() !== ''),
|
const validUrls = urls.filter(url => url && url.trim() !== '')
|
||||||
current: index
|
uni.previewImage({
|
||||||
});
|
urls: validUrls,
|
||||||
|
current: validUrls[index], // current 必须是 url,而不是索引
|
||||||
|
indicator: 'number', // 显示数字指示器
|
||||||
|
backgroundColor: '#000'
|
||||||
|
})
|
||||||
},
|
},
|
||||||
async onConfirm(selected) {
|
async onConfirm(selected) {
|
||||||
let params = this.detail
|
let params = this.detail
|
||||||
|
Reference in New Issue
Block a user