Merge remote-tracking branch 'origin/main'

# Conflicts:
#	pages.json
#	pages/index.vue
main
Connor 2024-06-05 12:48:21 +08:00
commit ea4db68fbe
28 changed files with 1308 additions and 176 deletions

View File

@ -4,8 +4,8 @@ export default {
uploadQiNiuDomain: 'https://upload-z2.qiniup.com', uploadQiNiuDomain: 'https://upload-z2.qiniup.com',
// baseUrl: 'https://vue.ruoyi.vip/prod-api', // baseUrl: 'https://vue.ruoyi.vip/prod-api',
// baseUrl: 'http://47.93.242.168:8080', // baseUrl: 'http://47.93.242.168:8080',
baseUrl: 'http://47.93.242.168:8080', // baseUrl: 'http://47.93.242.168:8080',
// baseUrl: 'http://localhost:8080', baseUrl: 'http://localhost:8080',
// 应用信息 // 应用信息
appInfo: { appInfo: {
// 应用名称 // 应用名称

View File

@ -12,6 +12,7 @@ export function createApp() {
app.config.globalProperties.iconConfig = iconConfig app.config.globalProperties.iconConfig = iconConfig
app.use(uviewPlus) app.use(uviewPlus)
app.use(store) app.use(store)
// app.use(uView) // app.use(uView)
install(app) install(app)
return { return {

View File

@ -22,6 +22,7 @@
"dayjs": "^1.11.11", "dayjs": "^1.11.11",
"qiniu": "^7.12.0", "qiniu": "^7.12.0",
"qiniu-js": "^3.4.2", "qiniu-js": "^3.4.2",
"quill": "^1.3.7",
"uview-plus": "^3.2.15" "uview-plus": "^3.2.15"
} }
} }

View File

@ -8,9 +8,6 @@
} }
}, },
"pages": [ "pages": [
{ {
"path": "pages/index", "path": "pages/index",
"style": { "style": {
@ -19,7 +16,14 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, },
{
"path" : "pages/signln/signid",
"style" :
{
"navigationBarTitleText" : "签到任务",
"navigationStyle": "custom"
}
},
{ {
"path": "pages/signln/signiddetails", "path": "pages/signln/signiddetails",
"style": { "style": {
@ -28,6 +32,50 @@
} }
}, },
{
"path" : "pages/signln/exchangemall",
"style" :
{
"navigationBarTitleText" : "兑换商城",
"navigationStyle": "custom"
}
},
{
"path" : "pages/signln/exdetail",
"style" :
{
"navigationBarTitleText" : "兑换商城详情",
"navigationStyle": "custom"
}
},
{
"path": "pages/common/talkState/publish",
"style": {
"navigationBarTitleText": "发布活动",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/common/talkState/audit",
"style": {
"navigationBarTitleText": "审核中",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/common/talkState/auditFailure",
"style": {
"navigationBarTitleText": "审核不通过",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{ {
@ -58,6 +106,14 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
} }
, {
"path": "pages/activity/publish",
"style": {
"navigationBarTitleText": "发布活动",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}
, { , {
"path": "pages/work/index", "path": "pages/work/index",
"style": { "style": {

View File

@ -0,0 +1,14 @@
<!-- 添加好友 -->
<template>
<view>
</view>
</template>
<script setup>
</script>
<style>
</style>

View File

@ -0,0 +1,14 @@
<!-- 消息通知 -->
<template>
<view>
</view>
</template>
<script setup>
</script>
<style>
</style>

174
pages/activity/publish.vue Normal file
View File

@ -0,0 +1,174 @@
<template>
<view>
<!-- 顶部导航栏 -->
<up-navbar leftText="" title="" :placeholder="true" :safeAreaInsetTop="true" @leftClick="leftClick"
:bgColor="bgColor">
<template #center>
<div class="navbarcenter"><span>发布活动</span></div>
</template>
</up-navbar>
</view>
<view class="bgc"></view>
<view class="cardz">
<view class="titleInfo">
<up-input placeholder="输入活动标题~5~20个字" v-model="title" border="none" maxlength="20" fontSize="34rpx"
color="#C0C0C0" clearable></up-input>
<view class="xian"></view>
</view>
<view class="contentInfo">
<up-textarea v-model="content" placeholder="
活动图片最多可发布两张
输入准确定位可以更好提供活动信息奥安全指南请勿发布带有个人信息住址" count border="none" height="270" maxlength="500"
placeholderStyle="color: #c0c0c0;font-size: 30rpx; background:none;"></up-textarea>
</view>
<view class="cardzfile">
<fileUpload v-model="fileList1" :fileTypeInfo="fileTypeInfo1"></fileUpload>
</view>
</view>
<view class="cardx">
<up-cell-group :border="false">
<up-cell :isLink="true" :center="true">
<template #title style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
<image :src="tu52" style="width: 30rpx; height: 32rpx;"></image>
<span>请选择活动开始时间</span>
</template>
</up-cell>
<up-cell :isLink="true" :center="true">
<template #title style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
<image :src="tu53" style="width: 30rpx; height: 32rpx;"></image>
<span>请选择活动结束时间</span>
</template>
</up-cell>
<up-cell :border="false" :isLink="true" :center="true">
<template #title style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
<image :src="tu51" style="width: 30rpx; height: 32rpx;"></image>
<span>添加活动具体位置</span>
</template>
</up-cell>
</up-cell-group>
</view>
<view class="cardxx">
<up-button color="#C9F6F5" size="large" shape="circle" @click="publish"><span
class="fbText">发布</span></up-button>
<view style="width: 26rpx;height: 80rpx;"></view>
<up-button color="#F8F8E3" size="large" shape="circle" @click="draft" style="margin-left: 26rpx;"><span
class="cgText">存草稿</span></up-button>
</view>
</template>
<script setup>
import fileUpload from '../common/file/fileUpload'
import { onShow, onLoad } from '@dcloudio/uni-app'
import { ref, reactive, getCurrentInstance } from 'vue'
import { useStore } from 'vuex';
const { proxy } = getCurrentInstance();
const iconConfig = proxy.iconConfig;
const tu51 = iconConfig.tu51;
const tu52 = iconConfig.tu52;
const tu53 = iconConfig.tu53;
const title = ref('')
const content = ref('');
const fileList1 = ref([])
const fileTypeInfo1 = ref('image')
const bgColor = ref('');
bgColor.value = 'rgba(170, 0, 0, 0)'
onLoad((options) => {
console.log("页面参数:", options.id);
})
const leftClick = () => {
proxy.$tab.navigateBack(1)
}
const draft = () => {
console.log("存草稿");
}
const publish = () => {
console.log("发布");
}
</script>
<style lang="scss" >
.navbarcenter {
font-weight: 400;
font-size: 36rpx;
text-align: left;
color: #000000;
}
.bgc {
width: 100%;
height: 500rpx;
background: linear-gradient(-180deg, #c9f6f5, #ffffff);
position: fixed;
top: 0rpx;
left: 0rpx;
z-index: -1;
}
.cardz {
margin-left: 32rpx;
margin-right: 32rpx;
.titleInfo {
margin-top: 40rpx;
.xian {
margin-top: 32rpx;
height: 2rpx;
border-radius: 1rpx 1rpx 1rpx 1rpx;
background: #ffffff;
}
}
.contentInfo {
margin-top: 46rpx;
}
.cardzfile {
background-color: #FFFFFF;
}
}
.cardx {
background-color: #FFFFFF;
padding-top: 72rpx;
margin-left: 32rpx;
margin-right: 32rpx;
.c1 {
margin-top: 2rpx;
width: 100%;
height: 102rpx;
display: flex;
align-items: center;
}
}
.cardxx {
display: flex;
margin-left: 32rpx;
margin-right: 32rpx;
margin-top: 80rpx;
.fbText {
font-weight: 400;
font-size: 30rpx;
color: #FBFBFB !important;
}
.cgText {
font-weight: 400;
font-size: 30rpx;
color: #999999 !important;
}
}
</style>

View File

@ -43,6 +43,12 @@ import { useStore } from 'vuex';
const emit = defineEmits(['scrolltolower']); const emit = defineEmits(['scrolltolower']);
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const iconConfig = proxy.iconConfig;
const tu21 = iconConfig.tu21;
const tu22 = iconConfig.tu22;
const tu51 = iconConfig.tu51;
const tu52 = iconConfig.tu52;
const tu53 = iconConfig.tu53;
const props = defineProps({ const props = defineProps({
modelValue: Array modelValue: Array
}); });

View File

@ -113,6 +113,7 @@ const afterRead = async (event) => {
}; };
const uploadFilePromise = async (fileInfo1, name) => { const uploadFilePromise = async (fileInfo1, name) => {
console.log("fileInfo1:",fileInfo1);
// //
let fileNameOld = [0, 1]; let fileNameOld = [0, 1];
if (fileInfo1.name !== undefined) { if (fileInfo1.name !== undefined) {
@ -122,12 +123,14 @@ const uploadFilePromise = async (fileInfo1, name) => {
fileInfo.name = fileNameOld[0] + "_" + store.state.user.phoneType + "_" + name; fileInfo.name = fileNameOld[0] + "_" + store.state.user.phoneType + "_" + name;
let extension1 = fileInfo1.url.split('.'); let extension1 = fileInfo1.url.split('.');
// h5 // h5
if (extension1[1] == null) { if (extension1[1] === undefined) {
extension1[1] = fileNameOld[1]; extension1[1] = fileNameOld[fileNameOld.length-1]; //
} }
//typevideo/mp4type //typevideo/mp4type
fileInfo.type = fileInfo1.type + "/" + extension1[1]; fileInfo.type = fileInfo1.type + "/" + extension1[extension1.length-1];
console.log("fileInfo.type:",fileInfo);
fileInfo.extension = extension1[1]; fileInfo.extension = extension1[1];
try { try {
const tokenData = await getQNtoken(fileInfo); const tokenData = await getQNtoken(fileInfo);

View File

@ -0,0 +1,13 @@
:deep(.uni-nav-bar-text.data-v-26544265) {
font-size: 36rpx;
font-weight: 600;
}
:deep(.uni-icons) {
font-family: uniicons;
text-decoration: none;
text-align: center;
width: 31rpx;
height: 44rpx;
line-height: 44rpx;
}

View File

@ -0,0 +1,43 @@
<template>
<view class="uninavbars">
<image :src="leftImage" @click="left_return"></image>
</view>
<view class="uninavbar">
<uni-nav-bar statusBar="false" :fixed="true" :border="false" :background-color=background_color :title="title" />
</view>
</template>
<script setup>
import {
ref,
toRefs,
defineProps,
defineEmits
} from "vue";
const props = defineProps({
title: String,
background_color:String
})
const {
title,
background_color
} = toRefs(props)
let leftImage = ref("../../../static/images/sign/return.png")
</script>
<style>
.uninavbars {
position: fixed;
z-index: 9999;
top: 110rpx;
left: 32rpx;
}
.uninavbars>image {
width: 31rpx;
height: 44rpx;
color: #000000;
}
</style>

View File

@ -0,0 +1,18 @@
<template>
<view>
</view>
</template>
<script setup>
import { onShow, onLoad } from '@dcloudio/uni-app'
import { getDicts } from "@/api/system/dict/data"
import { ref, reactive, getCurrentInstance } from 'vue'
import { useStore } from 'vuex';
const emit = defineEmits(['scrolltolower']);
const { proxy } = getCurrentInstance();
const iconConfig = proxy.iconConfig;
const tu21 = iconConfig.tu21;
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,18 @@
<template>
<view>
</view>
</template>
<script setup>
import { onShow, onLoad } from '@dcloudio/uni-app'
import { getDicts } from "@/api/system/dict/data"
import { ref, reactive, getCurrentInstance } from 'vue'
import { useStore } from 'vuex';
const emit = defineEmits(['scrolltolower']);
const { proxy } = getCurrentInstance();
const iconConfig = proxy.iconConfig;
const tu21 = iconConfig.tu21;
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,103 @@
<template>
<view>
<view>
<!-- 顶部导航栏 -->
<up-navbar leftText="" title="" :placeholder="true" :safeAreaInsetTop="true" @leftClick="leftClick"
:bgColor="bgColor">
<template #center>
<div class="navbarcenter"><span>发布话题</span></div>
</template>
</up-navbar>
</view>
<image class="bacimg2" :src="sh2x"></image>
<view class="bgc"></view>
<view class="cardz">
<image :src="sh2x1" class="shenhe2x1"></image>
<span class="text">待审核</span>
</view>
<view style="position: fixed; top: 632rpx; width: 100%; padding-left: 32rpx; padding-right: 32rpx;">
<up-button color="#c0f0ec" size="large" shape="circle" @click="publish"><span
class="fbText">继续发布</span></up-button>
</view>
</view>
</template>
<script setup>
import { onShow, onLoad } from '@dcloudio/uni-app'
import { getDicts } from "@/api/system/dict/data"
import { ref, reactive, getCurrentInstance } from 'vue'
import { useStore } from 'vuex';
const emit = defineEmits(['scrolltolower']);
const { proxy } = getCurrentInstance();
const iconConfig = proxy.iconConfig;
const sh2x1 = iconConfig.sh2x1;
const sh2x = iconConfig.sh2x;
const bgColor = ref('');
bgColor.value = 'rgba(170, 0, 0, 0)'
const leftClick = () => {
proxy.$tab.navigateBack(1)
}
</script>
<style lang="scss" scoped>
.bacimg2 {
width: 508rpx;
height: 540rpx;
position: fixed;
top: -100rpx;
left: -100rpx;
}
.navbarcenter {
font-weight: 400;
font-size: 36rpx;
text-align: left;
color: #000000;
}
.bgc {
width: 100%;
height: 500rpx;
background: linear-gradient(-180deg, #a3e6df, #ffffff);
position: fixed;
top: 0rpx;
left: 0rpx;
z-index: -1;
}
.shenhe2x1 {
width: 232rpx;
height: 228rpx;
position: fixed;
top: 276rpx;
left: 260rpx;
}
.text {
font-weight: 400;
font-size: 48rpx;
text-align: left;
color: #00CCBE !important;
position: fixed;
top: 500rpx;
left: 300rpx;
}
.cardz{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.fbText{
font-weight: 400;
font-size: 30rpx;
text-align: left;
color: #00CCBE !important;
}
</style>

View File

@ -10,7 +10,7 @@
<!-- 加号小弹窗 --> <!-- 加号小弹窗 -->
<view class="postTypeContainer" v-if="postTypeOpen"> <view class="postTypeContainer" v-if="postTypeOpen">
<view class="postTypeWindow" v-for="(item, index) in postTypeList" :key="index"> <view class="postTypeWindow" v-for="(item, index) in postTypeList" :key="index">
<text>{{item}}</text> <text @click="publishTalk(item)">{{item.lable}}</text>
</view> </view>
</view> </view>
</view> </view>
@ -326,7 +326,6 @@ import PostView from "@/pages/common/postview/index.vue";
</script> </script>
<style lang="scss"> <style lang="scss">
// //
:deep(.u-navbar__content__left.data-v-f631659b, .u-navbar__content__right.data-v-f631659b){ :deep(.u-navbar__content__left.data-v-f631659b, .u-navbar__content__right.data-v-f631659b){

View File

@ -85,7 +85,7 @@ const loginSuccess = async () => {
await store.dispatch('GetInfo') await store.dispatch('GetInfo')
await store.dispatch('getQNDomainInfo') await store.dispatch('getQNDomainInfo')
proxy.$tab.reLaunch('/pages/index'); proxy.$tab.reLaunch('/pages/index');
// await store.dispatch('GetUserInfo'); store.dispatch('GetUserInfo');
} catch (error) { } catch (error) {
console.log("获取用户信息失败", error) console.log("获取用户信息失败", error)
} }

View File

@ -0,0 +1,214 @@
<!-- 兑换商城 -->
<template class="content">
<navbar_neadVue title="兑换商城"></navbar_neadVue>
<view class="view-top">
<view class="view-top-rigth-text">
<text>我的校园币:{{count}}</text>
</view>
</view>
<view class="cp">
<view class="view-content" v-for="(item,index) in arr" :key="index">
<view class="content-main">
<view class="content-image">
<image :src="item.src"></image>
</view>
<view class="content-text">
<view class="text1">
{{item.content}}
</view>
<view class="text-flex">
<view class="text2">
兑换所需
</view>
<view class="text3">
<image src="../../static/images/sign/1.png"></image>
<text>{{item.count}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
ref,
reactive
} from "vue";
import navbar_neadVue from "../common/navbar/navbar_nead.vue";
const count = ref("750");
let arr = reactive([{
id: 1,
src: "https://cbu01.alicdn.com/img/ibank/2019/524/629/11890926425_297889188.jpg",
content: "[端午礼盒] 西凤酒52度头曲礼盒 陕西凤香型白酒礼11111111111",
count: 700
},
{
id: 2,
src: "https://cbu01.alicdn.com/img/ibank/2016/442/823/3216328244_1451018438.jpg",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 200
},
{
id: 3,
src: "https://ts1.cn.mm.bing.net/th/id/R-C.2bcea282254788c581f0a18f47efb5f8?rik=rcZeIVRgTcWUkQ&riu=http%3a%2f%2fhimg2.huanqiu.com%2fattachment2010%2f2019%2f0429%2f10%2f58%2f20190429105829589.jpg&ehk=HCIAZrOId0EVKf%2bFyNg7cgff6Cg8WLUCNHpaDgwi1ng%3d&risl=&pid=ImgRaw&r=0",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 500
},
{
id: 3,
src: "https://ts1.cn.mm.bing.net/th/id/R-C.2bcea282254788c581f0a18f47efb5f8?rik=rcZeIVRgTcWUkQ&riu=http%3a%2f%2fhimg2.huanqiu.com%2fattachment2010%2f2019%2f0429%2f10%2f58%2f20190429105829589.jpg&ehk=HCIAZrOId0EVKf%2bFyNg7cgff6Cg8WLUCNHpaDgwi1ng%3d&risl=&pid=ImgRaw&r=0",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 500
},
{
id: 3,
src: "https://ts1.cn.mm.bing.net/th/id/R-C.2bcea282254788c581f0a18f47efb5f8?rik=rcZeIVRgTcWUkQ&riu=http%3a%2f%2fhimg2.huanqiu.com%2fattachment2010%2f2019%2f0429%2f10%2f58%2f20190429105829589.jpg&ehk=HCIAZrOId0EVKf%2bFyNg7cgff6Cg8WLUCNHpaDgwi1ng%3d&risl=&pid=ImgRaw&r=0",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 500
},
{
id: 3,
src: "https://ts1.cn.mm.bing.net/th/id/R-C.2bcea282254788c581f0a18f47efb5f8?rik=rcZeIVRgTcWUkQ&riu=http%3a%2f%2fhimg2.huanqiu.com%2fattachment2010%2f2019%2f0429%2f10%2f58%2f20190429105829589.jpg&ehk=HCIAZrOId0EVKf%2bFyNg7cgff6Cg8WLUCNHpaDgwi1ng%3d&risl=&pid=ImgRaw&r=0",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 500
},
{
id: 3,
src: "https://ts1.cn.mm.bing.net/th/id/R-C.2bcea282254788c581f0a18f47efb5f8?rik=rcZeIVRgTcWUkQ&riu=http%3a%2f%2fhimg2.huanqiu.com%2fattachment2010%2f2019%2f0429%2f10%2f58%2f20190429105829589.jpg&ehk=HCIAZrOId0EVKf%2bFyNg7cgff6Cg8WLUCNHpaDgwi1ng%3d&risl=&pid=ImgRaw&r=0",
content: "男生酷帅穿搭套装休闲夏季青少年潮牌短袖短裤初中1111111111 ",
count: 500
},
]);
function return_left(){
console.log("返回事件")
}
</script>
<style>
.content {
background: #faf9fa;
}
.view-top {
/* height: 100rpx; */
}
.view-top-rigth-text {
margin-top: 24rpx;
margin-left: 479rpx;
margin-right: 32rpx;
}
.view-top-rigth-text>text {
font-weight: Regular;
width: 239rpx;
height: 31rpx;
font-size: 30rpx;
text-align: left;
color: #000000;
}
.cp {
display: grid;
grid-template-columns: auto auto;
margin-left: 32rpx;
margin-right: 32rpx;
margin-top: 23rpx;
grid-column-gap: 26rpx;
grid-row-gap: 24rpx;
}
.view-content {
width: 330rpx;
height: 482rpx;
box-sizing: border-box;
}
.content-main {
width: 330rpx;
height: 482rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx;
background: #ffffff;
}
.content-image>image {
width: 330rpx;
height: 330rpx;
border-radius: 24rpx 24rpx 0 0;
display: block;
}
.content-text {
margin-left: 24rpx;
margin-top: 24rpx;
}
.text1 {
font-weight: Regular;
width: 266rpx;
height: 54rpx;
line-height: 27rpx;
font-size: 22rpx;
text-align: left;
color: #000000;
overflow: hidden;
word-wrap: break-word;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.text-flex {
margin-top: 28rpx;
width: 330rpx;
height: 20rpx;
}
.text2 {
font-weight: Regular;
width: 100rpx;
height: 20rpx;
font-size: 20rpx;
text-align: left;
color: #999999;
line-height: 20rpx;
align-items: center;
float: left;
}
.text3 {
float: right;
margin-right: 24rpx;
line-height: 19rpx;
}
.text3>image {
width: 21rpx;
height: 21rpx;
}
.text3>text {
font-weight: Regular;
width: 41rpx;
height: 19rpx;
font-size: 24rpx;
text-align: left;
color: #f99b46;
padding: 1rpx;
margin-left: 8rpx;
}
</style>

36
pages/signln/exdetail.vue Normal file
View File

@ -0,0 +1,36 @@
<!-- 兑换商城详情 -->
<template>
<view class="uninavbar">
<image src="../../static/images/sign/return.png"></image>
</view>
<view>
<image :src="images"></image>
</view>
</template>
<script setup>
import {
ref
}
from "vue"
const images = ref("https://cbu01.alicdn.com/img/ibank/2016/442/823/3216328244_1451018438.jpg")
</script>
<style>
.uninavbar {
position: absolute;
z-index:9999;
top: 110rpx;
left: 32rpx;
}
.uninavbar > image{
width: 31rpx;
height: 44rpx;
color: #000000;
}
view > image {
width: 750rpx;
height: 500rpx;
}
</style>

451
pages/signln/signid.vue Normal file
View File

@ -0,0 +1,451 @@
<!-- 签到任务 -->
<template>
<navbar_neadVue title="签到任务" background_color="#CAF6F5"></navbar_neadVue>
<view class="content-top">
<view class="top">
<view class="top-right-text">
<text @click="GoTo()"></text>
</view>
<view>
<view class="top-left-text">
<text>{{count}}</text>
<text>校园币</text>
</view>
<view class="top-left">
<text>我的校园币</text>
</view>
</view>
<view class="right-image">
<image src="../../static/images/sign/金币.png"></image>
</view>
<view class="content-bottom">
<view class="c-bottom">
<text>
已连续签到<text class="text-1">1</text>
</text>
</view>
</view>
<view class="content-bottom-bot">
<view class="bot-text">
<text>记得去商城兑换礼物奥</text>
</view>
<view>
<ul style="display: flex; margin-left: 24rpx;padding-left: 2rpx;margin-top: 48rpx;">
<li>
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: center;
color: #7E7E7E;">12</text>
</li>
<li style="margin-left: 58rpx;">
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: left;
padding-right: 4rpx;
color: #7E7E7E;">12</text>
</li>
<li style="margin-left: 58rpx;">
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: left;
padding-right: 4rpx;
color: #7E7E7E;">12</text>
</li>
<li style="margin-left: 58rpx;">
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: left;
padding-right: 4rpx;
color: #7E7E7E;">12</text>
</li>
<li style="margin-left: 58rpx;">
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: left;
padding-right: 4rpx;
color: #7E7E7E;">12</text>
</li>
<li style="margin-left: 58rpx;">
<image style="width: 42rpx; height: 44rpx;" src="../../static/images/sign/1.png">
</image>
<text style="display: block; font-weight: Regular;
width: 60rpx;
height: 22rpx;
font-size: 24rpx;
text-align: left;
padding-right: 4rpx;
color: #7E7E7E;">12</text>
</li>
</ul>
</view>
</view>
</view>
</view>
<!-- 签到任务 -->
<view class="task">
<view style="height: 60rpx;">
<text class="tasktext">签到任务</text>
</view>
<view class="task-content" v-for="(item,index) in arr" :key="index">
<view class="task-right">
<text>{{item.type}}</text>
</view>
<view>
<text class="c-text">{{item.title}}</text>
<image style="width: 21rpx;height: 21rpx;margin-left: 36rpx;" src="../../static/images/sign/1.png">
</image>
<text class="count-text">{{item.count}}</text>
</view>
<view class="task-left">
<text class="left-text">{{item.content.title}} <text class="left-0text">
{{item.content.count}}
</text>{{item.content.cuent}}</text>
</view>
</view>
<view style="height: 24rpx;"></view>
</view>
<view>
</view>
</template>
<script setup>
import navbar_neadVue from "../common/navbar/navbar_nead.vue";
import exchangemall from "./exchangemall.vue"
//
function GoTo() {
}
import {
ref,
reactive
} from "vue";
const count = ref("750");
const arr = reactive([{
id: 1,
type: "立即签到",
title: "每日签到",
count: "+1",
content: {
title: "点击签到获得每日奖励 ",
count: "(" + "0",
cuent: "/" + "1" + ")"
},
},
{
id: 2,
type: "去关注",
title: "关注",
count: "+2",
content: {
title: "关注优秀用户得奖励 ",
count: "(" + "0",
cuent: "/" + "1" + ")"
},
},
{
id: 3,
type: "去点赞",
title: "点赞",
count: "+2",
content: {
title: "点赞话题获取奖励 ",
count: "(" + "0",
cuent: "/" + "3" + ")"
},
},
{
id: 4,
type: "去发布",
title: "发布话题",
count: "+3",
content: {
title: "点赞话题获取奖励 ",
count: "(" + "0",
cuent: "/" + "1" + ")"
},
},
{
id: 5,
type: "立即邀请",
title: "邀请新用户",
count: "+5",
content: {
title: "邀请新用户得奖励 ",
count: "",
cuent: ""
},
}
])
</script>
<style scoped>
@import '../../pages/common/navbar/navbar.css';
.content-top {
/* height: 424rpx; */
height: 502rpx;
background: linear-gradient(-180deg, #c9f6f5, #ffffff);
}
.top {
margin-left: 32rpx;
margin-right: 32rpx;
}
.top-right-text>text {
font-weight: Regular;
/* width: 95rpx; */
height: 24rpx;
font-size: 24rpx;
text-align: left;
color: #000000;
float: right;
margin-top: 24rpx;
}
.top-left-text {
padding-top: 99rpx;
padding-left: 1rpx;
}
.top-left-text>text:first-child {
color: #000000;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 48rpx;
text-align: left;
line-height: 46.29rpx;
}
.top-left-text>text:last-child {
color: #000000;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 28rpx;
text-align: left;
line-height: 46.29rpx;
}
.top-left>text {
display: block;
font-weight: Regular;
/* width: 119rpx; */
font-size: 24rpx;
text-align: left;
color: #6F6F6F;
padding-left: 1rpx;
line-height: 24rpx;
}
.right-image>image {
width: 248rpx;
height: 289rpx;
position: absolute;
top: 279rpx;
right: 32rpx;
z-index: 7;
}
.content-bottom {
width: 319rpx;
height: 60rpx;
border-radius: 20rpx 20rpx 0 0;
background: #ffffff;
margin-top: 48rpx;
}
.c-bottom {
padding-left: 26rpx;
padding-top: 8rpx;
}
.c-bottom>text:first-child {
color: #000000;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 28rpx;
text-align: left;
line-height: 46.29rpx;
}
.text-1 {
color: #fa3939;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 28rpx;
text-align: left;
line-height: 46.29rpx;
}
.content-bottom-bot {
position: relative;
/* width: 686rpx; */
height: 214rpx;
border-radius: 0 32rpx 32rpx 32rpx;
background: #ffffff;
z-index: 9;
}
.bot-text {
padding-left: 24rpx;
display: block;
/* padding-top: 12rpx; */
}
.bot-text>text {
font-weight: Regular;
width: 248rpx;
height: 24rpx;
font-size: 24rpx;
text-align: left;
color: #6F6F6F;
}
.task {
width: 686rpx;
/* height: 484rpx; */
border-radius: 32rpx 32rpx 32rpx 32rpx;
background: #ffffff;
/* background: #fa3939; */
margin-left: 32rpx;
margin-right: 32rpx;
margin-top: 24rpx;
}
.tasktext {
display: block;
font-weight: Regular;
width: 144rpx;
height: 36rpx;
font-size: 36rpx;
text-align: left;
color: #000000;
padding-top: 24rpx;
margin-left: 24rpx;
}
.task-content {
margin-left: 24rpx;
margin-top: 24rpx;
}
.task-right {
margin-top: 16rpx;
width: 120rpx;
height: 48rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx;
background: #f99b46;
float: right;
margin-right: 24rpx;
}
.c-text {
font-weight: Regular;
width: 95rpx;
height: 24rpx;
font-size: 24rpx;
text-align: left;
color: #000000;
}
.count-text {
font-weight: Regular;
width: 20rpx;
height: 16rpx;
font-size: 20rpx;
text-align: left;
color: #F99B46;
padding-left: 3rpx;
line-height: 16rpx;
vertical-align: middle;
}
.task-right>text {
font-weight: Regular;
width: 95rpx;
height: 25rpx;
font-size: 24rpx;
text-align: left;
color: #FFFFFF;
display: block;
margin: auto;
text-align: center;
line-height: 48rpx;
}
.task-left {
/* display: block; */
height: 20rpx;
}
.left-text {
display: block;
color: #999999;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 20rpx;
text-align: left;
/* margin-top: 12rpx; */
}
.left-0text {
color: #fb5c5c;
font-weight: Regular;
font-face: Microsoft YaHei;
font-size: 20rpx;
text-align: left;
}
</style>

View File

@ -1,6 +1,7 @@
<!-- 签到明细 -->
<template> <template>
<view class="uninavbar"> <view class="uninavbar">
<uni-nav-bar statusBar="false" :border="false" left-icon="left" title="签到明细" /> <uni-nav-bar statusBar="false" :border="false" left-icon="leftIcon" title="签到明细" />
</view> </view>
<view style="height: 24rpx;"></view> <view style="height: 24rpx;"></view>
<view class="content" v-for="(item,index) in arr" :key="index"> <view class="content" v-for="(item,index) in arr" :key="index">
@ -20,6 +21,7 @@
reactive, reactive,
ref ref
} from "vue" } from "vue"
let leftIcon = ref("../../static/images/sign/return.png")
let arr = reactive([{ let arr = reactive([{
id: 1, id: 1,
text: "每日签到", text: "每日签到",
@ -80,6 +82,9 @@
line-height: 44rpx; line-height: 44rpx;
} }
*{
background-color: #ffffff;;
}
.content { .content {
margin-left: 32rpx; margin-left: 32rpx;

9
pages/signln/to.js Normal file
View File

@ -0,0 +1,9 @@
// 跳转
// 打印
export function Log(t1){
console.log(t1);
}

View File

@ -14,108 +14,57 @@
<!-- 宫格组件 --> <!-- 宫格组件 -->
<uni-section title="系统管理" type="line"></uni-section> <uni-section title="系统管理" type="line"></uni-section>
<view class="grid-body"> <view class="grid-body">
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="person-filled" size="30"></uni-icons>
<text class="text">用户管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="staff-filled" size="30"></uni-icons>
<text class="text">角色管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="color" size="30"></uni-icons>
<text class="text">菜单管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="settings-filled" size="30"></uni-icons>
<text class="text">部门管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="heart-filled" size="30"></uni-icons>
<text class="text">岗位管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="bars" size="30"></uni-icons>
<text class="text">字典管理</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="gear-filled" size="30"></uni-icons>
<text class="text">参数设置</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="chat-filled" size="30"></uni-icons>
<text class="text">通知公告</text>
</view>
</uni-grid-item>
<uni-grid-item>
<view class="grid-item-box">
<uni-icons type="wallet-filled" size="30"></uni-icons>
<text class="text">日志管理</text>
</view>
</uni-grid-item>
</uni-grid>
</view>
<fileUpload v-model="fileList1" :fileTypeInfo="fileTypeInfo1" ></fileUpload>
<fileUpload v-model="fileList1" :fileTypeInfo="fileTypeInfo2" ></fileUpload>
<view class="album" v-for="(item,index) in fileList1" :key="index">
<view class="album__avatar">
<image :src="QNDomain+item.furl" mode="" style="width: 32px;height: 32px;"></image>
</view>
</view>
</view> </view>
<view>
<up-button type="primary" text="待审核" size @click="clickBannerItem(1)"></up-button>
</view>
<fileUpload v-model="fileList1" :fileTypeInfo="fileTypeInfo1"></fileUpload>
<fileUpload v-model="fileList1" :fileTypeInfo="fileTypeInfo2"></fileUpload>
<view class="album" v-for="(item, index) in fileList1" :key="index">
<view class="album__avatar">
<image :src="QNDomain + item.furl" mode="" style="width: 32px;height: 32px;"></image>
</view>
</view>
</view>
</template> </template>
<script setup> <script setup>
import fileUpload from './../common/file/fileUpload/index.vue' import fileUpload from './../common/file/fileUpload/index.vue'
import {ref, reactive,getCurrentInstance} from 'vue' import { ref, reactive, getCurrentInstance } from 'vue'
import { useStore } from 'vuex'; import { useStore } from 'vuex';
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const store = useStore(); const store = useStore();
const fileTypeInfo1 = ref("image") const fileTypeInfo1 = ref("image")
const fileTypeInfo2 = ref("video") const fileTypeInfo2 = ref("video")
const QNDomain = store.state.user.QNDomain const QNDomain = store.state.user.QNDomain
const current = ref(0) const current = ref(0)
const swiperDotIndex = ref(0) const swiperDotIndex = ref(0)
const data = ref( [{ const data = ref([{
image: '/static/images/banner/banner01.jpg' image: '/static/images/banner/banner01.jpg'
}, },
{ {
image: '/static/images/banner/banner02.jpg' image: '/static/images/banner/banner02.jpg'
}, },
{ {
image: '/static/images/banner/banner03.jpg' image: '/static/images/banner/banner03.jpg'
} }
]) ])
const fileList1 = ref([]) const fileList1 = ref([])
function clickBannerItem(item) { function clickBannerItem(item) {
console.info(item) if (item === 1) {
proxy.$tab.navigateTo('/pages/common/talkState/publish')
} }
function changeSwiper(e) {
}
function changeSwiper(e) {
current.value = e.detail.current current.value = e.detail.current
} }
function changeGrid(e) {
proxy.$modal.showToast('模块建设中~')
}
</script> </script>

View File

@ -1,41 +1,42 @@
import { getToken } from '@/utils/auth' import { getToken } from "@/utils/auth";
// 登录页面 // 登录页面
const loginPage = "/pages/loginInfo/login" const loginPage = "/pages/loginInfo/login";
// 页面白名单 // 页面白名单
const whiteList = [ const whiteList = [
'/pages/loginInfo/login', '/pages/register', '/pages/common/webview/index' "/pages/loginInfo/login",
] "/pages/register",
"/pages/common/webview/index",
];
// 检查地址白名单 // 检查地址白名单
function checkWhite(url) { function checkWhite(url) {
const path = url.split('?')[0] const path = url.split("?")[0];
return whiteList.indexOf(path) !== -1 return whiteList.indexOf(path) !== -1;
} }
// 页面跳转验证拦截器 // 页面跳转验证拦截器
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"] let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
list.forEach(item => { // list.forEach((item) => {
uni.addInterceptor(item, { // uni.addInterceptor(item, {
invoke(to) { // invoke(to) {
// if (getToken()) {
if (getToken()) { // if (to.url === loginPage) {
if (to.url === loginPage) { // console.log("to:", to);
console.log("to:",to); // uni.reLaunch({ url: "/" });
uni.reLaunch({ url: "/" }) // }
} // return true;
return true // } else {
} else { // if (checkWhite(to.url)) {
if (checkWhite(to.url)) { // return true;
return true // }
} // uni.reLaunch({ url: loginPage });
uni.reLaunch({ url: loginPage }) // return false;
return false // }
} // },
}, // fail(err) {
fail(err) { // console.log("错误信息:", err);
console.log("错误信息:",err) // },
} // });
}) // });
})

BIN
static/images/sign/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

View File

@ -137,7 +137,7 @@ const user = {
const avatar = const avatar =
user == null || user.avatar == "" || user.avatar == null user == null || user.avatar == "" || user.avatar == null
? defaultAvatar ? defaultAvatar
: baseUrl + user.avatar; : qnDomain + user.avatar;
const username = const username =
user == null || user.userName == "" || user.userName == null user == null || user.userName == "" || user.userName == null
? "" ? ""

View File

@ -9,10 +9,14 @@ const tu51 = ref(QNDomain + "home/icon/image/png/tu5-1_20240601124004353.png")
const tu52 = ref(QNDomain + "home/icon/image/png/tu5-2_20240601124010403.png") const tu52 = ref(QNDomain + "home/icon/image/png/tu5-2_20240601124010403.png")
const tu53 = ref(QNDomain + "home/icon/image/png/tu5-3_20240601124016641.png") const tu53 = ref(QNDomain + "home/icon/image/png/tu5-3_20240601124016641.png")
const tu23 = ref(QNDomain + "home/icon/image/png/tu2-3_20240602093303793.png") const tu23 = ref(QNDomain + "home/icon/image/png/tu2-3_20240602093303793.png")
//文件上传
const tu2x = ref(QNDomain + "home/icon/image/png/添加图片@2x_20240603101717136.png") const tu2x = ref(QNDomain + "home/icon/image/png/添加图片@2x_20240603101717136.png")
//话题发布-等待审核
const sh2x = ref(QNDomain + "home/icon/image/png/等待审核@2x_20240604202431502.png")
const sh2x1 = ref(QNDomain + "home/icon/image/png/等待审核@2x1_20240604202431492.png")
export default { export default {
tu21,tu22,tu23,tu2x, tu21,tu22,tu23,tu2x,
tu51,tu52,tu53 tu51,tu52,tu53,
sh2x,sh2x1
} }