hmp 4 年之前
父節點
當前提交
b49efe4d42
共有 6 個文件被更改,包括 118 次插入28 次删除
  1. 14 1
      assets/http/api.js
  2. 2 2
      assets/http/config.js
  3. 68 17
      pages/activity/list.vue
  4. 15 8
      utils/dateTime.js
  5. 14 0
      utils/mixin.js
  6. 5 0
      utils/util.js

+ 14 - 1
assets/http/api.js

@@ -24,6 +24,10 @@ const platform = {
 	getPlatformParams: p => http.get('/app/platformsetting/getPlatformValueByList', {
 		params: p
 	}),
+	
+	getPlatformValue: p => http.get('/app/platformsetting/getPlatformValue', {
+		params: p
+	}),
 }
 
 const activity = {
@@ -215,6 +219,14 @@ const census = {
 }
 
 
+//活动列表
+const activerecord={
+	list: p => http.get('sing_active/activerecord/list', {
+		params: p
+	}),
+}
+
+
 export const api = {
 	uploadFile,
 	dict,
@@ -232,5 +244,6 @@ export const api = {
 	address,
 	notice,
 	area,
-	census
+	census,
+	activerecord
 }

+ 2 - 2
assets/http/config.js

@@ -1,7 +1,7 @@
 let config = {}
 
-// config.baseURL = 'http://192.168.1.168:2888'
-config.baseURL = 'https://vote.guosen-fumao.cn/api'
+config.baseURL = 'http://192.168.1.168:2888'
+// config.baseURL = 'https://vote.guosen-fumao.cn/api'
 //是否需要获取手机号
 config.isAuthPhone = true
 config.transformDomains = 'https://m.changyoyo.com'

+ 68 - 17
pages/activity/list.vue

@@ -1,33 +1,83 @@
 <template>
 	<view :style="vuex_skin">
-		<view class="card" v-for="(item,index) in 10" :key="index">
-			<view class="center">
-				<image src="@/static/active.png" mode=""></image>
-			</view>
-			<view class="content" style="padding: 6rpx 0;">
-				<view class="">
-					<view class="text-bold text-lg text-cut-1">“法护未来 童心同行”广东省未成年人保护百集普法短剧征集大赛 “我为大赛代言”活动</view>
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" :up="upOption" @down="downCallback"
+			@up="upCallback">
+			<view class="card" @click="jump(item)" v-for="(item,index) in list" :key="index">
+				<view class="center">
+					<image :src="item.imgUrl" mode="aspectFill"></image>
 				</view>
-				<view class="">
-					<view style="margin-top: 8rpx;color: #4d4d4d;font-weight: 400;font-size: 26rpx;margin-bottom: 20rpx;">参赛时间:2021.07.01 - 2021.12.31</view>
-					<view class="flex">
-						<image style="width: 30rpx;height: 30rpx;" src="/static/icon/remen.png" mode=""></image>
-						<text style="margin-left: -6rpx;">456</text>
+				<view class="content" style="padding: 6rpx 0;">
+					<view class="">
+						<view class="text-bold  text-cut-2" style="font-size: 28rpx;">{{content(item.content)}}</view>
+					</view>
+					<view class="">
+						<view style="margin-top: 8rpx;color: #828282;font-weight: 300;font-size: 26rpx;margin-bottom: 15rpx;">
+							参赛时间:
+							<text>{{formatTime(item.startTime)}} 至 {{formatTime(item.endTime)}}</text>
+						</view>
+						<view class="flex">
+							<image style="width: 30rpx;height: 30rpx;" src="/static/icon/remen.png" mode=""></image>
+							<text style="margin-left: -6rpx;">{{numberNull(item.viewCount)}}</text>
+						</view>
 					</view>
 				</view>
 			</view>
-		</view>
+		</mescroll-body>
 	</view>
 </template>
-
 <script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
+		mixins: [MescrollMixin],
 		data() {
 			return {
+				list: [],
+				downOption:{
+					auto:false
+				},
 			}
 		},
+		onLoad() {
+
+		},
+		computed:{
+			content(){
+				return data=>{
+					return this.$util.formatHtml(data)
+				}
+			},
+		},
 		methods: {
-			
+			async jump(item){
+				let params={
+					activeId:item.id,
+					platformSettingEnum:'ACTIVE_SETTING'
+				}
+				let res= (await this.$api.platform.getPlatformValue(params)).data.data;
+				console.log(JSON.parse(res));
+			},
+			downCallback() {
+				setTimeout(() => {
+					this.mescroll.resetUpScroll();
+				}, 800)
+			},
+			upCallback(mescroll) {
+				let params = {
+					current:mescroll.num,
+					size:mescroll.size,
+				}
+				try {
+					this.$api.activerecord.list(params).then(res => {
+						let data = res.data.data.records
+						let total = res.data.data.total
+						mescroll.endBySize(data.length, total);
+						if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
+						this.list = this.list.concat(data); //追加新数据
+					})
+				} catch (e) {
+					this.mescroll.endErr()
+				}
+			},
 		}
 	}
 </script>
@@ -41,8 +91,8 @@
 		display: flex;
 		
 		image{
-			width: 180rpx;
-			height: 180rpx;
+			width: 200rpx;
+			height: 200rpx;
 			margin-right: 20rpx;
 			border-radius: 8rpx;
 		}
@@ -54,3 +104,4 @@
 		}
 	}
 </style>
+

+ 15 - 8
utils/dateTime.js

@@ -32,17 +32,24 @@ dateTime.format=(date= new Date(),fmt="YYYY-mm-dd HH:MM:SS")=> {
 dateTime.createDate = (value)=>{
   let date = typeof (value) == 'string' ? value.replace(/\-/g, '/') : value
   return new Date(date)
+}
+
+dateTime.getTime = (value)=>{
+	if (value) {
+		let date = typeof (value) == 'string' ? value.replace(/\-/g, '/') : value
+		return new Date(date).getTime()
+	}
+	return new Date().getTime()
 } 
 
-/**
- * 输入数值 如 5,获取五分钟后的时间
- */
-dateTime.getExpireTime=(value)=>{
-	let now=new Date()
-	let min=now.getMinutes()
-	now.setMinutes(min + value)
-	let expireTime=dateTime.format(now)
+//默认五分钟
+dateTime.getExpireTime=(value=5,date=new Date())=>{
+	let min=date.getMinutes()
+	date.setMinutes(min + value)
+	let expireTime=dateTime.format(date)
 	return expireTime
 }
 
+
+
 export default dateTime

+ 14 - 0
utils/mixin.js

@@ -20,6 +20,20 @@ let page = {
 				return info.statusBarHeight - safe + 'px'
 			}
 			return 0
+		},
+		formatTime(){
+			return (data,format='yyyy-mm-dd')=>{
+				// yyyy-mm-dd hh:MM:ss
+				return this.$u.timeFormat(this.$dateTime.getTime(data),format)
+			}
+		},
+		numberNull(){
+			return data=>{
+				if (data == -1 || this.$isEmpty(data)) {
+					return 0
+				}
+				return data
+			}
 		}
 	},
 	onLoad(options) {

+ 5 - 0
utils/util.js

@@ -27,6 +27,11 @@ util.preview = async (src) => {
 			data: content
 		});
 	}
+	
+util.formatHtml=(str)=>{
+	return decodeURIComponent(str).replace(/<[^>]+>/g, "");
+}
+
 
 util.dealAccountNo = account => {
 		if (account.startsWith('1')) {