Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
pengren 2024-04-23 16:41:47 +08:00
commit 4de9b89383
11 changed files with 1042 additions and 530 deletions

View File

@ -5,19 +5,19 @@
<span <span
v-if="item.raw.listClass == 'default' || item.raw.listClass == ''" v-if="item.raw.listClass == 'default' || item.raw.listClass == ''"
:key="item.value" :key="item.value"
:index="index"
:class="item.raw.cssClass" :class="item.raw.cssClass"
>{{ item.label + " " }}</span :index="index"
>{{ item.label + ' ' }}</span
> >
<el-tag <el-tag
v-else v-else
:disable-transitions="true"
:key="item.value" :key="item.value"
:class="item.raw.cssClass"
:disable-transitions="true"
:index="index" :index="index"
:type="item.raw.listClass == 'primary' ? '' : item.raw.listClass" :type="item.raw.listClass == 'primary' ? '' : item.raw.listClass"
:class="item.raw.cssClass"
> >
{{ item.label + " " }} {{ item.label + ' ' }}
</el-tag> </el-tag>
</template> </template>
</template> </template>
@ -29,61 +29,63 @@
<script> <script>
export default { export default {
name: "DictTag", name: 'DictTag',
props: { props: {
options: { options: {
type: Array, type: Array,
default: null, default: null
}, },
value: [Number, String, Array], value: [Number, String, Array],
// value // value
showValue: { showValue: {
type: Boolean, type: Boolean,
default: true, default: true
} }
}, },
data() { data() {
return { return {
unmatchArray: [], // unmatchArray: [] //
} }
}, },
computed: { computed: {
values() { values() {
if (this.value !== null && typeof this.value !== "undefined") { if (this.value !== null && typeof this.value !== 'undefined') {
return Array.isArray(this.value) ? this.value : [String(this.value)]; console.log(this.value)
return Array.isArray(this.value) ? this.value : [String(this.value)]
} else { } else {
return []; return []
} }
}, },
unmatch() { unmatch() {
this.unmatchArray = []; this.unmatchArray = []
if (this.value !== null && typeof this.value !== "undefined") { if (this.value !== null && typeof this.value !== 'undefined') {
// //
if (!Array.isArray(this.value)) { if (!Array.isArray(this.value)) {
if (this.options.some((v) => v.value == this.value)) return false; if (this.options.some((v) => v.value == this.value)) return false
this.unmatchArray.push(this.value); this.unmatchArray.push(this.value)
return true; return true
} }
// Array // Array
this.value.forEach((item) => { this.value.forEach((item) => {
if (!this.options.some((v) => v.value == item)) if (!this.options.some((v) => v.value == item)) {
this.unmatchArray.push(item); this.unmatchArray.push(item)
}); }
return true; })
return true
} }
// value // value
return false; return false
}, }
}, },
filters: { filters: {
handleArray(array) { handleArray(array) {
if (array.length === 0) return ""; if (array.length === 0) return ''
return array.reduce((pre, cur) => { return array.reduce((pre, cur) => {
return pre + " " + cur; return pre + ' ' + cur
}) })
} }
} }
}; }
</script> </script>
<style scoped> <style scoped>
.el-tag + .el-tag { .el-tag + .el-tag {

View File

@ -1,6 +1,12 @@
import { login, logout, getInfo } from '@/api/login' import { getInfo, login, logout } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, removeToken, setToken } from '@/utils/auth'
import { getApplicationId, setApplicationId, removeApplicationId } from '@/utils/application' import {
getApplicationId,
removeApplicationId,
removeApplicationName,
setApplicationId,
setApplicationName
} from '@/utils/application'
const user = { const user = {
state: { state: {
@ -10,7 +16,7 @@ const user = {
roles: [], roles: [],
permissions: [], permissions: [],
applicationId: getApplicationId(), applicationId: getApplicationId(),
applicationInfo: {}, // 用户选中的项目/应用 applicationInfo: {} // 用户选中的项目/应用
}, },
mutations: { mutations: {
@ -30,10 +36,10 @@ const user = {
state.permissions = permissions state.permissions = permissions
}, },
SET_APPLICATION: (state, applicationInfo) => { SET_APPLICATION: (state, applicationInfo) => {
const { id } = applicationInfo; const { id } = applicationInfo
state.applicationId = id || ''; state.applicationId = id || ''
state.applicationInfo = applicationInfo; state.applicationInfo = applicationInfo
}, }
}, },
actions: { actions: {
@ -59,7 +65,7 @@ const user = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(res => {
const user = res.user const user = res.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; const avatar = (user.avatar == '' || user.avatar == null) ? require('@/assets/images/profile.jpg') : process.env.VUE_APP_BASE_API + user.avatar
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles) commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions) commit('SET_PERMISSIONS', res.permissions)
@ -106,11 +112,16 @@ const user = {
// 设置选中的项目应用信息 // 设置选中的项目应用信息
SetApplication({ commit }, applicationInfo) { SetApplication({ commit }, applicationInfo) {
commit('SET_APPLICATION', applicationInfo) commit('SET_APPLICATION', applicationInfo)
const { id } = applicationInfo || {}; const { id, appName } = applicationInfo || {}
if (id) { if (id) {
setApplicationId(applicationInfo.id); setApplicationId(applicationInfo.id)
} else { } else {
removeApplicationId(); removeApplicationId()
}
if (appName) {
setApplicationName(applicationInfo.appName)
} else {
removeApplicationName()
} }
} }
} }

View File

@ -1,6 +1,7 @@
import Cookies from "js-cookie"; import Cookies from 'js-cookie'
const ApplicationKey = "Admin-Application-Id"; const ApplicationKey = 'Admin-Application-Id'
const ApplicationKeywords = 'Admin-Application-Name'
/** /**
* 获取应用项目ID * 获取应用项目ID
@ -8,7 +9,16 @@ const ApplicationKey = "Admin-Application-Id";
* @returns {string} 返回从Cookie中获取的应用项目ID * @returns {string} 返回从Cookie中获取的应用项目ID
*/ */
export function getApplicationId() { export function getApplicationId() {
return Cookies.get(ApplicationKey); return Cookies.get(ApplicationKey)
}
/**
* 获取应用项目ID
* 该函数从Cookie中检索与应用项目相关的关键信息
* @returns {string} 返回从Cookie中获取的应用项目ID
*/
export function getApplicationName() {
return Cookies.get(ApplicationKeywords)
} }
/** /**
@ -17,7 +27,16 @@ export function getApplicationId() {
* @return {boolean|Object} 返回Cookie设置的结果成功则返回true失败则返回设置失败的对象 * @return {boolean|Object} 返回Cookie设置的结果成功则返回true失败则返回设置失败的对象
*/ */
export function setApplicationId(ApplicationId) { export function setApplicationId(ApplicationId) {
return Cookies.set(ApplicationKey, ApplicationId); return Cookies.set(ApplicationKey, ApplicationId)
}
/**
* 设置应用项目名称到Cookie中
* @param {string} ApplicationId - 需要设置的应用项目名称
* @return {boolean|Object} 返回Cookie设置的结果成功则返回true失败则返回设置失败的对象
*/
export function setApplicationName(ApplicationName) {
return Cookies.set(ApplicationKeywords, ApplicationName)
} }
/** /**
@ -26,5 +45,15 @@ export function setApplicationId(ApplicationId) {
* @returns {boolean} 返回删除操作的结果如果删除成功则返回true如果删除失败则返回false * @returns {boolean} 返回删除操作的结果如果删除成功则返回true如果删除失败则返回false
*/ */
export function removeApplicationId() { export function removeApplicationId() {
return Cookies.remove(ApplicationKey); return Cookies.remove(ApplicationKey)
} }
/**
* 移除应用Name的Cookie
* 本函数用于删除与应用相关的Name Cookie
* @returns {boolean} 返回删除操作的结果如果删除成功则返回true如果删除失败则返回false
*/
export function removeApplicationName() {
return Cookies.remove(ApplicationKeywords)
}

View File

@ -8,29 +8,25 @@
<el-main> <el-main>
<div class="form-main"> <div class="form-main">
<el-form ref="elForm" :model="formData" :rules="rules" label-width="100px" size="medium"> <el-form ref="elForm" :model="formData" :rules="rules" label-width="100px" size="medium">
<el-form-item label="上传方式" prop="uploadingType"> <!-- <el-form-item label="上传方式" prop="uploadingType">-->
<el-radio-group v-model="formData.uploadingType" size="medium"> <!-- <el-radio-group v-model="formData.uploadingType" size="medium">-->
<el-radio v-for="(item, index) in dict.type.sys_apk_uploading_type" :key="index" <!-- <el-radio v-for="(item, index) in dict.type.sys_apk_uploading_type" :key="index"-->
:disabled="item.disabled" <!-- :disabled="item.disabled"-->
:label="item.value" <!-- :label="item.value"-->
>{{ item.label }} <!-- >{{ item.label }}-->
</el-radio> <!-- </el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item v-if="activeTabs==='1'" label="安装包名称" prop="sysApkName"> <el-form-item v-if="activeTabs==='1'" label="安装包名称" prop="sysApkName">
<el-input v-model="formData.sysApkName" :style="{width: '100%'}" clearable placeholder="请输入安装包名称"> <el-input v-model="formData.sysApkName" :style="{width: '100%'}" clearable placeholder="请输入安装包名称">
</el-input> </el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item v-else label="模块包名称" prop="field107">-->
<!-- <el-input v-model="formData.field107" :style="{width: '100%'}" clearable placeholder="请输入模块包名称">-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input v-model="formData.version" :style="{width: '100%'}" clearable placeholder="请输入版本号"> <el-input v-model="formData.version" :style="{width: '100%'}" clearable placeholder="请输入版本号">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="安装包文件" prop="sysApk"> <el-form-item label="安装包文件" prop="sysApk">
<file-upload v-model="formData.sysApk" :fileType="['apk','txt']" :limit="1" <file-upload v-model="formData.sysApk" :fileSize="50" :fileType="['apk','hap','iap','zip']" :limit="1"
@getSize="getSize" @getSize="getSize"
/> />
@ -48,16 +44,6 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- <el-form-item v-if="activeTabs!='1'" label="适用模块" prop="configName">-->
<!-- <el-select v-model="formData.field108" clearable placeholder="请选择对应的模块">-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.sys_yes_no"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item size="large"> <el-form-item size="large">
<el-button type="primary" @click="submitForm">提交</el-button> <el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
@ -78,7 +64,7 @@ export default {
data() { data() {
return { return {
formData: { formData: {
uploadingType: 'OffLineUploading', uploadingType: 'OnLineUploading',
sysApkName: undefined, sysApkName: undefined,
version: undefined, version: undefined,
sysApk: null, sysApk: null,
@ -124,6 +110,7 @@ export default {
}) })
}, },
getSize(e) { getSize(e) {
console.log(e)
this.formData.sysApkSize = e[0].size + 'kb' this.formData.sysApkSize = e[0].size + 'kb'
}, },
cancel() { cancel() {

View File

@ -27,11 +27,11 @@
</el-form-item> </el-form-item>
<el-form-item v-if="activeTabs!='1'" label="适用模块:">登录模块</el-form-item> <el-form-item v-if="activeTabs!='1'" label="适用模块:">登录模块</el-form-item>
<el-form-item label="上传时间:">{{ form.createTime }}</el-form-item> <el-form-item label="上传时间:">{{ form.createTime }}</el-form-item>
<el-form-item label="上传状态:"> <!-- <el-form-item label="上传状态:">-->
<dict-tag :options="dict.type.uploading_status" :value="form.uploadingStatus"/> <!-- <dict-tag :options="dict.type.uploading_status" :value="form.uploadingStatus"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="上传人员:">{{ form.created }}</el-form-item> <el-form-item label="上传人员:">{{ form.created }}</el-form-item>
<el-form-item label="上传日志:">日志日志</el-form-item> <!-- <el-form-item label="上传日志:"></el-form-item>-->
<el-form-item size="large"> <el-form-item size="large">
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</el-form-item> </el-form-item>

View File

@ -8,31 +8,27 @@
<el-main> <el-main>
<div class="form-main"> <div class="form-main">
<el-form ref="elForm" :model="formData" :rules="rules" label-width="100px" size="medium"> <el-form ref="elForm" :model="formData" :rules="rules" label-width="100px" size="medium">
<el-form-item label="上传方式" prop="uploadingType"> <!-- <el-form-item label="上传方式" prop="uploadingType">-->
<el-radio-group v-model="formData.uploadingType" size="medium"> <!-- <el-radio-group v-model="formData.uploadingType" size="medium">-->
<el-radio v-for="(item, index) in dict.type.sys_apk_uploading_type" :key="index" <!-- <el-radio v-for="(item, index) in dict.type.sys_apk_uploading_type" :key="index"-->
:disabled="item.disabled" <!-- :disabled="item.disabled"-->
:label="item.value" <!-- :label="item.value"-->
>{{ item.label }} <!-- >{{ item.label }}-->
</el-radio> <!-- </el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item v-if="activeTabs==='1'" label="安装包名称" prop="sysApkName"> <el-form-item v-if="activeTabs==='1'" label="安装包名称" prop="sysApkName">
<el-input v-model="formData.sysApkName" :style="{width: '100%'}" clearable placeholder="请输入安装包名称"> <el-input v-model="formData.sysApkName" :style="{width: '100%'}" clearable placeholder="请输入安装包名称">
</el-input> </el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item v-else label="模块包名称" prop="field107">-->
<!-- <el-input v-model="formData.field107" :style="{width: '100%'}" clearable placeholder="请输入模块包名称">-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input v-model="formData.version" :style="{width: '100%'}" clearable placeholder="请输入版本号"> <el-input v-model="formData.version" :style="{width: '100%'}" clearable placeholder="请输入版本号">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="安装包文件" prop="sysApk"> <el-form-item label="安装包文件" prop="sysApk">
<file-upload v-model="formData.sysApk" :fileType="['apk','txt']" :limit="1" <file-upload v-model="formData.sysApk" :fileSize="50" :fileType="['apk','hap','iap','zip']" :limit="1"
:uploadFileUrl="item.uploadingType==='OffLineUploading'?'/system/oss/zip/upload':'/system/oss/upload'" :uploadFileUrl="formData.uploadingType==='OffLineUploading'?'/system/oss/zip/upload':'/system/oss/upload'"
@getSize="getSize" @getSize="getSize"
/> />
@ -49,16 +45,6 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<!-- <el-form-item v-if="activeTabs!='1'" label="适用模块" prop="configName">-->
<!-- <el-select v-model="formData.field108" clearable placeholder="请选择对应的模块">-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.sys_yes_no"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item size="large"> <el-form-item size="large">
<el-button type="primary" @click="submitForm">提交</el-button> <el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>

View File

@ -1,25 +1,25 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-tabs v-model="activeTabs" type="card" @tab-click="handleClickTabs"> <!-- <el-tabs v-model="activeTabs" type="card" @tab-click="handleClickTabs">-->
<el-tab-pane <!-- <el-tab-pane-->
v-for="item in packTabs" <!-- v-for="item in packTabs"-->
:key="item.name" <!-- :key="item.name"-->
:label="item.title" <!-- :label="item.title"-->
:name="item.name" <!-- :name="item.name"-->
> <!-- >-->
</el-tab-pane> <!-- </el-tab-pane>-->
</el-tabs> <!-- </el-tabs>-->
<el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" label-width="90px" size="small"> <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" label-width="90px" size="small">
<el-form-item label="上传类型" prop="uploadingType"> <!-- <el-form-item label="上传类型" prop="uploadingType">-->
<el-select v-model="queryParams.uploadingType" clearable placeholder="请选择上传类型"> <!-- <el-select v-model="queryParams.uploadingType" clearable placeholder="请选择上传类型">-->
<el-option <!-- <el-option-->
v-for="dict in dict.type.sys_apk_uploading_type" <!-- v-for="dict in dict.type.sys_apk_uploading_type"-->
:key="dict.value" <!-- :key="dict.value"-->
:label="dict.label" <!-- :label="dict.label"-->
:value="dict.value" <!-- :value="dict.value"-->
/> <!-- />-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="安装包名称" prop="sysApkName"> <el-form-item label="安装包名称" prop="sysApkName">
<el-input <el-input
v-model="queryParams.sysApkName" v-model="queryParams.sysApkName"
@ -46,16 +46,16 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="上传状态" prop="uploadingStatus"> <!-- <el-form-item label="上传状态" prop="uploadingStatus">-->
<el-select v-model="queryParams.uploadingStatus" clearable placeholder="请选择上传状态"> <!-- <el-select v-model="queryParams.uploadingStatus" clearable placeholder="请选择上传状态">-->
<el-option <!-- <el-option-->
v-for="dict in dict.type.uploading_status" <!-- v-for="dict in dict.type.uploading_status"-->
:key="dict.value" <!-- :key="dict.value"-->
:label="dict.label" <!-- :label="dict.label"-->
:value="dict.value" <!-- :value="dict.value"-->
/> <!-- />-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="创建人" prop="created"> <el-form-item label="创建人" prop="created">
<el-input <el-input
v-model="queryParams.created" v-model="queryParams.created"
@ -99,11 +99,11 @@
<el-table v-loading="loading" :data="INFOList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="INFOList" @selection-change="handleSelectionChange">
<el-table-column align="center" type="selection" width="55"/> <el-table-column align="center" type="selection" width="55"/>
<template v-if="activeTabs=='1'"> <template v-if="activeTabs=='1'">
<el-table-column align="center" label="上传类型" prop="uploadingType"> <!-- <el-table-column align="center" label="上传类型" prop="uploadingType">-->
<template slot-scope="scope"> <!-- <template slot-scope="scope">-->
<dict-tag :options="dict.type.sys_apk_uploading_type" :value="scope.row.uploadingType"/> <!-- <dict-tag :options="dict.type.sys_apk_uploading_type" :value="scope.row.uploadingType"/>-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column align="center" label="安装包名称" prop="sysApkName"/> <el-table-column align="center" label="安装包名称" prop="sysApkName"/>
<el-table-column align="center" label="版本号" prop="version"/> <el-table-column align="center" label="版本号" prop="version"/>
<el-table-column align="center" label="安装包" prop="sysApk"/> <el-table-column align="center" label="安装包" prop="sysApk"/>

View File

@ -9,11 +9,11 @@
> >
<el-form-item label="安装包名称" prop="installpackName"> <el-form-item label="安装包名称" prop="installpackName">
<el-input <el-input
v-model="queryParams.installpackName" v-model="queryParams.sysApkName"
clearable clearable
placeholder="请输入安装包名称" placeholder="请输入安装包名称"
style="width: 240px" style="width: 240px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -21,31 +21,29 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" :data="dataList"> <el-table v-loading="loading" :data="moduleList">
<el-table-column align="center" label="安装包名称" prop="configId"/> <el-table-column align="center" label="安装包名称" prop="moduleName"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="版本号" prop="configName"/> <el-table-column :show-overflow-tooltip="true" align="center" label="版本号" prop="version"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="安装包大小" prop="configName"/> <el-table-column :show-overflow-tooltip="true" align="center" label="安装包大小" prop="moduleSize"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="适用系统" prop="configValue"/> <el-table-column :show-overflow-tooltip="true" align="center" label="适用系统" prop="sysType"/>
<el-table-column align="center" label="状态" prop="configType"> <el-table-column align="center" label="状态" prop="uploadingStatus">
<template slot-scope="scopeA"> <template slot-scope="scopeA">
<dict-tag :options="dict.type.sys_yes_no" :value="scopeA.row.type"/> <dict-tag :options="dict.type.sys_yes_no" :value="scopeA.row.type"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" class-name="small-padding fixed-width" label="操作" width="50"> <el-table-column align="center" class-name="small-padding fixed-width" label="操作" width="50">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button circle icon="el-icon-plus" size="20" type="primary" @click="addPack" <el-button circle icon="el-icon-plus" size="20" type="primary"
@click="addPack(scope.row.appCore,scope.row.version,scope.row.sysType)"
></el-button> ></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="submitAddForm()"> </el-button>-->
<!-- </div>-->
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { listConfig } from '@/api/system/config' import { listINFO } from '@/api/FDS/installList'
export default { export default {
name: 'AddPack', name: 'AddPack',
@ -57,7 +55,7 @@ export default {
loading: true, loading: true,
configName: undefined, configName: undefined,
form: {}, form: {},
dataList: [], moduleList: [],
// //
showSearch: true, showSearch: true,
total: 0, total: 0,
@ -65,10 +63,9 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
installpackName: undefined sysApkName: null
} }
} }
}, },
created() { created() {
this.getList() this.getList()
@ -78,12 +75,11 @@ export default {
/** 查询参数列表 */ /** 查询参数列表 */
getList() { getList() {
this.loading = true this.loading = true
listConfig(this.addDateRange(this.queryParams, this.dateRange)).then(response => { listINFO(this.queryParams).then(response => {
this.dataList = response.rows this.moduleList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
} })
)
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -97,14 +93,14 @@ export default {
this.resetForm('queryForm') this.resetForm('queryForm')
this.handleQuery() this.handleQuery()
}, },
//
submitAddForm() {
},
/** 新增当前包的按钮 */ /** 新增当前包的按钮 */
addPack() { addPack(id, version, sysType) {
this.$emit('addPack', {
apkId: id,
version: version,
sysType: sysType
})
}, },
closeModal() { closeModal() {

View File

@ -1,32 +1,33 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" label-width="120px" size="small">
<el-form-item label="模块包名称名称" prop="moduleName"> <el-form-item label="模块包名称名称" prop="moduleName">
<el-input <el-input
v-model="queryParams.moduleName" v-model="queryParams.moduleName"
placeholder="请输入模块包名称名称" clearable
clearable placeholder="请输入模块包名称名称"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input <el-input
v-model="queryParams.version" v-model="queryParams.version"
placeholder="请输入版本号" clearable
clearable placeholder="请输入版本号"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable <el-date-picker v-model="queryParams.createTime"
v-model="queryParams.createTime" clearable
type="date" placeholder="请选择创建时间"
value-format="yyyy-MM-dd" type="date"
placeholder="请选择创建时间"> value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -34,127 +35,155 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" v-hasPermi="['deployment:module:add']"
plain icon="el-icon-plus"
icon="el-icon-plus" plain
size="mini" size="mini"
@click="handleAdd" type="primary"
v-hasPermi="['deployment:module:add']" @click="handleAdd"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" v-hasPermi="['deployment:module:edit']"
plain :disabled="single"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" plain
:disabled="single" size="mini"
@click="handleUpdate" type="success"
v-hasPermi="['deployment:module:edit']" @click="handleUpdate"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="danger" v-hasPermi="['deployment:module:remove']"
plain :disabled="multiple"
icon="el-icon-delete" icon="el-icon-delete"
size="mini" plain
:disabled="multiple" size="mini"
@click="handleDelete" type="danger"
v-hasPermi="['deployment:module:remove']" @click="handleDelete"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" v-hasPermi="['deployment:module:export']"
plain icon="el-icon-download"
icon="el-icon-download" plain
size="mini" size="mini"
@click="handleExport" type="warning"
v-hasPermi="['deployment:module:export']" @click="handleExport"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="moduleList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="moduleList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column align="center" type="selection" width="55"/>
<el-table-column label="主键" align="center" prop="id" /> <!-- <el-table-column align="center" label="主键" prop="id"/>-->
<el-table-column label="模块包名称名称" align="center" prop="moduleName" /> <el-table-column align="center" label="模块包名称" prop="moduleName"/>
<el-table-column label="版本号" align="center" prop="version" /> <el-table-column align="center" label="版本号" prop="version"/>
<el-table-column label="安装包" align="center" prop="moduleUrl" /> <el-table-column align="center" label="安装包" prop="moduleUrl"/>
<el-table-column label="安装包大小" align="center" prop="moduleSize" /> <el-table-column align="center" label="安装包大小" prop="moduleSize"/>
<el-table-column label="系统类型" align="center" prop="sysType"> <el-table-column align="center" label="系统类型" prop="sysType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_apk_type" :value="scope.row.sysType"/> <dict-tag :options="dict.type.sys_apk_type" :value="scope.row.sysType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="模块类型" align="center" prop="moduleType"> <el-table-column align="center" label="模块类型" prop="moduleType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.module_type" :value="scope.row.moduleType"/> <dict-tag :options="dict.type.module_type" :value="scope.row.moduleType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上传状态" align="center" prop="uploadingStatus" /> <!-- <el-table-column align="center" label="上传状态" prop="uploadingStatus"/>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" icon="el-icon-download"
type="text" size="mini"
icon="el-icon-edit" type="text"
@click="handleUpdate(scope.row)" @click="handleDownLoad(scope.row)"
v-hasPermi="['deployment:module:edit']" >下载安装包
>修改</el-button> </el-button>
<el-button <el-button
size="mini" v-hasPermi="['deployment:module:edit']"
type="text" icon="el-icon-edit"
icon="el-icon-delete" size="mini"
@click="handleDelete(scope.row)" type="text"
v-hasPermi="['deployment:module:remove']" @click="handleUpdate(scope.row)"
>删除</el-button> >修改
</el-button>
<el-button
icon="el-icon-detail"
size="mini"
type="text"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
v-hasPermi="['deployment:module:remove']"
icon="el-icon-delete"
size="mini"
type="text"
@click="handleDelete(scope.row)"
>删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :limit.sync="queryParams.pageSize"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :total="total"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改H5模块包对话框 --> <!-- 添加或修改H5模块包对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" append-to-body width="500px">
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="模块包名称名称" prop="moduleName"> <el-form-item label="模块包名称名称" prop="moduleName">
<el-input v-model="form.moduleName" placeholder="请输入模块包名称名称" /> <el-input v-model="form.moduleName" placeholder="请输入模块包名称名称"/>
</el-form-item> </el-form-item>
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input v-model="form.version" placeholder="请输入版本号" /> <el-input v-model="form.version" placeholder="请输入版本号"/>
</el-form-item> </el-form-item>
<el-form-item label="安装包" prop="moduleUrl"> <el-form-item label="安装包" prop="moduleUrl">
<el-input v-model="form.moduleUrl" placeholder="请输入安装包" />
<file-upload v-model="form.moduleUrl" :fileSize="20" :fileType="['apk','hap','iap','zip']"
:limit="1"
uploadFileUrl="/system/oss/upload"
@getSize="getSize"
/>
</el-form-item> </el-form-item>
<el-form-item label="安装包大小" prop="moduleSize"> <el-form-item label="安装包大小" prop="moduleSize">
<el-input v-model="form.moduleSize" placeholder="请输入安装包大小" /> <el-input v-model="form.moduleSize" placeholder="请输入安装包大小" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="系统类型" prop="sysType"> <el-form-item label="系统类型" prop="sysType">
<el-select v-model="form.sysType" placeholder="请选择系统类型"> <el-select v-model="form.sysType" placeholder="请选择系统类型">
<el-option <el-option
v-for="dict in dict.type.sys_apk_type" v-for="dict in dict.type.sys_apk_type"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="模块类型" prop="moduleType"> <el-form-item label="模块类型" prop="moduleType">
<el-select v-model="form.moduleType" placeholder="请选择模块类型"> <el-select v-model="form.moduleType" placeholder="请选择模块类型">
<el-option <el-option
v-for="dict in dict.type.module_type" v-for="dict in dict.type.module_type"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -164,15 +193,80 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 添加或修改H5模块包对话框 -->
<el-dialog :title="title" :visible.sync="openDetail" append-to-body width="500px">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="模块包名称名称" prop="moduleName">
{{ form.moduleName }}
</el-form-item>
<el-form-item label="版本号" prop="version">
{{ form.version }}
</el-form-item>
<el-form-item label="安装包" prop="moduleUrl">
{{ form.moduleUrl }}
<!-- <file-upload v-model="form.moduleUrl" :fileSize="20" :fileType="['apk','hap','iap']"-->
<!-- :limit="1"-->
<!-- uploadFileUrl="/system/oss/upload"-->
<!-- @getSize="getSize"-->
<!-- />-->
</el-form-item>
<el-form-item label="安装包大小" prop="moduleSize">
{{ form.moduleSize }}
<!-- <el-input v-model="form.moduleSize" placeholder="请输入安装包大小"/>-->
</el-form-item>
<el-form-item label="系统类型" prop="sysType">
{{ form.sysType }}
<!-- <el-select v-model="form.sysType" placeholder="请选择系统类型">-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.sys_apk_type"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="模块类型" prop="moduleType">
<dict-tag :options="dict.type.module_type" :value="form.moduleType"/>
<!-- {{ form.moduleType }}-->
<!-- <el-select v-model="form.moduleType" placeholder="请选择模块类型">-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.module_type"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="下载地址:">
<el-input v-model="form.moduleUrl"/>
</el-form-item>
<el-form-item label="上传时间:">{{ form.createTime }}</el-form-item>
<!-- <el-form-item label="上传状态:">-->
<!-- <dict-tag :options="dict.type.uploading_status" :value="form.uploadingStatus"/>-->
<!-- </el-form-item>-->
<el-form-item label="上传人员:">{{ form.created }}</el-form-item>
<!-- <el-form-item label="上传日志:"></el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelDetail"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listModule, getModule, delModule, addModule, updateModule } from "@/api/deployment/module"; import { addModule, delModule, getModule, listModule, updateModule } from '@/api/deployment/module'
export default { export default {
name: "Module", name: 'Module',
dicts: ['module_type', 'sys_apk_type'], dicts: ['module_type', 'sys_apk_type', 'uploading_status'],
data() { data() {
return { return {
// //
@ -190,9 +284,10 @@ export default {
// H5 // H5
moduleList: [], moduleList: [],
// //
title: "", title: '',
// //
open: false, open: false,
openDetail: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -200,48 +295,54 @@ export default {
moduleName: null, moduleName: null,
version: null, version: null,
uploadingStatus: null, uploadingStatus: null,
createTime: null, createTime: null
}, },
// //
form: {}, form: {},
// //
rules: { rules: {
moduleName: [ moduleName: [
{ required: true, message: "模块包名称名称不能为空", trigger: "blur" } { required: true, message: '模块包名称名称不能为空', trigger: 'blur' }
], ],
version: [ version: [
{ required: true, message: "版本号不能为空", trigger: "blur" } { required: true, message: '版本号不能为空', trigger: 'blur' }
], ],
sysType: [ sysType: [
{ required: true, message: "系统类型不能为空", trigger: "change" } { required: true, message: '系统类型不能为空', trigger: 'change' }
], ],
moduleType: [ moduleType: [
{ required: true, message: "模块类型不能为空", trigger: "change" } { required: true, message: '模块类型不能为空', trigger: 'change' }
], ],
uploadingStatus: [ uploadingStatus: [
{ required: true, message: "上传状态不能为空", trigger: "change" } { required: true, message: '上传状态不能为空', trigger: 'change' }
], ]
} }
}; }
}, },
created() { created() {
this.getList(); this.getList()
}, },
methods: { methods: {
/** 查询H5模块包列表 */ /** 查询H5模块包列表 */
getList() { getList() {
this.loading = true; this.loading = true
listModule(this.queryParams).then(response => { listModule(this.queryParams).then(response => {
this.moduleList = response.rows; this.moduleList = response.rows
this.total = response.total; this.total = response.total
this.loading = false; this.loading = false
}); })
}, },
// //
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.reset()
}, },
cancelDetail() {
this.openDetail = false
this.reset()
},
// //
reset() { reset() {
this.form = { this.form = {
@ -263,79 +364,103 @@ export default {
modified: null, modified: null,
createTime: null, createTime: null,
updateTime: null updateTime: null
}; }
this.resetForm("form"); this.resetForm('form')
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm('queryForm')
this.handleQuery(); this.handleQuery()
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset()
this.open = true; this.open = true
this.title = "添加H5模块包"; this.title = '添加H5模块包'
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset()
const id = row.id || this.ids const id = row.id || this.ids
getModule(id).then(response => { getModule(id).then(response => {
this.form = response.data; this.form = response.data
this.open = true; this.open = true
this.title = "修改H5模块包"; this.title = '修改H5模块包'
}); this.type = 'edit'
})
}, },
/** 详情按钮操作 */
handleDetail(row) {
this.reset()
const id = row.id || this.ids
getModule(id).then(response => {
this.form = response.data
this.openDetail = true
this.title = 'H5模块包详情'
this.type = 'detail'
})
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
let data = Object.assign({},this.form) let data = Object.assign({}, this.form)
delete data.explain delete data.explain
updateModule(data).then(response => { updateModule(data).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess('修改成功')
this.open = false; this.open = false
this.getList(); this.getList()
}); })
} else { } else {
addModule(this.form).then(response => { addModule(this.form).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess('新增成功')
this.open = false; this.open = false
this.getList(); this.getList()
}); })
} }
} }
}); })
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids
this.$modal.confirm('是否确认删除H5模块包编号为"' + ids + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除H5模块包编号为"' + ids + '"的数据项?').then(function() {
return delModule(ids); return delModule(ids)
}).then(() => { }).then(() => {
this.getList(); this.getList()
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess('删除成功')
}).catch(() => {}); }).catch(() => {
})
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('deployment/module/export', { this.download('deployment/module/export', {
...this.queryParams ...this.queryParams
}, `module_${new Date().getTime()}.xlsx`) }, `module_${new Date().getTime()}.xlsx`)
},
getSize(e) {
console.log(e)
console.log(this.form)
this.form.moduleSize = e[0].size + 'kb'
},
handleDownLoad(row) {
window.open(row.moduleUrl)
} }
} }
}; }
</script> </script>

View File

@ -0,0 +1,235 @@
<template>
<el-dialog :modal-append-to-body="false" :title="title" v-bind="$attrs" width="700px"
@close="onClose"
@open="onOpen"
v-on="$listeners"
>
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="应用id">
<el-input v-model="form.applyId" placeholder="请输入应用id" readonly/>
</el-form-item>
<el-form-item label="应用name">
<el-input v-model="form.appName" placeholder="请输入应用名称" readonly/>
</el-form-item>
<el-form-item label="选择系统" prop="grayFlag">
<div class="tag-group">
<el-tag :type="form.systemType=='android'?'':'info'" @click="changeSys('android')">安卓</el-tag>
<el-tag :type="form.systemType=='IOS'?'':'info'" @click="changeSys('IOS')">IOS</el-tag>
<el-tag :type="form.systemType=='HarmonyOS'?'':'info'" @click="changeSys('HarmonyOS')">鸿蒙</el-tag>
</div>
</el-form-item>
<el-form-item v-if="form.systemType!='IOS'" label="安装包" prop="apkId">
<el-input v-model="form.apkId" class="input-with-select" placeholder="请选择包" readonly>
<!-- <el-button slot="append" icon="el-icon-search" @click="handlePackOpen"></el-button>-->
</el-input>
<!-- <el-input v-model="form.apkId" placeholder="请输入安装包编号"/>-->
</el-form-item>
<el-form-item v-if="form.systemType=='IOS'" label="app store地址" prop="appStoreAddress">
<el-input v-model="form.appStoreAddress" placeholder="请输入app store地址"/>
</el-form-item>
<el-form-item label="版本号" prop="version">
<el-input v-model="form.version" placeholder="请输入版本号"/>
</el-form-item>
<el-form-item label="版本说明" prop="versionDesc">
<el-input v-model="form.versionDesc" placeholder="请输入版本说明"/>
</el-form-item>
<el-form-item label="发布环境" prop="publishEnvironment">
<el-radio-group v-model="form.publishEnvironment">
<el-radio
v-for="dict in environmentList"
:key="dict.value"
:label="parseInt(dict.id)"
>{{ dict.name }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="发布策略" prop="publishStrategy">
<el-radio-group v-model="form.publishStrategy">
<el-radio
v-for="dict in dict.type.release_strategy"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="结果通知" prop="resultNotify">
<el-switch
v-model="form.resultNotify"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
<el-form-item label="公开版" prop="publicVersion">
<el-switch
v-model="form.publicVersion"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
<el-form-item label="强制更新" prop="forceUpdate">
<el-switch
v-model="form.forceUpdate"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
<el-form-item label="下载验证" prop="downloadVerification">
<el-switch
v-model="form.downloadVerification"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
<!-- <el-form-item label="更新对象(-1: 不限制, 白名单id)" prop="updateObject">-->
<el-form-item label="更新对象" prop="updateObject">
<el-radio-group v-model="form.updateObject">
<el-radio
v-for="dict in dict.type.release_user_type"
:key="dict.value"
:label="parseInt(dict.value)"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="有效期开始时间" prop="validityStartTime">
<el-date-picker v-model="form.validityStartTime"
clearable
placeholder="请选择有效期开始时间"
type="date"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="有效期结束时间" prop="validityEndTime">
<el-date-picker v-model="form.validityEndTime"
clearable
placeholder="请选择有效期结束时间"
type="date"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input v-model="form.remark" placeholder="请输入备注"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="逻辑删除,0:未删除,1:删除" prop="isDelete">-->
<!-- <el-input v-model="form.isDelete" placeholder="请输入逻辑删除,0:未删除,1:删除"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建人" prop="created">-->
<!-- <el-input v-model="form.created" placeholder="请输入创建人"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="更新人" prop="modified">-->
<!-- <el-input v-model="form.modified" placeholder="请输入更新人"/>-->
<!-- </el-form-item>-->
</el-form>
</el-dialog>
</template>
<script>
import { getPublish } from '@/api/deployment/publish'
import { listEnvironment } from '@/api/deployment/environment'
export default {
name: 'AddPack',
dicts: ['sys_yes_no'],
props: {
detailId: {
type: String | Number,
default: ''
},
openDetail: {
type: Boolean,
default: false
}
},
data() {
return {
//
title: '添加安装包',
loading: true,
configName: undefined,
form: {},
moduleList: [],
//
showSearch: true,
total: 0,
environmentList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
sysApkName: null
}
}
},
// computed: {
// cachedViews() {
// return this.$props.openDetail
// }
// },
mounted() {
console.log(this.detailId, 123321)
this.$nextTick(() => {
this.show = false
})
// nextTick(()=>{
// this.configName = this.$route.query.configName
// })
// this.getPublishList(this.detailId)
this.getEnvironmentList()
},
methods: {
/** 查询参数列表 */
getPublishList(id) {
this.loading = true
getPublish(id).then(response => {
this.form = response.data
this.open = true
this.title = '详情'
})
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = []
this.resetForm('queryForm')
this.handleQuery()
},
/** 查询环境维护列表 */
getEnvironmentList() {
this.loading = true
listEnvironment(this.queryParamsEnvironment).then(response => {
this.environmentList = response.rows
})
},
/** 新增当前包的按钮 */
addPack(id, version, sysType) {
this.$emit('addPack', {
apkId: id,
version: version,
sysType: sysType
})
},
closeModal() {
this.$emit('close')
},
onOpen() {
this.active = this.current
this.key = ''
},
onClose() {
}
}
}
</script>

View File

@ -1,40 +1,42 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" label-width="120px" size="small">
<el-form-item label="应用name" prop="appName"> <el-form-item label="应用name" prop="appName">
<el-input <el-input
v-model="queryParams.appName" v-model="queryParams.appName"
placeholder="请输入应用name" clearable
clearable placeholder="请输入应用name"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input <el-input
v-model="queryParams.version" v-model="queryParams.version"
placeholder="请输入版本号" clearable
clearable placeholder="请输入版本号"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="有效期开始时间" prop="validityStartTime"> <el-form-item label="有效期开始时间" prop="validityStartTime">
<el-date-picker clearable <el-date-picker v-model="queryParams.validityStartTime"
v-model="queryParams.validityStartTime" clearable
type="date" placeholder="请选择有效期开始时间"
value-format="yyyy-MM-dd" type="date"
placeholder="请选择有效期开始时间"> value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="有效期结束时间" prop="validityEndTime"> <el-form-item label="有效期结束时间" prop="validityEndTime">
<el-date-picker clearable <el-date-picker v-model="queryParams.validityEndTime"
v-model="queryParams.validityEndTime" clearable
type="date" placeholder="请选择有效期结束时间"
value-format="yyyy-MM-dd" type="date"
placeholder="请选择有效期结束时间"> value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -42,241 +44,305 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" v-hasPermi="['deployment:publish:add']"
plain icon="el-icon-plus"
icon="el-icon-plus" plain
size="mini" size="mini"
@click="handleAdd" type="primary"
v-hasPermi="['deployment:publish:add']" @click="handleAdd"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" v-hasPermi="['deployment:publish:edit']"
plain :disabled="single"
icon="el-icon-edit" icon="el-icon-edit"
size="mini" plain
:disabled="single" size="mini"
@click="handleUpdate" type="success"
v-hasPermi="['deployment:publish:edit']" @click="handleUpdate"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="danger" :disabled="multiple"
plain icon="el-icon-delete"
icon="el-icon-delete" plain
size="mini" size="mini"
:disabled="multiple" type="danger"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['deployment:publish:remove']" >批量发布
>删除</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" v-hasPermi="['deployment:publish:remove']"
plain :disabled="multiple"
icon="el-icon-download" icon="el-icon-delete"
size="mini" plain
@click="handleExport" size="mini"
v-hasPermi="['deployment:publish:export']" type="danger"
>导出</el-button> @click="handleDelete"
>批量删除
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="publishList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="publishList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column align="center" type="selection" width="55"/>
<el-table-column label="主键" align="center" prop="id" /> <el-table-column align="center" label="APP" prop="appName"/>
<el-table-column label="应用id" align="center" prop="applyId" /> <!-- <el-table-column align="center" label="应用name" prop="appName"/>-->
<el-table-column label="应用name" align="center" prop="appName" /> <el-table-column align="center" label="版本号" prop="version"/>
<el-table-column label="系统类型" align="center" prop="systemType" /> <el-table-column align="center" label="系统" prop="systemType"/>
<el-table-column label="安装包编号" align="center" prop="apkId" /> <el-table-column align="center" label="公开版" prop="publicVersion" width="180">
<el-table-column label="app store地址" align="center" prop="appStoreAddress" />
<el-table-column label="版本号" align="center" prop="version" />
<el-table-column label="版本说明" align="center" prop="versionDesc" />
<el-table-column label="发布环境" align="center" prop="publishEnvironment">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.release_environment" :value="scope.row.publishEnvironment"/> <el-switch v-model="scope.row.publicVersion" :active-value="1" :inactive-value="0" class="drawer-switch"
disabled
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发布策略" align="center" prop="publishStrategy"> <el-table-column align="center" label="强制更新" prop="forceUpdate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.release_strategy" :value="scope.row.publishStrategy"/> <el-switch v-model="scope.row.forceUpdate" :active-value="1" :inactive-value="0" class="drawer-switch"
disabled
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="通知" align="center" prop="resultNotify" /> <el-table-column align="center" label="上传时间" prop="updateTime" width="180">
<el-table-column label="公开版" align="center" prop="publicVersion">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.publicVersion"/> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="强制更新" align="center" prop="forceUpdate"> <el-table-column align="center" label="发布环境" prop="publishEnvironment" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.forceUpdate"/> <dict-tag :options="environmentList" :value="scope.row.publishEnvironment"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="下载验证" align="center" prop="downloadVerification" /> <el-table-column align="center" label="安装包编号" prop="apkId"/>
<el-table-column label="更新对象(-1: 不限制, 白名单id)" align="center" prop="updateObject"> <el-table-column align="center" label="版本说明" prop="versionDesc"/>
<el-table-column align="center" label="公开时间" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.release_user_type" :value="scope.row.updateObject"/> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="有效期开始时间" align="center" prop="validityStartTime" width="180"> <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.validityStartTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="有效期结束时间" align="center" prop="validityEndTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.validityEndTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="0:保存,1:已发布,2:已下架" align="center" prop="status" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" icon="el-icon-bottom"
type="text" size="mini"
icon="el-icon-edit" type="text"
@click="handleUpdate(scope.row)" @click="handleDown(scope.row)"
v-hasPermi="['deployment:publish:edit']" >下架
>修改</el-button> </el-button>
<el-button <el-button
size="mini" icon="el-icon-edit"
type="text" size="mini"
icon="el-icon-delete" type="text"
@click="handleDelete(scope.row)" @click="handlePublish(scope.row)"
v-hasPermi="['deployment:publish:remove']" >发布
>删除</el-button> </el-button>
<el-button
icon="el-icon-edit"
size="mini"
type="text"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
icon="el-icon-download"
size="mini"
type="text"
@click="handleDownload(scope.row)"
>下载安装包
</el-button>
<el-button
v-hasPermi="['deployment:publish:edit']"
icon="el-icon-edit"
size="mini"
type="text"
@click="handleUpdate(scope.row)"
>修改
</el-button>
<el-button
v-hasPermi="['deployment:publish:remove']"
icon="el-icon-delete"
size="mini"
type="text"
@click="handleDelete(scope.row)"
>删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :limit.sync="queryParams.pageSize"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :total="total"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改发布列表对话框 --> <!-- 添加或修改发布列表对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-dialog :title="title" :visible.sync="open" append-to-body width="900px">
<el-form-item label="应用id" prop="applyId"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-input v-model="form.applyId" placeholder="请输入应用id" /> <el-form-item label="应用id">
<el-input v-model="form.applyId" placeholder="请输入应用id" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="应用name" prop="appName">
<el-input v-model="form.appName" placeholder="请输入应用name" /> <el-form-item label="应用name">
<el-input v-model="form.appName" placeholder="请输入应用名称" readonly/>
</el-form-item> </el-form-item>
<el-form-item label="安装包编号" prop="apkId"> <el-form-item label="选择系统" prop="grayFlag">
<el-input v-model="form.apkId" placeholder="请输入安装包编号" /> <div class="tag-group">
<el-tag :type="form.systemType=='android'?'':'info'" @click="changeSys('android')">安卓</el-tag>
<el-tag :type="form.systemType=='IOS'?'':'info'" @click="changeSys('IOS')">IOS</el-tag>
<el-tag :type="form.systemType=='HarmonyOS'?'':'info'" @click="changeSys('HarmonyOS')">鸿蒙</el-tag>
</div>
</el-form-item> </el-form-item>
<el-form-item label="app store地址" prop="appStoreAddress"> <el-form-item v-if="form.systemType!='IOS'" label="安装包" prop="apkId">
<el-input v-model="form.appStoreAddress" placeholder="请输入app store地址" /> <el-input v-model="form.apkId" class="input-with-select" placeholder="请选择包" readonly>
<el-button slot="append" icon="el-icon-search" @click="handlePackOpen"></el-button>
</el-input>
<!-- <el-input v-model="form.apkId" placeholder="请输入安装包编号"/>-->
</el-form-item>
<el-form-item v-if="form.systemType=='IOS'" label="app store地址" prop="appStoreAddress">
<el-input v-model="form.appStoreAddress" placeholder="请输入app store地址"/>
</el-form-item> </el-form-item>
<el-form-item label="版本号" prop="version"> <el-form-item label="版本号" prop="version">
<el-input v-model="form.version" placeholder="请输入版本号" /> <el-input v-model="form.version" placeholder="请输入版本号"/>
</el-form-item> </el-form-item>
<el-form-item label="版本说明" prop="versionDesc"> <el-form-item label="版本说明" prop="versionDesc">
<el-input v-model="form.versionDesc" placeholder="请输入版本说明" /> <el-input v-model="form.versionDesc" placeholder="请输入版本说明"/>
</el-form-item> </el-form-item>
<el-form-item label="发布环境" prop="publishEnvironment"> <el-form-item label="发布环境" prop="publishEnvironment">
<el-radio-group v-model="form.publishEnvironment"> <el-radio-group v-model="form.publishEnvironment">
<el-radio <el-radio
v-for="dict in dict.type.release_environment" v-for="dict in environmentList"
:key="dict.value" :key="dict.value"
:label="parseInt(dict.value)" :label="parseInt(dict.id)"
>{{dict.label}}</el-radio> >{{ dict.name }}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="发布策略" prop="publishStrategy"> <el-form-item label="发布策略" prop="publishStrategy">
<el-radio-group v-model="form.publishStrategy"> <el-radio-group v-model="form.publishStrategy">
<el-radio <el-radio
v-for="dict in dict.type.release_strategy" v-for="dict in dict.type.release_strategy"
:key="dict.value" :key="dict.value"
:label="parseInt(dict.value)" :label="parseInt(dict.value)"
>{{dict.label}}</el-radio> >{{ dict.label }}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="通知" prop="resultNotify"> <el-form-item label="结果通知" prop="resultNotify">
<el-input v-model="form.resultNotify" placeholder="请输入通知" /> <el-switch
v-model="form.resultNotify"
:active-value="1"
:inactive-value="0"
/>
</el-form-item> </el-form-item>
<el-form-item label="公开版" prop="publicVersion"> <el-form-item label="公开版" prop="publicVersion">
<el-radio-group v-model="form.publicVersion">
<el-radio <el-switch
v-for="dict in dict.type.sys_yes_no" v-model="form.publicVersion"
:key="dict.value" :active-value="1"
:label="parseInt(dict.value)" :inactive-value="0"
>{{dict.label}}</el-radio> />
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="强制更新" prop="forceUpdate"> <el-form-item label="强制更新" prop="forceUpdate">
<el-radio-group v-model="form.forceUpdate"> <el-switch
<el-radio v-model="form.forceUpdate"
v-for="dict in dict.type.sys_yes_no" :active-value="1"
:key="dict.value" :inactive-value="0"
:label="parseInt(dict.value)" />
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="下载验证" prop="downloadVerification"> <el-form-item label="下载验证" prop="downloadVerification">
<el-input v-model="form.downloadVerification" placeholder="请输入下载验证" /> <el-switch
v-model="form.downloadVerification"
:active-value="1"
:inactive-value="0"
/>
</el-form-item> </el-form-item>
<el-form-item label="更新对象(-1: 不限制, 白名单id)" prop="updateObject"> <!-- <el-form-item label="更新对象(-1: 不限制, 白名单id)" prop="updateObject">-->
<el-form-item label="更新对象" prop="updateObject">
<el-radio-group v-model="form.updateObject"> <el-radio-group v-model="form.updateObject">
<el-radio <el-radio
v-for="dict in dict.type.release_user_type" v-for="dict in dict.type.release_user_type"
:key="dict.value" :key="dict.value"
:label="parseInt(dict.value)" :label="parseInt(dict.value)"
>{{dict.label}}</el-radio> >{{ dict.label }}
</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="有效期开始时间" prop="validityStartTime"> <el-form-item label="有效期开始时间" prop="validityStartTime">
<el-date-picker clearable <el-date-picker v-model="form.validityStartTime"
v-model="form.validityStartTime" clearable
type="date" placeholder="请选择有效期开始时间"
value-format="yyyy-MM-dd" type="date"
placeholder="请选择有效期开始时间"> value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="有效期结束时间" prop="validityEndTime"> <el-form-item label="有效期结束时间" prop="validityEndTime">
<el-date-picker clearable <el-date-picker v-model="form.validityEndTime"
v-model="form.validityEndTime" clearable
type="date" placeholder="请选择有效期结束时间"
value-format="yyyy-MM-dd" type="date"
placeholder="请选择有效期结束时间"> value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <!-- <el-form-item label="备注" prop="remark">-->
<el-input v-model="form.remark" placeholder="请输入备注" /> <!-- <el-input v-model="form.remark" placeholder="请输入备注"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="逻辑删除,0:未删除,1:删除" prop="isDelete"> <!-- <el-form-item label="逻辑删除,0:未删除,1:删除" prop="isDelete">-->
<el-input v-model="form.isDelete" placeholder="请输入逻辑删除,0:未删除,1:删除" /> <!-- <el-input v-model="form.isDelete" placeholder="请输入逻辑删除,0:未删除,1:删除"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="创建人" prop="created"> <!-- <el-form-item label="创建人" prop="created">-->
<el-input v-model="form.created" placeholder="请输入创建人" /> <!-- <el-input v-model="form.created" placeholder="请输入创建人"/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="更新人" prop="modified"> <!-- <el-form-item label="更新人" prop="modified">-->
<el-input v-model="form.modified" placeholder="请输入更新人" /> <!-- <el-input v-model="form.modified" placeholder="请输入更新人"/>-->
</el-form-item> <!-- </el-form-item>-->
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<AddPack :visible.sync="packOpen" @addPack="addPack" @close="closeAddPack"></AddPack>
<DetailModal :detailId="detailId" :openDetail="openDetail" :visible.sync="openDetail"></DetailModal>
</div> </div>
</template> </template>
<script> <script>
import { listPublish, getPublish, delPublish, addPublish, updatePublish } from "@/api/deployment/publish"; import { addPublish, delPublish, getPublish, listPublish, updatePublish } from '@/api/deployment/publish'
import Cookies from 'js-cookie'
import AddPack from '@/views/FDS/publishList/components/addPack.vue'
import DetailModal from './component/detail.vue'
import { listEnvironment } from '@/api/deployment/environment'
import { getApplicationName } from '@/utils/application'
export default { export default {
name: "Publish", name: 'Publish',
dicts: ['release_environment', 'sys_yes_no', 'release_strategy', 'release_user_type'], dicts: ['release_environment', 'sys_yes_no', 'release_strategy', 'release_user_type'],
components: {
AddPack,
DetailModal
},
data() { data() {
return { return {
// //
@ -294,9 +360,13 @@ export default {
// //
publishList: [], publishList: [],
// //
title: "", title: '',
// //
open: false, open: false,
packOpen: false,
openDetail: false,
detailId: '',
environmentList: [],
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -304,75 +374,81 @@ export default {
appName: null, appName: null,
version: null, version: null,
validityStartTime: null, validityStartTime: null,
validityEndTime: null, validityEndTime: null
},
queryParamsEnvironment: {
pageNum: 1,
pageSize: 999
}, },
// //
form: {}, form: {},
// //
rules: { rules: {
appName: [ appName: [
{ required: true, message: "应用name不能为空", trigger: "blur" } { required: true, message: '应用name不能为空', trigger: 'blur' }
], ],
systemType: [ systemType: [
{ required: true, message: "系统类型不能为空", trigger: "change" } { required: true, message: '系统类型不能为空', trigger: 'change' }
], ],
apkId: [ apkId: [
{ required: true, message: "安装包编号不能为空", trigger: "blur" } { required: true, message: '安装包编号不能为空', trigger: 'blur' }
], ],
version: [ version: [
{ required: true, message: "版本号不能为空", trigger: "blur" } { required: true, message: '版本号不能为空', trigger: 'blur' }
], ],
publishEnvironment: [ publishEnvironment: [
{ required: true, message: "发布环境不能为空", trigger: "change" } { required: true, message: '发布环境不能为空', trigger: 'change' }
], ],
publishStrategy: [ publishStrategy: [
{ required: true, message: "发布策略不能为空", trigger: "change" } { required: true, message: '发布策略不能为空', trigger: 'change' }
], ],
publicVersion: [ publicVersion: [
{ required: true, message: "公开版不能为空", trigger: "change" } { required: true, message: '公开版不能为空', trigger: 'change' }
], ],
forceUpdate: [ forceUpdate: [
{ required: true, message: "强制更新不能为空", trigger: "change" } { required: true, message: '强制更新不能为空', trigger: 'change' }
], ],
updateObject: [ updateObject: [
{ required: true, message: "更新对象(-1: 不限制, 白名单id)不能为空", trigger: "change" } { required: true, message: '更新对象(-1: 不限制, 白名单id)不能为空', trigger: 'change' }
], ],
status: [ status: [
{ required: true, message: "0:保存,1:已发布,2:已下架不能为空", trigger: "change" } { required: true, message: '0:保存,1:已发布,2:已下架不能为空', trigger: 'change' }
], ],
isDelete: [ isDelete: [
{ required: true, message: "逻辑删除,0:未删除,1:删除不能为空", trigger: "blur" } { required: true, message: '逻辑删除,0:未删除,1:删除不能为空', trigger: 'blur' }
], ],
createTime: [ createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" } { required: true, message: '创建时间不能为空', trigger: 'blur' }
], ]
} }
}; }
}, },
created() { created() {
this.getList(); this.getList()
}, },
methods: { methods: {
/** 查询发布列表列表 */ /** 查询发布列表列表 */
getList() { getList() {
this.loading = true; this.loading = true
listPublish(this.queryParams).then(response => { listPublish(this.queryParams).then(response => {
this.publishList = response.rows; this.publishList = response.rows
this.total = response.total; this.total = response.total
this.loading = false; this.loading = false
}); })
}, },
// //
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.loading = false
this.reset()
}, },
// //
reset() { reset() {
this.form = { this.form = {
id: null, id: null,
applyId: null, applyId: Cookies.get('Admin-Application-Id'),
appName: null, appName: getApplicationName(),
systemType: null, systemType: null,
apkId: null, apkId: null,
appStoreAddress: null, appStoreAddress: null,
@ -394,79 +470,144 @@ export default {
modified: null, modified: null,
createTime: null, createTime: null,
updateTime: null updateTime: null
}; }
this.resetForm("form"); this.resetForm('form')
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm('queryForm')
this.handleQuery(); this.handleQuery()
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset()
this.open = true; this.open = true
this.title = "添加发布列表"; this.title = '添加发布列表'
this.getEnvironmentList()
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset()
this.getEnvironmentList()
const id = row.id || this.ids const id = row.id || this.ids
getPublish(id).then(response => { getPublish(id).then(response => {
this.form = response.data; this.form = response.data
this.open = true; this.open = true
this.title = "修改发布列表"; this.title = '修改发布列表'
}); })
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
let data = Object.assign({},this.form) let data = Object.assign({}, this.form)
delete data.explain delete data.explain
updatePublish(data).then(response => { updatePublish(data).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess('修改成功')
this.open = false; this.loading = false
this.getList(); this.open = false
}); this.getList()
})
} else { } else {
addPublish(this.form).then(response => { addPublish(this.form).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess('新增成功')
this.open = false; this.loading = false
this.getList(); this.open = false
}); this.getList()
})
} }
} }
}); })
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids
this.$modal.confirm('是否确认删除发布列表编号为"' + ids + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除发布列表编号为"' + ids + '"的数据项?').then(function() {
return delPublish(ids); return delPublish(ids)
}).then(() => { }).then(() => {
this.getList(); this.getList()
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess('删除成功')
}).catch(() => {}); }).catch(() => {
})
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('deployment/publish/export', { this.download('deployment/publish/export', {
...this.queryParams ...this.queryParams
}, `publish_${new Date().getTime()}.xlsx`) }, `publish_${new Date().getTime()}.xlsx`)
},
/** 弹出包选择框*/
handlePackOpen() {
this.packOpen = true
},
addPack(e) {
this.form.apkId = e.apkId
this.form.version = e.version
this.form.systemType = e.sysType
this.packOpen = false
},
/** 关闭包选择框*/
closeAddPack() {
this.packOpen = false
},
/** 查询环境维护列表 */
getEnvironmentList() {
this.loading = true
listEnvironment(this.queryParamsEnvironment).then(response => {
this.environmentList = response.rows
})
},
//
changeSys(sysType) {
this.form.systemType = sysType
},
/**下载安装包*/
handleDownload() {
},
/**下架*/
handleDown() {
},
/**发布*/
handlePublish() {
},
/**详情*/
handleDetail(row) {
this.detailId = row.id
this.openDetail = true
} }
} }
}; }
</script> </script>
<style lang="scss" scoped>
.tag-group {
.el-tag {
cursor: pointer;
}
}
.el-tag + .el-tag {
margin-left: 10px
}
</style>