app版本管理

This commit is contained in:
BabyBoy 2025-07-05 14:38:00 +08:00
parent 2a088b2a81
commit dbbec1f099
4 changed files with 294 additions and 8 deletions

View File

@ -0,0 +1,56 @@
import { VersionAdd, VersionQuery, Verupdate } from './types';
import { AxiosPromise } from 'axios';
import { RoleVO } from '@/api/system/role/types';
import { parseStrEmpty } from '@/utils/ruoyi';
import request from '@/utils/request';
/**
*
* @param query
*/
export const getList = (query: VersionQuery): AxiosPromise => {
return request({
url: 'system/version/list',
method: 'post',
data: query
});
};
/**
*
* @param query
*/
export const postAdd = (query: VersionAdd): AxiosPromise => {
return request({
url: 'system/version/add',
method: 'post',
data: query
});
};
/**
*
* @param query
*/
export const getupdate = (query: Verupdate): AxiosPromise => {
return request({
url: 'system/version/update',
method: 'get',
params: query
});
};
export interface dele {
id: string;
}
/**
*
* @param query
*/
export const getDel = (query: dele): AxiosPromise => {
return request({
url: `system/version/${query.id}`,
method: 'delete',
params: query
});
};

View File

@ -0,0 +1,34 @@
export interface VersionQuery {
current: number;
size: number;
platformType: string;
versionCode: string;
versionName: string;
}
export interface VersionList {
createBy: string;
createTime: string;
downloadUrl: string;
id: string;
isForceUpdate: number;
platformType: string;
releaseNotes: string;
status: number;
updateBy: string;
updateTime: string;
versionCode: string;
versionName: string;
}
export interface VersionAdd {
downloadUrl: string;
isForceUpdate: number;
platformType: string;
releaseNotes: string;
status: number;
versionCode: string;
versionName: string;
}
export interface Verupdate {
id: string;
status: number;
}

View File

@ -18,7 +18,7 @@ export interface QueryChildOV {
export const listCategory = (query?: CategoryQuery): AxiosPromise<CategoryVO[]> => {
return request({
// url: '/workflow/category/list',old
url: '/admin/vlog/upload/list',
url: '/video/list',
method: 'post',
data: query
});
@ -31,7 +31,7 @@ export const listCategory = (query?: CategoryQuery): AxiosPromise<CategoryVO[]>
*/
export const updateaudit = (data?: Formaget) => {
return request({
url: `/admin/vlog/upload/audit?vlogId=${data.vlogId}&reason=${data.reason}&status=${data.status}`,
url: `/video/audit?vlogId=${data.vlogId}&reason=${data.reason}&status=${data.status}`,
method: 'post'
});
};
@ -42,7 +42,7 @@ export const updateaudit = (data?: Formaget) => {
*/
export const getcommentlist = (data?: QueryParamOV) => {
return request({
url: `/admin/comment/list`,
url: `/comment/list`,
method: 'post',
data
});
@ -55,7 +55,7 @@ export const getcommentlist = (data?: QueryParamOV) => {
*/
export const getchildList = (data?: QueryChildOV) => {
return request({
url: `/admin/comment/childList?fatherCommentId=${data.fatherCommentId}&current=${data.current}&size=${data.size}`,
url: `/comment/childList?fatherCommentId=${data.fatherCommentId}&current=${data.current}&size=${data.size}`,
method: 'get'
});
};
@ -65,7 +65,7 @@ export const getchildList = (data?: QueryChildOV) => {
*/
export const gerdetail = (data?: string) => {
return request({
url: `/admin/vlog/upload/detail?fileId=${data}`,
url: `/video/detail?fileId=${data}`,
method: 'get'
});
};
@ -75,7 +75,7 @@ export const gerdetail = (data?: string) => {
*/
export const deldetail = (data?: string) => {
return request({
url: `/admin/comment/delete?commentId=${data}`,
url: `/comment/delete?commentId=${data}`,
method: 'post'
});
};
@ -85,7 +85,7 @@ export const deldetail = (data?: string) => {
*/
export const deloffline = (data?: string) => {
return request({
url: `admin/comment/offline?commentId=${data}`,
url: `comment/offline?commentId=${data}`,
method: 'post'
});
};
@ -96,7 +96,7 @@ export const deloffline = (data?: string) => {
*/
export const updateaforbid = (vlogId?: string) => {
return request({
url: `/admin/vlog/upload/forbid`,
url: `/video/forbid`,
method: 'post',
data: { fileIds: vlogId, operation: 'forbid' }
});

View File

@ -0,0 +1,196 @@
<template>
<div>
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="true" class="search">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="平台类型" prop="phone">
<el-input v-model="queryParams.platformType" placeholder="请输入平台类型" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="版本号" prop="aimId" label-width="120px">
<el-input v-model="queryParams.versionCode" placeholder="请输入版本号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="版本名称" prop="aimId" label-width="120px">
<el-input v-model="queryParams.versionName" placeholder="请输入版本名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
<el-button icon="Refresh" @click="showRefuteDialog = true">新增</el-button>
</el-form-item>
</el-form>
</div>
</transition>
<el-table :data="devices" border style="width: 100%; height: 100%; font-size: 14px">
<el-table-column label="平台类型" align="center" prop="platformType" :show-overflow-tooltip="true" />
<el-table-column label="版本号" align="center" prop="versionCode" :show-overflow-tooltip="true" />
<el-table-column label="版本名称" align="center" prop="versionName" :show-overflow-tooltip="true" />
<el-table-column label="下载地址" align="center" prop="downloadUrl" :show-overflow-tooltip="true" />
<el-table-column label="是否强制更新" align="center" prop="isForceUpdate" width="180">
<template #default="scope">
<span>{{ scope.row.isForceUpdate ? '是' : '否' }}</span>
</template>
</el-table-column>
<el-table-column label="版本说明" align="center" prop="releaseNotes" :show-overflow-tooltip="true" />
<el-table-column label="是否启用" align="center" prop="status" width="180">
<template #default="scope">
<el-switch :model-value="scope.row.status ? true : false" active-text="启用" inactive-text="停用" @click="handleStatusChange(scope.row)" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="删除" placement="top">
<el-button link type="primary" @click="handldDelOnline(scope.row)">删除</el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="block">
<pagination
v-if="totalref > 0"
:total="totalref"
v-model:page="queryParams.current"
v-model:limit="queryParams.size"
@pagination="getListList"
/>
</div>
<el-dialog v-model="showRefuteDialog" title="添加版本" width="600px" append-to-body>
<el-form>
<el-form-item label="平台类型">
<el-select v-model="headDate.platformType" placeholder="请选择平台类型">
<el-option label="Android" value="android" />
<el-option label="iOS" value="ios" />
</el-select>
</el-form-item>
<el-form-item label="版本号">
<el-input v-model="headDate.versionCode" type="text" :rows="4"></el-input>
</el-form-item>
<el-form-item label="版本名称">
<el-input v-model="headDate.versionName" type="text" :rows="4"></el-input>
</el-form-item>
<el-form-item label="下载地址">
<el-input v-model="headDate.downloadUrl" type="text" :rows="4"></el-input>
</el-form-item>
<el-form-item label="是否强制更新">
<el-select v-model="headDate.isForceUpdate" placeholder="请选择是否强制更新">
<el-option label="是" value="1" />
<el-option label="否" value="0" />
</el-select>
</el-form-item>
<el-form-item label="版本说明">
<el-input v-model="headDate.releaseNotes" type="textarea" :rows="4"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="headDate.status" placeholder="请选择状态">
<el-option label="启用" value="1" />
<el-option label="停用" value="0" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="showRefuteDialog = false">取消</el-button>
<el-button type="primary" @click="handleAdd">添加</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup name="Online" lang="ts">
import { VersionQuery, VersionList, VersionAdd } from '@/api/system/version/types';
import { getList, postAdd, getupdate, getDel } from '@/api/system/version/index';
import { propTypes } from '@/utils/propTypes';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { sys_device_type } = toRefs<any>(proxy?.useDict('sys_device_type'));
//
const queryParams = ref<VersionQuery>({
current: 1,
size: 10,
platformType: '',
versionCode: '',
versionName: ''
});
//
const devices = ref<VersionList[]>([]);
//
const totalref = ref<number>(0);
const getListList = async () => {
const res = await getList(queryParams.value);
if (res.code === 200) {
devices.value = res.data.records;
totalref.value = res.data.total;
}
};
const handleQuery = () => {
getListList();
};
const showRefuteDialog = ref(false);
const resetQuery = () => {
queryParams.value = {
current: 1,
size: 10,
platformType: '',
versionCode: '',
versionName: ''
};
getListList();
};
const headDate = ref<VersionAdd>({
platformType: '',
versionCode: '',
versionName: '',
downloadUrl: '',
isForceUpdate: null,
releaseNotes: '',
status: null
});
const handleAdd = async () => {
const res = await postAdd(headDate.value);
if (res.code === 200) {
ElMessage.success('添加成功');
headDate.value = {
platformType: '',
versionCode: '',
versionName: '',
downloadUrl: '',
isForceUpdate: null,
releaseNotes: '',
status: null
};
showRefuteDialog.value = false;
getListList();
}
};
//
const handleStatusChange = async (row: any) => {
const obj = {
id: row.id,
status: row.status == 1 ? 0 : 1
};
const res = await getupdate(obj);
if (res.code === 200) {
ElMessage.success('修改成功');
getListList();
}
};
const handldDelOnline = (row: any) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const obj = {
id: row.id
};
const res = await getDel({ id: row.id });
if (res.code === 200) {
ElMessage.success('删除成功');
getListList();
}
});
};
onMounted(() => {
getListList();
});
</script>