update
This commit is contained in:
parent
5b563867fe
commit
8176c75f22
2
.gitignore
vendored
2
.gitignore
vendored
@ -25,7 +25,7 @@ pnpm-debug.log*
|
|||||||
# Lock files
|
# Lock files
|
||||||
yarn.lock
|
yarn.lock
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
package-lock.json
|
# package-lock.json
|
||||||
|
|
||||||
# Yarn v2 not using using Zero-Installs
|
# Yarn v2 not using using Zero-Installs
|
||||||
.yarn/*
|
.yarn/*
|
||||||
|
|||||||
31868
package-lock.json
generated
Normal file
31868
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
109
src/api/appVersion/appVersion.js
Normal file
109
src/api/appVersion/appVersion.js
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
import { URL } from '@/config'
|
||||||
|
/**
|
||||||
|
* 获取APP 版本列表
|
||||||
|
* @author Seven
|
||||||
|
* @data 2025-5-5
|
||||||
|
* @param "marketId": 1, // 各大安卓 APP 市场标识:1 - 小米;2 - 华为;3 - 腾讯应用市场;4 - OPPO;5 - VIVO;6 - 三星;100-通用包(不区分市场的包);
|
||||||
|
"keyword": "",//搜索关键字
|
||||||
|
"pageNum": 1 ,
|
||||||
|
"pageSize": 10
|
||||||
|
* @returns { }
|
||||||
|
* @see https://mall.gpxscs.cn/api/admin/app-market-update/enable-or-disable
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function getShopAppVersionList(params) {
|
||||||
|
return request({
|
||||||
|
url: URL.appVersion.getShopAppVersionList,
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加APP包
|
||||||
|
* @author Seven
|
||||||
|
* @data 2025-5-5
|
||||||
|
* @param {
|
||||||
|
"market_id": 1, // 各大安卓 APP 市场标识:1 - 小米;2 - 华为;3 - 腾讯应用市场;4 - OPPO;5 - VIVO;6 - 三星;100-通用包(不区分市场的包);
|
||||||
|
"package_name": "xftc.apk", // app 包名
|
||||||
|
"version_key": 2, //热更新包内部整数版本号,1-10000000
|
||||||
|
"version_name": "1.0.2", //热更新包显示的版本号,用于标识不同的热更新版本,遵循一定命名规则,如 1.23.21
|
||||||
|
"download_apk_url": "https://mall.gpxscs.cn/abc.apk",// apk 包下载地址
|
||||||
|
"download_wgt_url": "https://mall.gpxscs.cn/abc.wgt", // 增量包下载地址
|
||||||
|
"description": "发布版本详细说明",
|
||||||
|
"is_force_update": 2 // 是否为强制更新,1-表示强制更新,2-表示非强制更新,
|
||||||
|
}
|
||||||
|
* @returns { }
|
||||||
|
* @see https://mall.gpxscs.cn/api/admin/admin/app-market-update/add/new
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function addShopAppVersion(params) {
|
||||||
|
return request({
|
||||||
|
url: URL.appVersion.addShopAppVersion,
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新APP包
|
||||||
|
* @author Seven
|
||||||
|
* @data 2025-5-5
|
||||||
|
* @param {
|
||||||
|
"id": 2,// 自增Id
|
||||||
|
"market_id": 1, // 各大安卓 APP 市场标识:1 - 小米;2 - 华为;3 - 腾讯应用市场;4 - OPPO;5 - VIVO;6 - 三星;100-通用包(不区分市场的包);
|
||||||
|
"package_name": "xftc.apk", // app 包名
|
||||||
|
"version_key": 2, //热更新包内部整数版本号,1-10000000
|
||||||
|
"version_name": "1.0.2", //热更新包显示的版本号,用于标识不同的热更新版本,遵循一定命名规则,如 1.23.21
|
||||||
|
"download_apk_url": "https://mall.gpxscs.cn/abc.apk",// apk 包下载地址
|
||||||
|
"download_wgt_url": "https://mall.gpxscs.cn/abc.wgt", // 增量包下载地址
|
||||||
|
"description": "发布版本详细说明",
|
||||||
|
"is_force_update": 2 // 是否为强制更新,1-表示强制更新,2-表示非强制更新,
|
||||||
|
* }
|
||||||
|
* @returns { }
|
||||||
|
* @see https://mall.gpxscs.cn/api/admin/admin/app-market-update/modify
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function updateShopAppVersion(params) {
|
||||||
|
return request({
|
||||||
|
url: URL.appVersion.updateShopAppVersion,
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开启/关闭更新
|
||||||
|
* @author Seven
|
||||||
|
* @data 2025-5-5
|
||||||
|
* @param {
|
||||||
|
{
|
||||||
|
"id": 1, // 自增Id,列表里获取
|
||||||
|
"status": 2, // 状态:1-开启;2-关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
* }
|
||||||
|
* @returns { }
|
||||||
|
* @see https://mall.gpxscs.cn/api/admin/admin/app-market-update/enable-or-disable
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function disableUpdateShopApp(params) {
|
||||||
|
return request({
|
||||||
|
url: URL.appVersion.disableUpdateShopApp,
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -4,7 +4,7 @@
|
|||||||
:class="'top-card top-card-' + background"
|
:class="'top-card top-card-' + background"
|
||||||
shadow="hover"
|
shadow="hover"
|
||||||
>
|
>
|
||||||
<span style="color:#181818">{{ title }}</span>
|
<span style="color: #181818">{{ title }}</span>
|
||||||
<span style="float: right; margin-right: 4px">
|
<span style="float: right; margin-right: 4px">
|
||||||
<el-tag size="small" type="success">{{ t('今日') }}</el-tag>
|
<el-tag size="small" type="success">{{ t('今日') }}</el-tag>
|
||||||
</span>
|
</span>
|
||||||
@ -51,149 +51,149 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { translateTitle as t } from '@/utils/i18n'
|
import { translateTitle as t } from '@/utils/i18n'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
|
||||||
import MsCount from '@/components/MsCount'
|
import MsCount from '@/components/MsCount'
|
||||||
import MsCard from '@/components/MsCard'
|
import MsCard from '@/components/MsCard'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TopCard',
|
name: 'TopCard',
|
||||||
components: {
|
components: {
|
||||||
MsCount,
|
MsCount,
|
||||||
MsCard,
|
MsCard,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
background: {
|
||||||
|
type: String,
|
||||||
|
default: 'white',
|
||||||
},
|
},
|
||||||
props: {
|
title: {
|
||||||
background: {
|
type: String,
|
||||||
type: String,
|
default: '',
|
||||||
default: 'white',
|
},
|
||||||
},
|
icon: {
|
||||||
title: {
|
type: String,
|
||||||
type: String,
|
default: 'album-line',
|
||||||
default: '',
|
},
|
||||||
},
|
bottomText: {
|
||||||
icon: {
|
type: String,
|
||||||
type: String,
|
default: '',
|
||||||
default: 'album-line',
|
},
|
||||||
},
|
unitText: {
|
||||||
bottomText: {
|
type: String,
|
||||||
type: String,
|
default: '',
|
||||||
default: '',
|
},
|
||||||
},
|
countConfig: {
|
||||||
unitText: {
|
type: Object,
|
||||||
type: String,
|
default: () => {
|
||||||
default: '',
|
return {
|
||||||
},
|
startVal: 0,
|
||||||
countConfig: {
|
endVal: _.random(1000, 20000),
|
||||||
type: Object,
|
decimals: 0,
|
||||||
default: () => {
|
prefix: '',
|
||||||
return {
|
suffix: '',
|
||||||
startVal: 0,
|
separator: ',',
|
||||||
endVal: _.random(1000, 20000),
|
duration: 8000,
|
||||||
decimals: 0,
|
}
|
||||||
prefix: '',
|
|
||||||
suffix: '',
|
|
||||||
separator: ',',
|
|
||||||
duration: 8000,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
},
|
||||||
t,
|
methods: {
|
||||||
},
|
t,
|
||||||
}
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.top-card {
|
.top-card {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 158px !important;
|
height: 158px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card p {
|
.top-card p {
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
|
|
||||||
display: block;
|
display: block;
|
||||||
margin-block-start: 20px;
|
margin-block-start: 20px;
|
||||||
margin-block-end: 20px;
|
margin-block-end: 20px;
|
||||||
margin-inline-start: 0px;
|
margin-inline-start: 0px;
|
||||||
margin-inline-end: 0px;
|
margin-inline-end: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .right-icon {
|
.top-card .right-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
color: var(--el-color-primary);
|
color: var(--el-color-primary);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: var(--el-color-primary-light-9);
|
background: var(--el-color-primary-light-9);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .right-icon i {
|
.top-card .right-icon i {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .bottom {
|
.top-card .bottom {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .bottom .ri-arrow-up-line,
|
.top-card .bottom .ri-arrow-up-line,
|
||||||
.top-card .bottom .ri-arrow-down-line {
|
.top-card .bottom .ri-arrow-down-line {
|
||||||
width: 18px;
|
width: 18px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
margin: 0 3px 0 2px;
|
margin: 0 3px 0 2px;
|
||||||
vertical-align: -3px !important;
|
vertical-align: -3px !important;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
transform: scale(0.8);
|
transform: scale(0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .bottom .ri-arrow-up-line {
|
.top-card .bottom .ri-arrow-up-line {
|
||||||
color: var(--el-color-error);
|
color: var(--el-color-error);
|
||||||
background: var(--el-color-error-light);
|
background: var(--el-color-error-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .bottom .ri-arrow-down-line {
|
.top-card .bottom .ri-arrow-down-line {
|
||||||
color: var(--el-color-success);
|
color: var(--el-color-success);
|
||||||
background: var(--el-color-success-light);
|
background: var(--el-color-success-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card .bottom span {
|
.top-card .bottom span {
|
||||||
color: var(--el-color-success);
|
color: var(--el-color-success);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card.blue {
|
.top-card.blue {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: var(--el-color-primary);
|
background: var(--el-color-primary);
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
90deg,
|
90deg,
|
||||||
var(--el-color-primary-light-4),
|
var(--el-color-primary-light-4),
|
||||||
var(--el-color-primary)
|
var(--el-color-primary)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card.blue .bottom {
|
.top-card.blue .bottom {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card.blue .bottom .ri-arrow-up-line {
|
.top-card.blue .bottom .ri-arrow-up-line {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card.blue .bottom .ri-arrow-up-line {
|
.top-card.blue .bottom .ri-arrow-up-line {
|
||||||
color: var(--el-color-primary);
|
color: var(--el-color-primary);
|
||||||
background: var(--el-color-primary-light-9);
|
background: var(--el-color-primary-light-9);
|
||||||
transform: scale(0.8);
|
transform: scale(0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card.blue .bottom span {
|
.top-card.blue .bottom span {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 导出网络配置
|
* @description 导出网络配置
|
||||||
**/
|
**/
|
||||||
@ -22,6 +21,14 @@ let url = {
|
|||||||
verifyCode: api_url + '/admin/shop/shop-base-config/image', // 获取登录验证码路径
|
verifyCode: api_url + '/admin/shop/shop-base-config/image', // 获取登录验证码路径
|
||||||
testEmail: api_url + '/admin/shop/email/testEmail', // 邮件测试路径
|
testEmail: api_url + '/admin/shop/email/testEmail', // 邮件测试路径
|
||||||
upload: api_url + '/admin/oss/upload', // 图片 oss 路径
|
upload: api_url + '/admin/oss/upload', // 图片 oss 路径
|
||||||
|
appVersion: {
|
||||||
|
getShopAppVersionList:
|
||||||
|
api_url + '/admin/admin/app-market-update/search/list',
|
||||||
|
addShopAppVersion: api_url + '/admin/admin/app-market-update/add/new',
|
||||||
|
updateShopAppVersion: api_url + '/admin/admin/app-market-update/modify',
|
||||||
|
disableUpdateShopApp:
|
||||||
|
api_url + '/admin/admin/app-market-update/enable-or-disable',
|
||||||
|
},
|
||||||
city: {
|
city: {
|
||||||
user: {
|
user: {
|
||||||
paotuier: {
|
paotuier: {
|
||||||
@ -67,12 +74,16 @@ let url = {
|
|||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
//商家端-订单量
|
//商家端-订单量
|
||||||
getOrderNumToday: api_url + '/admin/shop/analytics/order/getOrderNumToday',
|
getOrderNumToday:
|
||||||
|
api_url + '/admin/shop/analytics/order/getOrderNumToday',
|
||||||
getOrderNum: api_url + '/admin/shop/analytics/order/getOrderNum',
|
getOrderNum: api_url + '/admin/shop/analytics/order/getOrderNum',
|
||||||
//商家端-使用优惠卷数量
|
//商家端-使用优惠卷数量
|
||||||
getVoucherActiveNumToday: api_url + '/admin/shop/analytics/order/getVoucherActiveNumToday',
|
getVoucherActiveNumToday:
|
||||||
getVoucherActiveNum: api_url + '/admin/shop/analytics/order/getVoucherActiveNum',
|
api_url + '/admin/shop/analytics/order/getVoucherActiveNumToday',
|
||||||
getSaleOrderAmount: api_url + '/admin/shop/analytics/order/getSaleOrderAmount',
|
getVoucherActiveNum:
|
||||||
|
api_url + '/admin/shop/analytics/order/getVoucherActiveNum',
|
||||||
|
getSaleOrderAmount:
|
||||||
|
api_url + '/admin/shop/analytics/order/getSaleOrderAmount',
|
||||||
getOrderAmount: api_url + '/admin/shop/analytics/order/getOrderAmount',
|
getOrderAmount: api_url + '/admin/shop/analytics/order/getOrderAmount',
|
||||||
getDashboardTimeLine:
|
getDashboardTimeLine:
|
||||||
api_url + '/admin/shop/analytics/order/getDashboardTimeLine',
|
api_url + '/admin/shop/analytics/order/getDashboardTimeLine',
|
||||||
@ -90,7 +101,8 @@ let url = {
|
|||||||
},
|
},
|
||||||
return: {
|
return: {
|
||||||
// 商家端-退货单数
|
// 商家端-退货单数
|
||||||
getReturnNumToday: api_url + '/admin/shop/analytics/return/getReturnNumToday',
|
getReturnNumToday:
|
||||||
|
api_url + '/admin/shop/analytics/return/getReturnNumToday',
|
||||||
getReturnNum: api_url + '/admin/shop/analytics/return/getReturnNum',
|
getReturnNum: api_url + '/admin/shop/analytics/return/getReturnNum',
|
||||||
getReturnAmountTimeline:
|
getReturnAmountTimeline:
|
||||||
api_url + '/admin/shop/analytics/return/getReturnAmountTimeline',
|
api_url + '/admin/shop/analytics/return/getReturnAmountTimeline',
|
||||||
@ -415,17 +427,17 @@ let url = {
|
|||||||
},
|
},
|
||||||
// 商店
|
// 商店
|
||||||
shop: {
|
shop: {
|
||||||
merch:{
|
merch: {
|
||||||
// 商家申请入驻信息分页列表
|
// 商家申请入驻信息分页列表
|
||||||
merchList:api_url + '/admin/shop/merch/list',
|
merchList: api_url + '/admin/shop/merch/list',
|
||||||
// 商家申请入驻信息详情
|
// 商家申请入驻信息详情
|
||||||
merchDetail: api_url + '/admin/shop/merch/detail',
|
merchDetail: api_url + '/admin/shop/merch/detail',
|
||||||
// 审批商家申请入驻
|
// 审批商家申请入驻
|
||||||
merchApproval : api_url + '/admin/shop/merch/approval',
|
merchApproval: api_url + '/admin/shop/merch/approval',
|
||||||
// 发起合同签署
|
// 发起合同签署
|
||||||
createByFile : api_url + '/admin/shop/esign/sign-flow/create-by-file',
|
createByFile: api_url + '/admin/shop/esign/sign-flow/create-by-file',
|
||||||
//查看商家签署合同
|
//查看商家签署合同
|
||||||
checkContractFile : api_url + '/admin/shop/esign/signed/contract/file'
|
checkContractFile: api_url + '/admin/shop/esign/signed/contract/file',
|
||||||
},
|
},
|
||||||
activity: {
|
activity: {
|
||||||
lottery: {
|
lottery: {
|
||||||
@ -542,7 +554,8 @@ let url = {
|
|||||||
base: {
|
base: {
|
||||||
doDelete: api_url + '/admin/shop/hall-purchase-order-base/delete',
|
doDelete: api_url + '/admin/shop/hall-purchase-order-base/delete',
|
||||||
getList: api_url + '/admin/shop/hall-purchase-order-base/list',
|
getList: api_url + '/admin/shop/hall-purchase-order-base/list',
|
||||||
getSupplyOrderList: api_url + '/admin/shop/hall-purchase-order-base/getSupplyOrderList',
|
getSupplyOrderList:
|
||||||
|
api_url + '/admin/shop/hall-purchase-order-base/getSupplyOrderList',
|
||||||
doEdit: api_url + '/admin/shop/hall-purchase-order-base/edit',
|
doEdit: api_url + '/admin/shop/hall-purchase-order-base/edit',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -647,7 +660,8 @@ let url = {
|
|||||||
doEdit:
|
doEdit:
|
||||||
api_url + '/admin/shop/shop-base-product-category-mobile/edit',
|
api_url + '/admin/shop/shop-base-product-category-mobile/edit',
|
||||||
editState:
|
editState:
|
||||||
api_url + '/admin/shop/shop-base-product-category-mobile/editState',
|
api_url +
|
||||||
|
'/admin/shop/shop-base-product-category-mobile/editState',
|
||||||
doDelete:
|
doDelete:
|
||||||
api_url + '/admin/shop/shop-base-product-category-mobile/delete',
|
api_url + '/admin/shop/shop-base-product-category-mobile/delete',
|
||||||
},
|
},
|
||||||
@ -922,7 +936,8 @@ let url = {
|
|||||||
doCodeCreate:
|
doCodeCreate:
|
||||||
api_url + '/admin/shop/shop-store-activity-code/createCode',
|
api_url + '/admin/shop/shop-store-activity-code/createCode',
|
||||||
getCodeList: api_url + '/admin/shop/shop-store-activity-code/list',
|
getCodeList: api_url + '/admin/shop/shop-store-activity-code/list',
|
||||||
exportFile: api_url + '/admin/shop/shop-store-activity-code/exportFile',
|
exportFile:
|
||||||
|
api_url + '/admin/shop/shop-store-activity-code/exportFile',
|
||||||
doCodeDelete: api_url + '/admin/shop/shop-store-activity-code/delete',
|
doCodeDelete: api_url + '/admin/shop/shop-store-activity-code/delete',
|
||||||
getListsLotteryItems:
|
getListsLotteryItems:
|
||||||
api_url + '/admin/shop/shop-store-activity-base/listsLotteryItems',
|
api_url + '/admin/shop/shop-store-activity-base/listsLotteryItems',
|
||||||
@ -1019,12 +1034,14 @@ let url = {
|
|||||||
del: api_url + '/admin/shop/shop-store-product-tag/del',
|
del: api_url + '/admin/shop/shop-store-product-tag/del',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
printer:{
|
printer: {
|
||||||
//总后台-获取小票机品牌列表
|
//总后台-获取小票机品牌列表
|
||||||
getReceiptMachineList:api_url + '/admin/shop/store/printer/model/page',
|
getReceiptMachineList: api_url + '/admin/shop/store/printer/model/page',
|
||||||
addReceiptMachine:api_url + '/admin/shop/store/printer/model/add/new',
|
addReceiptMachine: api_url + '/admin/shop/store/printer/model/add/new',
|
||||||
delectReceiptMachine : api_url + '/admin/shop/store/printer/model/delete',
|
delectReceiptMachine:
|
||||||
updateReceiptMachine : api_url + '/admin/shop/store/printer/model/update',
|
api_url + '/admin/shop/store/printer/model/delete',
|
||||||
|
updateReceiptMachine:
|
||||||
|
api_url + '/admin/shop/store/printer/model/update',
|
||||||
//商家端-获取打印机列表
|
//商家端-获取打印机列表
|
||||||
getPrinterList: api_url + '/admin/shop/store/printer/page',
|
getPrinterList: api_url + '/admin/shop/store/printer/page',
|
||||||
//商家端-获取打印机详情
|
//商家端-获取打印机详情
|
||||||
@ -1032,22 +1049,25 @@ let url = {
|
|||||||
//商家端-获取打印机品牌下拉列表
|
//商家端-获取打印机品牌下拉列表
|
||||||
getPrinterModelList: api_url + '/admin/shop/store/printer/model/list',
|
getPrinterModelList: api_url + '/admin/shop/store/printer/model/list',
|
||||||
//商家端-获取打印机区域列表
|
//商家端-获取打印机区域列表
|
||||||
getPrinterflagList: api_url + '/admin/shop/store/printer/region/list',
|
getPrinterflagList: api_url + '/admin/shop/store/printer/region/list',
|
||||||
addPrinter:api_url + '/admin/shop/store/printer/add/new',
|
addPrinter: api_url + '/admin/shop/store/printer/add/new',
|
||||||
delectPrinter: api_url + '/admin/shop/store/printer/delete',
|
delectPrinter: api_url + '/admin/shop/store/printer/delete',
|
||||||
//商家端-更新打印机信息
|
//商家端-更新打印机信息
|
||||||
updatePrinterInfo: api_url + '/admin/shop/store/printer/update',
|
updatePrinterInfo: api_url + '/admin/shop/store/printer/update',
|
||||||
//商家端-更新打印机状态
|
//商家端-更新打印机状态
|
||||||
updatePrnterStatus: api_url + '/admin/shop/store/printer/status/update',
|
updatePrnterStatus: api_url + '/admin/shop/store/printer/status/update',
|
||||||
//商家端-测试打印
|
//商家端-测试打印
|
||||||
testPrinter:api_url + '/admin/shop/store/printer/print/order'
|
testPrinter: api_url + '/admin/shop/store/printer/print/order',
|
||||||
|
},
|
||||||
|
sameCityTransport: {
|
||||||
|
getSameCityTransport:
|
||||||
|
api_url + '/admin/shop/store/same-city-transport/detail',
|
||||||
|
saveSameCityTransport:
|
||||||
|
api_url + '/admin/shop/store/same-city-transport/save',
|
||||||
|
delectArea:
|
||||||
|
api_url + '/admin/shop/store/same-city-transport/delete/area',
|
||||||
|
getSFTypeList: api_url + '/admin/shop/shop-store-base/business/list',
|
||||||
},
|
},
|
||||||
sameCityTransport:{
|
|
||||||
getSameCityTransport: api_url + '/admin/shop/store/same-city-transport/detail',
|
|
||||||
saveSameCityTransport: api_url + '/admin/shop/store/same-city-transport/save',
|
|
||||||
delectArea:api_url + '/admin/shop/store/same-city-transport/delete/area',
|
|
||||||
getSFTypeList:api_url + '/admin/shop/shop-store-base/business/list'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
delivery: {
|
delivery: {
|
||||||
@ -1158,7 +1178,8 @@ let url = {
|
|||||||
api_url + '/admin/shop/shop-order-return/exportFileByIds',
|
api_url + '/admin/shop/shop-order-return/exportFileByIds',
|
||||||
doForceRefund: api_url + '/admin/shop/shop-order-return/doForceRefund',
|
doForceRefund: api_url + '/admin/shop/shop-order-return/doForceRefund',
|
||||||
editRefund: api_url + '/admin/shop/shop-order-return/editRefund',
|
editRefund: api_url + '/admin/shop/shop-order-return/editRefund',
|
||||||
transferToSupplier: api_url + '/admin/shop/shop-order-return/transferToSupplier',
|
transferToSupplier:
|
||||||
|
api_url + '/admin/shop/shop-order-return/transferToSupplier',
|
||||||
doUpdateReturns:
|
doUpdateReturns:
|
||||||
api_url + '/admin/shop/shop-order-return/doUpdateReturns',
|
api_url + '/admin/shop/shop-order-return/doUpdateReturns',
|
||||||
item: {
|
item: {
|
||||||
@ -1343,9 +1364,7 @@ let url = {
|
|||||||
getList: api_url + '/admin/admin/admin-log-error/list',
|
getList: api_url + '/admin/admin/admin-log-error/list',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
printer:{
|
printer: {},
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
add: api_url + '/order/add',
|
add: api_url + '/order/add',
|
||||||
|
|||||||
@ -125,6 +125,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>隐私协议</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<vab-quill
|
||||||
|
ref="vab-quill"
|
||||||
|
v-model="form.joininPrivacyAgreement"
|
||||||
|
:min-height="400"
|
||||||
|
:options="options"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button
|
||||||
|
icon="el-icon-s-tools"
|
||||||
|
type="primary"
|
||||||
|
@click="handleEdit('joininPrivacyAgreement')"
|
||||||
|
>
|
||||||
|
{{ __('修改') }}
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -145,6 +169,7 @@
|
|||||||
joinin_condition: '',
|
joinin_condition: '',
|
||||||
joinin_cooperation_details: '',
|
joinin_cooperation_details: '',
|
||||||
joinin_expenses_details: '',
|
joinin_expenses_details: '',
|
||||||
|
joininPrivacyAgreement:''
|
||||||
},
|
},
|
||||||
|
|
||||||
options: {
|
options: {
|
||||||
@ -182,17 +207,20 @@
|
|||||||
__,
|
__,
|
||||||
async fetchData() {
|
async fetchData() {
|
||||||
const { data } = await getList()
|
const { data } = await getList()
|
||||||
|
|
||||||
this.form = {
|
this.form = {
|
||||||
joinin_investment_direction: data.joinin_investment_direction,
|
joinin_investment_direction: data.joinin_investment_direction,
|
||||||
joinin_standard: data.joinin_standard,
|
joinin_standard: data.joinin_standard,
|
||||||
joinin_condition: data.joinin_condition,
|
joinin_condition: data.joinin_condition,
|
||||||
joinin_cooperation_details: data.joinin_cooperation_details,
|
joinin_cooperation_details: data.joinin_cooperation_details,
|
||||||
joinin_expenses_details: data.joinin_expenses_details,
|
joinin_expenses_details: data.joinin_expenses_details,
|
||||||
|
joininPrivacyAgreement : data.joininPrivacyAgreement
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async handleEdit(key) {
|
async handleEdit(key) {
|
||||||
const obj = {}
|
const obj = {}
|
||||||
obj[key] = this.form[key]
|
obj[key] = this.form[key]
|
||||||
|
|
||||||
const { msg, status } = await doEdit({
|
const { msg, status } = await doEdit({
|
||||||
param: JSON.stringify(obj),
|
param: JSON.stringify(obj),
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1114,7 +1114,9 @@ export default {
|
|||||||
if (data != null) {
|
if (data != null) {
|
||||||
this.pram = data
|
this.pram = data
|
||||||
// 代发货
|
// 代发货
|
||||||
|
|
||||||
this.data.wait_shipping_num = data.order.wait_shipping_num
|
this.data.wait_shipping_num = data.order.wait_shipping_num
|
||||||
|
|
||||||
// 待审核退货
|
// 待审核退货
|
||||||
this.data.review_num = data.return.review_num
|
this.data.review_num = data.return.review_num
|
||||||
// 违规商品
|
// 违规商品
|
||||||
|
|||||||
@ -238,9 +238,9 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
changeCode() {
|
changeCode() {
|
||||||
window.open(
|
// window.open(
|
||||||
`https://mal1.gpxscs.cn/admin/#/login?loginInfo=JsoN.parse(J.stringify(res.data))`
|
// `https://mal1.gpxscs.cn/admin/#/login?loginInfo=JsoN.parse(J.stringify(res.data))`
|
||||||
)
|
// )
|
||||||
|
|
||||||
// this.codeUrl = `https://www.oschina.net/action/user/captcha?timestamp=${new Date().getTime()}`
|
// this.codeUrl = `https://www.oschina.net/action/user/captcha?timestamp=${new Date().getTime()}`
|
||||||
this.verify_token = new Date().getTime()
|
this.verify_token = new Date().getTime()
|
||||||
|
|||||||
@ -1,20 +1,724 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="appVersion-container">这是商家版APP</div>
|
<div class="appVersion-container">
|
||||||
|
<div class="head">
|
||||||
|
<div class="head-add-btn">
|
||||||
|
<el-button
|
||||||
|
icon="el-icon-plus"
|
||||||
|
type="primary"
|
||||||
|
size="medium"
|
||||||
|
@click="handleShowDialog"
|
||||||
|
>
|
||||||
|
添加安卓包
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="head-content">
|
||||||
|
<span class="name">APP包市场:</span>
|
||||||
|
<el-select
|
||||||
|
v-model="selectId"
|
||||||
|
placeholder="请选择APP市场"
|
||||||
|
@change="handerSelectMarketId"
|
||||||
|
class="select-content"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.key"
|
||||||
|
v-for="(item, index) of options"
|
||||||
|
:key="index"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
<span class="name">安卓包名称:</span>
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入安卓包名称"
|
||||||
|
suffix-icon="el-icon-search"
|
||||||
|
v-model="appName"
|
||||||
|
size="medium"
|
||||||
|
class="input-with-select"
|
||||||
|
></el-input>
|
||||||
|
<el-button type="primary" size="medium" @click="handleSearch">
|
||||||
|
搜索
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
<el-button size="medium" @click="handleClear">清除条件</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
:height="tableConfig.height"
|
||||||
|
style="width: 100%"
|
||||||
|
:stripe="true"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
v-for="(item, index) in tabColumn"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
:width="item.width"
|
||||||
|
>
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<div class="" v-if="item.label == '操作'">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="handleEdit(row, $index)"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="item.label == '所属市场'">
|
||||||
|
{{ formatAppShopName(row) }}
|
||||||
|
</div>
|
||||||
|
<div v-else-if="item.label == '开启状态'">
|
||||||
|
<el-switch
|
||||||
|
v-model="row.status"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="2"
|
||||||
|
@change="handerDisableUpdateShopApp($event, row)"
|
||||||
|
></el-switch>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="item.label == '是否强制更新'">
|
||||||
|
<el-switch
|
||||||
|
v-model="row.is_force_update"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="2"
|
||||||
|
@change="handerIsUpdateShopApp($event, row)"
|
||||||
|
></el-switch>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="item.label == '序号'">
|
||||||
|
{{ $index + 1 }}
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
{{ row[item.prop] }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-dialog
|
||||||
|
class="receipt-machine-dialog"
|
||||||
|
:title="dialogTitle"
|
||||||
|
:top="'10vh'"
|
||||||
|
:width="'900px'"
|
||||||
|
:visible.sync="showDialog"
|
||||||
|
:before-close="handleCloseDialog"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="formDialog"
|
||||||
|
class="form-dialog"
|
||||||
|
:model="formDialog"
|
||||||
|
:rules="formDialogRules"
|
||||||
|
label-width="160px"
|
||||||
|
>
|
||||||
|
<el-form-item label="APP市场" prop="market_id">
|
||||||
|
<el-select v-model="formDialog.market_id" placeholder="请选择APP市场">
|
||||||
|
<el-option
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.key"
|
||||||
|
v-for="(item, index) of options"
|
||||||
|
:key="index"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="APP包名" prop="package_name">
|
||||||
|
<el-input
|
||||||
|
v-model="formDialog.package_name"
|
||||||
|
placeholder="例如:com.xiaofa.shopAdmin.apk"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="应用版本号" prop="version_key">
|
||||||
|
<el-input
|
||||||
|
v-model="formDialog.version_key"
|
||||||
|
placeholder="热更新包内部整数版本号,1-10000000"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="应用版本号名称" prop="version_name">
|
||||||
|
<el-input
|
||||||
|
v-model="formDialog.version_name"
|
||||||
|
placeholder="命名规则,如:1.23.21"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="apk 包下载地址" prop="download_apk_url">
|
||||||
|
<div class="form-item-flex">
|
||||||
|
<el-input
|
||||||
|
v-model="formDialog.download_apk_url"
|
||||||
|
placeholder="apk下载的地址"
|
||||||
|
></el-input>
|
||||||
|
<el-upload
|
||||||
|
class="upload"
|
||||||
|
ref="upload"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:on-preview="handlePreview"
|
||||||
|
:on-success="handleAKPUpLoadSuccess"
|
||||||
|
:data="uploadParams"
|
||||||
|
:before-upload="checkAPKname"
|
||||||
|
>
|
||||||
|
<el-button slot="trigger" size="small" type="primary">
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
</el-upload>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="wgt 包下载地址" prop="download_wgt_url">
|
||||||
|
<div class="form-item-flex">
|
||||||
|
<el-input
|
||||||
|
v-model="formDialog.download_wgt_url"
|
||||||
|
placeholder="wgt 包下载地址"
|
||||||
|
></el-input>
|
||||||
|
<el-upload
|
||||||
|
class="upload"
|
||||||
|
ref="upload"
|
||||||
|
:action="uploadUrl"
|
||||||
|
:on-preview="handlePreview"
|
||||||
|
:on-success="handleWGTUpLoadSuccess"
|
||||||
|
:data="uploadParams"
|
||||||
|
:before-upload="checkWGTname"
|
||||||
|
>
|
||||||
|
<el-button slot="trigger" size="small" type="primary">
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
</el-upload>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="发布版本详细说明" prop="description">
|
||||||
|
<vab-quill
|
||||||
|
ref="vab-quill"
|
||||||
|
v-model="formDialog.description"
|
||||||
|
:min-height="300"
|
||||||
|
:options="vbOptions"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="升级包开启状态" prop="is_force_update">
|
||||||
|
<el-switch
|
||||||
|
v-model="formDialog.status"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="2"
|
||||||
|
@change="handerDisableUpdateShopApp($event)"
|
||||||
|
></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否强制更新" prop="is_force_update">
|
||||||
|
<el-switch
|
||||||
|
v-model="formDialog.is_force_update"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="2"
|
||||||
|
@change="handerIsUpdateShopApp($event)"
|
||||||
|
></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="medium" @click="handleCloseDialog">取 消</el-button>
|
||||||
|
<el-button size="medium" type="primary" @click="handleSubmitForm">
|
||||||
|
确 定
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
<el-pagination
|
||||||
|
background
|
||||||
|
:current-page="params.pageNum"
|
||||||
|
:layout="layout"
|
||||||
|
:page-size="params.pageSize"
|
||||||
|
:total="total"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {
|
||||||
|
getShopAppVersionList,
|
||||||
|
addShopAppVersion,
|
||||||
|
updateShopAppVersion,
|
||||||
|
disableUpdateShopApp,
|
||||||
|
} from '@/api/appVersion/appVersion'
|
||||||
|
import VabQuill from '@/extra/VabQuill'
|
||||||
|
import { URL } from '@/config'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import { getToken } from '@/utils/token'
|
||||||
export default {
|
export default {
|
||||||
name: 'appVersion',
|
name: 'appVersion',
|
||||||
components: {},
|
components: {
|
||||||
data() {
|
VabQuill,
|
||||||
return {}
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
uploadParams: {
|
||||||
|
authorization: '',
|
||||||
|
},
|
||||||
|
uploadUrl: URL.action, //上传网址
|
||||||
|
showDialog: false,
|
||||||
|
isEdit: false,
|
||||||
|
dialogTitle: '添加APP包',
|
||||||
|
formDialog: {
|
||||||
|
id: '',
|
||||||
|
market_id: '',
|
||||||
|
package_name: '',
|
||||||
|
version_key: '',
|
||||||
|
version_name: '',
|
||||||
|
download_apk_url: '',
|
||||||
|
download_wgt_url: '',
|
||||||
|
description: '',
|
||||||
|
is_force_update: '',
|
||||||
|
status: '',
|
||||||
|
},
|
||||||
|
vbOptions: {
|
||||||
|
theme: 'snow',
|
||||||
|
bounds: document.body,
|
||||||
|
debug: 'warn',
|
||||||
|
modules: {
|
||||||
|
toolbar: {
|
||||||
|
container: [
|
||||||
|
['bold', 'italic', 'underline', 'strike'],
|
||||||
|
[{ header: [1, 2, 3, 4, 5, 6, false] }],
|
||||||
|
[{ size: ['small', false, 'large', 'huge'] }],
|
||||||
|
[{ color: [] }, { background: [] }],
|
||||||
|
['blockquote', 'code-block'],
|
||||||
|
[{ list: 'ordered' }, { list: 'bullet' }],
|
||||||
|
[{ script: 'sub' }, { script: 'super' }],
|
||||||
|
[{ indent: '-1' }, { indent: '+1' }],
|
||||||
|
[{ align: [] }],
|
||||||
|
[{ direction: 'rtl' }],
|
||||||
|
[{ font: [] }],
|
||||||
|
['clean'],
|
||||||
|
['link', 'image', 'vab-upload-image'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
placeholder: '',
|
||||||
|
readOnly: false,
|
||||||
|
},
|
||||||
|
formDialogRules: {
|
||||||
|
market_id: [
|
||||||
|
{ required: true, message: '请选择APP市场', trigger: 'change' },
|
||||||
|
],
|
||||||
|
package_name: [
|
||||||
|
{ required: true, message: '请输入APP包名', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
version_key: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入应用版本号',
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
version_name: [
|
||||||
|
{ required: true, message: '请输入应用版本号名称', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
download_apk_url: [
|
||||||
|
{ required: true, message: '请先上传apk 包', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
description: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入发布版本详细说明',
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
tableConfig: {
|
||||||
|
height: window.innerHeight - 220 - 150,
|
||||||
|
},
|
||||||
|
layout: 'total, sizes, prev, pager, next, jumper',
|
||||||
|
total: 0,
|
||||||
|
params: {
|
||||||
|
marketId: '',
|
||||||
|
keyword: '',
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
},
|
||||||
|
selectId: 1,
|
||||||
|
appName: null,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
key: 1,
|
||||||
|
label: '小米',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 2,
|
||||||
|
label: '华为',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 3,
|
||||||
|
label: '腾讯',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 4,
|
||||||
|
label: 'OPPO',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 5,
|
||||||
|
label: 'VIVO',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 6,
|
||||||
|
label: '三星',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 100,
|
||||||
|
label: '通用(不区分市场)',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tabColumn: [
|
||||||
|
{
|
||||||
|
prop: 'index',
|
||||||
|
label: '序号',
|
||||||
|
width: '51',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'market_id',
|
||||||
|
label: '所属市场',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'package_name',
|
||||||
|
label: 'APP包名字',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'version_key',
|
||||||
|
label: '应用版本号',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'version_name',
|
||||||
|
label: '应用版本号名称',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'created_at',
|
||||||
|
label: '创建时间',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'updated_at',
|
||||||
|
label: '更新时间',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'updateStatus',
|
||||||
|
label: '开启状态',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'isUpdateAdd',
|
||||||
|
label: '是否强制更新',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'operation',
|
||||||
|
label: '操作',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tableData: [
|
||||||
|
{
|
||||||
|
market_id: 100, // 各大安卓 APP 市场标识:1 - 小米;2 - 华为;3 - 腾讯应用市场;4 - OPPO;5 - VIVO;6 - 三星;100-通用包(不区分市场的包);
|
||||||
|
package_name: 'xftc', // app 包名
|
||||||
|
version_key: 2, //热更新包内部整数版本号,1-10000000
|
||||||
|
version_name: '1.0.2', //热更新包显示的版本号,用于标识不同的热更新版本,遵循一定命名规则,如 1.23.21
|
||||||
|
download_apk_url: 'https://mall.gpxscs.cn/abc.apk', // apk 包下载地址
|
||||||
|
download_wgt_url: 'https://mall.gpxscs.cn/abc.apk', // 增量包下载地址
|
||||||
|
file_ext: 'apk', // 更新包后缀,apk, wgt 等
|
||||||
|
release_time: '2025-03-17 00:00:01',
|
||||||
|
description: '发布版本详细说明',
|
||||||
|
is_force_update: 2, // 是否为强制更新,1-表示强制更新,2-表示非强制更新,
|
||||||
|
package_size: 12332, // 热更新包的大小,以字节为单位,方便用户了解更新所需流量
|
||||||
|
md5_checksum: '3650d648bfc19993f4408e4158b9782b', // apk 包md5加密摘要
|
||||||
|
status: 1,
|
||||||
|
created_by: '0',
|
||||||
|
updated_by: '0',
|
||||||
|
created_at: '2025-03-17 21:40:42',
|
||||||
|
updated_at: '2025-03-17 21:58:42',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({
|
||||||
|
token: 'user/token',
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.uploadParams.authorization = getToken()
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleShowDialog() {
|
||||||
|
this.showDialog = true
|
||||||
|
},
|
||||||
|
async getShopAppVersionList() {
|
||||||
|
this.params.marketId = this.selectId
|
||||||
|
|
||||||
|
let res = await getShopAppVersionList(this.params)
|
||||||
|
if (res && res.status == 200) {
|
||||||
|
this.tableData = res.data.items
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleEdit(row) {
|
||||||
|
this.showDialog = true
|
||||||
|
this.isEdit = true
|
||||||
|
this.formDialog = row
|
||||||
|
},
|
||||||
|
handleSubmitForm() {
|
||||||
|
this.$refs['formDialog'].validate(async (valid) => {
|
||||||
|
if (valid) {
|
||||||
|
let res = this.isEdit
|
||||||
|
? await updateShopAppVersion(this.formDialog)
|
||||||
|
: await addShopAppVersion(this.formDialog)
|
||||||
|
if (res && res.status == 200) {
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: this.isEdit ? '修改成功' : '添加成功!',
|
||||||
|
})
|
||||||
|
this.showDialog = false
|
||||||
|
this.isEdit = false
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
} else {
|
||||||
|
this.$message({
|
||||||
|
type: 'error',
|
||||||
|
message: res.msg,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCloseDialog() {
|
||||||
|
this.showDialog = false
|
||||||
|
if (this.isEdit) {
|
||||||
|
this.formDialog = {
|
||||||
|
market_id: '',
|
||||||
|
package_name: '',
|
||||||
|
version_key: '',
|
||||||
|
version_name: '',
|
||||||
|
download_apk_url: '',
|
||||||
|
download_wgt_url: '',
|
||||||
|
description: '',
|
||||||
|
is_force_update: '',
|
||||||
|
}
|
||||||
|
this.isEdit = false
|
||||||
|
}
|
||||||
|
this.$refs['formDialog'].resetFields()
|
||||||
|
},
|
||||||
|
handleClear() {
|
||||||
|
this.appName = ''
|
||||||
|
|
||||||
|
this.params = {
|
||||||
|
keyword: '',
|
||||||
|
marketId: '',
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
}
|
||||||
|
this.selectId = 1
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
},
|
||||||
|
handleSearch() {
|
||||||
|
this.params.keyword = this.appName
|
||||||
|
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
},
|
||||||
|
handleCurrentChange(pageNum) {
|
||||||
|
this.params.pageNum = pageNum
|
||||||
|
this.getReceiptMachineList()
|
||||||
|
},
|
||||||
|
handleSizeChange() {
|
||||||
|
this.params.pageSize = pageSize
|
||||||
|
this.getReceiptMachineList()
|
||||||
|
},
|
||||||
|
handlePreview(e) {},
|
||||||
|
checkWGTname(file) {
|
||||||
|
const isWGT = file.name.endsWith('.wgt')
|
||||||
|
|
||||||
|
if (!isWGT) {
|
||||||
|
this.$message.error('请上传WGT后缀的热更新包')
|
||||||
|
}
|
||||||
|
|
||||||
|
return isWGT
|
||||||
|
},
|
||||||
|
checkAPKname(file) {
|
||||||
|
const isAPK = file.type === 'application/vnd.android.package-archive'
|
||||||
|
|
||||||
|
if (!isAPK) {
|
||||||
|
this.$message.error('请上传APK后缀的安卓包')
|
||||||
|
}
|
||||||
|
|
||||||
|
return isAPK
|
||||||
|
},
|
||||||
|
handleAKPUpLoadSuccess(e) {
|
||||||
|
if (e && e.status == 200) {
|
||||||
|
this.formDialog.download_apk_url = e.data.media_url
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleWGTUpLoadSuccess(e) {
|
||||||
|
if (e && e.status == 200) {
|
||||||
|
this.formDialog.download_wgt_url = e.data.media_url
|
||||||
|
}
|
||||||
|
},
|
||||||
|
formatAppShopName(row) {
|
||||||
|
var name = ''
|
||||||
|
|
||||||
|
if (row) {
|
||||||
|
this.options.forEach((item) => {
|
||||||
|
if (row.market_id == item.key) {
|
||||||
|
name = item.label
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return name
|
||||||
|
},
|
||||||
|
handerSelectMarketId(e) {
|
||||||
|
this.selectId = e
|
||||||
|
},
|
||||||
|
async handerIsUpdateShopApp(e, row) {
|
||||||
|
this.formDialog = row
|
||||||
|
|
||||||
|
this.formDialog.is_force_update = e
|
||||||
|
|
||||||
|
if (row) {
|
||||||
|
let res = await updateShopAppVersion(this.formDialog)
|
||||||
|
if (res && res.status == 200) {
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: '状态修改成功!',
|
||||||
|
})
|
||||||
|
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handerDisableUpdateShopApp(e, row) {
|
||||||
|
let params = {
|
||||||
|
id: row ? row.id : this.formDialog.id,
|
||||||
|
status: e,
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$confirm(`您确认${e == 1 ? '开启' : '关闭'}升级包?`, '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
let res = await disableUpdateShopApp(params)
|
||||||
|
|
||||||
|
if (res && res.status == 200) {
|
||||||
|
this.$message({
|
||||||
|
type: 'success',
|
||||||
|
message: '状态修改成功!',
|
||||||
|
})
|
||||||
|
this.getShopAppVersionList()
|
||||||
|
} else {
|
||||||
|
this.$message({
|
||||||
|
type: 'error',
|
||||||
|
message: res.msg,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: 'info',
|
||||||
|
message: '已取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {},
|
|
||||||
methods: {},
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.appVersion-container {
|
.appVersion-container {
|
||||||
|
padding: 0 20px !important;
|
||||||
|
.head {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: inset 0 -1px 0 #efefef;
|
||||||
|
|
||||||
|
.head-add-btn {
|
||||||
|
}
|
||||||
|
|
||||||
|
.head-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
margin: 20px 0;
|
||||||
|
|
||||||
|
.name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-with-select {
|
||||||
|
margin: 0 10px;
|
||||||
|
width: 270px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-content {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.receipt-machine-dialog {
|
||||||
|
.el-dialog {
|
||||||
|
border: 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
background-clip: padding-box;
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header {
|
||||||
|
padding: 12px 20px;
|
||||||
|
border-bottom: 1px solid #f2f2f2;
|
||||||
|
|
||||||
|
.el-dialog__title {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.8);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__headerbtn {
|
||||||
|
top: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input {
|
||||||
|
width: 63%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
.el-input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__body {
|
||||||
|
padding: 40px 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #666;
|
||||||
|
min-height: 108px;
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: 920px;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
.form-dialog {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-input__inner {
|
||||||
|
height: 38px;
|
||||||
|
width: 410px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__footer {
|
||||||
|
border-top: 1px solid #f2f2f2;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-form-item__label {
|
||||||
|
padding: 0 24px 0 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item-flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user