This commit is contained in:
全栈小学生 2023-07-01 18:00:34 +08:00
parent 2146de16fe
commit 2f230c9255
5 changed files with 212 additions and 17 deletions

View File

@ -0,0 +1,20 @@
{
"operatePrompt": "操作提示",
"operatePromptTipsOne": "下载之后需使用微信开发者工具上传代码,微信开发者工具下载地址",
"operatePromptTipsTwo": "上传之后登录微信公众平台,在版本管理中选择刚上传的版本提交审核,审核通过之后即可发布小程序。",
"weappName": "小程序名称",
"weappId": "小程序ID",
"weappOriginalId": "小程序原始ID",
"weappInfo": "小程序信息",
"versionCode": "小程序代码",
"version": "版本",
"down": "下载",
"codeDown": "代码下载",
"downWeappCode": "下载代码",
"weappTips": "请先完善小程序配置",
"codeDownOneTips": "下载小程序代码包",
"codeDownTwoDesc": "上传代码",
"codeDownTwoTips": "下载完成之后,使用微信开发工具进行上传",
"codeDownThreeDesc": "发布小程序",
"codeDownThreeTips": "上传之后提交审核,审核通过发布小程序"
}

View File

@ -0,0 +1,189 @@
<template>
<div class="main-container min-h-[300px]" v-loading="loading">
<div class="flex ml-[18px] justify-between items-center mt-[20px]" v-if="!loading">
<span class="text-[20px]">{{pageName}}</span>
</div>
<el-card class="box-card !border-none" shadow="never" v-if="!loading">
<el-collapse v-model="activeNames">
<el-collapse-item :title="t('operatePrompt')" name="1">
<div>
<p class="indent-4">{{ t('operatePromptTipsOne') }}: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html</p>
<p class="indent-4">{{ t('operatePromptTipsTwo') }}</p>
</div>
</el-collapse-item>
</el-collapse>
<el-row class="mt-[50px]">
<el-col :span="12">
<div class="p-[20px]">
<p class="flex items-center"><span class="block w-[3px] h-[14px] bg-[#273de3] mr-[10px] bg-primary"></span><span class="text-[14px] font-bold">{{ t('weappInfo') }}</span></p>
<div class="mt-[30px]">
<div class="flex items-center justify-center mb-[30px]">
<img class="w-[150px] h-[150px]" src=""/>
</div>
<div class="flex">
<div class="mr-[30px] w-1/2 ">
<p class="text-[12px] mt-2 text-right"><span class="text-[#999]">{{ t('weappName') }}</span></p>
<p class="text-[12px] mt-2 text-right"><span class="text-[#999]">{{ t('weappId') }}</span></p>
<p class="text-[12px] mt-2 text-right"><span class="text-[#999]">{{ t('weappOriginalId') }}</span></p>
</div>
<div class="w-1/2">
<p class="text-[12px] mt-2 text-left">{{ weapp_config.weapp_name }}</p>
<p class="text-[12px] mt-2 text-left">{{ weapp_config.app_id }} </p>
<p class="text-[12px] mt-2 text-left">{{ weapp_config.weapp_original }} </p>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<div class="p-[20px]">
<p class="flex items-center"><span class="block w-[3px] h-[14px] bg-[#273de3] mr-[10px] bg-primary"></span><span class="text-[14px] font-bold">{{ t('codeDown') }}</span></p>
<div class="mt-[30px]">
<div style="height: 300px">
<div class="flex">
<div>
<div
class="w-[16px] h-[16px] flex items-center bg-[#D1EBFF] border-[1px] border-[#0091FF] rounded-[999px]">
<div class="w-[8px] h-[8px] mx-auto bg-[#0091FF] rounded-[999px]"></div>
</div>
<div class="w-[2px] h-[100px] bg-[#D1EBFF] mx-auto"></div>
</div>
<div class="ml-[20px] leading-[1]">
<span class="leading-[1] text-[14px]">{{ t('codeDownOneTips') }}</span>
<div class="mt-3">
<el-button type="primary" class="w-[100px]" @click="showDialog = true">{{ t('downWeappCode') }}</el-button>
</div>
</div>
</div>
<div class="flex">
<div>
<div
class="w-[16px] h-[16px] flex items-center bg-[#D1EBFF] border-[1px] border-[#0091FF] rounded-[999px]">
<div class="w-[8px] h-[8px] mx-auto bg-[#0091FF] rounded-[999px]"></div>
</div>
<div class="w-[2px] h-[100px] bg-[#D1EBFF] mx-auto"></div>
</div>
<div class="ml-[20px] leading-[1]">
<span class="leading-[1] text-[14px]">{{ t('codeDownTwoDesc') }}</span>
<div class="mt-2">
<p class="text-[12px] text-[#999]">{{ t('codeDownTwoTips') }}</p>
</div>
</div>
</div>
<div class="flex">
<div>
<div
class="w-[16px] h-[16px] flex items-center bg-[#D1EBFF] border-[1px] border-[#0091FF] rounded-[999px]">
<div class="w-[8px] h-[8px] mx-auto bg-[#0091FF] rounded-[999px]"></div>
</div>
</div>
<div class="ml-[20px] leading-[1]">
<span class="leading-[1] text-[14px]">{{ t('codeDownThreeDesc') }}</span>
<div class="mt-2">
<p class="text-[12px] text-[#999]">{{ t('codeDownThreeTips') }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</el-card>
<el-dialog v-model="showDialog" :title="t('versionCode')" width="550px" :destroy-on-close="true">
<el-table :data="weappTableData.data" size="large" v-loading="weappTableData.loading">
<el-table-column prop="version" :label="t('version')" min-width="100" />
<el-table-column prop="create_time" :label="t('createTime')" min-width="150" />
<el-table-column :label="t('operation')" fixed="right" width="100">
<template #default="{ row }">
<el-button type="danger" link @click="down(row.id)">{{ t('down') }}</el-button>
</template>
</el-table-column>
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="weappTableData.page" v-model:page-size="weappTableData.limit" layout="total, prev, pager, next" :total="weappTableData.total" @current-change="loadWeappTemplateList" />
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="showDialog = false">{{ t('close') }}</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { reactive, ref, watch } from 'vue'
import { getWeappConfig, getVersionList, versionDown } from '@/api/weapp'
import { t } from '@/lang'
import { useClipboard } from '@vueuse/core'
import { ElMessage, FormInstance, FormRules } from 'element-plus'
import { useRoute } from 'vue-router'
const route = useRoute()
const pageName = route.meta.title
const loading = ref(true)
const activeNames = ref('1')
const showDialog = ref(false)
const weappTableData = reactive({
page: 1,
limit: 5,
total: 0,
loading: true,
data: []
})
const weapp_config = ref([])
const checkWeappConfig = () =>{
getWeappConfig().then(res => {
if(res.data.app_id != ''){
loading.value = false
weapp_config.value = res.data
}else{
ElMessage(t('weappTips'))
setTimeout(function() {
history.back()
}, 500);
}
})
}
checkWeappConfig()
/**
* 获取版本列表
*/
const loadWeappTemplateList = (page: number = 1) => {
weappTableData.loading = true
weappTableData.page = page
getVersionList({
page: weappTableData.page,
limit: weappTableData.limit,
}).then(res => {
weappTableData.loading = false
weappTableData.data = res.data.data
weappTableData.total = res.data.total
}).catch(() => {
weappTableData.loading = false
})
}
loadWeappTemplateList()
const down = (id) => {
versionDown(id).then(()=>{})
}
</script>
<style lang="scss" scoped>
.el-collapse {
border: 0px !important
}
.el-collapse-item .el-collapse-item__wrap {
border: 0px !important
}
</style>

View File

@ -67,7 +67,7 @@
<el-table-column :show-overflow-tooltip="true" :label="t('memberInfo')" align="left" min-width="140"> <el-table-column :show-overflow-tooltip="true" :label="t('memberInfo')" align="left" min-width="140">
<template #default="{ row }"> <template #default="{ row }">
<div class="flex items-center cursor-pointer " @click="toMember(row.member.member_id)"> <div class="flex items-center cursor-pointer " @click="toMember(row.member.member_id)">
<img class="w-[50px] h-[50px] mr-[10px]" v-if="row.headimg" :src="img(row.member.headimg)" alt=""> <img class="w-[50px] h-[50px] mr-[10px]" v-if="row.member.headimg" :src="img(row.member.headimg)" alt="">
<img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt=""> <img class="w-[50px] h-[50px] mr-[10px]" v-else src="@/assets/images/default_headimg.png" alt="">
<div class="flex flex flex-col"> <div class="flex flex flex-col">
<span class="">{{ row.member.nickname || '' }}</span> <span class="">{{ row.member.nickname || '' }}</span>

View File

@ -23,7 +23,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="mt-[16px] flex justify-end"> <div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="weappTableData.page" v-model:page-size="weappTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="cronTableData.total" @size-change="loadCronList()" @current-change="loadCronList" /> <el-pagination v-model:current-page="weappTableData.page" v-model:page-size="weappTableData.limit" layout="total, sizes, prev, pager, next, jumper" :total="weappTableData.total" @size-change="loadWeappTemplateList()" @current-change="loadWeappTemplateList" />
</div> </div>
</div> </div>
@ -82,18 +82,8 @@ const weappTableData = reactive({
last_time:'' last_time:''
} }
}) })
const templateList = ref([])
const date_type = ref([])
const week_list = ref([])
const searchFormRef = ref<FormInstance>() const searchFormRef = ref<FormInstance>()
const setTypeList = async () => {
templateList.value = await (await getCronTemplate()).data
date_type.value = await (await getCronDateType()).data
week_list.value = await (await getWeek()).data
}
setTypeList()
/** /**
* 获取任务列表 * 获取任务列表
*/ */

View File

@ -370,11 +370,7 @@ function filter($string)
*/ */
function create_no(string $prefix = '', string $tag = '') function create_no(string $prefix = '', string $tag = '')
{ {
$data_center_id = 1; return $prefix.date('YmdHis').$tag;
$machine_id = 2;
$snowflake = new Snowflake($data_center_id, $machine_id);
$id = $snowflake->generateId();
return $prefix.date('YmdHi').$tag.$id;
} }
/** /**