页面完善
commit
5e5a19bd59
3
App.vue
3
App.vue
|
@ -3,6 +3,7 @@
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
onLaunch: function() {
|
onLaunch: function() {
|
||||||
this.initApp()
|
this.initApp()
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
},
|
},
|
||||||
checkLogin() {
|
checkLogin() {
|
||||||
if (!getToken()) {
|
if (!getToken()) {
|
||||||
this.$tab.reLaunch('pages/loginInfo/login')
|
this.$tab.reLaunch('pages/login')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,3 +72,12 @@ export function gotoQrcode(data) {
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//查询用户所有活动参与的详细信息
|
||||||
|
// 报名
|
||||||
|
export function getUserAcInfo() {
|
||||||
|
return request({
|
||||||
|
url: '/activityInfo/activityTakeInfo/getUserAcInfo',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -16,7 +16,14 @@ export function getInfo(id) {
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
getInfoall
|
||||||
|
// 查询活动详情详细 所有额外信息
|
||||||
|
export function getInfoall(id) {
|
||||||
|
return request({
|
||||||
|
url: '/activityInfo/info/app/all/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
// 新增活动详情
|
// 新增活动详情
|
||||||
export function addInfo(data) {
|
export function addInfo(data) {
|
||||||
return request({
|
return request({
|
||||||
|
@ -42,3 +49,12 @@ export function delInfo(id) {
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询自己的活动详情列表
|
||||||
|
export function getmelistInfo(query) {
|
||||||
|
return request({
|
||||||
|
url: '/activityInfo/info/app/getmelistInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
// 应用全局配置
|
// 应用全局配置
|
||||||
export default {
|
export default {
|
||||||
qnDomain: 'http://sdcwwvrwz.hn-bkt.clouddn.com/',
|
qnDomain: 'http://seueton5q.hn-bkt.clouddn.com/',
|
||||||
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',
|
||||||
|
<<<<<<< HEAD
|
||||||
// baseUrl: 'http://47.93.242.168:8080',
|
// baseUrl: 'http://47.93.242.168:8080',
|
||||||
baseUrl: 'http://localhost:8080',
|
baseUrl: 'http://localhost:8080',
|
||||||
|
=======
|
||||||
|
// baseUrl: 'http://47.93.242.168:8080',
|
||||||
|
baseUrl: 'http://localhost:8080',
|
||||||
|
>>>>>>> 628ee1926942d01758e141fb0b5393a175968240
|
||||||
// 应用信息
|
// 应用信息
|
||||||
appInfo: {
|
appInfo: {
|
||||||
// 应用名称
|
// 应用名称
|
||||||
|
|
2
main.js
2
main.js
|
@ -4,6 +4,7 @@ import store from './store' // store
|
||||||
import { install } from './plugins' // plugins
|
import { install } from './plugins' // plugins
|
||||||
import './permission.js' // permission
|
import './permission.js' // permission
|
||||||
import iconConfig from './utils/icon/icon.js'
|
import iconConfig from './utils/icon/icon.js'
|
||||||
|
import { getDictLabelByValue } from '@/utils/dict'
|
||||||
|
|
||||||
// main.js
|
// main.js
|
||||||
import uviewPlus from 'uview-plus'
|
import uviewPlus from 'uview-plus'
|
||||||
|
@ -11,6 +12,7 @@ import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, select
|
||||||
export function createApp() {
|
export function createApp() {
|
||||||
const app = createSSRApp(App)
|
const app = createSSRApp(App)
|
||||||
app.config.globalProperties.iconConfig = iconConfig
|
app.config.globalProperties.iconConfig = iconConfig
|
||||||
|
app.config.globalProperties.getDictLabelByValue = getDictLabelByValue
|
||||||
app.config.globalProperties.parseTime = parseTime
|
app.config.globalProperties.parseTime = parseTime
|
||||||
app.config.globalProperties.resetForm = resetForm
|
app.config.globalProperties.resetForm = resetForm
|
||||||
app.config.globalProperties.handleTree = handleTree
|
app.config.globalProperties.handleTree = handleTree
|
||||||
|
|
|
@ -14,7 +14,10 @@
|
||||||
"autoclose" : true,
|
"autoclose" : true,
|
||||||
"delay" : 0
|
"delay" : 0
|
||||||
},
|
},
|
||||||
"modules" : {},
|
"modules" : {
|
||||||
|
"Barcode" : {},
|
||||||
|
"Camera" : {}
|
||||||
|
},
|
||||||
"distribute" : {
|
"distribute" : {
|
||||||
"android" : {
|
"android" : {
|
||||||
"permissions" : [
|
"permissions" : [
|
||||||
|
@ -45,7 +48,24 @@
|
||||||
"UniversalLinks" : ""
|
"UniversalLinks" : ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ad" : {}
|
"ad" : {},
|
||||||
|
"geolocation" : {
|
||||||
|
"system" : {
|
||||||
|
"__platform__" : [ "ios", "android" ]
|
||||||
|
},
|
||||||
|
"amap" : {
|
||||||
|
"name" : "",
|
||||||
|
"__platform__" : [ "ios", "android" ],
|
||||||
|
"appkey_ios" : "",
|
||||||
|
"appkey_android" : ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"push" : {
|
||||||
|
"unipush" : {
|
||||||
|
"version" : "2",
|
||||||
|
"offline" : false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
23
pages.json
23
pages.json
|
@ -297,6 +297,29 @@
|
||||||
"navigationBarTitleText" : ""
|
"navigationBarTitleText" : ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
,
|
||||||
|
{
|
||||||
|
"path": "pages/mine/myActivity/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "我的活动",
|
||||||
|
"enablePullDownRefresh": true,
|
||||||
|
"onReachBottomDistance": 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,{
|
||||||
|
"path": "pages/mine/myActivity/info",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "活动详情",
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"navigationBarTextStyle": "white"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,{
|
||||||
|
"path": "pages/activity/map",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "地图"
|
||||||
|
}
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"color": "#000000",
|
"color": "#000000",
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
<template class="content">
|
<template class="content">
|
||||||
<view class="fixed-header">
|
|
||||||
|
|
||||||
<!-- 顶部导航栏 -->
|
<!-- 顶部导航栏 -->
|
||||||
<up-navbar leftText="" title="" :placeholder="true" :safeAreaInsetTop="true" :bgColor="bgColor">
|
<up-navbar leftText="" title="" :placeholder="true" :safeAreaInsetTop="true" :bgColor="bgColor">
|
||||||
<template class="img1BOX" #left>
|
<template class="img1BOX" #left>
|
||||||
<view class="leftinfo">
|
<view class="leftinfo" @click="queryTime">
|
||||||
<span class="lefttext">时间</span>
|
<span class="lefttext">时间</span>
|
||||||
<image
|
<image
|
||||||
style=" margin-left: 10rpx; transform: rotate(-45deg); /* 旋转45度 */ width: 15rpx; height: 15rpx;"
|
style=" margin-left: 10rpx; transform: rotate(-45deg); /* 旋转45度 */ width: 15rpx; height: 15rpx;"
|
||||||
|
@ -35,38 +33,52 @@
|
||||||
color: '#999999',
|
color: '#999999',
|
||||||
fontSize: '28rpx',
|
fontSize: '28rpx',
|
||||||
transform: 'scale(1.05)'
|
transform: 'scale(1.05)'
|
||||||
}" itemStyle=" width: 200rpx; padding-bottom:18rpx;">
|
}" itemStyle=" width: 185rpx; padding-bottom:18rpx;">
|
||||||
</up-tabs>
|
</up-tabs>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 列表信息 -->
|
<!-- 列表信息 -->
|
||||||
<view>
|
<view>
|
||||||
<ActiInfoList v-model="actiInfoList" @scrolltolower="scrolltolower"></ActiInfoList>
|
<ActiInfoList v-model="actiInfoList" @scrolltolower="scrolltolower"></ActiInfoList>
|
||||||
</view>
|
</view>
|
||||||
|
<view v-if="show">
|
||||||
|
<up-datetime-picker
|
||||||
|
hasInput
|
||||||
|
:show="show"
|
||||||
|
v-model="newData"
|
||||||
|
mode="date"
|
||||||
|
@cancel="close"
|
||||||
|
@confirm="confirm"
|
||||||
|
></up-datetime-picker>
|
||||||
|
</view>
|
||||||
<view>
|
<view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/activityInfo/info";
|
import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/activityInfo/info";
|
||||||
|
|
||||||
import ActiInfoList from '../common/activityList/index.vue'
|
import ActiInfoList from '../common/activityList/index.vue'
|
||||||
import { onShow, onLoad ,onPullDownRefresh} from '@dcloudio/uni-app'
|
import { onShow, onLoad ,onPullDownRefresh} from '@dcloudio/uni-app'
|
||||||
import { getDicts } from "@/api/system/dict/data"
|
import { getDicts } from "@/api/system/dict/data"
|
||||||
import { ref, reactive, getCurrentInstance, toRefs } from 'vue'
|
import { ref, reactive, getCurrentInstance, toRefs } from 'vue'
|
||||||
import { useStore } from 'vuex';
|
import { useStore } from 'vuex';
|
||||||
import { func } from "uview-plus/libs/function/test";
|
const timeFormat = uni.$u.timeFormat;
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
const newData = ref(new Date().getTime());
|
||||||
const iconConfig = proxy.iconConfig;
|
const iconConfig = proxy.iconConfig;
|
||||||
const tu21 = iconConfig.tu21;
|
const tu21 = iconConfig.tu21;
|
||||||
const tu22 = iconConfig.tu22;
|
const tu22 = iconConfig.tu22;
|
||||||
const tu51 = iconConfig.tu51;
|
const tu51 = iconConfig.tu51;
|
||||||
const tu52 = iconConfig.tu52;
|
const tu52 = iconConfig.tu52;
|
||||||
const tu53 = iconConfig.tu53;
|
const tu53 = iconConfig.tu53;
|
||||||
|
const show = ref(false)
|
||||||
const total = ref()
|
const total = ref()
|
||||||
const imgInfo = ref("")
|
const imgInfo = ref("")
|
||||||
|
const search = ref("电音节节日活动")
|
||||||
// 创建响应式数据 ref('#001f3f')
|
// 创建响应式数据 ref('#001f3f')
|
||||||
const bgColor = ref('');
|
const bgColor = ref('rgba(170, 0, 0, 0)');
|
||||||
bgColor.value = 'rgba(170, 0, 0, 0)'
|
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
const list4 = reactive([
|
const list4 = reactive([
|
||||||
{ name: '全部',state:9 },
|
{ name: '全部',state:9 },
|
||||||
|
@ -86,6 +98,7 @@ const data = reactive({
|
||||||
acTitle: null,
|
acTitle: null,
|
||||||
acContent: null,
|
acContent: null,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
startTime1: null,
|
||||||
endTime: null,
|
endTime: null,
|
||||||
state: null,
|
state: null,
|
||||||
addres: null,
|
addres: null,
|
||||||
|
@ -126,6 +139,7 @@ function reset() {
|
||||||
acTitle: null,
|
acTitle: null,
|
||||||
acContent: null,
|
acContent: null,
|
||||||
startTime: null,
|
startTime: null,
|
||||||
|
startTime1: null,
|
||||||
endTime: null,
|
endTime: null,
|
||||||
state: null,
|
state: null,
|
||||||
addres: null,
|
addres: null,
|
||||||
|
@ -158,6 +172,19 @@ function reset() {
|
||||||
console.log("下拉刷新,",options);
|
console.log("下拉刷新,",options);
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
|
const queryTime = () => {
|
||||||
|
show.value = true
|
||||||
|
}
|
||||||
|
//日期选择
|
||||||
|
const confirm = (e) => {
|
||||||
|
queryParams.value.startTime1 = timeFormat(e.value, 'yyyy-mm-dd');
|
||||||
|
show.value = false
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
const close = () =>{
|
||||||
|
queryParams.value.startTime1=null
|
||||||
|
show.value = false
|
||||||
|
}
|
||||||
//tabs
|
//tabs
|
||||||
const tabsClick =(e) =>{
|
const tabsClick =(e) =>{
|
||||||
if(e.state == 9){
|
if(e.state == 9){
|
||||||
|
@ -174,15 +201,16 @@ function getList() {
|
||||||
queryParams.value.pageNum = 1
|
queryParams.value.pageNum = 1
|
||||||
queryParams.value.pageSize = 5
|
queryParams.value.pageSize = 5
|
||||||
listInfo(queryParams.value).then(response => {
|
listInfo(queryParams.value).then(response => {
|
||||||
|
uni.stopPullDownRefresh()
|
||||||
actiInfoList.value = response.rows;
|
actiInfoList.value = response.rows;
|
||||||
response.rows.forEach(item => {
|
|
||||||
actiInfoList.value.push(item)
|
|
||||||
})
|
|
||||||
total.value = response.total;
|
total.value = response.total;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
|
|
||||||
getList();
|
getList();
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
onShow(() => {
|
onShow(() => {
|
||||||
|
@ -229,9 +257,6 @@ page{
|
||||||
background-color: #FBFBFB;
|
background-color: #FBFBFB;
|
||||||
|
|
||||||
}
|
}
|
||||||
.fixed-header {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.leftinfo {
|
.leftinfo {
|
||||||
|
@ -278,18 +303,22 @@ page{
|
||||||
}
|
}
|
||||||
|
|
||||||
.bgc {
|
.bgc {
|
||||||
width: 100%;
|
width: 750rpx;
|
||||||
height: 500rpx;
|
height: 500rpx;
|
||||||
background: linear-gradient(180deg, rgb(201, 246, 245), rgb(248, 248, 226));
|
background: linear-gradient(
|
||||||
|
180deg, /* 渐变方向,从上到下 */
|
||||||
|
#C9F6F5 0%, /* 起始颜色 */
|
||||||
|
#F8F8E2 80%, /* 中间颜色 */
|
||||||
|
#FBFBFB 100% /* 结束颜色 */
|
||||||
|
);
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0rpx;
|
top: 0rpx;
|
||||||
left: 0rpx;
|
left: 0rpx;
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sousuoBox1 {
|
.sousuoBox1 {
|
||||||
margin: 10rpx 32rpx;
|
margin: 10rpx 32rpx;
|
||||||
width: auto;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sousuoBox {
|
.sousuoBox {
|
||||||
|
@ -298,9 +327,11 @@ page{
|
||||||
border: #B3D7FF solid 2rpx;
|
border: #B3D7FF solid 2rpx;
|
||||||
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
||||||
background: #ffffff80;
|
background: #ffffff80;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.souBOx {
|
.souBOx {
|
||||||
|
width: 684rpx;
|
||||||
margin-left: 32rpx;
|
margin-left: 32rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,6 +350,6 @@ page{
|
||||||
.tabsinfo {
|
.tabsinfo {
|
||||||
|
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
margin: 0 auto;
|
margin: 0 32rpx;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -16,9 +16,7 @@
|
||||||
<view class="addrs">活动地点:{{ actiInfoList.addres }}</view>
|
<view class="addrs">活动地点:{{ actiInfoList.addres }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cardz">
|
<view class="cardz">
|
||||||
<!-- <up-parse :content="processContent(actiInfoList.acContent)" :tagStyle="style"></up-parse> -->
|
<up-text size="15" color="#000000" lineHeight="23" :text="actiInfoList.acContent"></up-text>
|
||||||
<view v-if="textopen" v-html="actiInfoList.acContent" class="acContentstyle"></view>
|
|
||||||
<up-text size="15" color="#000000" lineHeight="23" v-else :text="actiInfoList.acContent"></up-text>
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="cardx" v-for="(item, index) in toimage(actiInfoList.file)" :key="index">
|
<view class="cardx" v-for="(item, index) in toimage(actiInfoList.file)" :key="index">
|
||||||
|
@ -30,33 +28,43 @@
|
||||||
<view v-if="actiInfoList.state === '0'">
|
<view v-if="actiInfoList.state === '0'">
|
||||||
<view class="state3"
|
<view class="state3"
|
||||||
v-if="activityAttendInfo.attendState === '0' || activityAttendInfo.attendState === '1'">
|
v-if="activityAttendInfo.attendState === '0' || activityAttendInfo.attendState === '1'">
|
||||||
<up-button color="#F1F1F1" size="large" shape="circle"><span class="btnText">未参加</span></up-button>
|
<view class="btn btnText">
|
||||||
|
未参加
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="state3" v-else-if="activityAttendInfo.attendState === '2'">
|
<view class="state3" v-else-if="activityAttendInfo.attendState === '2'">
|
||||||
<up-button color="#F1F1F1" size="large" shape="circle"><span class="btnText">已参加</span></up-button>
|
<view class="btn btnText">
|
||||||
|
已参加
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else-if="actiInfoList.state === '2'">
|
<view v-else-if="actiInfoList.state === '2'">
|
||||||
<view class="state1" v-if="activityAttendInfo.attendState === '0'">
|
<view class="state1" v-if="activityAttendInfo.attendState === '0'">
|
||||||
<up-button color="#C0F0EC" size="large" shape="circle" @click="goSing(1)"><span
|
<view class="btn btnText" @click="goSing(1)">
|
||||||
class="btnText">立即报名</span></up-button>
|
立即报名
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="state2" v-else-if="activityAttendInfo.attendState === '1'">
|
<view class="state2" v-else-if="activityAttendInfo.attendState === '1'">
|
||||||
<up-button color="#FDE2E2" size="large" shape="circle" @click="goQrcode(1)"><span
|
<view class="btn btnText" @click="goQrcode(1)">
|
||||||
class="btnText">扫码签到</span></up-button>
|
扫码签到
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="state2" v-else-if="activityAttendInfo.attendState === '2'">
|
<view class="state2" v-else-if="activityAttendInfo.attendState === '2'">
|
||||||
<up-button color="#FDE2E2" size="large" shape="circle"><span class="btnText">已签到</span></up-button>
|
<view class="btn btnText">
|
||||||
|
已签到
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else-if="actiInfoList.state === '1'">
|
<view v-else-if="actiInfoList.state === '1'">
|
||||||
<view class="state1" v-if="activityAttendInfo.attendState === '0'">
|
<view class="state1" v-if="activityAttendInfo.attendState === '0'">
|
||||||
<up-button color="#C0F0EC" size="large" shape="circle" @click="goSing(1)"><span
|
<view class="btn btnText" @click="goSing(1)">
|
||||||
class="btnText">立即报名</span></up-button>
|
立即报名
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="state1" v-else-if="activityAttendInfo.attendState === '1'">
|
<view class="state1" v-else-if="activityAttendInfo.attendState === '1'">
|
||||||
<up-button color="#C0F0EC" size="large" shape="circle" @click="goSing(0)"><span
|
<view class="btn btnText" @click="goSing(0)">
|
||||||
class="btnText">取消报名</span></up-button>
|
取消报名
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -175,11 +183,12 @@ const goSing = (e) => {
|
||||||
//简单刷新一下数据
|
//简单刷新一下数据
|
||||||
checkStatus(actiInfoList.value.id);
|
checkStatus(actiInfoList.value.id);
|
||||||
}
|
}
|
||||||
const goQrcode = () => {
|
const goQrcode = (e) => {
|
||||||
|
console.log("saoma");
|
||||||
uni.scanCode({
|
uni.scanCode({
|
||||||
onlyFromCamera: true,
|
onlyFromCamera: true,
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
console.log('扫描二维码成功,结果:', res);
|
console.log('扫描二维码成功,结果:', res.result);
|
||||||
toqrcode(res);
|
toqrcode(res);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -202,6 +211,7 @@ function confirm() {
|
||||||
}
|
}
|
||||||
const toqrcode = (e) => {
|
const toqrcode = (e) => {
|
||||||
qrcodeInfo.value = JSON.parse(e.result);
|
qrcodeInfo.value = JSON.parse(e.result);
|
||||||
|
console.log("数据结果:",qrcodeInfo.value);
|
||||||
if (actiInfoList.value.id !== qrcodeInfo.value.id) {
|
if (actiInfoList.value.id !== qrcodeInfo.value.id) {
|
||||||
proxy.$modal.msgError('二维码不匹配!')
|
proxy.$modal.msgError('二维码不匹配!')
|
||||||
return;
|
return;
|
||||||
|
@ -213,10 +223,11 @@ const toqrcode = (e) => {
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
page{
|
page {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbarcenter {
|
.navbarcenter {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
width: 148rpx;
|
width: 148rpx;
|
||||||
|
@ -232,7 +243,7 @@ page{
|
||||||
|
|
||||||
.cards {
|
.cards {
|
||||||
.title {
|
.title {
|
||||||
font-weight: 400 !important;
|
font-weight: 600 !important;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #000000 !important;
|
color: #000000 !important;
|
||||||
|
@ -266,8 +277,10 @@ page{
|
||||||
|
|
||||||
.cardx {
|
.cardx {
|
||||||
margin-top: 48rpx;
|
margin-top: 48rpx;
|
||||||
|
|
||||||
.image {
|
.image {
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
|
border-radius: 24rpx;
|
||||||
height: 720rpx;
|
height: 720rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,14 +292,23 @@ page{
|
||||||
margin: 4rpx auto;
|
margin: 4rpx auto;
|
||||||
margin-bottom: 400rpx;
|
margin-bottom: 400rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.state1 {
|
.state1 {
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
background-color: #C0F0EC;
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-weight: 400;
|
font-weight: bold;
|
||||||
width: 120rpx;
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
color: #00CCBE !important;
|
color: #00CCBE !important;
|
||||||
}
|
}
|
||||||
|
@ -296,10 +318,11 @@ page{
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
background-color: #FDE2E2;
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-weight: 400;
|
font-weight: bold;
|
||||||
width: 120rpx;
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
color: #FFABAB !important;
|
color: #FFABAB !important;
|
||||||
}
|
}
|
||||||
|
@ -309,10 +332,11 @@ page{
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
background-color: #F1F1F1;
|
||||||
|
|
||||||
.btnText {
|
.btnText {
|
||||||
font-weight: 400;
|
font-weight: bold;
|
||||||
width: 120rpx;
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
color: #7E7E7E !important;
|
color: #7E7E7E !important;
|
||||||
}
|
}
|
||||||
|
@ -342,6 +366,22 @@ page{
|
||||||
|
|
||||||
.infoavatar {
|
.infoavatar {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
height: 60rpx;
|
||||||
|
.launchName {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.launchAddres {
|
||||||
|
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.elroll {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
<template class="content">
|
||||||
|
|
||||||
|
<view>12</view>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import ActiInfoList from '../common/activityList/index.vue'
|
||||||
|
import { onShow, onLoad ,onPullDownRefresh} from '@dcloudio/uni-app'
|
||||||
|
import { getDicts } from "@/api/system/dict/data"
|
||||||
|
import { ref, reactive, getCurrentInstance, toRefs } from 'vue'
|
||||||
|
import { useStore } from 'vuex';
|
||||||
|
const timeFormat = uni.$u.timeFormat;
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const newData = ref(new Date().getTime());
|
||||||
|
const iconConfig = proxy.iconConfig;
|
||||||
|
const tu21 = iconConfig.tu21;
|
||||||
|
|
||||||
|
|
||||||
|
onLoad((options) => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
onShow(() => {
|
||||||
|
console.log('Page onShow')
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
page{
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -14,18 +14,23 @@
|
||||||
<view class="titleInfo">
|
<view class="titleInfo">
|
||||||
<up-form-item label="" prop="acTitle" borderBottom>
|
<up-form-item label="" prop="acTitle" borderBottom>
|
||||||
<up-input placeholder="输入活动标题~(5~20个字)" v-model="form.acTitle" border="none" maxlength="20"
|
<up-input placeholder="输入活动标题~(5~20个字)" v-model="form.acTitle" border="none" maxlength="20"
|
||||||
fontSize="34rpx" color="#C0C0C0" clearable></up-input>
|
fontSize="34rpx" color="#333333" clearable
|
||||||
|
placeholderStyle="color: #c0c0c0;font-size: 34rpx;"></up-input>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
<view class="xian"></view>
|
<view class="xian"></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="contentInfo">
|
<view class="contentInfo">
|
||||||
<up-form-item label="" prop="acContent" borderBottom>
|
<up-form-item label="" prop="acContent" borderBottom>
|
||||||
<up-textarea v-model="form.acContent" placeholder="输入活动内容
|
<textarea class="text_style" v-model="form.acContent"
|
||||||
活动图片最多可发布两张
|
placeholder="输入活动内容\n活动图片最多可发布两张\n输入准确定位可以更好提供活动信息奥!\n安全指南:请勿发布带有个人信息(如:住址)\n" cols="50"
|
||||||
输入准确定位可以更好提供活动信息奥!安全指南:请勿发布带有个人信息(如:住址)" count border="none" height="270" maxlength="500"
|
rows="10" maxlength="500"
|
||||||
placeholderStyle="color: #c0c0c0;font-size: 30rpx; background:none;"></up-textarea>
|
placeholderStyle="color: #c0c0c0;font-size: 30rpx; white-space: pre-wrap;" color="#333333"
|
||||||
|
fontSize="30rpx" @linechange="inputtextInfo"></textarea>
|
||||||
|
<view class="char-count">{{ form.acContent.length }}/500</view>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
<up-form-item label="" prop="file" borderBottom>
|
<up-form-item label="" prop="file" borderBottom>
|
||||||
<view class="cardzfile">
|
<view class="cardzfile">
|
||||||
<fileUpload v-model="form.file" :fileTypeInfo="fileTypeInfo1" :limit="2"></fileUpload>
|
<fileUpload v-model="form.file" :fileTypeInfo="fileTypeInfo1" :limit="2"></fileUpload>
|
||||||
|
@ -35,9 +40,10 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="cardx">
|
<view class="cardx">
|
||||||
<up-cell-group :border="false">
|
<up-cell-group :border="false">
|
||||||
<up-form-item label="" prop="startTime" borderBottom @click="showStartTime =! showStartTime">
|
<up-form-item label="" prop="startTime" borderBottom @click="showStartTime = !showStartTime">
|
||||||
<view style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
<view style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
||||||
<image v-if="showtext1" :src="tu52" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
<image v-if="showtext1" :src="tu52" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;">
|
||||||
|
</image>
|
||||||
<image v-else :src="tu522" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
<image v-else :src="tu522" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
||||||
<up-input v-model="form.startTime" disabled disabledColor="#ffffff" color="#C9F6F5"
|
<up-input v-model="form.startTime" disabled disabledColor="#ffffff" color="#C9F6F5"
|
||||||
placeholder="请选择活动开始时间" placeholderStyle="color: #333333 !important;font-size: 30rpx;"
|
placeholder="请选择活动开始时间" placeholderStyle="color: #333333 !important;font-size: 30rpx;"
|
||||||
|
@ -49,7 +55,8 @@
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
<up-form-item label="" prop="endTime" borderBottom @click="showEndTime = !showEndTime">
|
<up-form-item label="" prop="endTime" borderBottom @click="showEndTime = !showEndTime">
|
||||||
<view style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
<view style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
||||||
<image v-if="showtext2" :src="tu53" style="width: 30rpx; height: 32rpx;margin-right: 12rpx;"></image>
|
<image v-if="showtext2" :src="tu53" style="width: 30rpx; height: 32rpx;margin-right: 12rpx;">
|
||||||
|
</image>
|
||||||
<image v-else :src="tu532" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
<image v-else :src="tu532" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
||||||
<up-input v-model="form.endTime" disabled disabledColor="#ffffff" color="#C9F6F5"
|
<up-input v-model="form.endTime" disabled disabledColor="#ffffff" color="#C9F6F5"
|
||||||
placeholder="请选择活动结束时间" placeholderStyle="color: #333333 !important;font-size: 30rpx;"
|
placeholder="请选择活动结束时间" placeholderStyle="color: #333333 !important;font-size: 30rpx;"
|
||||||
|
@ -59,27 +66,33 @@
|
||||||
<up-icon slot="right" name="arrow-right"></up-icon>
|
<up-icon slot="right" name="arrow-right"></up-icon>
|
||||||
</view>
|
</view>
|
||||||
</up-form-item>
|
</up-form-item>
|
||||||
|
<up-form-item label="" prop="addres" borderBottom @click="showaddres = !showaddres">
|
||||||
<up-cell :border="false" :isLink="true" :center="true">
|
<view style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
||||||
<template #title
|
<image v-if="showtext3" :src="tu51" style="width: 30rpx; height: 32rpx;margin-right: 12rpx;">
|
||||||
style="margin-top: 2rpx;width: 100%;height: 30rpx;display: flex;align-items: center;">
|
</image>
|
||||||
<image v-if="showtext3" :src="tu51" style="width: 30rpx; height: 32rpx;"></image>
|
<image v-else :src="tu512" style="width: 30rpx; height: 32rpx; margin-right: 12rpx;"></image>
|
||||||
<image v-else :src="tu512" style="width: 30rpx; height: 32rpx;"></image>
|
<up-input v-model="form.addres" disabledColor="#ffffff" color="#C9F6F5" @change="change1"
|
||||||
<span>添加活动具体位置</span>
|
placeholder="添加活动具体位置" placeholderStyle="color: #333333 !important;font-size: 30rpx;"
|
||||||
</template>
|
border="none">
|
||||||
</up-cell>
|
<span v-if="showtext2">添加活动具体位置</span>
|
||||||
|
</up-input>
|
||||||
|
<up-icon slot="right" name="arrow-right" @click="gotomap"></up-icon>
|
||||||
|
</view>
|
||||||
|
</up-form-item>
|
||||||
</up-cell-group>
|
</up-cell-group>
|
||||||
</view>
|
</view>
|
||||||
<up-datetime-picker :show="showStartTime" v-model="newData" :modelValue="newData" @confirm="confirm1" format="YYYY-MM-DD HH:mm:ss"
|
<up-datetime-picker :show="showStartTime" v-model="newData" :modelValue="newData" @confirm="confirm1"
|
||||||
@cancel="cancel" mode="datetime"></up-datetime-picker>
|
format="YYYY-MM-DD HH:mm:ss" @cancel="cancel" mode="datetime"></up-datetime-picker>
|
||||||
<up-datetime-picker :show="showEndTime" v-model="newData" @confirm="confirm2" :modelValue="newData" format="YYYY-MM-DD HH:mm:ss"
|
<up-datetime-picker :show="showEndTime" v-model="newData" @confirm="confirm2" :modelValue="newData"
|
||||||
@cancel="cancel" mode="datetime"></up-datetime-picker>
|
format="YYYY-MM-DD HH:mm:ss" @cancel="cancel" mode="datetime"></up-datetime-picker>
|
||||||
<view class="cardxx">
|
<view class="cardxx">
|
||||||
<up-button color="#C9F6F5" size="large" shape="circle" @click="publish" throttleTime="500"><span
|
|
||||||
class="fbText">发布</span></up-button>
|
<view class="cardxx-btn" @click="publish">
|
||||||
<view style="width: 26rpx;height: 80rpx;"></view>
|
发布
|
||||||
<up-button color="#F8F8E3" size="large" shape="circle" @click="draft" style="margin-left: 26rpx;"><span
|
</view>
|
||||||
class="cgText">存草稿</span></up-button>
|
<view class="cardxx-btn cgText" @click="draft">
|
||||||
|
存草稿
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</up-form>
|
</up-form>
|
||||||
</template>
|
</template>
|
||||||
|
@ -108,6 +121,9 @@ const data = reactive({
|
||||||
endTime: null,
|
endTime: null,
|
||||||
file: null,
|
file: null,
|
||||||
state: null,
|
state: null,
|
||||||
|
addres: null,
|
||||||
|
longitude: null,
|
||||||
|
latitude: null
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
acTitle: [
|
acTitle: [
|
||||||
|
@ -123,15 +139,17 @@ const data = reactive({
|
||||||
],
|
],
|
||||||
endTime: [
|
endTime: [
|
||||||
{ required: true, message: '请选择活动结束时间', trigger: 'change' },
|
{ required: true, message: '请选择活动结束时间', trigger: 'change' },
|
||||||
{ validator: (rule, value, callback) => {
|
{
|
||||||
console.log(form.value.startTime," ",value," ",value <= form.value.startTime)
|
validator: (rule, value, callback) => {
|
||||||
if (value <= form.value.startTime) {
|
if (value <= form.value.startTime) {
|
||||||
callback( proxy.$modal.msgError('时间选择错误') );
|
callback(proxy.$modal.msgError('时间选择错误'));
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
}, trigger: 'change' }
|
}, trigger: 'change'
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
addres: []
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const { form, rules } = toRefs(data);
|
const { form, rules } = toRefs(data);
|
||||||
|
@ -141,6 +159,7 @@ const bgColor = ref('');
|
||||||
bgColor.value = 'rgba(170, 0, 0, 0)'
|
bgColor.value = 'rgba(170, 0, 0, 0)'
|
||||||
const showStartTime = ref(false);
|
const showStartTime = ref(false);
|
||||||
const showEndTime = ref(false);
|
const showEndTime = ref(false);
|
||||||
|
const showaddres = ref(false);
|
||||||
const StartTime = ref('请选择活动开始时间');
|
const StartTime = ref('请选择活动开始时间');
|
||||||
const showtext1 = ref(true);
|
const showtext1 = ref(true);
|
||||||
const showtext2 = ref(true);
|
const showtext2 = ref(true);
|
||||||
|
@ -151,7 +170,7 @@ const timeFormat = uni.$u.timeFormat;
|
||||||
// 表单引用
|
// 表单引用
|
||||||
const uFormRef = ref(null);
|
const uFormRef = ref(null);
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
console.log("页面参数:", options.id);
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const leftClick = () => {
|
const leftClick = () => {
|
||||||
|
@ -169,21 +188,28 @@ const publish = () => {
|
||||||
submitForm('publish');
|
submitForm('publish');
|
||||||
console.log("发布");
|
console.log("发布");
|
||||||
}
|
}
|
||||||
|
const change1 = (e) => {
|
||||||
|
showtext3.value = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
const inputtextInfo = (e) => {
|
||||||
|
console.log("测试输入1:", e);
|
||||||
|
|
||||||
|
}
|
||||||
|
const gotomap = () => {
|
||||||
|
proxy.$tab.navigateTo('/pages/activity/map')
|
||||||
|
}
|
||||||
|
|
||||||
const submitForm = (type) => {
|
const submitForm = (type) => {
|
||||||
if (uFormRef.value) {
|
if (uFormRef.value) {
|
||||||
uFormRef.value.validate().then(valid => {
|
uFormRef.value.validate().then(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
console.log('表单验证通过:', form.value);
|
|
||||||
proxy.$modal.loading('正在提交数据,请稍候...');
|
proxy.$modal.loading('正在提交数据,请稍候...');
|
||||||
// 提交表单数据
|
// 提交表单数据
|
||||||
if (type === 'publish') {
|
if (type === 'publish') {
|
||||||
console.log("调用发布接口", form.value);
|
|
||||||
// 调用发布接口
|
// 调用发布接口
|
||||||
addInfo(form.value).then(response => {
|
addInfo(form.value).then(response => {
|
||||||
proxy.$modal.closeLoading();
|
rotation(response.data.id);
|
||||||
proxy.$modal.msgSuccess("发布成功");
|
|
||||||
proxy.$tab.navigateTo('/pages/common/talkState/publish')
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 调用存草稿接口
|
// 调用存草稿接口
|
||||||
|
@ -202,24 +228,48 @@ const submitForm = (type) => {
|
||||||
console.log('表单引用未定义');
|
console.log('表单引用未定义');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//轮训
|
||||||
|
const rotation = (id) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
getInfo(id).then(response => {
|
||||||
|
if (response.data.auditStatus === 3 | response.data.auditStatus === 4) {
|
||||||
|
proxy.$modal.closeLoading();
|
||||||
|
proxy.$modal.msgError("审核失败");
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/auditFailure')
|
||||||
|
}else if(response.data.auditStatus === 2){
|
||||||
|
proxy.$modal.closeLoading();
|
||||||
|
proxy.$modal.msgSuccess("审核中~");
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/audit')
|
||||||
|
}else if(response.data.auditStatus === 0){
|
||||||
|
proxy.$modal.closeLoading();
|
||||||
|
proxy.$modal.msgSuccess("发布成功");
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/publis')
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
rotation(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const startTime = (e) => {
|
const startTime = (e) => {
|
||||||
showStartTime.value = !showStartTime.value
|
showStartTime.value = !showStartTime.value
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirm1 = (e) => {
|
const confirm1 = (e) => {
|
||||||
console.log(e);
|
|
||||||
showtext1.value = false;
|
showtext1.value = false;
|
||||||
StartTime.value = e.value
|
StartTime.value = e.value
|
||||||
form.value.startTime = timeFormat(e.value,'yyyy-mm-dd hh:MM:ss');
|
form.value.startTime = timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss');
|
||||||
showStartTime.value = !showStartTime.value
|
showStartTime.value = !showStartTime.value
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirm2 = (e) => {
|
const confirm2 = (e) => {
|
||||||
console.log(e);
|
|
||||||
showtext2.value = false;
|
showtext2.value = false;
|
||||||
EndTime.value = e.value
|
EndTime.value = e.value
|
||||||
form.value.endTime = timeFormat(e.value,'yyyy-mm-dd hh:MM:ss');
|
form.value.endTime = timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss');
|
||||||
showEndTime.value = !showEndTime.value
|
showEndTime.value = !showEndTime.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,6 +279,10 @@ const cancel = (e) => {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
.navbarcenter {
|
.navbarcenter {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 36rpx;
|
font-size: 36rpx;
|
||||||
|
@ -243,7 +297,7 @@ const cancel = (e) => {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0rpx;
|
top: 0rpx;
|
||||||
left: 0rpx;
|
left: 0rpx;
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardz {
|
.cardz {
|
||||||
|
@ -263,6 +317,24 @@ const cancel = (e) => {
|
||||||
|
|
||||||
.contentInfo {
|
.contentInfo {
|
||||||
margin-top: 46rpx;
|
margin-top: 46rpx;
|
||||||
|
|
||||||
|
.text_style {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 30rpx;
|
||||||
|
line-height: 46rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.char-count {
|
||||||
|
z-index: 1;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardzfile {
|
.cardzfile {
|
||||||
|
@ -290,17 +362,25 @@ const cancel = (e) => {
|
||||||
margin-left: 32rpx;
|
margin-left: 32rpx;
|
||||||
margin-right: 32rpx;
|
margin-right: 32rpx;
|
||||||
margin-top: 80rpx;
|
margin-top: 80rpx;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding-bottom: 32rpx;
|
||||||
|
|
||||||
.fbText {
|
.cardxx-btn {
|
||||||
font-weight: 400;
|
width: 330rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
border-radius: 40rpx 40rpx 40rpx 40rpx;
|
||||||
|
background: #c9f6f5;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
color: #FBFBFB !important;
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: #FBFBFB;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cgText {
|
.cgText {
|
||||||
font-weight: 400;
|
background-color: #F8F8E3;
|
||||||
font-size: 30rpx;
|
color: #999999;
|
||||||
color: #999999 !important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,4 +391,9 @@ const cancel = (e) => {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #C9F6F5 !important;
|
color: #C9F6F5 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btnInfo1 {
|
||||||
|
width: 330rpx !important;
|
||||||
|
height: 80rpx !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -16,17 +16,20 @@
|
||||||
结束时间:{{ item.endTime }}
|
结束时间:{{ item.endTime }}
|
||||||
</view>
|
</view>
|
||||||
<view class="addrs flex alignCenter">
|
<view class="addrs flex alignCenter">
|
||||||
<image :src="tu51" style="width: 20rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
<image :src="tu51" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
活动地点:{{ item.addres }}
|
活动地点:{{ item.addres }}
|
||||||
</view>
|
</view>
|
||||||
<view class="statsInfo">
|
<view class="statsInfo1" v-if="getDictLabelByValue2(item.attendState) != null">
|
||||||
|
<!-- 动态数据 -->
|
||||||
|
<view class="state1" >
|
||||||
|
<span class="text">{{ getDictLabelByValue2(item.attendState) }}</span></view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="statsInfo2">
|
||||||
<!-- 动态数据 -->
|
<!-- 动态数据 -->
|
||||||
<view :class="getDictLabelByValue(item.state).cssClass" >
|
<view :class="getDictLabelByValue(item.state).cssClass" >
|
||||||
<span class="text">{{ getDictLabelByValue(item.state).dictLabel }}</span></view>
|
<span class="text">{{ getDictLabelByValue(item.state).dictLabel }}</span></view>
|
||||||
<!-- 静态数据 -->
|
|
||||||
<!-- <view class="state1">
|
|
||||||
<span class="text">报名中</span>
|
|
||||||
</view> -->
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
@ -43,6 +46,7 @@ import { useStore } from 'vuex';
|
||||||
const emit = defineEmits(['scrolltolower']);
|
const emit = defineEmits(['scrolltolower']);
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const activityState = ref([])//字典
|
const activityState = ref([])//字典
|
||||||
|
const activityState2 = ref([])//字典 take_part_state
|
||||||
const iconConfig = proxy.iconConfig;
|
const iconConfig = proxy.iconConfig;
|
||||||
const tu21 = iconConfig.tu21;
|
const tu21 = iconConfig.tu21;
|
||||||
const tu22 = iconConfig.tu22;
|
const tu22 = iconConfig.tu22;
|
||||||
|
@ -62,13 +66,29 @@ const toInfo = (item) => {
|
||||||
}
|
}
|
||||||
const getDictLabelByValue = (state) => {
|
const getDictLabelByValue = (state) => {
|
||||||
const dict = activityState.value.find((dict) => dict.dictValue === state);
|
const dict = activityState.value.find((dict) => dict.dictValue === state);
|
||||||
|
|
||||||
return dict ? dict : '未知状态';
|
return dict ? dict : '未知状态';
|
||||||
};
|
};
|
||||||
|
const getDictLabelByValue2 = (state) => {
|
||||||
|
if(state == null)return null;
|
||||||
|
const dict = activityState2.value.find((dict) => dict.dictValue === state);
|
||||||
|
if( dict== undefined | dict.dictValue == 0){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(dict.dictValue == 1 | dict.dictValue == 2){
|
||||||
|
dict.dictLabel = "已报名"
|
||||||
|
return dict ? dict.dictLabel : '未知状态';
|
||||||
|
}
|
||||||
|
return dict ? dict.dictLabel : '未知状态';
|
||||||
|
};
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
getDicts('activity_state').then(e => {
|
getDicts('activity_state').then(e => {
|
||||||
activityState.value = e.data
|
activityState.value = e.data
|
||||||
console.log(activityState.value);
|
console.log(activityState.value);
|
||||||
})
|
})
|
||||||
|
getDicts('take_part_state').then(e => {
|
||||||
|
activityState2.value = e.data
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -97,7 +117,7 @@ onShow(() => {
|
||||||
padding-left: 24rpx;
|
padding-left: 24rpx;
|
||||||
|
|
||||||
.titile {
|
.titile {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
height: 80rpx;
|
height: 80rpx;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
|
@ -130,8 +150,13 @@ onShow(() => {
|
||||||
color: #000000 100%;
|
color: #000000 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.statsInfo1 {
|
||||||
|
position: absolute;
|
||||||
|
right: 130rpx;
|
||||||
|
bottom: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
.statsInfo {
|
.statsInfo2 {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 24rpx;
|
right: 24rpx;
|
||||||
bottom: 24rpx;
|
bottom: 24rpx;
|
||||||
|
|
|
@ -10,9 +10,10 @@
|
||||||
name="fileInfowx"
|
name="fileInfowx"
|
||||||
multiple
|
multiple
|
||||||
:previewFullImage="true"
|
:previewFullImage="true"
|
||||||
|
width="210rpx"
|
||||||
|
height="210rpx"
|
||||||
>
|
>
|
||||||
<image :src="tu2x"
|
<image :src="tu2x" style="width: 210rpx; height: 210rpx;"></image>
|
||||||
style="width: 210rpx;height: 210rpx;"></image>
|
|
||||||
</up-upload>
|
</up-upload>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
@ -148,30 +149,7 @@ const uploadFilePromise = async (fileInfo1, name) => {
|
||||||
const uploadQN = (file) => {
|
const uploadQN = (file) => {
|
||||||
return uploadQN1(file.url);
|
return uploadQN1(file.url);
|
||||||
};
|
};
|
||||||
//废弃
|
|
||||||
const uploadQN2 = (file) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const observable = qiniu.upload(file, dataToken.key, dataToken.token, putExtra, config);
|
|
||||||
const subscription = observable.subscribe({
|
|
||||||
next(res) {
|
|
||||||
console.log("next:", res);
|
|
||||||
},
|
|
||||||
error(err) {
|
|
||||||
console.log("error:", err);
|
|
||||||
reject(err);
|
|
||||||
},
|
|
||||||
async complete(res) {
|
|
||||||
console.log("complete:", res);
|
|
||||||
form.url = res.key;
|
|
||||||
form.name = res.key;
|
|
||||||
form.type = res.mimeType;
|
|
||||||
form.size = res.fsize;
|
|
||||||
await addFileList(form);
|
|
||||||
resolve(res.key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
//调用uni上传方法
|
//调用uni上传方法
|
||||||
const uploadQN1 = (file) => {
|
const uploadQN1 = (file) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
|
@ -0,0 +1,208 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<up-upload
|
||||||
|
:accept="fileTypeInfo"
|
||||||
|
:maxCount="limit"
|
||||||
|
:fileList="fileList1"
|
||||||
|
@afterRead="afterRead"
|
||||||
|
@delete="deletePic"
|
||||||
|
:maxSize="fileSize"
|
||||||
|
name="fileInfowx"
|
||||||
|
multiple
|
||||||
|
:previewFullImage="true"
|
||||||
|
>
|
||||||
|
<image :src="tu2x"
|
||||||
|
style="width: 210rpx;height: 210rpx;"></image>
|
||||||
|
</up-upload>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getQNtoken, addFileList } from "@/api/qiniu/info";
|
||||||
|
import config1 from "@/config";
|
||||||
|
import { ref, reactive, getCurrentInstance, defineEmits } from 'vue';
|
||||||
|
import { useStore } from 'vuex';
|
||||||
|
import * as qiniu from 'qiniu-js'
|
||||||
|
|
||||||
|
const emit = defineEmits();
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const uploadQiNiuDomain = config1.uploadQiNiuDomain;
|
||||||
|
const iconConfig = proxy.iconConfig;
|
||||||
|
const tu2x = iconConfig.tu2x;
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: [String, Object, Array],
|
||||||
|
fileTypeInfo: {
|
||||||
|
type: String,
|
||||||
|
default: "image",
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: Number,
|
||||||
|
default: 6,
|
||||||
|
},
|
||||||
|
fileSize: {
|
||||||
|
type: Number,
|
||||||
|
default: 100 * 1024 * 1024,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const url = ref('');
|
||||||
|
const fileList1 = ref([]);
|
||||||
|
const store = useStore();
|
||||||
|
const dataToken = reactive({
|
||||||
|
token: '',
|
||||||
|
key: ''
|
||||||
|
});
|
||||||
|
const fileInfo = reactive({
|
||||||
|
name: '',
|
||||||
|
type: '',
|
||||||
|
extension: ''
|
||||||
|
});
|
||||||
|
const config = reactive({
|
||||||
|
useCdnDomain: true,
|
||||||
|
region: qiniu.region.z2,
|
||||||
|
checkByMD5: true,
|
||||||
|
forceDirect: false
|
||||||
|
});
|
||||||
|
const putExtra = reactive({});
|
||||||
|
const form = reactive({
|
||||||
|
id: null,
|
||||||
|
configId: null,
|
||||||
|
name: null,
|
||||||
|
path: null,
|
||||||
|
url: null,
|
||||||
|
type: null,
|
||||||
|
fileCategory: null,
|
||||||
|
size: null,
|
||||||
|
creator: null,
|
||||||
|
createTime: null,
|
||||||
|
updater: null,
|
||||||
|
updateTime: null,
|
||||||
|
deleted: null
|
||||||
|
});
|
||||||
|
|
||||||
|
// 新增图片
|
||||||
|
const afterRead = async (event) => {
|
||||||
|
|
||||||
|
let name = event.name;
|
||||||
|
let lists = [].concat(event.file);
|
||||||
|
let fileListLen = fileList1.value.length;
|
||||||
|
lists.forEach(item => {
|
||||||
|
fileList1.value.push({
|
||||||
|
...item,
|
||||||
|
status: 'uploading',
|
||||||
|
message: '上传中',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
for (let i = 0; i < lists.length; i++) {
|
||||||
|
try {
|
||||||
|
const result = await uploadFilePromise(lists[i], name);
|
||||||
|
let item = fileList1.value[fileListLen];
|
||||||
|
fileList1.value.splice(fileListLen, 1, {
|
||||||
|
...item,
|
||||||
|
status: 'success',
|
||||||
|
message: '',
|
||||||
|
url: store.state.user.QNDomain + result,
|
||||||
|
furl: result
|
||||||
|
});
|
||||||
|
emit("update:modelValue", listToString(fileList1.value));
|
||||||
|
fileListLen++;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("上传失败:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const uploadFilePromise = async (fileInfo1, name) => {
|
||||||
|
|
||||||
|
// 主要目的的拼名字,大小,类型
|
||||||
|
let fileNameOld = [0, 1];
|
||||||
|
if (fileInfo1.name !== undefined) {
|
||||||
|
fileNameOld = fileInfo1.name.split('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
fileInfo.name = fileNameOld[0] + "_" + store.state.user.phoneType + "_" + name;
|
||||||
|
|
||||||
|
let extension1 = fileInfo1.url.split('.');
|
||||||
|
|
||||||
|
// 防止 h5 报错
|
||||||
|
if (extension1[1] === undefined) {
|
||||||
|
extension1[1] = fileNameOld[fileNameOld.length-1]; //保证取最后一个
|
||||||
|
}
|
||||||
|
//主要是为了拼接文件type(video/mp4),因为各端传入的type各有不同
|
||||||
|
fileInfo.type = fileInfo1.type + "/" + extension1[extension1.length-1];
|
||||||
|
|
||||||
|
fileInfo.extension = extension1[1];
|
||||||
|
try {
|
||||||
|
const tokenData = await getQNtoken(fileInfo);
|
||||||
|
dataToken.token = tokenData.QNtoken;
|
||||||
|
dataToken.key = tokenData.key;
|
||||||
|
|
||||||
|
const result = await uploadQN(fileInfo1);
|
||||||
|
return result;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("获取 token 或上传失败:", error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//多走一步,为了实现文件分片上传(废弃,简单上传即可)
|
||||||
|
const uploadQN = (file) => {
|
||||||
|
return uploadQN1(file.url);
|
||||||
|
};
|
||||||
|
|
||||||
|
//调用uni上传方法
|
||||||
|
const uploadQN1 = (file) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
uni.uploadFile({
|
||||||
|
url: uploadQiNiuDomain,
|
||||||
|
filePath: file,
|
||||||
|
name: 'file',
|
||||||
|
formData: {
|
||||||
|
'key': dataToken.key,
|
||||||
|
'token': dataToken.token
|
||||||
|
},
|
||||||
|
success: async (e) => {
|
||||||
|
try {
|
||||||
|
let data = JSON.parse(e.data);
|
||||||
|
form.url = data.key;
|
||||||
|
form.name = data.key;
|
||||||
|
form.type = data.fileType;
|
||||||
|
form.size = data.fsize;
|
||||||
|
await addFileList(form);
|
||||||
|
resolve(form.url);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("处理上传成功响应时出错:", error);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (e) => {
|
||||||
|
console.log("上传失败:", e);
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const deletePic = (e) => {
|
||||||
|
fileList1.value.splice(e.index, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
const typeInfo = () => {
|
||||||
|
store.dispatch('getPhoneType');
|
||||||
|
|
||||||
|
};
|
||||||
|
// 对象转成指定字符串分隔
|
||||||
|
function listToString(list, separator) {
|
||||||
|
let strs = "";
|
||||||
|
separator = separator || ",";
|
||||||
|
for (let i in list) {
|
||||||
|
if (list[i].url) {
|
||||||
|
strs += list[i].furl + separator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strs != '' ? strs.substr(0, strs.length - 1) : '';
|
||||||
|
}
|
||||||
|
typeInfo();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
|
@ -39,9 +39,41 @@
|
||||||
:src="mediaItem"></image>
|
:src="mediaItem"></image>
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
<!--三张图片-->
|
<!-- 三张图片 -->
|
||||||
<block v-if="postValue.media.length >= 3">
|
<block v-if="postValue.media.length == 3">
|
||||||
<u-album :urls="postValue.media" singleSize="660rpx" multipleSize="220rpx" space="10rpx" maxCount="3"></u-album>
|
<!-- <u-album :urls="postValue.media" singleSize="660rpx" multipleSize="220rpx" space="10rpx" maxCount="3"></u-album> -->
|
||||||
|
<view class="flex justifyBetween">
|
||||||
|
<view class="img-style-3-1" v-for="(mediaItem, index3) in postValue.media.slice(0,3)" :key="index3">
|
||||||
|
<image :lazy-load="true"
|
||||||
|
@tap.stop="previewImage(mediaItem, postValue.media)" mode="aspectFill"
|
||||||
|
:src="mediaItem"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<!--大于三张图片-列表-->
|
||||||
|
<block v-if="postValue.media.length > 3 && postViewType == 0">
|
||||||
|
<!-- <u-album :urls="postValue.media" singleSize="660rpx" multipleSize="220rpx" space="10rpx" maxCount="3"></u-album> -->
|
||||||
|
<view class="flex justifyBetween">
|
||||||
|
<view class="img-style-3-2" v-for="(mediaItem, index3) in postValue.media.slice(0,3)" :key="index3">
|
||||||
|
<image :lazy-load="true"
|
||||||
|
@tap.stop="previewImage(mediaItem, postValue.media)" mode="aspectFill"
|
||||||
|
:src="mediaItem"></image>
|
||||||
|
<view v-if="index3 == 2" class="img-cover-style" @tap.stop="previewImage(mediaItem, postValue.media)">
|
||||||
|
<text>+{{ postValue.media.length - 3 }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<!--大于三张图片-详情-->
|
||||||
|
<block v-if="postValue.media.length > 3 && postViewType == 1">
|
||||||
|
<!-- <u-album :urls="postValue.media" singleSize="660rpx" multipleSize="220rpx" space="10rpx" maxCount="3"></u-album> -->
|
||||||
|
<view class="flex justifyBetween wrap">
|
||||||
|
<view class="img-style-3-1" v-for="(mediaItem, index3) in postValue.media" :key="index3">
|
||||||
|
<image :lazy-load="true"
|
||||||
|
@tap.stop="previewImage(mediaItem, postValue.media)" mode="aspectFill"
|
||||||
|
:src="mediaItem"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</block>
|
</block>
|
||||||
<!-- tab -->
|
<!-- tab -->
|
||||||
<view class="center-content-post-tab" style="display: flex;">
|
<view class="center-content-post-tab" style="display: flex;">
|
||||||
|
@ -214,7 +246,7 @@
|
||||||
line-height: 30rpx;
|
line-height: 30rpx;
|
||||||
}
|
}
|
||||||
.no-focus-text {
|
.no-focus-text {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
width: 58rpx;
|
width: 58rpx;
|
||||||
// height: 30rpx;
|
// height: 30rpx;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
|
@ -222,7 +254,7 @@
|
||||||
color: #3477FC;
|
color: #3477FC;
|
||||||
}
|
}
|
||||||
.focus-text {
|
.focus-text {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
/* width: 58rpx; */
|
/* width: 58rpx; */
|
||||||
// height: 30rpx;
|
// height: 30rpx;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
|
@ -281,7 +313,7 @@
|
||||||
.u-album__row__wrapper {}
|
.u-album__row__wrapper {}
|
||||||
|
|
||||||
.data-v-6fcabaad {
|
.data-v-6fcabaad {
|
||||||
border-radius: 20rpx 20rpx 20rpx 20rpx !important;
|
border-radius: 20rpx !important;
|
||||||
/* width: 200rpx !important;
|
/* width: 200rpx !important;
|
||||||
height: 200rpx !important; */
|
height: 200rpx !important; */
|
||||||
}
|
}
|
||||||
|
@ -305,7 +337,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
.center-content-post-tab-text{
|
.center-content-post-tab-text{
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
/* width: 139rpx; */
|
/* width: 139rpx; */
|
||||||
// height: 26rpx;
|
// height: 26rpx;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
|
@ -381,7 +413,7 @@
|
||||||
|
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
height: 370rpx;
|
height: 370rpx;
|
||||||
border-radius: 18rpx 18rpx 18rpx 18rpx;
|
border-radius: 20rpx;
|
||||||
background: #b3d7ff;
|
background: #b3d7ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -393,7 +425,46 @@
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 306rpx;
|
height: 306rpx;
|
||||||
border-radius: 18rpx 18rpx 18rpx 18rpx;
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-style-3-1{
|
||||||
|
|
||||||
|
image {
|
||||||
|
// margin: 6rpx;
|
||||||
|
width: 222rpx;
|
||||||
|
height: 222rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-style-3-2{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
position: relative;
|
||||||
|
image {
|
||||||
|
// margin: 6rpx;
|
||||||
|
width: 222rpx;
|
||||||
|
height: 222rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-cover-style{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
text{
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,15 +35,20 @@ const { proxy } = getCurrentInstance();
|
||||||
const iconConfig = proxy.iconConfig;
|
const iconConfig = proxy.iconConfig;
|
||||||
const sh2x1 = iconConfig.sh2x1;
|
const sh2x1 = iconConfig.sh2x1;
|
||||||
const sh2x = iconConfig.sh2x;
|
const sh2x = iconConfig.sh2x;
|
||||||
const bgColor = ref('');
|
const bgColor = ref('rgba(170, 0, 0, 0)');
|
||||||
bgColor.value = 'rgba(170, 0, 0, 0)'
|
|
||||||
|
|
||||||
const leftClick = () => {
|
const leftClick = () => {
|
||||||
proxy.$tab.navigateBack(1)
|
proxy.$tab.navigateBack(1)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" >
|
||||||
|
page{
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
}
|
||||||
.bacimg2 {
|
.bacimg2 {
|
||||||
|
z-index: 1;
|
||||||
width: 508rpx;
|
width: 508rpx;
|
||||||
height: 540rpx;
|
height: 540rpx;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -66,7 +71,7 @@ const leftClick = () => {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0rpx;
|
top: 0rpx;
|
||||||
left: 0rpx;
|
left: 0rpx;
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shenhe2x1 {
|
.shenhe2x1 {
|
||||||
|
|
|
@ -45,6 +45,10 @@ const leftClick = () => {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
page{
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
}
|
||||||
.bacimg2 {
|
.bacimg2 {
|
||||||
width: 508rpx;
|
width: 508rpx;
|
||||||
height: 540rpx;
|
height: 540rpx;
|
||||||
|
@ -68,7 +72,7 @@ const leftClick = () => {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0rpx;
|
top: 0rpx;
|
||||||
left: 0rpx;
|
left: 0rpx;
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shenhe2x1 {
|
.shenhe2x1 {
|
||||||
|
@ -80,7 +84,7 @@ const leftClick = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.text1 {
|
.text1 {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
font-size: 48rpx;
|
font-size: 48rpx;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
@ -109,7 +113,7 @@ const leftClick = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.fbText {
|
.fbText {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
|
@ -11,14 +11,14 @@
|
||||||
</template>
|
</template>
|
||||||
</up-navbar>
|
</up-navbar>
|
||||||
</view>
|
</view>
|
||||||
<image class="bacimg2" :src="cg2x22"></image>
|
<image class="bacimg2" :src="cg2x21"></image>
|
||||||
<view class="bgc"></view>
|
<view class="bgc"></view>
|
||||||
<view class="cardz">
|
<view class="cardz">
|
||||||
<image :src="cg2x21" class="shenhe2x1"></image>
|
<image :src="cg2x22" class="shenhe2x1"></image>
|
||||||
<span class="text">待审核</span>
|
<span class="text">发布成功</span>
|
||||||
</view>
|
</view>
|
||||||
<view style="position: fixed; top: 632rpx; width: 100%; padding-left: 32rpx; padding-right: 32rpx;">
|
<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
|
<up-button color="#DBF6EF" size="large" shape="circle" @click="publish"><span
|
||||||
class="fbText">继续发布</span></up-button>
|
class="fbText">继续发布</span></up-button>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
@ -34,9 +34,9 @@ const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const iconConfig = proxy.iconConfig;
|
const iconConfig = proxy.iconConfig;
|
||||||
const cg2x21 = iconConfig.cg2x21;
|
const cg2x21 = iconConfig.cg2x21;
|
||||||
const cg2x22 = iconConfig.cg2x21;
|
const cg2x22 = iconConfig.cg2x22;
|
||||||
const bgColor = ref('');
|
const bgColor = ref('rgba(170, 0, 0, 0)');
|
||||||
bgColor.value = 'rgba(170, 0, 0, 0)'
|
|
||||||
|
|
||||||
const leftClick = () => {
|
const leftClick = () => {
|
||||||
proxy.$tab.switchTab("/pages/index")
|
proxy.$tab.switchTab("/pages/index")
|
||||||
|
@ -45,13 +45,18 @@ const publish = () => {
|
||||||
proxy.$tab.switchTab("/pages/index")
|
proxy.$tab.switchTab("/pages/index")
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" >
|
||||||
|
page{
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
}
|
||||||
.bacimg2 {
|
.bacimg2 {
|
||||||
width: 508rpx;
|
width: 508rpx;
|
||||||
height: 540rpx;
|
height: 540rpx;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: -100rpx;
|
top: -100rpx;
|
||||||
left: -100rpx;
|
left: -100rpx;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbarcenter {
|
.navbarcenter {
|
||||||
|
@ -69,7 +74,7 @@ const publish = () => {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0rpx;
|
top: 0rpx;
|
||||||
left: 0rpx;
|
left: 0rpx;
|
||||||
z-index: -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shenhe2x1 {
|
.shenhe2x1 {
|
||||||
|
@ -78,14 +83,15 @@ const publish = () => {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 276rpx;
|
top: 276rpx;
|
||||||
left: 260rpx;
|
left: 260rpx;
|
||||||
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
font-size: 48rpx;
|
font-size: 48rpx;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
color: #00CCBE !important;
|
color: #5CCDB1 !important;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 500rpx;
|
top: 500rpx;
|
||||||
left: 300rpx;
|
left: 300rpx;
|
||||||
|
@ -97,7 +103,7 @@ const publish = () => {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.fbText{
|
.fbText{
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<!-- 顶部导航栏 -->
|
<!-- 顶部导航栏 -->
|
||||||
<u-navbar leftText=" " title=" " :placeholder="true" :safeAreaInsetTop="true" :bgColor="bgColor">
|
<u-navbar leftText=" " title=" " :placeholder="true" :safeAreaInsetTop="true" :bgColor="bgColor" >
|
||||||
<template class="img1BOX" #left>
|
<template class="img1BOX" #left>
|
||||||
<image @click="GotoUNISignid()" src="../static/images/icon/tu2-4.png" class="img1"></image>
|
<image @click="GotoUNISignid()" src="../static/images/icon/tu2-4.png" class="img1"></image>
|
||||||
<!-- <image src="../static/images/icon/tu2-5.png" class="img2 image-container" @click="togglePostType"></image> -->
|
<!-- <image src="../static/images/icon/tu2-5.png" class="img2 image-container" @click="togglePostType"></image> -->
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template class="img2Box" #center>
|
<template class="img2Box" #center>
|
||||||
<view class="qiehuanBox">
|
<view class="qiehuanBox">
|
||||||
<u-tabs lineColor="#B3D7FF" lineWidth="24" lineHeight="4"
|
<u-tabs lineColor="#B3D7FF" lineWidth="24" lineHeight="4" :scrollable="false"
|
||||||
:activeStyle="{ fontWeight: '600rpx',fontSize:'40rpx',color: '#000000'}"
|
:activeStyle="{ fontWeight: '600rpx',fontSize:'40rpx',color: '#000000'}"
|
||||||
:inactiveStyle="{fontWeight: '400rpx',fontSize:'36rpx',color: '#999999'}"
|
:inactiveStyle="{fontWeight: '400rpx',fontSize:'36rpx',color: '#999999'}"
|
||||||
:list="list1" :current="viewIndex" @click="click"></u-tabs>
|
:list="list1" :current="viewIndex" @click="click"></u-tabs>
|
||||||
|
@ -108,18 +108,17 @@
|
||||||
|
|
||||||
<view class="box-a">
|
<view class="box-a">
|
||||||
<view class="box-b" v-for="(item, index) in searchPrerequisiteList" :key="index">
|
<view class="box-b" v-for="(item, index) in searchPrerequisiteList" :key="index">
|
||||||
<ul
|
<view
|
||||||
class="box-c"
|
class="box-c"
|
||||||
:class="{ 'box-d': lefther === index }"
|
:class="{ 'box-d': lefther === index }"
|
||||||
@click="handerShowHand"
|
@click="handerShowHand"
|
||||||
>
|
>
|
||||||
<li class="offtext" :class="{ boxtext: lefther === index }" @click.stop="handerLi(index)">
|
<view class="offtext" :class="{ boxtext: lefther === index }" @click.stop="handerLi(index)">
|
||||||
<text>{{ item }}</text>
|
<text>{{ item }}</text>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</u-popup>
|
</u-popup>
|
||||||
|
@ -128,27 +127,39 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, onMounted, getCurrentInstance } from 'vue';
|
import { ref, reactive, onMounted, onUnmounted, onBeforeUnmount, getCurrentInstance } from 'vue';
|
||||||
import {onReachBottom,onLoad} from "@dcloudio/uni-app";
|
import {onReachBottom,onLoad,onPageScroll} from "@dcloudio/uni-app";
|
||||||
import PostView from "@/pages/common/postview/index.vue";
|
import PostView from "@/pages/common/postview/index.vue";
|
||||||
|
|
||||||
|
const bgColor = ref('rgba(170, 0, 0, 0)');
|
||||||
const { proxy } = getCurrentInstance();
|
onMounted(() => {
|
||||||
|
onPageScroll((e) => {
|
||||||
|
// console.log("滚动距离为:" + e.scrollTop);
|
||||||
|
if (e.scrollTop >= 70) {
|
||||||
|
bgColor.value = 'rgba(255, 255, 255, 1)'
|
||||||
|
} else {
|
||||||
|
bgColor.value = 'rgba(170, 0, 0, 0)'
|
||||||
|
}
|
||||||
|
});
|
||||||
onReachBottom(() => {
|
onReachBottom(() => {
|
||||||
console.log('触底了')
|
console.log('触底了')
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
|
||||||
const viewIndex = ref(1);
|
const viewIndex = ref(1);
|
||||||
const searchOpen = ref(false);
|
const searchOpen = ref(false);
|
||||||
const lefther = ref(0);
|
const lefther = ref(0);
|
||||||
const searchPrerequisite = ref('热门');
|
const searchPrerequisite = ref('热门');
|
||||||
const postTypeOpen = ref(false);
|
const postTypeOpen = ref(false);
|
||||||
const bgColor = ref('rgba(170, 0, 0, 0)');
|
|
||||||
|
|
||||||
// const postTypeList = ['发布话题', '发布活动'];
|
// const postTypeList = ['发布话题', '发布活动'];
|
||||||
const postTypeList = [{lable:'发布话题',id:1}, {lable:'发布活动',id:2}];
|
const postTypeList = [{lable:'发布话题',id:1}, {lable:'发布活动',id:2}];
|
||||||
const searchPrerequisiteList = [
|
const searchPrerequisiteList = [
|
||||||
'热门', '最新', '筛选3', '筛选4', '筛选5', '筛选6', '筛选7', '筛选8', '筛选9'
|
'热门', '最新', '筛选3', '筛选4', '筛选5', '筛选6', '筛选7', '筛选8'
|
||||||
];
|
];
|
||||||
|
|
||||||
const list1 = reactive([
|
const list1 = reactive([
|
||||||
|
@ -187,10 +198,10 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
content: '八年前,学弟在工地上杀了一个工友,杀人前,他给警察打了电话,预告杀人的时间和地点,并超出部分测试超出部分测试超出部分测试超出部分测试......超出部分测试超出部分测试超出部分测试超出部分测试',
|
content: '八年前,学弟在工地上杀了一个工友,杀人前,他给警察打了电话,预告杀人的时间和地点,并超出部分测试超出部分测试超出部分测试超出部分测试......超出部分测试超出部分测试超出部分测试超出部分测试',
|
||||||
type: '1',
|
type: '1',
|
||||||
media: [
|
media: [
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://img1.baidu.com/it/u=1179199327,1946315836&fm=253&fmt=auto&app=138&f=JPEG?w=1364&h=800',
|
||||||
'https://picx.zhimg.com/v2-3b4fc7e3a1195a081d0259246c38debc_720w.jpg?source=172ae18b',
|
'https://www4.bing.com//th?id=OHR.CopenhagenBicycles_ZH-CN3047958346_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
'https://bpic.51yuansu.com/backgd/cover/00/63/09/64b52b1426fff_800.jpg?x-oss-process=image/resize,w_780/sharpen,100',
|
'https://www4.bing.com//th?id=OHR.CarnavalTenerife_ZH-CN1559136778_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://www4.bing.com//th?id=OHR.StJamesPool_ZH-CN5930624359_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
],
|
],
|
||||||
tab: ['学术讨论组', '校园风景'],
|
tab: ['学术讨论组', '校园风景'],
|
||||||
transmitCount: 136,
|
transmitCount: 136,
|
||||||
|
@ -210,7 +221,7 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
content: '是一个中文互联网高质量问答社区和创作者聚集的原创内容平台,于2011年1月正式上线',
|
content: '是一个中文互联网高质量问答社区和创作者聚集的原创内容平台,于2011年1月正式上线',
|
||||||
type: '1',
|
type: '1',
|
||||||
media: [
|
media: [
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://www4.bing.com//th?id=OHR.BambooPanda_ZH-CN8455481760_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
],
|
],
|
||||||
tab: ['校园风景'],
|
tab: ['校园风景'],
|
||||||
transmitCount: 13,
|
transmitCount: 13,
|
||||||
|
@ -231,8 +242,8 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
content: '是一个中文互联网高质量问答社区和创作者聚集的原创内容平台,于2011年1月正式上线',
|
content: '是一个中文互联网高质量问答社区和创作者聚集的原创内容平台,于2011年1月正式上线',
|
||||||
type: '1',
|
type: '1',
|
||||||
media: [
|
media: [
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://www4.bing.com//th?id=OHR.PlitviceWinter_ZH-CN0407572344_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
'https://picx.zhimg.com/v2-3b4fc7e3a1195a081d0259246c38debc_720w.jpg?source=172ae18b'
|
'https://www4.bing.com//th?id=OHR.HawkOwl_ZH-CN3401920167_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202'
|
||||||
],
|
],
|
||||||
tab: ['校园风景'],
|
tab: ['校园风景'],
|
||||||
transmitCount: 13,
|
transmitCount: 13,
|
||||||
|
@ -304,12 +315,6 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
searchOpen.value = !searchOpen.value;
|
searchOpen.value = !searchOpen.value;
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
console.log(proxy.$store.state.user.QNDomain);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function GotoUNISignid(){
|
function GotoUNISignid(){
|
||||||
proxy.$tab.navigateTo("/pages/signln/signid");
|
proxy.$tab.navigateTo("/pages/signln/signid");
|
||||||
}
|
}
|
||||||
|
@ -495,16 +500,22 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
height: 200rpx !important; */
|
height: 200rpx !important; */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.data-v-6fcabaad{
|
||||||
|
border-radius: 20rpx 20rpx 20rpx 20rpx !important;
|
||||||
|
}
|
||||||
|
|
||||||
.box-a {
|
.box-a {
|
||||||
margin-top: 42rpx;
|
margin-top: 42rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-between;
|
// justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-b {
|
.box-b {
|
||||||
width: calc(33.33% - 16rpx); /* 每行三个元素,减去外边距的总宽度 */
|
width: calc(33.33% - 26rpx); /* 每行三个元素,减去外边距的总宽度 */
|
||||||
margin-bottom: 24rpx;
|
margin-bottom: 24rpx;
|
||||||
|
// margin-left: 12rpx;
|
||||||
|
margin-right: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-c {
|
.box-c {
|
||||||
|
@ -524,7 +535,7 @@ import PostView from "@/pages/common/postview/index.vue";
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: "Microsoft YaHei";
|
font-family: "Microsoft YaHei";
|
||||||
// line-height: 82rpx;
|
// line-height: 82rpx;
|
||||||
display: block;
|
// display: block;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
padding: 12rpx 0;
|
padding: 12rpx 0;
|
||||||
|
|
|
@ -138,9 +138,10 @@ export default {
|
||||||
// 登录成功后,处理函数
|
// 登录成功后,处理函数
|
||||||
loginSuccess(result) {
|
loginSuccess(result) {
|
||||||
// 设置用户信息
|
// 设置用户信息
|
||||||
this.$store.dispatch('GetUserInfo');
|
|
||||||
this.$store.dispatch('GetInfo').then(res => {
|
this.$store.dispatch('GetInfo').then(res => {
|
||||||
this.$store.dispatch('getQNDomainInfo')
|
this.$store.dispatch('getQNDomainInfo')
|
||||||
|
this.$store.dispatch('GetUserInfo');
|
||||||
this.$tab.reLaunch('/pages/index')
|
this.$tab.reLaunch('/pages/index')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,9 +12,36 @@
|
||||||
</view>
|
</view>
|
||||||
<view v-else>
|
<view v-else>
|
||||||
<view class="userInfoNot">
|
<view class="userInfoNot">
|
||||||
|
<view class="avatarInfo">
|
||||||
<up-avatar :src="avatar" size="148rpx"></up-avatar>
|
<up-avatar :src="avatar" size="148rpx"></up-avatar>
|
||||||
<up-text :text="nickName" size="44rpx" color="#FFFFFF" bold="400" margin="24rpx"></up-text>
|
<image v-if="isOfficial" class="official" :src="tu36"></image>
|
||||||
<up-text :text="sex" size="44rpx" color="#FFFFFF" bold="400" margin="24rpx"></up-text>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="simpleInfo-text">
|
||||||
|
<view class="textgrid1">
|
||||||
|
<view class="grid11">{{ nickName }}</view>
|
||||||
|
<image :src="mupdate" style="width: 32rpx; height: 32rpx;"></image>
|
||||||
|
</view>
|
||||||
|
<view class="textgrid2">
|
||||||
|
<view class="textInfo grid21">{{ dictSex(sex) }}</view>
|
||||||
|
<view class="textInfo grid22">LV{{ infoRank }}</view>
|
||||||
|
<view class="textInfo grid23">ID:{{ name }}</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="textgrid3">
|
||||||
|
<view class="grid31">[签名]{{ qm(remark) }}</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="school">
|
||||||
|
<view class="school1">
|
||||||
|
<image :src="tu51addres" style="width: 16rpx; height: 20rpx;"></image>
|
||||||
|
<view class="textInfo">{{ infoSchool }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="smallUserInfo">
|
<view class="smallUserInfo">
|
||||||
|
@ -37,8 +64,7 @@
|
||||||
<text class="text1">我的话题</text>
|
<text class="text1">我的话题</text>
|
||||||
<view>
|
<view>
|
||||||
<up-grid :border="false" col="5" @click="grid1Click1">
|
<up-grid :border="false" col="5" @click="grid1Click1">
|
||||||
<up-grid-item v-for="(listItem, listIndex) in list1" :key="listIndex"
|
<up-grid-item v-for="(listItem, listIndex) in list1" :key="listIndex" customStyle="padding-top: 24rpx; ">
|
||||||
customStyle="padding-top: 24rpx; ">
|
|
||||||
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
||||||
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
||||||
</up-grid-item>
|
</up-grid-item>
|
||||||
|
@ -49,8 +75,7 @@
|
||||||
<text class="text1">我的活动</text>
|
<text class="text1">我的活动</text>
|
||||||
<view>
|
<view>
|
||||||
<up-grid :border="false" col="5" @click="grid1Click2">
|
<up-grid :border="false" col="5" @click="grid1Click2">
|
||||||
<up-grid-item v-for="(listItem, listIndex) in list2" :key="listIndex"
|
<up-grid-item v-for="(listItem, listIndex) in list2" :key="listIndex" customStyle="padding-top: 24rpx; ">
|
||||||
customStyle="padding-top: 24rpx; ">
|
|
||||||
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
||||||
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
||||||
</up-grid-item>
|
</up-grid-item>
|
||||||
|
@ -61,8 +86,7 @@
|
||||||
<text class="text1">更多功能</text>
|
<text class="text1">更多功能</text>
|
||||||
<view>
|
<view>
|
||||||
<up-grid :border="false" col="4" @click="grid1Click3">
|
<up-grid :border="false" col="4" @click="grid1Click3">
|
||||||
<up-grid-item v-for="(listItem, listIndex) in list3" :key="listIndex"
|
<up-grid-item v-for="(listItem, listIndex) in list3" :key="listIndex" customStyle="padding-top: 24rpx; ">
|
||||||
customStyle="padding-top: 24rpx; ">
|
|
||||||
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
<image :src="listItem.icon" style="width: 66rpx; height: 66rpx;"></image>
|
||||||
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
<text style="font-size: 24rpx;color: #999999;margin-top: 20rpx;">{{ listItem.title }}</text>
|
||||||
</up-grid-item>
|
</up-grid-item>
|
||||||
|
@ -77,10 +101,17 @@ import { useStore } from 'vuex'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { ref, getCurrentInstance } from 'vue';
|
import { ref, getCurrentInstance } from 'vue';
|
||||||
import { getDicts } from "@/api/system/dict/data";
|
import { getDicts } from "@/api/system/dict/data";
|
||||||
|
import { onShow, onLoad } from '@dcloudio/uni-app'
|
||||||
|
import image from 'uview-plus/libs/config/props/image';
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
const isOfficial = ref(true)
|
||||||
const iconConfig = proxy.iconConfig;
|
const iconConfig = proxy.iconConfig;
|
||||||
const bjt = iconConfig.bjt;
|
const bjt = iconConfig.bjt;
|
||||||
const bjt2 = iconConfig.bjt2;
|
const bjt2 = iconConfig.bjt2;
|
||||||
|
const mupdate = iconConfig.mupdate;
|
||||||
|
const tu36 = iconConfig.tu36;
|
||||||
|
//定位
|
||||||
|
const tu51addres = iconConfig.tu51addres;
|
||||||
//+更多
|
//+更多
|
||||||
const gd11 = iconConfig.gd11;
|
const gd11 = iconConfig.gd11;
|
||||||
const gd12 = iconConfig.gd12;
|
const gd12 = iconConfig.gd12;
|
||||||
|
@ -103,38 +134,63 @@ const hd13 = iconConfig.hd13;
|
||||||
const hd14 = iconConfig.hd14;
|
const hd14 = iconConfig.hd14;
|
||||||
const hd15 = iconConfig.hd15;
|
const hd15 = iconConfig.hd15;
|
||||||
const list1 = ref([
|
const list1 = ref([
|
||||||
{icon: ht11, title: '全部话题' },
|
{ icon: ht11, title: '全部话题' },
|
||||||
{ icon: ht12, title: '已发布' },
|
{ icon: ht12, title: '已发布' },
|
||||||
{ icon: ht13, title: '审核中' },
|
{ icon: ht13, title: '审核中' },
|
||||||
{ icon: ht14, title: '未通过' },
|
{ icon: ht14, title: '未通过' },
|
||||||
{ icon: ht15, title: '草稿箱' }
|
{ icon: ht15, title: '草稿箱' }
|
||||||
])
|
])
|
||||||
const list2 = ref([
|
const list2 = ref([
|
||||||
{icon: hd11, title: '全部活动' },
|
{ icon: hd11, title: '全部活动' },
|
||||||
{ icon: hd12, title: '已发布' },
|
{ icon: hd12, title: '已发布' },
|
||||||
{ icon: hd13, title: '审核中' },
|
{ icon: hd13, title: '审核中' },
|
||||||
{ icon: hd14, title: '未通过' },
|
{ icon: hd14, title: '未通过' },
|
||||||
{ icon: hd15, title: '草稿箱' }
|
{ icon: hd15, title: '草稿箱' }
|
||||||
])
|
])
|
||||||
const list3 = ref([
|
const list3 = ref([
|
||||||
{icon: gd11, title: '外卖订单' },
|
{ icon: gd11, title: '外卖订单' },
|
||||||
{ icon: gd12, title: '我的兼职' },
|
{ icon: gd12, title: '我的兼职' },
|
||||||
{ icon: gd13, title: '证件证明' },
|
{ icon: gd13, title: '证件证明' },
|
||||||
{ icon: gd14, title: '地址管理' },
|
{ icon: gd14, title: '地址管理' },
|
||||||
{ icon: gd21, title: '优惠卡券' },
|
{ icon: gd21, title: '优惠卡券' },
|
||||||
{icon: gd22, title: '联系客服' },
|
{ icon: gd22, title: '联系客服' },
|
||||||
{ icon: gd23, title: '邀请好友' },
|
{ icon: gd23, title: '邀请好友' },
|
||||||
{ icon: gd24, title: '系统设置' }
|
{ icon: gd24, title: '系统设置' }
|
||||||
])
|
])
|
||||||
|
|
||||||
const infoAssist = ref(0)
|
|
||||||
const followCount = ref(0)
|
|
||||||
const fanCount = ref(0)
|
|
||||||
|
|
||||||
|
|
||||||
const name = ref(proxy.$store.state.user.name)
|
const name = ref(proxy.$store.state.user.name)
|
||||||
const nickName = ref(proxy.$store.state.user.nickName)
|
const nickName = ref(proxy.$store.state.user.nickName)
|
||||||
const sex = ref(proxy.$store.state.user.sex)
|
const sex = ref(proxy.$store.state.user.sex)
|
||||||
|
|
||||||
|
const infoSchool = ref(proxy.$store.state.userInfo.infoSchool)//学校
|
||||||
|
const infoRank = ref(proxy.$store.state.userInfo.infoRank)
|
||||||
|
const remark = ref(proxy.$store.state.userInfo.remark)//签名
|
||||||
|
const infoAssist = ref(proxy.$store.state.userInfo.infoAssist)//获赞
|
||||||
|
const followCount = ref(proxy.$store.state.userInfo.followCount)//关注
|
||||||
|
const fanCount = ref(proxy.$store.state.userInfo.fanCount)//粉丝
|
||||||
|
const qm = (e) => {
|
||||||
|
if (e === "" | e === null) {
|
||||||
|
return "这个人很懒什么都没有留下……"
|
||||||
|
} else {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const dictSexInfo = ref('')
|
||||||
|
onLoad((options) => {
|
||||||
|
getDicts('sys_user_sex').then(e => {
|
||||||
|
console.log("字典:", e);
|
||||||
|
dictSexInfo.value = e.data
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
const dictSex = (state) => {
|
||||||
|
const dict = dictSexInfo.value.find((dict) => dict.dictValue === state);
|
||||||
|
return dict ? dict.dictLabel : '未知状态';
|
||||||
|
}
|
||||||
|
|
||||||
const version = ref(getApp().globalData.config.appInfo.version)
|
const version = ref(getApp().globalData.config.appInfo.version)
|
||||||
const avatar = ref(proxy.$store.state.user.avatar)
|
const avatar = ref(proxy.$store.state.user.avatar)
|
||||||
function handleLogout() {
|
function handleLogout() {
|
||||||
|
@ -149,6 +205,7 @@ const grid1Click1 = (e) => {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
const grid1Click2 = (e) => {
|
const grid1Click2 = (e) => {
|
||||||
|
proxy.$tab.navigateTo('/pages/mine/myActivity/index?type='+e)
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
const grid1Click3 = (e) => {
|
const grid1Click3 = (e) => {
|
||||||
|
@ -156,7 +213,8 @@ const grid1Click3 = (e) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const info = () => {
|
const info = () => {
|
||||||
console.log(avatar);
|
console.log("昵称:", useStore().state.userInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
info();
|
info();
|
||||||
function handleToLogin() {
|
function handleToLogin() {
|
||||||
|
@ -214,6 +272,65 @@ page {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
.avatarInfo {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.official {
|
||||||
|
position: absolute;
|
||||||
|
width: 48rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.simpleInfo-text {
|
||||||
|
margin-left: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
.textgrid1 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.grid11 {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 44rpx;
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
margin-right: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.textgrid2 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.textInfo {
|
||||||
|
font-size: 24rpx;
|
||||||
|
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid21 {
|
||||||
|
|
||||||
|
margin-right: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid22 {
|
||||||
|
margin-right: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid23 {}
|
||||||
|
}
|
||||||
|
|
||||||
|
.textgrid3 {
|
||||||
|
.grid31 {
|
||||||
|
font-size: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.smallUserInfo {
|
.smallUserInfo {
|
||||||
|
@ -252,6 +369,7 @@ page {
|
||||||
margin: 0 24rpx; // 调整 margin 确保 top margin 不会折叠
|
margin: 0 24rpx; // 调整 margin 确保 top margin 不会折叠
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardz3 {
|
.cardz3 {
|
||||||
width: 686rpx;
|
width: 686rpx;
|
||||||
height: 356rpx;
|
height: 356rpx;
|
||||||
|
@ -268,4 +386,29 @@ page {
|
||||||
margin: 0 24rpx; // 调整 margin 确保 top margin 不会折叠
|
margin: 0 24rpx; // 调整 margin 确保 top margin 不会折叠
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.school {
|
||||||
|
position: absolute;
|
||||||
|
top: 362rpx;
|
||||||
|
right: 32rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx;
|
||||||
|
opacity: 0.5;
|
||||||
|
background: #000000 !important;
|
||||||
|
display: flex; /* 添加 flex 布局 */
|
||||||
|
align-items: center; /* 垂直居中 */
|
||||||
|
justify-content: center; /* 水平居中 */
|
||||||
|
|
||||||
|
.school1 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: 4rpx 18rpx;
|
||||||
|
.textInfo {
|
||||||
|
margin-left: 8rpx;
|
||||||
|
font-size: 18rpx;
|
||||||
|
color: #FFFFFF !important;
|
||||||
|
line-height: 28rpx; /* 确保文字垂直居中 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -0,0 +1,401 @@
|
||||||
|
<template>
|
||||||
|
<view class="cardss">
|
||||||
|
<!-- tabs标签 -->
|
||||||
|
<view class="tabsinfo flex ">
|
||||||
|
<up-tabs :list="list4" lineWidth="20" lineHeight="2" @click="tabsClick" lineColor="#3477FC" :activeStyle="{
|
||||||
|
color: '#000000',
|
||||||
|
fontSize: '28rpx',
|
||||||
|
transform: 'scale(1.05)'
|
||||||
|
}" :inactiveStyle="{
|
||||||
|
color: '#999999',
|
||||||
|
fontSize: '28rpx',
|
||||||
|
transform: 'scale(1.05)'
|
||||||
|
}" itemStyle=" width: 180rpx; padding-bottom:18rpx;">
|
||||||
|
</up-tabs>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardz">
|
||||||
|
<!-- 列表信息 -->
|
||||||
|
<view class="scrollable-list">
|
||||||
|
<up-list @scrolltolower="scrolltolower" :showScrollbar="false" :pagingEnabled="true">
|
||||||
|
<up-list-item v-for="(item, index) in modelValue" :key="index">
|
||||||
|
<view class="listInfo" @click="toInfo(item)">
|
||||||
|
<view class="titile-Time">
|
||||||
|
发布时间: {{ item.startTime }}
|
||||||
|
</view>
|
||||||
|
<view class="statsInfo1">
|
||||||
|
<view v-if="item.auditStatus == 0"
|
||||||
|
style="font-size: 24rpx;color: #3477FC ;width: 74rpx; height: 25rpx;">已发布</view>
|
||||||
|
<view v-else-if="item.auditStatus == 2"
|
||||||
|
style="font-size: 24rpx;color: #43CE8F ;width: 74rpx; height: 25rpx;">审核中</view>
|
||||||
|
<view v-else-if="item.auditStatus == 3 |item.auditStatus==4"
|
||||||
|
style="font-size: 24rpx;color: #F87863 ;width: 74rpx; height: 25rpx;">未通过</view>
|
||||||
|
</view>
|
||||||
|
<up-line color="#f4f5f6" length="96%" direction="row" margin="24rpx 24rpx 24rpx 0" ></up-line>
|
||||||
|
<view class="titile">
|
||||||
|
{{ item.acTitle }}
|
||||||
|
</view>
|
||||||
|
<view class="startTime flex alignCenter">
|
||||||
|
<image :src="tu52" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
开始时间:{{ item.startTime }}
|
||||||
|
</view>
|
||||||
|
<view class="endTime flex alignCenter">
|
||||||
|
<image :src="tu53" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
结束时间:{{ item.endTime }}
|
||||||
|
</view>
|
||||||
|
<view class="addrs flex alignCenter">
|
||||||
|
<image :src="tu51" style="width: 25rpx; height: 26rpx; margin-right: 12rpx;"></image>
|
||||||
|
活动地点:{{ item.addres }}
|
||||||
|
</view>
|
||||||
|
<view class="statsInfo">
|
||||||
|
<!-- 动态数据 -->
|
||||||
|
<view :class="getDictLabelByValue(item.state).cssClass">
|
||||||
|
<span class="text">{{ getDictLabelByValue(item.state).dictLabel }}</span>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</up-list-item>
|
||||||
|
</up-list>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getmelistInfo } from "@/api/activityInfo/info";
|
||||||
|
import { useStore } from 'vuex'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
|
import { ref, getCurrentInstance, reactive, toRefs } from 'vue';
|
||||||
|
import { getDicts } from "@/api/system/dict/data";
|
||||||
|
import { onShow, onLoad, onPullDownRefresh } from '@dcloudio/uni-app'
|
||||||
|
import image from 'uview-plus/libs/config/props/image';
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const isOfficial = ref(true)
|
||||||
|
const iconConfig = proxy.iconConfig;
|
||||||
|
const bjt = iconConfig.bjt;
|
||||||
|
const tu51 = iconConfig.tu51;
|
||||||
|
const tu52 = iconConfig.tu52;
|
||||||
|
const tu53 = iconConfig.tu53;
|
||||||
|
const list4 = reactive([
|
||||||
|
{ name: '全部活动', state: 9 },
|
||||||
|
{ name: '已发布', state: 0 },
|
||||||
|
{ name: '未通过', state: 3 },
|
||||||
|
{ name: '审核中', state: 2 }
|
||||||
|
]);
|
||||||
|
const total = ref()
|
||||||
|
const actiInfoList = ref()
|
||||||
|
const data = reactive({
|
||||||
|
form: {},
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 5,
|
||||||
|
launchUserId: null,
|
||||||
|
accendCondition: null,
|
||||||
|
acName: null,
|
||||||
|
acTitle: null,
|
||||||
|
acContent: null,
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
state: null,
|
||||||
|
addres: null,
|
||||||
|
longitude: null,
|
||||||
|
latitude: null,
|
||||||
|
file: null,
|
||||||
|
elroll: null,
|
||||||
|
acQrcode: null,
|
||||||
|
tab: null,
|
||||||
|
readCount: null,
|
||||||
|
transmitCount: null,
|
||||||
|
likeCount: null,
|
||||||
|
commentCount: null,
|
||||||
|
favoriteCount: null,
|
||||||
|
postTop: null,
|
||||||
|
type: null,
|
||||||
|
anonymity: null,
|
||||||
|
auditor: null,
|
||||||
|
auditStatus: null,
|
||||||
|
auditTime: null,
|
||||||
|
auditAdvice: null,
|
||||||
|
cut: null,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
auditStatus: [
|
||||||
|
{ required: true, message: "状态0正常1待脱敏 2待审核 3脱敏未通过 4 审核未通过 5草稿不能为空", trigger: "change" }
|
||||||
|
],
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 表单重置
|
||||||
|
function reset() {
|
||||||
|
form.value = {
|
||||||
|
id: null,
|
||||||
|
launchUserId: null,
|
||||||
|
accendCondition: null,
|
||||||
|
acName: null,
|
||||||
|
acTitle: null,
|
||||||
|
acContent: null,
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
state: null,
|
||||||
|
addres: null,
|
||||||
|
longitude: null,
|
||||||
|
latitude: null,
|
||||||
|
file: null,
|
||||||
|
elroll: null,
|
||||||
|
acQrcode: null,
|
||||||
|
tab: null,
|
||||||
|
readCount: null,
|
||||||
|
transmitCount: null,
|
||||||
|
likeCount: null,
|
||||||
|
commentCount: null,
|
||||||
|
favoriteCount: null,
|
||||||
|
postTop: null,
|
||||||
|
type: null,
|
||||||
|
anonymity: null,
|
||||||
|
createTime: null,
|
||||||
|
auditor: null,
|
||||||
|
auditStatus: null,
|
||||||
|
auditTime: null,
|
||||||
|
auditAdvice: null,
|
||||||
|
cut: null,
|
||||||
|
delFlag: null
|
||||||
|
};
|
||||||
|
proxy.resetForm("infoRef");
|
||||||
|
}
|
||||||
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
const modelValue = ref()
|
||||||
|
// 在data中添加isLoading标志
|
||||||
|
const isLoading = ref(false);
|
||||||
|
const scrolltolower = async () => {
|
||||||
|
console.log("加载新数据:");
|
||||||
|
// 检查是否还有更多数据可以加载
|
||||||
|
if (queryParams.value.pageNum * queryParams.value.pageSize < total.value) {
|
||||||
|
// 防止在数据加载时重复触发
|
||||||
|
if (isLoading.value) return;
|
||||||
|
isLoading.value = true;
|
||||||
|
|
||||||
|
queryParams.value.pageNum += 1;
|
||||||
|
try {
|
||||||
|
const response = await getmelistInfo(queryParams.value);
|
||||||
|
// 使用Array.prototype.push.apply将新数据追加到actiInfoList中
|
||||||
|
Array.prototype.push.apply(modelValue.value, response.rows);
|
||||||
|
console.log(modelValue.value);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("加载更多数据时发生错误:", error);
|
||||||
|
} finally {
|
||||||
|
isLoading.value = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 可以在这里处理没有更多数据的情况,例如显示提示信息
|
||||||
|
console.log("没有更多数据了");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const toInfo = (item) => {
|
||||||
|
proxy.$tab.navigateTo(`/pages/mine/myActivity/info?id=${item.id}`);
|
||||||
|
}
|
||||||
|
//删除分页信息
|
||||||
|
const removePage = () => {
|
||||||
|
queryParams.value.pageNum = 1
|
||||||
|
queryParams.value.pageSize = 5
|
||||||
|
}
|
||||||
|
const activityState = ref()
|
||||||
|
onLoad((options) => {
|
||||||
|
getDicts('activity_state').then(e => {
|
||||||
|
activityState.value = e.data;
|
||||||
|
})
|
||||||
|
reset()
|
||||||
|
getListBytype(options.type)
|
||||||
|
})
|
||||||
|
const getListBytype = (type) => {
|
||||||
|
if(type == 0){
|
||||||
|
queryParams.value.auditStatus = null;
|
||||||
|
}else if(type == 1){
|
||||||
|
queryParams.value.auditStatus = 0;
|
||||||
|
}else if(type == 2){
|
||||||
|
queryParams.value.auditStatus = 2;
|
||||||
|
}else if(type == 3){
|
||||||
|
queryParams.value.auditStatus = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
// 下拉刷新
|
||||||
|
onPullDownRefresh((options) => {
|
||||||
|
|
||||||
|
removePage();
|
||||||
|
console.log("下拉刷新,", queryParams.value);
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
//按照条件查询
|
||||||
|
const tabsClick = (index) => {
|
||||||
|
removePage()
|
||||||
|
if (index.state == 9) {
|
||||||
|
queryParams.value.auditStatus = null;
|
||||||
|
} else {
|
||||||
|
queryParams.value.auditStatus = index.state
|
||||||
|
}
|
||||||
|
|
||||||
|
getList()
|
||||||
|
|
||||||
|
}
|
||||||
|
const getList = () => {
|
||||||
|
getmelistInfo(queryParams.value)
|
||||||
|
.then(res => {
|
||||||
|
uni.stopPullDownRefresh()
|
||||||
|
total.value = res.total
|
||||||
|
modelValue.value = res.rows
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getDictLabelByValue = (state) => {
|
||||||
|
const dict = activityState.value.find((dict) => dict.dictValue === state);
|
||||||
|
|
||||||
|
return dict ? dict : '未知状态';
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #F4F5F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsinfo {
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 0 auto;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardss {
|
||||||
|
width: 100%;
|
||||||
|
height: 68rpx;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrollable-list {
|
||||||
|
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.listInfo {
|
||||||
|
position: relative;
|
||||||
|
width: 686rpx;
|
||||||
|
height: 408rpx;
|
||||||
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||||
|
background: #ffffff;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-top: 24rpx;
|
||||||
|
|
||||||
|
padding-top: 24rpx;
|
||||||
|
padding-left: 24rpx;
|
||||||
|
|
||||||
|
.titile-Time {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 30rpx;
|
||||||
|
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.titile {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.startTime {
|
||||||
|
margin-top: 34rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.endTime {
|
||||||
|
margin-top: 12rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.addrs {
|
||||||
|
margin-top: 22rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
height: 24rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000000 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.statsInfo1 {
|
||||||
|
position: absolute;
|
||||||
|
right: 24rpx;
|
||||||
|
top: 24rpx;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.statsInfo {
|
||||||
|
position: absolute;
|
||||||
|
right: 24rpx;
|
||||||
|
bottom: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.state0 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #f1f1f1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 20rpx;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #7E7E7E;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.state1 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #c0f0ec;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #00CCBE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.state2 {
|
||||||
|
width: 84rpx;
|
||||||
|
height: 28rpx;
|
||||||
|
border-radius: 14rpx 14rpx 14rpx 14rpx;
|
||||||
|
background: #fde2e2;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 400;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 20rpx;
|
||||||
|
font-size: 20rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #FFABAB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,405 @@
|
||||||
|
<template class="content">
|
||||||
|
<view class="fixed-header">
|
||||||
|
<!-- 顶部导航栏 -->
|
||||||
|
<up-navbar leftText="" title="" :placeholder="true" :safeAreaInsetTop="true" @leftClick="leftClick">
|
||||||
|
<template #center>
|
||||||
|
<div class="navbarcenter"><span>活动详情</span></div>
|
||||||
|
</template>
|
||||||
|
</up-navbar>
|
||||||
|
</view>
|
||||||
|
<view style=" overflow: auto;">
|
||||||
|
<view class="avtivityInfo">
|
||||||
|
<view>
|
||||||
|
<view class="cards">
|
||||||
|
<view class="title"> {{ actiInfoList.acTitle }}</view>
|
||||||
|
<view class="time">活动时间:{{ actiInfoList.startTime }} - {{ actiInfoList.endTime }}</view>
|
||||||
|
<view class="addrs">活动地点:{{ actiInfoList.addres }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardz">
|
||||||
|
<up-text size="15" color="#000000" lineHeight="23" :text="actiInfoList.acContent"></up-text>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="cardx" v-for="(item, index) in toimage(actiInfoList.file)" :key="index">
|
||||||
|
<image :src="item" class="image"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="qrcode" v-if="actiInfoList.state == '2' & actiInfoList.auditStatus == 0 ">
|
||||||
|
<image :src="basetoimg(actiInfoList.acQrcode)" style="width: 200rpx; height: 200rpx;"
|
||||||
|
@click="showqr = true">
|
||||||
|
</image>
|
||||||
|
<view class="text">签到二维码</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 当前是审核中就展示 -->
|
||||||
|
<view v-if="actiInfoList.auditStatus == 1 | actiInfoList.auditStatus == 2" class="infox4">
|
||||||
|
<view class="line"></view>
|
||||||
|
<view class="text1 text" >发布审核时间:<span>{{ actiInfoList.startTime }}</span></view>
|
||||||
|
<view class="text2 text">审核状态:<span style="color: #43CE8F">审核中</span></view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 当前是未通过 -->
|
||||||
|
<view v-else-if="actiInfoList.auditStatus == 3 | actiInfoList.auditStatus == 4 " class="infox4">
|
||||||
|
<view class="line"></view>
|
||||||
|
<view class="text1 text" >发布审核时间:<span>{{ actiInfoList.startTime }}</span></view>
|
||||||
|
<view class="text1 text">审核状态:<span style="color: #F87863">未通过</span></view>
|
||||||
|
<view class="text2 text">未通过原因:<span style="color: #F87863">{{actiInfoList.auditAdvice}}</span></view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 进行中或者报名中就展示 -->
|
||||||
|
<view v-else-if="actiInfoList.auditStatus == 0">
|
||||||
|
<view class="infox1" v-if="actiInfoList.state == '1'">
|
||||||
|
<view>
|
||||||
|
<view v-if="dataopen">
|
||||||
|
<up-avatar-group :urls="participation(participationInfo.elrollAvatars)" size="30"
|
||||||
|
gap="0.4"></up-avatar-group>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="elroll">已报名:{{ actiInfoList.elroll }}人</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="infox2" v-else>
|
||||||
|
<view class="flex justifyCenter alignCenter">
|
||||||
|
<view v-if="dataopen">
|
||||||
|
<up-avatar-group :urls="participation(participationInfo.elrollAvatars)" size="30"
|
||||||
|
gap="0.4"></up-avatar-group>
|
||||||
|
</view>
|
||||||
|
<view class="elroll">已报名:{{ actiInfoList.elroll }}人</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="actiInfoList.state != '1'" class="flex justifyCenter alignCenter">
|
||||||
|
<view v-if="dataopen">
|
||||||
|
<up-avatar-group :urls="participation(participationInfo.qrcodeElrollAvatars)" size="30"
|
||||||
|
gap="0.4"></up-avatar-group>
|
||||||
|
</view>
|
||||||
|
<view class="elroll">已签到:{{ actiInfoList.qrcodeElroll }}人</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="width: 100%; height: 400rpx;"></view>
|
||||||
|
|
||||||
|
<view class="infox3"></view>
|
||||||
|
|
||||||
|
<view>
|
||||||
|
<up-overlay :show="showqr" @click="showqr = false">
|
||||||
|
<view class="warp">
|
||||||
|
<image class="rect" @tap.stop :src="basetoimg(actiInfoList.acQrcode)"
|
||||||
|
style="width: 600rpx; height: 600rpx">
|
||||||
|
</image>
|
||||||
|
</view>
|
||||||
|
</up-overlay>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getTakePartsInfoByacId, gotoQrcode, gotoSing1, gotoSing2 } from "@/api/activityInfo/activityTakeInfo";
|
||||||
|
import { listInfo, getInfo, getInfoall, delInfo, addInfo, updateInfo } from "@/api/activityInfo/info";
|
||||||
|
import { getDicts } from "@/api/system/dict/data";
|
||||||
|
import { onShow, onLoad } from '@dcloudio/uni-app';
|
||||||
|
import { ref, reactive, getCurrentInstance, toRefs, computed } from 'vue';
|
||||||
|
import { useStore } from 'vuex';
|
||||||
|
const showqr = ref(false)
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const iconConfig = proxy.iconConfig;
|
||||||
|
const style = ref({
|
||||||
|
p: 'font-weight: 400;font-size: 24rpx;color: #000000 !important;',
|
||||||
|
});
|
||||||
|
const activityState = ref([]); // 字典 activity_state 活动状态
|
||||||
|
const takePartState = ref([]); // 字典 take_part_state 活动参与状态
|
||||||
|
const open = ref(false);
|
||||||
|
const title = ref('确认签到');
|
||||||
|
const content = ref('请您确认活动签到,祝您玩的愉快!');
|
||||||
|
const bgColor = ref('');
|
||||||
|
const store = useStore();
|
||||||
|
const QNDomain = store.state.user.QNDomain;
|
||||||
|
const actiInfoList = ref({});
|
||||||
|
const activityAttendInfo = ref({});
|
||||||
|
const qrcodeInfo = ref();
|
||||||
|
//头像组
|
||||||
|
const dataopen = ref(false)
|
||||||
|
const urls1 = reactive([])
|
||||||
|
const participationInfo = ref([])
|
||||||
|
const participation = (data) => {
|
||||||
|
// 根据条件决定保留的元素数量
|
||||||
|
const limit = actiInfoList.state === '1' ? 6 : 4;
|
||||||
|
// 创建一个新的数组来存储前 limit 个元素
|
||||||
|
const limitedData = data.slice(0, limit);
|
||||||
|
// 映射到新的数组
|
||||||
|
const refObjects = limitedData.map(item => (QNDomain + item.avatar));
|
||||||
|
return refObjects;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function basetoimg(e) {
|
||||||
|
return "data:image/png;base64," + e
|
||||||
|
}
|
||||||
|
onLoad((options) => {
|
||||||
|
const _id = options.id;
|
||||||
|
getInfo(_id).then(response => {
|
||||||
|
actiInfoList.value = response.data;
|
||||||
|
console.log("actiInfoList:", actiInfoList.value);
|
||||||
|
});
|
||||||
|
getInfoall(_id).then(e => {
|
||||||
|
participationInfo.value = e.data
|
||||||
|
dataopen.value = true;
|
||||||
|
console.log("参与人信息:", e);
|
||||||
|
})
|
||||||
|
getDicts('activity_state').then(e => {
|
||||||
|
activityState.value = e.data;
|
||||||
|
});
|
||||||
|
getDicts('take_part_state').then(e => {
|
||||||
|
takePartState.value = e.data;
|
||||||
|
});
|
||||||
|
checkStatus(options.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
const checkStatus = (id) => {
|
||||||
|
getTakePartsInfoByacId(id).then(e => {
|
||||||
|
|
||||||
|
activityAttendInfo.value = e.data;
|
||||||
|
console.log("个人信息:", activityAttendInfo.value)
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const leftClick = () => {
|
||||||
|
proxy.$tab.navigateBack(1);
|
||||||
|
};
|
||||||
|
const toimage = (url) => {
|
||||||
|
if (typeof url === 'string') {
|
||||||
|
let info = url.split(",");
|
||||||
|
let processedInfo = info.map(item => QNDomain + item);
|
||||||
|
console.log("processedInfo", processedInfo);
|
||||||
|
return processedInfo;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const goQrcode = () => {
|
||||||
|
uni.scanCode({
|
||||||
|
onlyFromCamera: true,
|
||||||
|
success: (res) => {
|
||||||
|
console.log('扫描二维码成功,结果:', res);
|
||||||
|
toqrcode(res);
|
||||||
|
|
||||||
|
},
|
||||||
|
error: (res) => {
|
||||||
|
console.log('扫描二维码出现错误');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const toqrcode = (e) => {
|
||||||
|
qrcodeInfo.value = JSON.parse(e.result);
|
||||||
|
if (actiInfoList.value.id !== qrcodeInfo.value.id) {
|
||||||
|
proxy.$modal.msgError('二维码不匹配!')
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
open.value = !open.value;
|
||||||
|
console.log("信息:", qrcodeInfo.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbarcenter {
|
||||||
|
font-weight: 400;
|
||||||
|
width: 148rpx;
|
||||||
|
height: 37rpx;
|
||||||
|
font-size: 36rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avtivityInfo {
|
||||||
|
width: 686rpx;
|
||||||
|
margin: 44rpx auto;
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
.cards {
|
||||||
|
.title {
|
||||||
|
font-weight: 600 !important;
|
||||||
|
font-size: 32rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
margin-top: 28rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #999999 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.addrs {
|
||||||
|
margin-top: 12rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #999999 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardz {
|
||||||
|
margin-top: 48rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
width: 674rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cardx {
|
||||||
|
margin-top: 48rpx;
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 686rpx;
|
||||||
|
border-radius: 24rpx;
|
||||||
|
height: 720rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.infox1 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 74rpx;
|
||||||
|
padding-left: 32rpx;
|
||||||
|
padding-right: 32rpx;
|
||||||
|
position: fixed;
|
||||||
|
/* 固定位置 */
|
||||||
|
left: 0;
|
||||||
|
/* 左对齐 */
|
||||||
|
right: 0;
|
||||||
|
/* 右对齐 */
|
||||||
|
bottom: 68rpx;
|
||||||
|
/* 底部对齐 */
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
/* 上边框 */
|
||||||
|
background-color: white;
|
||||||
|
/* 背景色设置为白色,防止透明背景导致内容重叠可见 */
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
.elroll {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.infox2 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 74rpx;
|
||||||
|
padding-left: 32rpx;
|
||||||
|
padding-right: 32rpx;
|
||||||
|
position: fixed;
|
||||||
|
/* 固定位置 */
|
||||||
|
left: 0;
|
||||||
|
/* 左对齐 */
|
||||||
|
right: 0;
|
||||||
|
/* 右对齐 */
|
||||||
|
bottom: 68rpx;
|
||||||
|
/* 底部对齐 */
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
/* 上边框 */
|
||||||
|
background-color: white;
|
||||||
|
/* 背景色设置为白色,防止透明背景导致内容重叠可见 */
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
.elroll {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999999 !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.infox3 {
|
||||||
|
width: 100%;
|
||||||
|
height: 68rpx;
|
||||||
|
background-color: #F6F6F6;
|
||||||
|
position: fixed;
|
||||||
|
/* 固定位置 */
|
||||||
|
left: 0;
|
||||||
|
/* 左对齐 */
|
||||||
|
right: 0;
|
||||||
|
/* 右对齐 */
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acContentstyle {
|
||||||
|
color: #000000 !important;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 24rpx;
|
||||||
|
text-align: left;
|
||||||
|
line-height: 46rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.warp {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.infox4{
|
||||||
|
width: 686rpx;
|
||||||
|
height: 400rpx;
|
||||||
|
margin: 60rpx auto;
|
||||||
|
.line{
|
||||||
|
width: 100%;
|
||||||
|
height: 4rpx;
|
||||||
|
background-color: #F4F5F6;
|
||||||
|
border-radius: 2rpx 2rpx 2rpx 2rpx;
|
||||||
|
margin-bottom: 60rpx;
|
||||||
|
}
|
||||||
|
.text{
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
.text1 {
|
||||||
|
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
}
|
||||||
|
.text2 {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -50,7 +50,7 @@
|
||||||
handleLogout() {
|
handleLogout() {
|
||||||
this.$modal.confirm('确定注销并退出系统吗?').then(() => {
|
this.$modal.confirm('确定注销并退出系统吗?').then(() => {
|
||||||
this.$store.dispatch('LogOut').then(() => {
|
this.$store.dispatch('LogOut').then(() => {
|
||||||
this.$tab.reLaunch('/pages/loginInfo/login')
|
this.$tab.reLaunch('/pages/login')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,18 +34,21 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="" v-if="item.answerCommentList.length != 0">
|
<view class="" v-if="item.answerCommentList.length != 0">
|
||||||
<text v-if="!item.isDeployment" class="deploymentAnswer-text" @click="deploymentAnswer(index)">---展开回复</text>
|
<view v-if="item.isDeployment" class="have-comment-answer" v-for="answer in item.answerCommentList.slice(0,item.answerCommentDisplayCount)" :key="answer">
|
||||||
<view v-if="item.isDeployment" class="have-comment-answer" v-for="answer in item.answerCommentList" :key="answer">
|
|
||||||
<view class="flex alignCenter">
|
<view class="flex alignCenter">
|
||||||
<!-- 头像 -->
|
<!-- 头像 -->
|
||||||
<view class="have-comment-answer-avatar-container">
|
<view class="have-comment-answer-avatar-container">
|
||||||
<u-avatar class="have-comment-answer-avatar-1" size="48rpx" :src="answer.avatar"></u-avatar>
|
<u-avatar class="have-comment-answer-avatar-1" size="48rpx" :src="answer.avatar"></u-avatar>
|
||||||
<image v-if="answer.isOfficial" class="have-comment-answer-official-1" src="../../../static/images/icon/tu3-6.png"></image>
|
<image v-if="answer.isOfficial" class="have-comment-answer-official-1" src="../../../static/images/icon/tu3-6.png"></image>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="flex alignCenter justifyBetween">
|
||||||
<text class="have-comment-answer-uname">{{answer.uname}}</text>
|
<text class="have-comment-answer-uname">{{answer.uname}}</text>
|
||||||
<text v-if="answer.toUserName" class="have-comment-answer-uname">-></text>
|
<!-- <text v-if="answer.toUserName" class="have-comment-answer-uname">-></text> -->
|
||||||
|
<image v-if="answer.toUserName" class="have-comment-answer-uname-img" src="../../../static/images/icon/ring-1.png"></image>
|
||||||
<text v-if="answer.toUserName" class="have-comment-answer-uname">{{answer.toUserName}}</text>
|
<text v-if="answer.toUserName" class="have-comment-answer-uname">{{answer.toUserName}}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
<view class="have-comment-answer-content">
|
<view class="have-comment-answer-content">
|
||||||
<text class="have-comment-answer-content-text-1">{{answer.content}}</text>
|
<text class="have-comment-answer-content-text-1">{{answer.content}}</text>
|
||||||
<view class="have-comment-answer-content-text-2">
|
<view class="have-comment-answer-content-text-2">
|
||||||
|
@ -54,7 +57,21 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<text v-if="item.isDeployment" class="deploymentAnswer-text" @click="putAnswer(index)">---收起</text>
|
<view class="have-comment-answer-deploy flex alignCenter">
|
||||||
|
<up-line class="have-comment-answer-line" length="40rpx"></up-line>
|
||||||
|
<view class="have-comment-answer-deploy-1 flex alignCenter" v-if="!item.isDeployment">
|
||||||
|
<text class="deploymentAnswer-text" @click="deploymentAnswer(index)">展开{{item.answerCommentAllCount}}条回复</text>
|
||||||
|
<image class="have-comment-answer-img-1" src="../../../static/images/icon/deployment-1.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
<view class="have-comment-answer-deploy-1 flex alignCenter" v-if="item.isDeployment && item.answerCommentDisplayCount < item.answerCommentAllCount">
|
||||||
|
<text class="deploymentAnswer-text" @click="loadMoreAnswers(index)">展开回复</text>
|
||||||
|
<image class="have-comment-answer-img-1" src="../../../static/images/icon/deployment-1.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
<view class="have-comment-answer-deploy-1 flex alignCenter" v-if="item.isDeployment">
|
||||||
|
<text class="deploymentAnswer-text" @click="putAnswer(index)">收起</text>
|
||||||
|
<image class="have-comment-answer-img-2" src="../../../static/images/icon/deployment-1.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -79,7 +96,7 @@
|
||||||
<!-- <view class="flex justifyCenter"> -->
|
<!-- <view class="flex justifyCenter"> -->
|
||||||
<view class="flex alignCenter justifyCenter">
|
<view class="flex alignCenter justifyCenter">
|
||||||
<view class="flex justifyCenter alignCenter commentInput" @click="toInput()">
|
<view class="flex justifyCenter alignCenter commentInput" @click="toInput()">
|
||||||
<image class="commentInput-img" src="../../../static/logo.png" mode=""></image>
|
<image class="commentInput-img-1" src="../../../static/images/icon/write-1.png" mode=""></image>
|
||||||
<text class="commentInput-text">友好评论~</text>
|
<text class="commentInput-text">友好评论~</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -93,11 +110,11 @@
|
||||||
<text class="commentInput-txt">{{postValue.likeCount}}</text>
|
<text class="commentInput-txt">{{postValue.likeCount}}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="postValue.ifFavorite" @click.stop="cancelFavorite()" class="flex alignCenter justifyCenter flexColumn">
|
<view v-if="postValue.ifFavorite" @click.stop="cancelFavorite()" class="flex flexColumn alignCenter justifyCenter ">
|
||||||
<image class="commentInput-img" src="../../../static/images/icon/tu3-2.png" mode=""></image>
|
<image class="commentInput-img" src="../../../static/images/icon/tu3-2.png" mode=""></image>
|
||||||
<text class="commentInput-txt-favorite">{{postValue.favoriteCount}}</text>
|
<text class="commentInput-txt-favorite">{{postValue.favoriteCount}}</text>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="!postValue.ifFavorite" @click.stop="addFavorite()" class="flex alignCenter justifyCenter flexColumn">
|
<view v-if="!postValue.ifFavorite" @click.stop="addFavorite()" class="flex flexColumn alignCenter justifyCenter ">
|
||||||
<image class="commentInput-img" src="../../../static/images/icon/tu3-1.png" mode=""></image>
|
<image class="commentInput-img" src="../../../static/images/icon/tu3-1.png" mode=""></image>
|
||||||
<text class="commentInput-txt">{{postValue.favoriteCount}}</text>
|
<text class="commentInput-txt">{{postValue.favoriteCount}}</text>
|
||||||
</view>
|
</view>
|
||||||
|
@ -112,12 +129,13 @@
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue';
|
import { ref, reactive, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue';
|
||||||
|
import {onReachBottom,onLoad,onPageScroll} from "@dcloudio/uni-app";
|
||||||
import PostView from "@/pages/common/postview/index.vue";
|
import PostView from "@/pages/common/postview/index.vue";
|
||||||
|
|
||||||
const bottomVal = ref(0);
|
const bottomVal = ref(0);
|
||||||
|
|
||||||
// 监听键盘高度变化
|
// 监听键盘高度变化
|
||||||
onMounted(async () => {
|
onLoad(() => {
|
||||||
// if (!data.value) {
|
// if (!data.value) {
|
||||||
uni.onKeyboardHeightChange(res => {
|
uni.onKeyboardHeightChange(res => {
|
||||||
if(res.height == 0) {
|
if(res.height == 0) {
|
||||||
|
@ -143,6 +161,9 @@
|
||||||
createTime: '7分钟前',
|
createTime: '7分钟前',
|
||||||
isOfficial: true,
|
isOfficial: true,
|
||||||
isDeployment: false,
|
isDeployment: false,
|
||||||
|
answerCommentAllCount: 4,
|
||||||
|
answerCommentPage: 0,
|
||||||
|
answerCommentDisplayCount: 0,
|
||||||
answerCommentList: [{
|
answerCommentList: [{
|
||||||
avatar: 'https://picx.zhimg.com/v2-02f89d05a781ffed9fd2e32654d93135_720w.jpg?source=172ae18b',
|
avatar: 'https://picx.zhimg.com/v2-02f89d05a781ffed9fd2e32654d93135_720w.jpg?source=172ae18b',
|
||||||
uname: '恋爱60秒',
|
uname: '恋爱60秒',
|
||||||
|
@ -160,6 +181,24 @@
|
||||||
content: '你干嘛~',
|
content: '你干嘛~',
|
||||||
toUserName: '恋爱60秒',
|
toUserName: '恋爱60秒',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
avatar: 'https://www.tboxn.com/wp-content/uploads/2022/11/%E5%A4%B4%E5%83%8F.png',
|
||||||
|
uname: '神奇宝贝',
|
||||||
|
createTime: '2024.05.04',
|
||||||
|
isOfficial: false,
|
||||||
|
address: '理工大学',
|
||||||
|
content: '哎呦~',
|
||||||
|
toUserName: '喜欢你没道理',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
avatar: 'https://files.codelife.cc/wallhaven/full/wq/wallhaven-wqkw2r.jpg?x-oss-process=image/resize,limit_0,m_fill,w_307,h_158/quality,Q_92/format,webp',
|
||||||
|
uname: '皮卡丘',
|
||||||
|
createTime: '2024.05.04',
|
||||||
|
isOfficial: true,
|
||||||
|
address: '理工大学',
|
||||||
|
content: '要再点一下才能看到我',
|
||||||
|
toUserName: '喜欢你没道理',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -185,10 +224,10 @@
|
||||||
content: '八年前,学弟在工地上杀了一个工友,上杀了一个工友,杀人前,他给警察打了电话,预告杀人的时间和地点,和地点,并......',
|
content: '八年前,学弟在工地上杀了一个工友,上杀了一个工友,杀人前,他给警察打了电话,预告杀人的时间和地点,和地点,并......',
|
||||||
type: '1',
|
type: '1',
|
||||||
media: [
|
media: [
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://img1.baidu.com/it/u=1179199327,1946315836&fm=253&fmt=auto&app=138&f=JPEG?w=1364&h=800',
|
||||||
'https://picx.zhimg.com/v2-3b4fc7e3a1195a081d0259246c38debc_720w.jpg?source=172ae18b',
|
'https://www4.bing.com//th?id=OHR.CopenhagenBicycles_ZH-CN3047958346_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
'https://bpic.51yuansu.com/backgd/cover/00/63/09/64b52b1426fff_800.jpg?x-oss-process=image/resize,w_780/sharpen,100',
|
'https://www4.bing.com//th?id=OHR.CarnavalTenerife_ZH-CN1559136778_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
'https://tu.sioe.cn/gj/qiege/image.jpg',
|
'https://www4.bing.com//th?id=OHR.StJamesPool_ZH-CN5930624359_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=360&h=202',
|
||||||
],
|
],
|
||||||
tab: ['学术讨论组', '校园风景'],
|
tab: ['学术讨论组', '校园风景'],
|
||||||
transmitCount: 136,
|
transmitCount: 136,
|
||||||
|
@ -254,11 +293,25 @@
|
||||||
|
|
||||||
const deploymentAnswer = (index) => {
|
const deploymentAnswer = (index) => {
|
||||||
postList[index].isDeployment = true;
|
postList[index].isDeployment = true;
|
||||||
|
loadMoreAnswers(index);
|
||||||
};
|
};
|
||||||
|
|
||||||
const putAnswer = (index) => {
|
const putAnswer = (index) => {
|
||||||
postList[index].isDeployment = false;
|
postList[index].isDeployment = false;
|
||||||
|
postList[index].answerCommentDisplayCount = 0;
|
||||||
|
postList[index].answerCommentPage = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const loadMoreAnswers = (index) => {
|
||||||
|
const increment = 3; // 每次加载的评论数量
|
||||||
|
const comment = postList[index];
|
||||||
|
if (comment.answerCommentDisplayCount + increment <= comment.answerCommentAllCount) {
|
||||||
|
comment.answerCommentDisplayCount += increment;
|
||||||
|
} else {
|
||||||
|
comment.answerCommentDisplayCount = comment.answerCommentAllCount; // 显示所有剩余的评论
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
@ -347,8 +400,14 @@ page{
|
||||||
}
|
}
|
||||||
|
|
||||||
.commentInput-img{
|
.commentInput-img{
|
||||||
width: 40rpx;
|
width: 36rpx;
|
||||||
height: 40rpx;
|
height: 36rpx;
|
||||||
|
// margin-right: 12rpx;
|
||||||
|
}
|
||||||
|
.commentInput-img-1{
|
||||||
|
width: 36rpx;
|
||||||
|
height: 36rpx;
|
||||||
|
margin-right: 12rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.commentInput-text{
|
.commentInput-text{
|
||||||
|
@ -483,7 +542,6 @@ page{
|
||||||
}
|
}
|
||||||
|
|
||||||
.deploymentAnswer-text{
|
.deploymentAnswer-text{
|
||||||
margin-left: 80rpx;
|
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
|
@ -527,5 +585,37 @@ page{
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-deploy{
|
||||||
|
margin-top: 30rpx;
|
||||||
|
margin-left: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-line{
|
||||||
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-img-1{
|
||||||
|
width: 26rpx;
|
||||||
|
height: 14rpx;
|
||||||
|
margin-left: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-img-2{
|
||||||
|
width: 26rpx;
|
||||||
|
height: 14rpx;
|
||||||
|
margin-left: 12rpx;
|
||||||
|
transform: scaleY(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-deploy-1{
|
||||||
|
margin-left: 12rpx;
|
||||||
|
margin-right: 130rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.have-comment-answer-uname-img{
|
||||||
|
width: 14rpx;
|
||||||
|
height: 24rpx;
|
||||||
|
margin: 0 8rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,7 @@
|
||||||
registerSuccess(result) {
|
registerSuccess(result) {
|
||||||
// 设置用户信息
|
// 设置用户信息
|
||||||
this.$store.dispatch('GetInfo').then(res => {
|
this.$store.dispatch('GetInfo').then(res => {
|
||||||
|
this.$store.dispatch('GetUserInfo');
|
||||||
this.$tab.reLaunch('/pages/index')
|
this.$tab.reLaunch('/pages/index')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
<view class="sousuoBox1 flex alignCenter justifyBetween">
|
<view class="sousuoBox1 flex alignCenter justifyBetween">
|
||||||
<view class="sousuoBox flex alignCenter justifyBetween">
|
<view class="sousuoBox flex alignCenter justifyBetween">
|
||||||
<view class="souBOx flex alignCenter justifyBetween" >
|
<view class="souBOx flex alignCenter justifyBetween" >
|
||||||
<image src="../static/images/icon/tu2-2.png" class="img3"></image>
|
<image src="../../static/images/icon/tu2-2.png" class="img3"></image>
|
||||||
<!-- <view class="shuruText">在食堂捡到一张饭卡</view> -->
|
<!-- <view class="shuruText">在食堂捡到一张饭卡</view> -->
|
||||||
<input v-model="keyword" @input="toContent" @confirm="onSearch" class="shuruText" :placeholder="placeholderText" type="text">
|
<input v-model="keyword" @input="toContent" @confirm="onSearch" class="shuruText" :placeholder="placeholderText" type="text">
|
||||||
</view>
|
</view>
|
||||||
<image @click.stop="toScanCode" src="../static/images/icon/tu2-3.png" class="img4"></image>
|
<image @click.stop="toScanCode" src="../../static/images/icon/tu2-3.png" class="img4"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="category-dropdown flex alignCenter">
|
<view class="category-dropdown flex alignCenter">
|
||||||
<text class="text1 flex alignCenter" @click="onSearch">搜索</text>
|
<text class="text1 flex alignCenter" @click="onSearch">搜索</text>
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
<view class="history" v-if="!noHistortOpen">
|
<view class="history" v-if="!noHistortOpen">
|
||||||
<view class="history-top">
|
<view class="history-top">
|
||||||
<view class="history-title">搜索历史</view>
|
<view class="history-title">搜索历史</view>
|
||||||
<image src="../static/images/icon/tu3-4.png" class="history-icon" @click="clearHistory"></image>
|
<image src="../../static/images/icon/tu3-4.png" class="history-icon" @click="clearHistory"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="history-center">
|
<view class="history-center">
|
||||||
<view v-for="(item, index) in historyList" :key="index" class="history-item">
|
<view v-for="(item, index) in historyList" :key="index" class="history-item">
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
<!-- 无内容 -->
|
<!-- 无内容 -->
|
||||||
<view v-else>
|
<view v-else>
|
||||||
<view class="noContent">
|
<view class="noContent">
|
||||||
<image src="../static/images/icon/tu4-9.png" class="img6"></image>
|
<image src="../../static/images/icon/tu4-9.png" class="img6"></image>
|
||||||
<view class="noContentText">没有找到相关内容奥,换个词试试吧!</view>
|
<view class="noContentText">没有找到相关内容奥,换个词试试吧!</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -1,19 +1,159 @@
|
||||||
<template class="content">
|
<template>
|
||||||
<view class="fixed-header">
|
<view class="work-container">
|
||||||
外卖
|
<!-- 轮播图 -->
|
||||||
|
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
||||||
|
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||||
|
<swiper-item v-for="(item, index) in data" :key="index">
|
||||||
|
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||||
|
<image class="w-full" :src="item.image" mode="aspectFill" :draggable="false" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</swiper-item>
|
||||||
<script setup>
|
</swiper>
|
||||||
import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/activityInfo/info";
|
</uni-swiper-dot>
|
||||||
import ActiInfoList from '../common/activityList/index.vue'
|
|
||||||
import { onShow, onLoad ,onPullDownRefresh} from '@dcloudio/uni-app'
|
|
||||||
import { getDicts } from "@/api/system/dict/data"
|
|
||||||
import { ref, reactive, getCurrentInstance, toRefs } from 'vue'
|
|
||||||
import { useStore } from 'vuex';
|
|
||||||
import { func } from "uview-plus/libs/function/test";
|
|
||||||
const { proxy } = getCurrentInstance();
|
|
||||||
|
|
||||||
</script>
|
<!-- 宫格组件 -->
|
||||||
<style lang="scss">
|
<uni-section title="系统管理" type="line"></uni-section>
|
||||||
|
<view class="grid-body">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<up-button type="primary" text="待审核" size @click="clickBannerItem(1)"></up-button>
|
||||||
|
<up-button type="primary" text="发布成功" size @click="clickBannerItem(2)"></up-button>
|
||||||
|
<up-button type="primary" text="审核失败" size @click="clickBannerItem(3)"></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>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import fileUpload from './../common/file/fileUpload/index.vue'
|
||||||
|
|
||||||
|
import { ref, reactive, getCurrentInstance } from 'vue'
|
||||||
|
import { useStore } from 'vuex';
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const store = useStore();
|
||||||
|
const fileTypeInfo1 = ref("image")
|
||||||
|
const fileTypeInfo2 = ref("video")
|
||||||
|
const QNDomain = store.state.user.QNDomain
|
||||||
|
const current = ref(0)
|
||||||
|
const swiperDotIndex = ref(0)
|
||||||
|
|
||||||
|
const data = ref([{
|
||||||
|
image: '/static/images/banner/banner01.jpg'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image: '/static/images/banner/banner02.jpg'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image: '/static/images/banner/banner03.jpg'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
const fileList1 = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
function clickBannerItem(item) {
|
||||||
|
if(item === 1){
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/audit')
|
||||||
|
}
|
||||||
|
if(item === 2){
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/publish')
|
||||||
|
}
|
||||||
|
if(item === 3){
|
||||||
|
proxy.$tab.navigateTo('/pages/common/talkState/auditFailure')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
function changeSwiper(e) {
|
||||||
|
current.value = e.detail.current
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
page {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: #fff;
|
||||||
|
min-height: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
view {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #endif */
|
||||||
|
|
||||||
|
.text {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid-item-box {
|
||||||
|
flex: 1;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-margin-wrap {
|
||||||
|
width: 690rpx;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper {
|
||||||
|
height: 300rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-item {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: #fff;
|
||||||
|
height: 300rpx;
|
||||||
|
line-height: 300rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
.uni-swiper-dot-box {
|
||||||
|
width: 400px;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
margin: 0 auto;
|
||||||
|
/* #endif */
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
</style>
|
|
Binary file not shown.
After Width: | Height: | Size: 611 B |
Binary file not shown.
After Width: | Height: | Size: 242 B |
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -7,7 +7,7 @@ import defaultAvatar from "@/static/images/profile.jpg";
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
const baseUrl = config.baseUrl;
|
const baseUrl = config.baseUrl;
|
||||||
|
|
||||||
const user = {
|
const userInfo = {
|
||||||
state: {
|
state: {
|
||||||
birthday: storage.get(constant.birthday) /** 生日 */,
|
birthday: storage.get(constant.birthday) /** 生日 */,
|
||||||
doingsStatus: storage.get(constant.doingsStatus) /** 活动发布权限(0没有,1有) */,
|
doingsStatus: storage.get(constant.doingsStatus) /** 活动发布权限(0没有,1有) */,
|
||||||
|
@ -21,48 +21,78 @@ const user = {
|
||||||
infoRank: storage.get(constant.infoRank) /** 用户等级 */,
|
infoRank: storage.get(constant.infoRank) /** 用户等级 */,
|
||||||
infoCoin: storage.get(constant.infoCoin) /** 虚拟币数量 */,
|
infoCoin: storage.get(constant.infoCoin) /** 虚拟币数量 */,
|
||||||
infoActive: storage.get(constant.infoActive) /** 活跃度 */,
|
infoActive: storage.get(constant.infoActive) /** 活跃度 */,
|
||||||
remark: storage.get(constant.remark) /** 简介 */,
|
infoAssist: storage.get(constant.infoAssist) /** 获赞 */,
|
||||||
|
followCount: storage.get(constant.followCount) /** 关注 */,
|
||||||
|
fanCount: storage.get(constant.fanCount) /** 粉丝 */,
|
||||||
|
remark: storage.get(constant.remark) /** 签名 */,
|
||||||
},
|
},
|
||||||
|
|
||||||
mutations: {
|
mutations: {
|
||||||
SET_BIRTHDAY: (state, birthday) => {
|
SET_BIRTHDAY: (state, birthday) => {
|
||||||
state.birthday = birthday;
|
state.birthday = birthday;
|
||||||
|
storage.set(constant.birthday, birthday);
|
||||||
},
|
},
|
||||||
SET_doingsStatus: (state, doingsStatus) => {
|
SET_doingsStatus: (state, doingsStatus) => {
|
||||||
state.doingsStatus = doingsStatus;
|
state.doingsStatus = doingsStatus;
|
||||||
|
storage.set(constant.doingsStatus, doingsStatus);
|
||||||
},
|
},
|
||||||
SET_infoName: (state, infoName) => {
|
SET_infoName: (state, infoName) => {
|
||||||
state.infoName = infoName;
|
state.infoName = infoName;
|
||||||
|
storage.set(constant.infoName, infoName);
|
||||||
},
|
},
|
||||||
SET_infoSchool: (state, infoSchool) => {
|
SET_infoSchool: (state, infoSchool) => {
|
||||||
state.infoSchool = infoSchool;
|
state.infoSchool = infoSchool;
|
||||||
|
storage.set(constant.infoSchool, infoSchool);
|
||||||
},
|
},
|
||||||
SET_infoDepartment: (state, infoDepartment) => {
|
SET_infoDepartment: (state, infoDepartment) => {
|
||||||
state.infoDepartment = infoDepartment;
|
state.infoDepartment = infoDepartment;
|
||||||
|
storage.set(constant.infoDepartment, infoDepartment);
|
||||||
},
|
},
|
||||||
SET_infoGrade: (state, infoGrade) => {
|
SET_infoGrade: (state, infoGrade) => {
|
||||||
state.infoGrade = infoGrade;
|
state.infoGrade = infoGrade;
|
||||||
|
storage.set(constant.infoGrade, infoGrade);
|
||||||
},
|
},
|
||||||
SET_infoCode: (state, infoCode) => {
|
SET_infoCode: (state, infoCode) => {
|
||||||
state.infoCode = infoCode;
|
state.infoCode = infoCode;
|
||||||
|
storage.set(constant.infoCode, infoCode);
|
||||||
},
|
},
|
||||||
SET_infoDocument: (state, infoDocument) => {
|
SET_infoDocument: (state, infoDocument) => {
|
||||||
state.infoDocument = infoDocument;
|
state.infoDocument = infoDocument;
|
||||||
|
storage.set(constant.infoDocument, infoDocument);
|
||||||
},
|
},
|
||||||
SET_auditInfo: (state, auditInfo) => {
|
SET_auditInfo: (state, auditInfo) => {
|
||||||
state.auditInfo = auditInfo;
|
state.auditInfo = auditInfo;
|
||||||
|
storage.set(constant.auditInfo, auditInfo);
|
||||||
},
|
},
|
||||||
SET_infoRank: (state, infoRank) => {
|
SET_infoRank: (state, infoRank) => {
|
||||||
state.infoRank = infoRank;
|
state.infoRank = infoRank;
|
||||||
|
storage.set(constant.infoRank, infoRank);
|
||||||
},
|
},
|
||||||
SET_infoCoin: (state, infoCoin) => {
|
SET_infoCoin: (state, infoCoin) => {
|
||||||
state.infoCoin = infoCoin;
|
state.infoCoin = infoCoin;
|
||||||
|
storage.set(constant.infoCoin, infoCoin);
|
||||||
},
|
},
|
||||||
SET_infoActive: (state, infoActive) => {
|
SET_infoActive: (state, infoActive) => {
|
||||||
state.infoActive = infoActive;
|
state.infoActive = infoActive;
|
||||||
|
storage.set(constant.infoActive, infoActive);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
SET_infoAssist: (state, infoAssist) => {
|
||||||
|
state.infoAssist = infoAssist;
|
||||||
|
storage.set(constant.infoAssist, infoAssist);
|
||||||
|
},
|
||||||
|
SET_followCount: (state, followCount) => {
|
||||||
|
state.followCount = followCount;
|
||||||
|
storage.set(constant.followCount, followCount);
|
||||||
|
},
|
||||||
|
SET_fanCount: (state, fanCount) => {
|
||||||
|
state.fanCount = fanCount;
|
||||||
|
storage.set(constant.fanCount, fanCount);
|
||||||
|
},
|
||||||
|
|
||||||
SET_remark: (state, remark) => {
|
SET_remark: (state, remark) => {
|
||||||
state.remark = remark;
|
state.remark = remark;
|
||||||
|
storage.set(constant.remark, remark);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -73,8 +103,6 @@ const user = {
|
||||||
getUserInfo()
|
getUserInfo()
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const userInfo = res.data;
|
const userInfo = res.data;
|
||||||
console.log("res:", res);
|
|
||||||
|
|
||||||
const infoDocument = ref([]);
|
const infoDocument = ref([]);
|
||||||
infoDocument.value =
|
infoDocument.value =
|
||||||
userInfo == null ||
|
userInfo == null ||
|
||||||
|
@ -83,6 +111,7 @@ const user = {
|
||||||
? defaultAvatar
|
? defaultAvatar
|
||||||
: userInfo.infoDocument;
|
: userInfo.infoDocument;
|
||||||
if (userInfo) {
|
if (userInfo) {
|
||||||
|
console.log("userInfo:",userInfo);
|
||||||
commit("SET_BIRTHDAY", userInfo.birthday);
|
commit("SET_BIRTHDAY", userInfo.birthday);
|
||||||
commit("SET_doingsStatus", userInfo.doingsStatus);
|
commit("SET_doingsStatus", userInfo.doingsStatus);
|
||||||
commit("SET_infoName", userInfo.infoName);
|
commit("SET_infoName", userInfo.infoName);
|
||||||
|
@ -95,6 +124,9 @@ const user = {
|
||||||
commit("SET_infoRank", userInfo.infoRank);
|
commit("SET_infoRank", userInfo.infoRank);
|
||||||
commit("SET_infoCoin", userInfo.infoCoin);
|
commit("SET_infoCoin", userInfo.infoCoin);
|
||||||
commit("SET_infoActive", userInfo.infoActive);
|
commit("SET_infoActive", userInfo.infoActive);
|
||||||
|
commit("SET_infoAssist", userInfo.infoAssist);
|
||||||
|
commit("SET_followCount", userInfo.followCount);
|
||||||
|
commit("SET_fanCount", userInfo.fanCount);
|
||||||
commit("SET_remark", userInfo.remark);
|
commit("SET_remark", userInfo.remark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,4 +140,4 @@ const user = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default user;
|
export default userInfo;
|
||||||
|
|
|
@ -1,8 +1,30 @@
|
||||||
const constant = {
|
const constant = {
|
||||||
avatar: 'vuex_avatar',
|
avatar: "vuex_avatar",
|
||||||
name: 'vuex_name',
|
name: "vuex_name",
|
||||||
roles: 'vuex_roles',
|
roles: "vuex_roles",
|
||||||
permissions: 'vuex_permissions'
|
permissions: "vuex_permissions",
|
||||||
}
|
nickName: "vuex_nickName",
|
||||||
|
// userInfo
|
||||||
|
sex: "vuex_sex",
|
||||||
|
QNDomain: "vuex_QNDomain",
|
||||||
|
phoneType: "vuex_phoneType",
|
||||||
|
// userInfo
|
||||||
|
birthday: "vuex_birthday",
|
||||||
|
doingsStatus: "vuex_doingsStatus",
|
||||||
|
infoName: "vuex_infoName",
|
||||||
|
infoSchool: "vuex_infoSchool",
|
||||||
|
infoDepartment: "vuex_infoDepartment",
|
||||||
|
infoGrade: "vuex_infoGrade",
|
||||||
|
infoCode: "vuex_infoCode",
|
||||||
|
infoDocument: "vuex_infoDocument",
|
||||||
|
auditInfo: "vuex_auditInfo",
|
||||||
|
infoRank: "vuex_infoRank",
|
||||||
|
infoCoin: "vuex_infoCoin",
|
||||||
|
infoActive: "vuex_infoActive",
|
||||||
|
infoAssist: "vuex_infoAssist",
|
||||||
|
followCount: "vuex_followCount",
|
||||||
|
fanCount: "vuex_fanCount",
|
||||||
|
remark: "vuex_remark",
|
||||||
|
};
|
||||||
|
|
||||||
export default constant
|
export default constant;
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
import store from '@/store'
|
||||||
|
import { getDicts } from "@/api/system/dict/data"
|
||||||
|
const sex_dict = ref([])
|
||||||
|
|
||||||
|
export const getDictLabelByValue = (dictInfo, state) => {
|
||||||
|
return getDicts(dictInfo).then(e => {
|
||||||
|
const dict = e.data.find((dict) => dict.dictValue === state);
|
||||||
|
return dict ? dict : '未知状态';
|
||||||
|
});
|
||||||
|
};
|
|
@ -7,6 +7,8 @@ const tu21 = ref(QNDomain + "home/icon/image/png/tu2-1_20240531153239639.png")
|
||||||
const tu22 = ref(QNDomain + "home/icon/image/png/tu2-2_20240531163115818.png")
|
const tu22 = ref(QNDomain + "home/icon/image/png/tu2-2_20240531163115818.png")
|
||||||
//定位
|
//定位
|
||||||
const tu51 = ref(QNDomain + "home/icon/image/png/tu5-1_20240601124004353.png")
|
const tu51 = ref(QNDomain + "home/icon/image/png/tu5-1_20240601124004353.png")
|
||||||
|
const tu51addres = ref(QNDomain + "home/icon/image/png/addres_20240609145253989.png")
|
||||||
|
|
||||||
const tu512 = ref(QNDomain + "home/icon/image/png/tu5-1-2_20240605120128566.png")
|
const tu512 = ref(QNDomain + "home/icon/image/png/tu5-1-2_20240605120128566.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")
|
||||||
|
@ -14,6 +16,8 @@ const tu522 = ref(QNDomain + "home/icon/image/png/tu5-2-2_20240605120128561.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 tu532 = ref(QNDomain + "home/icon/image/png/tu5-3-2_20240605120128565.png")
|
const tu532 = ref(QNDomain + "home/icon/image/png/tu5-3-2_20240605120128565.png")
|
||||||
|
//V
|
||||||
|
const tu36 = ref(QNDomain + "home/icon/image/png/tu3-6_20240609144044085.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")
|
||||||
|
@ -34,6 +38,8 @@ const sb2x1 = ref(QNDomain + "home/icon/image/png/审核失败@2x1_2024060510110
|
||||||
//+背景图
|
//+背景图
|
||||||
const bjt = ref(QNDomain + "home/icon/image/png/bjtu_20240608121940341.png");
|
const bjt = ref(QNDomain + "home/icon/image/png/bjtu_20240608121940341.png");
|
||||||
const bjt2 = ref(QNDomain + "home/icon/image/png/minebackpng2_20240608144208172.png");
|
const bjt2 = ref(QNDomain + "home/icon/image/png/minebackpng2_20240608144208172.png");
|
||||||
|
//修改
|
||||||
|
const mupdate = ref(QNDomain + "home/icon/image/png/mineupdate_20240609132053217.png");
|
||||||
|
|
||||||
//+更多
|
//+更多
|
||||||
const gd11 = ref(QNDomain + "home/icon/image/png/gd11_20240608080819017.png");
|
const gd11 = ref(QNDomain + "home/icon/image/png/gd11_20240608080819017.png");
|
||||||
|
@ -58,13 +64,13 @@ const hd14 = ref(QNDomain + "home/icon/image/png/hd14_20240608080819057.png");
|
||||||
const hd15 = ref(QNDomain + "home/icon/image/png/hd15_20240608080819068.png");
|
const hd15 = ref(QNDomain + "home/icon/image/png/hd15_20240608080819068.png");
|
||||||
export default {
|
export default {
|
||||||
tu21,tu22,tu23,tu2x,
|
tu21,tu22,tu23,tu2x,
|
||||||
tu51,tu52,tu53,tu512,tu522,tu532,
|
tu51,tu51addres,tu52,tu53,tu512,tu522,tu532,tu36,
|
||||||
sh2x,sh2x1,
|
sh2x,sh2x1,
|
||||||
cg2x21,cg2x22,
|
cg2x21,cg2x22,
|
||||||
sb2x,sb2x1,
|
sb2x,sb2x1,
|
||||||
|
|
||||||
//我的界面
|
//我的界面
|
||||||
bjt,bjt2,
|
bjt,bjt2,mupdate,
|
||||||
gd11,gd12,gd13,gd14,gd21,gd22,gd23,gd24,
|
gd11,gd12,gd13,gd14,gd21,gd22,gd23,gd24,
|
||||||
ht11,ht12,ht13,ht14,ht15,
|
ht11,ht12,ht13,ht14,ht15,
|
||||||
hd11,hd12,hd13,hd14,hd15,
|
hd11,hd12,hd13,hd14,hd15,
|
||||||
|
|
|
@ -4,7 +4,32 @@ import constant from './constant'
|
||||||
let storageKey = 'storage_data'
|
let storageKey = 'storage_data'
|
||||||
|
|
||||||
// 存储节点变量名
|
// 存储节点变量名
|
||||||
let storageNodeKeys = [constant.avatar, constant.name, constant.roles, constant.permissions]
|
let storageNodeKeys = [
|
||||||
|
constant.avatar,
|
||||||
|
constant.nickName,
|
||||||
|
constant.sex,
|
||||||
|
constant.QNDomain,
|
||||||
|
constant.phoneType,
|
||||||
|
// userInfo
|
||||||
|
constant.birthday,
|
||||||
|
constant.doingsStatus,
|
||||||
|
constant.infoName,
|
||||||
|
constant.infoSchool,
|
||||||
|
constant.infoDepartment,
|
||||||
|
constant.infoGrade,
|
||||||
|
constant.infoCode,
|
||||||
|
constant.infoDocument,
|
||||||
|
constant.auditInfo,
|
||||||
|
constant.infoRank,
|
||||||
|
constant.infoCoin,
|
||||||
|
constant.infoActive,
|
||||||
|
constant.infoAssist,
|
||||||
|
constant.followCount,
|
||||||
|
constant.fanCount,
|
||||||
|
constant.remark,
|
||||||
|
|
||||||
|
|
||||||
|
constant.name, constant.roles, constant.permissions]
|
||||||
|
|
||||||
const storage = {
|
const storage = {
|
||||||
set: function(key, value) {
|
set: function(key, value) {
|
||||||
|
|
Loading…
Reference in New Issue