cmy 1 vecka sedan
förälder
incheckning
ebbec9ced3
32 ändrade filer med 1324 tillägg och 810 borttagningar
  1. 2 2
      api/index.js
  2. 24 2
      api/model.js
  3. 20 0
      components/musList.vue
  4. 15 9
      pages.json
  5. 1 1
      pages/eduction/detail.vue
  6. 35 162
      pages/index/index.vue
  7. 438 0
      pages/index/listModel.vue
  8. 2 2
      pages/modelData/index.vue
  9. 23 111
      pages/modelData/modeltemplate/model_1.vue
  10. 23 38
      pages/modelData/modeltemplate/model_2.vue
  11. 24 24
      pages/modelData/modeltemplate/model_3.vue
  12. 1 1
      pages/public/artDetail.vue
  13. 93 326
      pages/user/model/model.vue
  14. 1 0
      pages/user/model/modelList.vue
  15. 91 0
      pages/user/mySc.vue
  16. 10 0
      pages/userhome/user.vue
  17. 0 0
      uni_modules/cmy-mys-list/changelog.md
  18. 118 0
      uni_modules/cmy-mys-list/components/cmy-mys-list/cmy-mys-list.vue
  19. 83 0
      uni_modules/cmy-mys-list/package.json
  20. 1 0
      uni_modules/cmy-mys-list/readme.md
  21. 2 0
      uni_modules/uni-icons/changelog.md
  22. 81 81
      uni_modules/uni-icons/components/uni-icons/uni-icons.uvue
  23. 3 2
      uni_modules/uni-icons/package.json
  24. 34 0
      uni_modules/uni-popup/changelog.md
  25. 65 20
      uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
  26. 6 5
      uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
  27. 90 0
      uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
  28. 12 12
      uni_modules/uni-popup/package.json
  29. 4 0
      uni_modules/uni-transition/changelog.md
  30. 4 1
      uni_modules/uni-transition/components/uni-transition/createAnimation.js
  31. 12 3
      uni_modules/uni-transition/components/uni-transition/uni-transition.vue
  32. 6 8
      uni_modules/uni-transition/package.json

+ 2 - 2
api/index.js

@@ -57,7 +57,7 @@ export function getWorkerList(data) {
 export function getGoodWorkerList(data) {
 	return request({
 		url: '/api/pub/getGoodWorkerList',
-		method: 'get',
+		method: 'post',
 		data
 	});
 }
@@ -65,7 +65,7 @@ export function getGoodWorkerList(data) {
 export function getNewWorkerList(data) {
 	return request({
 		url: '/api/pub/getNewWorkerList',
-		method: 'get',
+		method: 'post',
 		data
 	});
 }

+ 24 - 2
api/model.js

@@ -2,8 +2,8 @@ import request from '@/utils/request'
 //获取其他用户名片信息
 export function getCommonUserCardInfo(data) {
 	return request({
-		url: '/api/pub/getCommonUserCardInfo',
-		method: 'post',
+		url: '/api/user/getCommonUserCardInfo',
+		method: 'get',
 		data
 	});
 }
@@ -116,3 +116,25 @@ export function getWxmpShowQrcode(data) {
 		data
 	});
 }
+// 获取微信分享码
+/**
+ * @param {Object} data
+ * uid用户id
+ * type操作类型1点赞 2收藏
+ */
+export function likeAndBookmark(data) {
+	return request({
+		url: '/api/user/likeAndBookmark',
+		method: 'post',
+		data
+	});
+}
+
+export function BookmarkList(data) {
+	return request({
+		url: '/api/user/BookmarkList',
+		method: 'post',
+		data
+	});
+}
+

+ 20 - 0
components/musList.vue

@@ -0,0 +1,20 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"musList",
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 15 - 9
pages.json

@@ -31,15 +31,15 @@
 				"navigationBarTitleText": "学习交流群"
 			}
 		},
-		// {
-		// 	"path": "pages/cart/cart",
-		// 	"style": {
-		// 		// #ifndef MP-WEIXIN
-		// 		"navigationStyle": "custom",
-		// 		// #endif
-		// 		"navigationBarTitleText": "购物车"
-		// 	}
-		// },
+		{
+			"path": "pages/index/listModel",
+			"style": {
+				// #ifndef MP-WEIXIN
+				"navigationStyle": "custom",
+				// #endif
+				"navigationBarTitleText": "更多名片"
+			}
+		},
 		{
 			"path": "pages/userhome/user",
 			"style": {
@@ -70,6 +70,12 @@
 				"style": {
 					"navigationBarTitleText": "图片裁切"
 				}
+			},
+			{
+				"path": "mySc",
+				"style": {
+					"navigationBarTitleText": "我的收藏"
+				}
 			},
 			{
 				"path": "myteam",

+ 1 - 1
pages/eduction/detail.vue

@@ -534,7 +534,7 @@
 
 	}
 
-	/deep/ .rich-img {
+	:deep(.rich-img) {
 		width: 100% !important;
 	}
 </style>

+ 35 - 162
pages/index/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="indexBox">
 		<swiper class="top-swiper" autoplay="true" duration="400" interval="5000" @change="swiperChange">
-			<swiper-item v-for="item in imagelist" class="carousel-item" @click="openXcx(item.url)">
+			<swiper-item :key='ind' v-for="(item,ind) in imagelist" class="carousel-item" @click="openXcx(item.url)">
 				<image class="imageitem" :src="item.img" />
 			</swiper-item>
 		</swiper>
@@ -16,17 +16,15 @@
 						热门名片
 					</view>
 				</view>
-				<navigator url="/pages/user/model/modelList?ishot=1">
-					<view class="right flex">
-						<text class="margin-r-10">
-							更多
-						</text>
-						<image src="../../static/icon/next1.png" mode="scaleToFill" class="tip"></image>
-					</view>
-				</navigator>
+				<view class="right flex" @click="navTo('/pages/user/model/modelList?ishot=1')">
+					<text class="margin-r-10">
+						更多
+					</text>
+					<image src="../../static/icon/next1.png" mode="scaleToFill" class="tip"></image>
+				</view>
 			</view>
 			<view class="hot-list">
-				<view class="item" v-for="item in rmList"
+				<view class="item" :key='ind' v-for="(item,ind) in rmList"
 					@click="navTo('/pages/user/model/model?mtype=' + item.id+'&type=0')">
 					<view class="hot-image-box">
 						<image class="hot-image" :src="item.img" mode="widthFix"></image>
@@ -55,119 +53,54 @@
 					</view>
 					<!-- #endif -->
 				</view>
-				<view class="item-none" v-if="rmList.length<3" v-for="item in (3-rmList.length)">
-
-				</view>
 			</view>
 			<view class="flex">
 				<view class="banner" @click="navTo('/pages/public/video')">
-					<image :src="baseURL+'/static/img/indexLeft.png'" mode="widthFix"></image>
+					<image v-if="baseURL" :src="baseURL+'/static/img/indexLeft.png'" mode="widthFix"></image>
 				</view>
 				<view class="banner" @click="navTo('/pages/user/model/phb')">
-					<image :src="baseURL+'/static/img/indexRight.png'" mode="widthFix"></image>
+					<image v-if="baseURL" :src="baseURL+'/static/img/indexRight.png'" mode="widthFix"></image>
 				</view>
 			</view>
 
-			<view class="title-box flex">
-				<!-- <view class="flex">
+			<view class="title-box flex padding-b-30" v-if="jxList.length > 0">
+				<view class="flex">
 					<image class="hot margin-r-10" src="../../static/icon/hot.png" mode="scaleToFill"></image>
 					<view class="title">
-						名片推荐
+						精选名片推荐
 					</view>
 				</view>
-				<navigator url="/pages/user/model/modelList?isrecommend=1">
+				<navigator url="/pages/index/listModel?type=1">
 					<view class="right flex">
 						<text class="margin-r-10">
 							更多
 						</text>
 						<image src="../../static/icon/next1.png" mode="scaleToFill" class="tip"></image>
 					</view>
-				</navigator> -->
-				<!-- <view class="sy-top">
-					<image src="../../static/icon/tj.png" mode=""></image>
-					<view class="top-tit">
-						精选推荐
-					</view>
-				</view> -->
-			</view>
-
-			<!-- <view class="list-box">
-				<view class="list" v-for="(item,index) in navList.orderList"
-					@click="navTo('/pages/user/model/model?mtype=' + item.id+'&type=0')">
-					<view class="list-image-box">
-						<image class="list-image" :src="item.img" mode="widthFix"></image>
-					</view>
-					<view class="list-content">
-
-						<view class="list-title clamp">
-							{{item.title}}
-						</view>
-						<view class="list-money flex flex-start">
-							<view class="money">
-								¥{{item.price}}
-							</view>
-						</view>
-					</view>
-				</view>
-			</view> -->
-			<view class="title-box flex" v-if="jxList.length > 0">
-				<view class="flex">
-					<image class="hot margin-r-10" src="../../static/icon/hot.png" mode="scaleToFill"></image>
-					<view class="title">
-						精选名片推荐
-					</view>
-				</view>
-			</view>
-			<view class="bd-wrap">
-				<view class="bd-btm-item flex" v-for="item in jxList"
-					@click="navTo('/pages/user/model/model?uid=' + item.uid + '&mtype=' + item.show_template_id + '&type=2')"
-					v-if="item.name != '影子' && item.name != '测试牛niu' &&item.name != '111'">
-					<image :src="item.avatar" mode="" class="item-img"></image>
-					<view class="flex item-info">
-						<view class="item-name">
-							{{item.name}}
-							<image :src="rz" mode="" v-if="item.is_type_audit == 1"></image>
-						</view>
-						<view class="item-where">
-							{{item.age}}岁
-						</view>
-						<view class="item-zy">
-							{{item.user_work_type_title}}
-						</view>
-					</view>
-				</view>
+				</navigator>
 			</view>
-			<view class="title-box flex" v-if="zxList.length > 0">
+			<cmy-mys-list :list='jxList'></cmy-mys-list>
+			<view class="title-box flex padding-t-30 padding-b-30">
 				<view class="flex">
 					<image class="hot margin-r-10" src="../../static/icon/hot.png" mode="scaleToFill"></image>
 					<view class="title">
 						最新名片推荐
 					</view>
 				</view>
-			</view>
-			<view class="bd-wrap">
-				<view class="bd-btm-item flex" v-for="item in zxList"
-					@click="navTo('/pages/user/model/model?uid=' + item.uid + '&mtype=' + item.show_template_id + '&type=2')"
-					v-if="item.name != '影子' && item.name != '测试牛niu' &&item.name != '111'">
-					<image :src="item.avatar" mode="" class="item-img"></image>
-					<view class="flex item-info">
-						<view class="item-name">
-							{{item.name}}
-							<image :src="rz" mode="" v-if="item.is_type_audit == 1"></image>
-						</view>
-						<view class="item-where">
-							{{item.age}}岁
-						</view>
-						<view class="item-zy">
-							{{item.user_work_type_title}}
-						</view>
+				<navigator url="/pages/index/listModel?type=2">
+					<view class="right flex">
+						<text class="margin-r-10">
+							更多
+						</text>
+						<image src="../../static/icon/next1.png" mode="scaleToFill" class="tip"></image>
 					</view>
-				</view>
+				</navigator>
 			</view>
+			<cmy-mys-list :list='zxList'></cmy-mys-list>
 		</view>
-		<view class="footer">
+		<!-- <view class="footer">
 			仅显示50条
-		</view>
+		</view> -->
 	</view>
 </template>
 
@@ -193,7 +126,6 @@
 			return {
 				// 通知列表
 				textList: [],
-				rz: this.$store.state.baseURL + '/resource/icon/rz.png',
 				//轮播图
 				imagelist: [],
 				// 推荐商品
@@ -241,11 +173,6 @@
 			this.getWorkerList()
 			this.getNewWorkerList();
 		},
-		onReady() {},
-		// 滚动到底部
-		onReachBottom() {
-			// this.getShowTemplateList();
-		},
 		// #ifdef MP
 		onShareAppMessage(options) {
 			// 设置菜单中的转发按钮触发转发事件时的转发内容
@@ -290,7 +217,10 @@
 			},
 			getWorkerList() {
 				try {
-					getGoodWorkerList().then(res => {
+					getGoodWorkerList({
+						page:1,
+						pageSize:10,
+					}).then(res => {
 						let arr = []
 						res.data.list.forEach(item => {
 							let cc = false
@@ -313,7 +243,10 @@
 			// 最新名片
 			getNewWorkerList() {
 				try {
-					getNewWorkerList().then(res => {
+					getNewWorkerList({
+						page:1,
+						pageSize:10,
+					}).then(res => {
 						let arr = []
 						res.data.list.forEach(item => {
 							let cc = false
@@ -389,56 +322,8 @@
 						console.log(res);
 					}
 				)
-				that.getShowTemplateList();
 			},
 			// 获取模板列表
-			getShowTemplateList(source) {
-				//这里是将订单挂载到tab列表下
-				let navItem = this.navList;
-				let state = navItem.state;
-				if (source === 'tabChange' && navItem.loaded === true) {
-					//tab切换只有第一次需要加载数据
-					return;
-				}
-				if (navItem.loadingType === 'loading') {
-					//防止重复加载
-					return;
-				}
-				if (navItem.loadingType === 'noMore') {
-					//防止重复加载
-					return;
-				}
-				// 修改当前对象状态为加载中
-				navItem.loadingType = 'loading';
-				getShowTemplateList({
-						is_recommend: 1,
-						page: navItem.page,
-						pageSize: navItem.limit
-					})
-					.then(({
-						data
-					}) => {
-						let arr = data.list.map(e => {
-							return e;
-						});
-						navItem.orderList = navItem.orderList.concat(arr);
-						navItem.page++;
-						if (navItem.limit == arr.length) {
-							//判断是否还有数据, 有改为 more, 没有改为noMore
-							navItem.loadingType = 'more';
-							return;
-						} else {
-							//判断是否还有数据, 有改为 more, 没有改为noMore
-							navItem.loadingType = 'noMore';
-						}
-						uni.hideLoading();
-						this.$set(navItem, 'loaded', true);
-					})
-					.catch(e => {
-						console.log(e);
-					});
-
-			},
 			navTo(url) {
 				if (url) {
 					if (url.indexOf('http') > -1) {
@@ -460,16 +345,11 @@
 </script>
 
 <style lang="scss">
-	page,
 	.indexBox {
 		height: auto;
 		min-height: 100%;
 	}
 
-	.indexBox {
-		padding-bottom: 50rpx;
-	}
-
 	.top-swiper {
 		margin: auto;
 		width: 750rpx;
@@ -716,13 +596,6 @@
 		height: 20rpx;
 	}
 
-	.bd-wrap {
-		display: flex;
-		justify-content: space-between;
-		flex-wrap: wrap;
-		padding: 30rpx 0;
-	}
-
 	.banner {
 		image {
 			width: 348rpx;

+ 438 - 0
pages/index/listModel.vue

@@ -0,0 +1,438 @@
+<template>
+	<view class="content">
+		<scroll-view scroll-x="true" class="topSearch">
+			<view class="itemBox flex">
+				<view class="typeTtem flex" @click="changeType(item,ind)" :key='ind' v-for="(item,ind) in workTypeList" :class="{action:typeIndex==ind}">
+					<text>
+						{{item.title}}
+					</text>
+				</view>
+				<view class="itemTip flex" @click="$refs.popup.open()">
+					<uni-icons type="bars" size="40rpx"></uni-icons>
+				</view>
+			</view>
+		</scroll-view>
+		<scroll-view scroll-y="true" :style="{'height':height}" class="scroll-wrap" @scrolltolower="getKcList">
+			<cmy-mys-list :list='navList[currentIndex].list'></cmy-mys-list>
+			<uni-load-more :status="navList[currentIndex].loadingType"></uni-load-more>
+		</scroll-view>
+		<uni-popup ref="popup" type="bottom">
+			<view class="alertBox">
+				<view class="flex position-relative padding-c-20">
+					<text class="alertTitle">全部筛选</text>
+					<image @click="closeAlert" class="alertClose" src="/static/icon/goodsExit.png" mode="scaleToFill"></image>
+				</view>
+				<view class="padding-t-20">
+					<view class="alertItemTitle">
+						职业类型
+					</view>
+					<view class="flex alertTypeBox" >
+						<view  class="alertTypeItem"  @click="search.work_type_id=ltt.id" :key='inde' v-for="(ltt,inde) in workTypeList" :class="{action:search.work_type_id==ltt.id}">
+							<text>
+								{{ltt.title}}
+							</text>
+						</view>
+					</view>
+					<view class="alertItemTitle">
+						价格类型
+					</view>
+					<view class="flex alertTypeBox" >
+						<view  class="alertTypeItem"  :class="{action:search.timetype===''}" @click="search.timetype=''">
+							<text>
+								无
+							</text>
+						</view>
+						<view  class="alertTypeItem"  :class="{action:search.timetype==='hour'}"  @click="search.timetype='hour'">
+							<text>
+								小时
+							</text>
+						</view>
+						<view  class="alertTypeItem"  :class="{action:search.timetype==='day'}"  @click="search.timetype='day'">
+							<text>
+								每天
+							</text>
+						</view>
+						<view  class="alertTypeItem"  :class="{action:search.timetype==='month'}"  @click="search.timetype='month'">
+							<text>
+								每月
+							</text>
+						</view>
+					</view>
+					<view class="alertItemTitle" v-if="search.timetype!==''">
+						最低价格
+					</view>
+					<input v-if="search.timetype!==''" v-model="search.servicePrice" class="minMoney" type="number" placeholder-class="placeholderText" placeholder="自定义最低价格">
+					<view class="alertItemTitle">
+						服务区域
+					</view>
+					<view class="flex alertTypeBox" >
+						<view  class="alertTypeItem"  :class="{action:search.is_china===''}" @click="search.is_china=''">
+							<text>
+								全部
+							</text>
+						</view>
+						<view  class="alertTypeItem"  :class="{action:search.is_china===1}"  @click="search.is_china=1">
+							<text>
+								国内
+							</text>
+						</view>
+						<view  class="alertTypeItem"  :class="{action:search.is_china===0}"  @click="search.is_china=0">
+							<text>
+								国外
+							</text>
+						</view>
+					</view>
+					<view v-if="search.is_china===1" class="alertItemTitle">
+						区域选择
+					</view>
+					<view v-if="search.is_china===1" class="right">
+						<view class="citylist">
+							<view class="">
+								<view class="flex margin-b-20" v-for="(item,ind) in search.service_area" :key="ind">
+									<view>
+										{{item.province+item.city+item.district}}
+										<text class="margin-l-10 del" @click="search.service_area.splice(ind,1)">
+											删除
+										</text>
+									</view>
+								</view>
+							</view>
+							<view class="flex">
+								<pickerAddress class="buttom" @change="onCityClick">选择地区</pickerAddress>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="flex alertButtomBox">
+					<view class="cancel" @click="cancelSearch">
+						清空选择
+					</view>
+					<view class="confirm" @click="confirmSearch">
+						确定
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+<script>
+	import {
+		getGoodWorkerList,
+		getNewWorkerList
+	} from '@/api/index.js'
+	import {
+		getUserWorkTypeList
+	} from '@/api/model.js';
+	import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
+	import{mapState} from "vuex"
+	export default {
+		components: {
+			pickerAddress
+		},
+		computed: {
+			...mapState(["baseURL"]) 
+		},
+		data() {
+			return {
+				typeIndex: -1,
+				type: 1,
+				workTypeList: [],
+				height: '',
+				currentIndex: 0,
+				navList: [{
+						title: '全部',
+						page: 1,
+						pageSize: 10,
+						list: [],
+						loadingType: 'morde',
+						loaded: false
+					}, {
+						title: '视频',
+						page: 1,
+						pageSize: 10,
+						list: [],
+						loadingType: 'morde',
+						type: 0,
+						loaded: false
+					}
+				],
+				alertIndex:0,
+				search:{
+					timetype:'',//hour,month,day
+					servicePrice:'',
+					work_type_id:'',
+					service_area:[],
+					is_china:'',
+				},
+			};
+		},
+		onLoad(opt) {
+			this.type =parseInt( opt.type)
+			this.currentIndex = this.type-1
+			this.init();
+		},
+		onShow() {
+			this.getKcList()
+		},
+		onReady(res) {
+			var that = this;
+			uni.getSystemInfo({
+				success: resu => {
+					const query = uni.createSelectorQuery();
+					query.select('.scroll-wrap').boundingClientRect();
+					query.exec(function(res) {
+						that.height = resu.windowHeight - res[0].top + 'px';
+					});
+				},
+				fail: res => {}
+			});
+		},
+		onReachBottom() {
+
+		},
+		methods: {
+			onCityClick({
+				data
+			}) {
+				let address = {};
+				address.province = data[0];
+				address.city = data[1];
+				address.district = data[2];
+				this.search.service_area.push(address)
+			},
+			cancelSearch(){
+				this.search = {
+					servicePrice:'',
+					work_type_id:'',
+					timetype:'',
+					service_area:[],
+					is_china:'',
+				}
+			},
+			closeAlert(){
+				this.$refs.popup.close();
+			},
+			confirmSearch(){
+				this.initData()
+				this.closeAlert()
+				this.getKcList()
+			},
+			//初始化查询数据
+			initData(){
+				const data = this.navList[this.currentIndex]
+				data.page=1;
+				data.list =[];
+				data.loadingType='morde'
+			},
+			changeType(item,ind){
+				if(ind==this.typeIndex){
+					this.typeIndex=-1;
+					this.search.work_type_id = '';
+				}else{
+					this.typeIndex=ind;
+					this.cancelSearch();
+					this.search.work_type_id = item.id;
+				}
+				this.initData()
+				this.getKcList()
+			},
+			init() {
+				const that = this;
+				getUserWorkTypeList().then(
+					(res) => {
+						that.workTypeList = res.data.list
+					}
+				).catch(
+					(res) => {
+						console.log(res);
+					}
+				)
+			},
+			async getKcList(type) {
+				let that = this;
+				let item = that.navList[that.currentIndex]
+				if (item.loaded && type == 'tab') {
+					return
+				}
+				if (item.loadingType == 'noMore' || item.loadingType == 'loading') {
+					return
+				}
+				item.loadingType = 'loading'
+				let res = {}
+				const search= {
+					...that.search
+				}
+				search.service_area = search.service_area.map(
+						(item) => {
+							return `${item.province},${item.city},${item.district}`
+						}
+					)
+				if (this.type === 1) {
+					res = await getGoodWorkerList({
+						...search,
+						page: item.page,
+						pageSize: item.pageSize
+					})
+				} else if (this.type === 2) {
+					res = await getNewWorkerList({
+						...search,
+						page: 1,
+						pageSize: 10,
+					})
+				}
+				item.list = item.list.concat(res.data.list)
+				item.page++
+				if (item.pageSize == res.data.list.length) {
+					item.loadingType = 'more'
+				} else {
+					item.loadingType = 'noMore'
+				}
+				item.loaded = true
+			},
+			navClick(index) {
+				this.currentIndex = index
+				this.getKcList('tab')
+			}
+		}
+	};
+</script>
+<style lang="scss" scoped>
+	.alert{
+		background-color: red;
+	}
+	.scroll-wrap{
+		padding: 30rpx;
+	}
+	.alertBox{
+		line-height: 1;
+		background-color: #FFF;
+		padding: 20rpx 0 30rpx;
+		border-radius: 20rpx 20rpx 0 0;
+		.right {
+			color: $font-color-light;
+			font-size: $font-base;
+			flex-grow: 1;
+			justify-content: flex-end;
+			padding: 20rpx;
+			.timetype {
+				width: 100%;
+				justify-content: flex-end;
+			}
+		
+			.citylist {
+				.del {
+					font-size: $font-sm;
+					border-radius: 10rpx;
+					background-color: #eee;
+					line-height: 1;
+					padding: 5rpx 15rpx;
+				}
+			}
+		
+			.img {
+				width: 26rpx;
+			}
+		
+			.buttom {
+				border-radius: 10rpx;
+				line-height: 1;
+				padding: 10rpx 20rpx;
+				background-color: #eee;
+			}
+		}
+		.alertTitle{
+			font-weight: bold;
+			font-size: 32rpx;
+			flex-grow: 1;
+			text-align: center;
+		}
+		.alertClose{
+			width: 40rpx;
+			height: 40rpx;
+		}
+		.alertItemTitle{
+			font-size: 28rpx;
+			padding-left: 20rpx;
+			font-weight: bold;
+		}
+		.minMoney{
+			margin: 20rpx;
+			font-size: 24rpx;
+			border-bottom: 1px solid #e9e9e9;
+		}
+		.placeholderText{
+			font-size: 24rpx;
+		}
+		.alertTypeBox{
+			flex-wrap: wrap;
+			justify-content: flex-start;
+			padding: 0 20rpx 10rpx;
+			margin-top: 20rpx;
+			
+			.alertTypeItem{
+				font-size: 24rpx;
+				padding: 10rpx 20rpx;
+				background-color: #eee;
+				border-radius: 10rpx;
+				margin-bottom: 14rpx;
+				margin-right: 14rpx;
+				&.action{
+					background-color: #fee7e4;
+					color: #F86859;
+				}
+			}
+		}
+		.moneyTitle{
+			font-size: 28rpx;
+		}
+		.alertButtomBox{
+			color: #FFF;
+			padding: 20rpx;
+			border-top: 1px solid #e3e3e3;
+			.confirm{
+				background-color: #F86859;
+			}
+			.cancel{
+				background-color:orange;
+			}
+			.cancel,.confirm{
+				padding: 10rpx;
+				text-align: center;
+				width: 350rpx;
+				border-radius: 10rpx;
+				font-size: 28rpx;
+			}
+		}
+	}
+	
+	.topSearch{
+		position: sticky;
+		top: 0;
+		background-color: #FFF;
+		padding-right: 100rpx;
+		height: 80rpx;
+		.itemBox{
+			padding-left: 30rpx;
+			align-items: center;
+			.itemTip{
+				background-color: #FFF;
+				position: fixed;
+				right: 0;
+				top: 0;
+				align-items: center;
+				height: 80rpx;
+				padding: 0 30rpx;
+			}
+			.typeTtem {
+				flex-shrink: 0;
+				height: 80rpx;
+				align-items: center;
+				margin-right: 30rpx;
+				&.action{
+					color:#F86859;
+					border-bottom: 1px solid #F86859;
+				}
+			}
+		}
+	}
+</style>

+ 2 - 2
pages/modelData/index.vue

@@ -2,9 +2,9 @@
 	<view>
 		<model1 :shareNumber='shareNumber' @openImage='openImage' :isDefault='isDefault' v-if="modelId==3||modelId==1"
 			:templateDetail='templateData' :isShare='isShare' :isLook='isLook'></model1>
-		<model2 :shareNumber='shareNumber' @openImage='openImage' :isDefault='isDefault' v-if="modelId==4" :templateDetail='templateData'
+		<model2 :shareNumber='shareNumber' @openImage='openImage' :isDefault='isDefault' v-else-if="modelId==4" :templateDetail='templateData'
 			:isShare='isShare' :isLook='isLook'></model2>
-		<model3 :shareNumber='shareNumber' @openImage='openImage' :isDefault='isDefault' v-if="modelId==5"  :templateDetail='templateData'
+		<model3 :shareNumber='shareNumber' @openImage='openImage' :isDefault='isDefault' v-else-if="modelId==5"  :templateDetail='templateData'
 			:isShare='isShare' :isLook='isLook'></model3>
 		<template v-if="templateData.service_imgs && templateData.service_imgs.length > 0">
 			<q-previewImage ref="previewImage" :urls="imageList" @open="open"

+ 23 - 111
pages/modelData/modeltemplate/model_1.vue

@@ -2,36 +2,33 @@
 	<view class="mone">
 		<view class="m-top">
 			<view class="top-user flex">
-				<image :src="cardInfo.avatar" mode="" class="user-logo"></image>
+				<image :src="cardInfo.avatar"  class="user-logo"></image>
 			</view>
 			<view class="user-name">
 				{{cardInfo.name || '暂无'}}
 			</view>
 			<view class="u-zy">
-				<view class="">
+				<view class="u-zy-text">
 					职业:{{cardInfo.user_work_type_title || '暂无'}}
 				</view>
 			</view>
-			<!-- <button type="default" class="top-btn fx-btn" v-if="isShare" open-type="share">
-				<image :src="baseURL + '/resource/model/model1/fx.png'" mode=""></image>
-			</button> -->
 			<view class="top-btn visit mvisit padding-r-10" v-if="isLook==1||isLook==2">
 				浏览:{{shareNumber}}
 			</view>
-			<image :src="baseURL + '/resource/model/model1/hua7.png'" mode="" class="top-bg"></image>
+			<image v-if="baseURL" :src="baseURL + '/resource/model/model1/hua7.png'"  class="top-bg"></image>
 			
 		</view>
 		<view class="m-body gr">
 			<!-- 个人信息 -->
 			<view class="hua2">
 				<view class="m-card">
-					<image :src="baseURL + '/resource/model/model1/card-bg.png'" mode="" class="card-bg"></image>
+					<image v-if="baseURL" :src="baseURL + '/resource/model/model1/card-bg.png'"  class="card-bg"></image>
 					<view class=" flex">
 						<view class="card-tit flex" style="flex-shrink: 0;">
-							<image :src="baseURL + '/resource/model/model1/m1.png'" mode="" class="tit-logo"></image>个人信息
+							<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m1.png'"  class="tit-logo"></image>个人信息
 						</view>
 						<view class="u-bh flex">
-							<image :src="baseURL + '/resource/model/model1/bh.png'" mode=""></image>编号:{{cardInfo.no|| "未申请"}}
+							<image class="image" v-if="baseURL" :src="baseURL + '/resource/model/model1/bh.png'" ></image>编号:{{cardInfo.no|| "未申请"}}
 						</view>
 					</view>
 					
@@ -68,7 +65,7 @@
 							<view class="info-item-q flex" style="align-items: flex-start;">
 								<text style="flex-shrink: 0;">服务地区:</text>
 								<view class="fwdz flex" v-if="cardInfo.is_china == 1">
-									<view v-for="(fwitem,fwindex) in cardInfo.service_area_all">
+									<view v-for="(fwitem,fwindex) in cardInfo.service_area_all" :key="fwindex">
 										{{fwitem}}{{fwindex ==(cardInfo.service_area_all.length -1) ?'': '、'  }}
 									</view>
 								</view>
@@ -83,39 +80,24 @@
 									</view>
 								</view>
 							</view>
-							<!-- <view class="info-item-q flex" style="align-items: flex-start;">
-								<text style="flex-shrink: 0;">服务价格: </text>
-								<view class="gzt">
-									<image :src="baseURL + '/resource/model/model1/tiao.png'" mode=""></image>
-									<view class="gzt-price">
-										<text>{{cardInfo.service_min_price}}</text>元/{{ cardInfo.service_time_type_title && cardInfo.service_time_type_title.replace('每','')}}
-									</view>
-									<view class=" gzt-price-b">
-										<text>{{cardInfo.service_max_price}}</text>元/{{cardInfo.service_time_type_title && cardInfo.service_time_type_title.replace('每','')}}
-									</view>
-								</view>
-								<image :src="baseURL + '/resource/model/model1/yrz.png'" mode="" class="rz"
-									v-if="cardInfo.is_type_audit == 1"></image>
-							</view> -->
 						</view>
 					</view>
 					<view class="" style="height: 80rpx;"></view>
-
 				</view>
 			</view>
 			<!-- 自我评价 -->
 			<view class="hua4">
 				<view class="hua3">
 					<view class="m-card">
-						<image :src="baseURL + '/resource/model/model1/card-bg.png'" mode="" class="card-bg"></image>
+						<image v-if="baseURL" :src="baseURL + '/resource/model/model1/card-bg.png'"  class="card-bg"></image>
 						<view class="card-tit flex">
-							<image :src="baseURL + '/resource/model/model1/m2.png'" mode="" class="tit-logo"></image>自我展示
+							<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m2.png'"  class="tit-logo"></image>自我展示
 						</view>
 						<view class="card-content">
 							<rich-text :nodes="cardInfo.service_intro_content"></rich-text>
 						</view>
 						<view class="img-list flex" style="padding-top: 0;">
-							<image @click="$emit('openImage',siiitem)" :src="siiitem" mode="" v-for="siiitem in cardInfo.service_intro_imgs"></image>
+							<image class="image" @click="$emit('openImage',siiitem)" :src="siiitem"  :key='ind' v-for="(siiitem,ind) in cardInfo.service_intro_imgs"></image>
 						</view>
 					</view>
 				</view>
@@ -123,24 +105,24 @@
 			<!-- 我的证书 -->
 			<view class="hua5" v-if="cardInfo.service_audit_imgs && cardInfo.service_audit_imgs.length > 0">
 				<view class="m-card">
-					<image :src="baseURL + '/resource/model/model1/card-bg.png'" mode="" class="card-bg"></image>
+					<image v-if="baseURL" :src="baseURL + '/resource/model/model1/card-bg.png'"  class="card-bg"></image>
 					<view class="card-tit flex">
-						<image :src="baseURL + '/resource/model/model1/m3.png'" mode="" class="tit-logo"></image>我的证书
+						<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m3.png'"  class="tit-logo"></image>我的证书
 					</view>
 					<view class="img-list flex">
-						<image @click="$emit('openImage',saiitem)" :src="saiitem" mode="" v-for="saiitem in cardInfo.service_audit_imgs"></image>
+						<image class="image" @click="$emit('openImage',saiitem)" :src="saiitem"  :key='ind' v-for="(saiitem,ind) in cardInfo.service_audit_imgs"></image>
 					</view>
 				</view>
 			</view>
 			<!-- 服务内容 -->
 			<view class="hua6">
 				<view class="m-card">
-					<image :src="baseURL + '/resource/model/model1/card-bg.png'" mode="" class="card-bg"></image>
+					<image v-if="baseURL" :src="baseURL + '/resource/model/model1/card-bg.png'"  class="card-bg"></image>
 					<view class="card-tit flex">
-						<image :src="baseURL + '/resource/model/model1/m4.png'" mode="" class="tit-logo"></image>服务内容
+						<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m4.png'"  class="tit-logo"></image>服务内容
 					</view>
 					<view class="card-content">
-						<view class="fw" v-for="spaitem in cardInfo.service_project_ar">
+						<view class="fw" :key='spaitem.title' v-for="spaitem in cardInfo.service_project_ar">
 							<view class="fw-tit">
 								<text class="yg"></text>{{spaitem.title}}
 							</view>
@@ -153,16 +135,16 @@
 			</view>
 			<!-- 服务照片 -->
 			<view class="m-card" v-if="cardInfo.service_imgs && cardInfo.service_imgs.length > 0">
-				<image :src="baseURL + '/resource/model/model1/card-bg.png'" mode="" class="card-bg"></image>
+				<image v-if="baseURL" :src="baseURL + '/resource/model/model1/card-bg.png'"  class="card-bg"></image>
 				<view class="card-tit flex">
-					<image :src="baseURL + '/resource/model/model1/m5.png'" mode="" class="tit-logo"></image>服务照片
+					<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m5.png'"  class="tit-logo"></image>服务照片
 				</view>
 				<view class="img-list flex">
-					<image @click="$emit('openImage',siitem)" :src="siitem" mode="" v-for="siitem in cardInfo.service_imgs"></image>
+					<image @click="$emit('openImage',siitem)" :src="siitem"  :key='ind' v-for="(siitem,ind) in cardInfo.service_imgs"></image>
 				</view>
 			</view>
 			<!-- 底部图片 -->
-			<image :src="baseURL + '/resource/model/model1/m-btm.png'" mode="" class="m-btm"></image>
+			<image v-if="baseURL" :src="baseURL + '/resource/model/model1/m-btm.png'"  class="m-btm"></image>
 		</view>
 	</view>
 </template>
@@ -304,7 +286,7 @@
 				margin: auto;
 				display: flex;
 				justify-content: center;
-				view {
+				.u-zy-text {
 					display: inline-block;
 					padding: 8rpx 8rpx 8rpx 16rpx;
 					border: 1px solid #F46C85;
@@ -356,26 +338,6 @@
 				top: 318rpx;
 			}
 
-			.fx-btn {
-
-				padding: 0;
-
-				&::after {
-					border: none;
-				}
-
-
-
-
-				border-radius: 24rpx 0 0 24rpx;
-
-				image {
-					width: 150rpx;
-					height: 48rpx;
-					display: block;
-				}
-			}
-
 			.top-btn {
 				height: 48rpx;
 				position: absolute;
@@ -475,7 +437,7 @@
 			padding: 30rpx 30rpx 0;
 			position: relative;
 
-			image {
+			.image {
 				width: 270rpx;
 				height: 270rpx;
 				background-color: #fff;
@@ -570,56 +532,6 @@
 					align-items: flex-start;
 				}
 
-				.gzt {
-					width: 312rpx;
-					height: 24rpx;
-					padding-top: 10rpx;
-					position: relative;
-
-					image {
-						width: 312rpx;
-						height: 24rpx;
-						position: relative;
-					}
-
-					.gzt-price,
-					.gzt-price-b {
-						width: 200rpx;
-						text-align: center;
-						position: absolute;
-						padding-top: 20rpx;
-
-						&::after {
-							content: '';
-							width: 0px;
-							height: 0rpx;
-							// background: #FEB8C6;
-							border: 14rpx solid;
-							border-color: transparent transparent #FEB8C6;
-							// border-top:transparent;
-							// border-left: transparent;
-							// border-right: transparent;
-							position: absolute;
-							top: -14rpx;
-							left: 0;
-							right: 0;
-							margin: auto;
-						}
-
-						text {
-							color: #F46C85;
-						}
-					}
-
-					.gzt-price {
-						left: -100rpx;
-					}
-
-					.gzt-price-b {
-						right: -100rpx;
-					}
-				}
-
 				.rz {
 					margin-top: 10rpx;
 					margin-left: 10rpx;
@@ -716,7 +628,7 @@
 	.u-bh {
 		justify-content: flex-start;
 		padding-right: 10rpx;
-		image {
+		.image {
 			width: 26rpx;
 			height: 26rpx;
 			margin-right: 10rpx;

+ 23 - 38
pages/modelData/modeltemplate/model_2.vue

@@ -1,10 +1,7 @@
 <template>
 	<view class="mone">
 		<view class="m-top">
-			<image :src="baseURL + '/resource/icon/model2/tli.png'" mode="" class="top-left-img"></image>
-			<!-- <button type="default" class="top-btn fx-btn" v-if="isShare" open-type="share">
-				<image :src="baseURL + '/resource/icon/model1/fx.png'" mode=""></image>
-			</button> -->
+			<image v-if="baseURL" :src="baseURL + '/resource/icon/model2/tli.png'"  class="top-left-img"></image>
 			<view class="top-btn visit mvisit padding-r-10" v-if="isLook==1||isLook==2">
 				浏览:{{shareNumber}}
 			</view>
@@ -21,12 +18,12 @@
 					</view>
 					<!-- 编号 -->
 					<view class="u-bh flex ">
-						<image :src="baseURL + '/resource/icon/model2/bh.png'" mode=""></image>编号:{{cardInfo.no || "myj23031421"}}
+						<image class="image" v-if="baseURL" :src="baseURL + '/resource/icon/model2/bh.png'" ></image>编号:{{cardInfo.no || "myj23031421"}}
 					</view>
 					<!-- 头像 -->
 					<view class="user-img">
-						<image :src="baseURL + '/resource/icon/model2/txk.png'" mode="" class="base-bg"></image>
-						<image :src="cardInfo.avatar" mode=""  class="user-av"></image>
+						<image v-if="baseURL" :src="baseURL + '/resource/icon/model2/txk.png'"  class="base-bg"></image>
+						<image :src="cardInfo.avatar"   class="user-av"></image>
 					</view>
 					<!-- 职业 -->
 					<view class="zy-wrap" v-if="cardInfo.user_work_type_title">
@@ -70,7 +67,7 @@
 							<view class="info-item-q flex" style="align-items: flex-start;">
 								<text style="flex-shrink: 0;">服务地区:</text>
 								<view class="fwdz flex" v-if="cardInfo.is_china == 1">
-									<view v-for="(fwitem,fwindex) in cardInfo.service_area_all">
+									<view :key='fwindex' v-for="(fwitem,fwindex) in cardInfo.service_area_all">
 										{{fwitem}}{{fwindex ==(cardInfo.service_area_all.length -1) ?'': '、'  }}
 									</view>
 								</view>
@@ -88,20 +85,20 @@
 							<view class="info-item-q flex" style="align-items: flex-start;height: 110rpx;">
 								<text style="flex-shrink: 0;">服务价格: </text>
 								<view class="gzt">
-									<image :src="baseURL + '/resource/icon/model2/tiao.png'" mode=""></image>
+									<image class="image" v-if="baseURL" :src="baseURL + '/resource/icon/model2/tiao.png'" ></image>
 									<view class="gzt-price">
 										<text>{{cardInfo.service_min_price}}</text>元/{{ cardInfo.service_time_type_title && cardInfo.service_time_type_title.replace('每','')}}
 									</view>
 									<view class=" gzt-price-b">
-										<text>{{cardInfo.service_max_price}}</text>元/{{cardInfo.service_time_type_title && cardInfo.service_time_type_title.replace('每','')}}
+										<text class="gzt-price-b-text">{{cardInfo.service_max_price}}</text>元/{{cardInfo.service_time_type_title && cardInfo.service_time_type_title.replace('每','')}}
 									</view>
 								</view>
-								<image :src="baseURL + '/resource/icon/model1/yrz.png'" mode="" class="rz"
+								<image :src="baseURL + '/resource/icon/model1/yrz.png'"  class="rz"
 									v-if="cardInfo.is_type_audit == 1"></image>
 							</view>
 						</view>
 					</view>
-					<!-- <view class="" style="height: 40rpx;"></view> -->
+					<!-- <view  style="height: 40rpx;"></view> -->
 			
 				</view>
 			</view>	
@@ -109,16 +106,16 @@
 			
 			<!-- 自我评价 -->
 			<view class="hua4">
-				<view class="">
+				<view >
 					<view class="m-card">
 						<view class="card-tit flex">
-							<image :src="baseURL + '/resource/icon/model2/zwpj.png'" mode="" class=""></image>
+							<image class="image" v-if="baseURL" :src="baseURL + '/resource/icon/model2/zwpj.png'"  ></image>
 						</view>
 						<view class="card-content">
 							<rich-text :nodes="cardInfo.service_intro_content"></rich-text>
 						</view>
 						<view class="img-list flex" style="padding-top: 0;">
-							<image @click="$emit('openImage',siiitem)" :src="siiitem" mode="" v-for="siiitem in cardInfo.service_intro_imgs"></image>
+							<image class="image" @click="$emit('openImage',siiitem)" :src="siiitem"  :key='ind'  v-for="(siiitem,ind) in cardInfo.service_intro_imgs"></image>
 						</view>
 					</view>
 				</view>
@@ -127,10 +124,10 @@
 			<view class="hua5" v-if="cardInfo.service_audit_imgs && cardInfo.service_audit_imgs.length > 0">
 				<view class="m-card">
 					<view class="card-tit flex">
-						<image :src="baseURL + '/resource/icon/model2/wdzs.png'" mode="" class=""></image>
+						<image class="image" :src="baseURL + '/resource/icon/model2/wdzs.png'"  ></image>
 					</view>
 					<view class="img-list flex">
-						<image @click="$emit('openImage',saiitem)" :src="saiitem" mode="" v-for="saiitem in cardInfo.service_audit_imgs"></image>
+						<image class="image" @click="$emit('openImage',saiitem)" :src="saiitem"  :key='ind'   v-for="(saiitem,ind) in cardInfo.service_audit_imgs"></image>
 					</view>
 				</view>
 			</view>
@@ -138,10 +135,10 @@
 			<view class="hua6">
 				<view class="m-card">
 					<view class="card-tit flex">
-						<image :src="baseURL + '/resource/icon/model2/fwnr.png'" mode="" class=""></image>
+						<image class="image" v-if="baseURL" :src="baseURL + '/resource/icon/model2/fwnr.png'"  ></image>
 					</view>
 					<view class="card-content">
-						<view class="fw" v-for="spaitem in cardInfo.service_project_ar">
+						<view class="fw" :key='ind' v-for="(spaitem,ind) in cardInfo.service_project_ar">
 							<view class="fw-tit">
 								<text class="yg"></text>{{spaitem.title}}
 							</view>
@@ -157,10 +154,10 @@
 				<view class="hua8">
 					<view class="m-card" >
 						<view class="card-tit flex">
-							<image :src="baseURL + '/resource/icon/model2/fwzp.png'" mode="" class=""></image>
+							<image class="image" v-if="baseURL" :src="baseURL + '/resource/icon/model2/fwzp.png'"  ></image>
 						</view>
 						<view class="img-list flex">
-							<image @click="$emit('openImage',siitem)" :src="siitem" mode="" v-for="siitem in cardInfo.service_imgs"></image>
+							<image  class="image" @click="$emit('openImage',siitem)" :src="siitem"  :key='ind' v-for="(siitem,ind) in cardInfo.service_imgs"></image>
 						</view>
 					</view>
 				</view>
@@ -312,18 +309,6 @@
 				margin: auto;
 			}
 
-			.fx-btn {
-				padding: 0;
-				&::after {
-					border: none;
-				}
-				border-radius: 24rpx 0 0 24rpx;
-				image {
-					width: 150rpx;
-					height: 48rpx;
-					display: block;
-				}
-			}
 			.top-btn {
 				height: 48rpx;
 				position: absolute;
@@ -451,7 +436,7 @@
 				margin: auto;
 			}
 
-			image {
+			.image {
 				width: 213rpx;
 				height: 47rpx;
 			}
@@ -482,7 +467,7 @@
 			padding: 30rpx 30rpx 0;
 			position: relative;
 
-			image {
+			.image {
 				width: 270rpx;
 				height: 270rpx;
 				background-color: #fff;
@@ -559,7 +544,7 @@
 				padding-top: 10rpx;
 				position: relative;
 
-				image {
+				.image {
 					width: 312rpx;
 					height: 24rpx;
 					position: relative;
@@ -585,7 +570,7 @@
 						margin: auto;
 					}
 
-					text {
+					.gzt-price-b-text {
 						color:#FE9E32;
 					}
 				}
@@ -720,7 +705,7 @@
 	}
 	.u-bh {
 		justify-content: flex-start;
-		image {
+		.image {
 			width: 26rpx;
 			height: 26rpx;
 			margin-right: 10rpx;

+ 24 - 24
pages/modelData/modeltemplate/model_3.vue

@@ -11,14 +11,14 @@
 			<view class="user-bottom-content icon-box-content">
 			</view>
 		</view>
-		<image class="user-top-icon" :src="baseURL + '/resource/model/static/model3/tap3.png'" mode="scaleToFill">
-		</image>
-		<image class="user-right-logo" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
+		<!-- <image v-if="baseURL" class="user-top-icon" :src="baseURL + '/resource/model/static/model3/tap3.png'" mode="scaleToFill">
+		</image> -->
+		<image v-if="baseURL" class="user-right-logo" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
 		<view class="user-img">
 			<image class="image" :src="cardInfo.avatar" mode="widthFix"></image>
 		</view>
-		<image class="content-left-icon" :src="baseURL + '/resource/model/model3/tap6.png'" mode="widthFix"></image>
-		<image class="page-bottom-right" :src="baseURL + '/resource/model/model3/tap7.png'" mode="widthFix"></image>
+		<image v-if="baseURL" class="content-left-icon" :src="baseURL + '/resource/model/model3/tap6.png'" mode="widthFix"></image>
+		<image v-if="baseURL" class="page-bottom-right" :src="baseURL + '/resource/model/model3/tap7.png'" mode="widthFix"></image>
 		<view class="share-number">
 			浏览:{{shareNumber}}
 		</view>
@@ -32,10 +32,10 @@
 			<view class="career margin-t-10">
 				编号:{{cardInfo.no}}
 			</view>
-			<image class="line-icon margin-t-10" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix">
+			<image v-if="baseURL" class="line-icon margin-t-10" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix">
 			</image>
 		</view>
-		<image class="right-center-icon" :src="baseURL + '/resource/model/model3/tap5.png'" mode="widthFix"></image>
+		<image v-if="baseURL" class="right-center-icon" :src="baseURL + '/resource/model/model3/tap5.png'" mode="widthFix"></image>
 		<view class="content ">
 			<view class="icon-round-min">
 
@@ -83,7 +83,7 @@
 				</view>
 				<view>
 					<view class="fwdq" v-if="cardInfo.is_china == 1">
-						<view v-for="(fwitem,fwindex) in cardInfo.service_area_all">
+						<view :key='fwindex' v-for="(fwitem,fwindex) in cardInfo.service_area_all">
 							{{fwitem}}{{fwindex ==(cardInfo.service_area_all.length -1) ?'': ''  }}
 						</view>
 					</view>
@@ -99,7 +99,7 @@
 				<text class="flex-shrink-false">服务价格: </text>
 				<view class="gzt">
 					<view class="line-box flex">
-						<view class="item" v-for="i in 18"></view>
+						<view class="item" :key='i' v-for="i in 18"></view>
 					</view>
 					<view class="gzt-price">
 						<text
@@ -111,7 +111,7 @@
 					</view>
 				</view>
 				<image :src="baseURL + '/resource/icon/model1/yrz.png'" mode="" class="rz"
-					v-if="cardInfo.is_type_audit == 1"></image>
+					v-if="cardInfo.is_type_audit == 1&&baseURL"></image>
 			</view>
 		</view>
 		<view class="content-text">
@@ -119,17 +119,17 @@
 				<view class="name">
 					自我评价
 				</view>
-				<image class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
 			</view>
 			<view class="flex">
 				<view></view>
-				<image class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
 			</view>
 			<view class="text margin-t-20">
 				<rich-text :nodes="cardInfo.service_intro_content"></rich-text>
 			</view>
 			<view class="img-list flex">
-				<image  @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" v-for="siiitem in cardInfo.service_intro_imgs"></image>
+				<image class="image"  @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" :key='ind' v-for="(siiitem,ind) in cardInfo.service_intro_imgs"></image>
 			</view>
 		</view>
 
@@ -138,14 +138,14 @@
 				<view class="name">
 					我的证书
 				</view>
-				<image class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
 			</view>
 			<view class="flex">
 				<view></view>
-				<image class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
 			</view>
 			<view class="img-list flex">
-				<image @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" v-for="siiitem in cardInfo.service_audit_imgs"></image>
+				<image class="image" @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" :key='ind' v-for="(siiitem,ind) in cardInfo.service_audit_imgs"></image>
 			</view>
 		</view>
 		<view class="content-text">
@@ -153,14 +153,14 @@
 				<view class="name">
 					服务内容
 				</view>
-				<image class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
 			</view>
 			<view class="flex">
 				<view></view>
-				<image class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
 			</view>
 			<view class="card-content">
-				<view class="fw" v-for="spaitem in cardInfo.service_project_ar">
+				<view class="fw" :key='ind' v-for="(spaitem,ind) in cardInfo.service_project_ar">
 					<view class="fw-tit">
 						<text class="yg"></text>{{spaitem.title}}
 					</view>
@@ -175,14 +175,14 @@
 				<view class="name">
 					服务照片
 				</view>
-				<image class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="icon" :src="baseURL + '/resource/model/model3/tap13.png'" mode="widthFix"></image>
 			</view>
 			<view class="flex">
 				<view></view>
-				<image class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
+				<image v-if="baseURL" class="line" :src="baseURL + '/resource/model/model3/tap11.png'" mode="widthFix"></image>
 			</view>
 			<view class="img-list flex">
-				<image @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" v-for="siiitem in cardInfo.service_imgs"></image>
+				<image class="image" @click="$emit('openImage',siiitem)" :src="siiitem" mode="scaleToFill" :key='ind' v-for="(siiitem,ind) in cardInfo.service_imgs"></image>
 			</view>
 		</view>
 	</view>
@@ -644,7 +644,7 @@
 						margin: auto;
 					}
 
-					text {
+					.money {
 						color: #236BA5;
 					}
 				}
@@ -673,7 +673,7 @@
 		position: relative;
 		padding-top: 50rpx;
 
-		image {
+		.image {
 			width: 270rpx;
 			height: 270rpx;
 			background-color: #fff;

+ 1 - 1
pages/public/artDetail.vue

@@ -126,7 +126,7 @@ export default {
 .main {
 	margin-top: 60rpx;
 }
-/deep/ .main {
+:deep(.main) {
 	.rich-img {
 		width: 100% !important;
 		height: auto;

+ 93 - 326
pages/user/model/model.vue

@@ -6,8 +6,7 @@
 			<button class="share" type="default" open-type="share">
 				分享名片
 			</button>
-			<view class="nav-model pink" @click="payPhone"
-				v-if="mtype ==5">
+			<view class="nav-model pink" @click="payPhone" v-if="mtype ==5">
 				拨打电话
 			</view>
 			<view class="nav-model" @click="navto('/pages/user/model/model?mtype=' + mtype+'&type=0')"
@@ -52,8 +51,8 @@
 				生成我的名片
 			</view>
 			<view v-else class="create-model flex bottom">
-				<view  v-if="systeam!='ios'"  class="price-show">
-					模板费用:<text>{{modelInfo.price*1}}</text>
+				<view v-if="systeam!='ios'" class="price-show">
+					模板费用:<text class="price-show-text">{{modelInfo.price*1}}</text>
 				</view>
 				<view class="to-show" @click="preview">
 					模板预览
@@ -66,6 +65,23 @@
 		<view class="yl bottom" v-if="previewShow" @click="outPreview">
 			结束预览
 		</view>
+
+		<view class="rightIcon">
+			<view class="Dz" @click="onDz(1)">
+				<uni-icons class="icon" :color="userTemplate.is_like==0?'#FFF':'#FEB8C6'" size='80rpx'
+					type="hand-up-filled"></uni-icons>
+			</view>
+			<view class="ScNum">
+				{{userTemplate.like_count}}
+			</view>
+			<view class="Sc" @click="onDz(2)">
+				<uni-icons class="icon" :color="userTemplate.is_bookmark==0?'#FFF':'#FEB8C6'" size='80rpx'
+					type="heart-filled"></uni-icons>
+			</view>
+			<view class="ScNum">
+				{{userTemplate.bookmark_count}}
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -78,7 +94,8 @@
 		getUserCardInfo,
 		getCommonUserCardInfo,
 		getShowTemplateItem,
-		subShowTemplateOrder
+		subShowTemplateOrder,
+		likeAndBookmark
 	} from '@/api/model.js'
 	import {
 		getUser
@@ -108,6 +125,7 @@
 				isShare: false, //是否显示分享按钮
 				isLook: 0, //1为平台浏览量2为用户浏览量0为不显示
 				previewShow: false, //是否显示预览
+				uid: '', //当前载入的显示的用户uid
 			}
 		},
 		onLoad(opt) {
@@ -136,6 +154,7 @@
 					data: arr[0]
 				});
 				this.getCommonUserCardInfo(arr[0]);
+				this.uid = arr[0];
 				return
 			}
 			// #endif
@@ -144,37 +163,41 @@
 			// 获取查看类型
 			this.type = +opt.type
 
-			// 是否页进入
+			// 是否商品购买页进入
 			if (this.type === 0) {
 				this.isLook = 1;
-				this.getShowTemplateItem();
 				if (this.userInfo.uid) {
 					this.getCommonUserCardInfo(this.userInfo.uid);
+					this.uid = this.userInfo.uid;
+				}else{
+					this.getShowTemplateItem();
 				}
 				return
-			}
-			//个人中心提交数据预览
-			if (this.type === 1) {
+			} else if (this.type === 1) {
+				//个人中心提交数据预览
 				this.userTemplate = uni.getStorageSync('modeldata');
 				this.isDefault = false;
 				uni.setNavigationBarTitle({
 					title: '名片预览'
 				})
+				this.uid = this.userInfo.uid;
 				return
-			}
-			//分享预览
+			} else
 			if (this.type === 2) {
+				//分享预览
 				this.isLook = 2;
 				this.shareId = opt.uid;
 				this.getCommonUserCardInfo(opt.uid);
+				this.uid = opt.uid;
 				return
-			}
-			//我的模板页进入预览
+			} else
 			if (this.type === 3) {
+				//我的模板页进入预览
 				this.isShare = true;
 				this.isLook = 2;
 				this.shareId = this.userInfo.uid;
 				this.getCommonUserCardInfo(this.userInfo.uid);
+				this.uid = this.userInfo.uid;
 				return
 			}
 			// if(opt.look && opt.look == 2) {
@@ -251,9 +274,37 @@
 		},
 		methods: {
 			...mapMutations('user', ['setUserInfo']),
-			payPhone(){
+			onDz(type) {
+				if (type == 1) {
+					if (this.userTemplate.is_like == 0) {
+						this.userTemplate.is_like = 1;
+						this.userTemplate.like_count++;
+					} else {
+						this.userTemplate.is_like = 0;
+						this.userTemplate.like_count--;
+					}
+				}
+				if (type == 2) {
+					if (this.userTemplate.is_bookmark == 0) {
+						this.userTemplate.is_bookmark = 1;
+						this.userTemplate.bookmark_count++;
+					} else {
+						this.userTemplate.is_bookmark = 0;
+						this.userTemplate.bookmark_count--;
+					}
+				}
+				likeAndBookmark({
+					uid: this.uid,
+					type: type
+				}).then((res) => {
+					console.log(res)
+				}).catch((err) => {
+					console.log(err)
+				})
+			},
+			payPhone() {
 				uni.makePhoneCall({
-					phoneNumber:this.userTemplate.mobile
+					phoneNumber: this.userTemplate.mobile
 				})
 			},
 			toLogin() {
@@ -409,6 +460,7 @@
 			},
 			// 加载用户模板数据
 			getCommonUserCardInfo(uid) {
+				console.log('jr')
 				let that = this
 				getCommonUserCardInfo({
 					uid: uid
@@ -455,300 +507,17 @@
 </script>
 
 <style lang="scss" scoped>
-	.bottom_padding {
-		height: 45px;
-		width: 100%;
-	}
-
-	.m-card {
-		width: 640rpx;
-		background: #fcf4f1;
-		border-radius: 20rpx;
-		position: relative;
-		// min-height: 270rpx;
-		margin: 0 auto 46rpx;
-
-		.card-tit {
-			width: 219rpx;
-			height: 57rpx;
-			background: #F46C85;
-			border-radius: 20rpx 28rpx 29rpx 0rpx;
-			justify-content: flex-start;
-			align-items: center;
-			padding: 0 20rpx;
-			font-size: 32rpx;
-			font-weight: bold;
-			color: #FFFFFF;
-
-			.tit-logo {
-				width: 32rpx;
-				height: 32rpx;
-				margin-right: 18rpx;
-			}
-		}
-
-		.card-bg {
-			width: 100%;
-			height: 270rpx;
-			position: absolute;
-			bottom: 0rpx;
-		}
-
-		.card-content {
-			padding: 25rpx 35rpx;
-			font-size: 26rpx;
-			font-weight: 500;
-			color: #2C2E35;
-			position: relative;
-		}
-
-		.img-list {
-			justify-content: space-between;
-			flex-wrap: wrap;
-			margin: auto;
-			padding: 30rpx 30rpx 0;
-			position: relative;
-
-			image {
-				width: 270rpx;
-				height: 270rpx;
-				background-color: #fff;
-				margin-bottom: 30rpx;
-				box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.6);
-			}
-
-
-		}
-
-		.fw {
-			font-size: 26rpx;
-			font-weight: 500;
-			color: #2C2E35;
-			padding: 10rpx 0;
-
-			.fw-tit {
-				color: #F46C85;
-				display: flex;
-				align-items: center;
-
-				.yg {
-					background-color: #F46C85;
-					display: inline-block;
-					width: 10rpx;
-					height: 10rpx;
-					border-radius: 50%;
-					margin-right: 10rpx;
-				}
-			}
-
-			.fw-content {
-				padding-top: 10rpx;
-				padding-left: 18rpx;
-				text-align: justify;
-			}
-
-		}
-
-		.user-info {
-			flex-wrap: wrap;
-			font-size: 26rpx;
-			font-weight: 500;
-			color: #000000;
-			position: relative;
-
-			.info-item-b,
-			.info-item-q {
-				padding: 10rpx 0;
-				color: #000000;
-				position: relative;
-
-				padding-left: 20rpx;
-
-				&::before {
-					display: inline-block;
-					content: '';
-					width: 10rpx;
-					height: 10rpx;
-					border-radius: 50%;
-					background-color: #F46C85;
-					position: absolute;
-					top: 22rpx;
-					left: 0;
-				}
-
-				.qianger {
-					width: 2em;
-					display: inline-block;
-				}
-
-				.laner {
-					width: 0.5em;
-					display: inline-block;
-				}
-			}
-
-			.info-item-b {
-				width: 50%;
-			}
-
-			.info-item-q {
-				width: 100%;
-				display: flex;
-				align-items: flex-start;
-				justify-content: start;
-
-				.fwdz {
-					flex-direction: column;
-					align-items: flex-start;
-				}
-
-				.gzt {
-					width: 312rpx;
-					height: 24rpx;
-					padding-top: 10rpx;
-					position: relative;
-
-					image {
-						width: 312rpx;
-						height: 24rpx;
-						position: relative;
-					}
-
-					.gzt-price,
-					.gzt-price-b {
-						width: 200rpx;
-						text-align: center;
-						position: absolute;
-						padding-top: 20rpx;
-
-						&::after {
-							content: '';
-							width: 0px;
-							height: 0rpx;
-							// background: #FEB8C6;
-							border: 14rpx solid;
-							border-color: transparent transparent #FEB8C6;
-							// border-top:transparent;
-							// border-left: transparent;
-							// border-right: transparent;
-							position: absolute;
-							top: -14rpx;
-							left: 0;
-							right: 0;
-							margin: auto;
-						}
-
-						text {
-							color: #F46C85;
-						}
-					}
-
-					.gzt-price {
-						left: -100rpx;
-					}
-
-					.gzt-price-b {
-						right: -100rpx;
-					}
-				}
-
-				.rz {
-					margin-top: 10rpx;
-					margin-left: 10rpx;
-					width: 87rpx;
-					height: 26rpx;
-				}
-			}
-		}
-	}
-
-	.m-btm {
-		width: 660rpx;
-		height: 384rpx;
-	}
-
-	.hua2 {
-		position: relative;
-
-		&::before {
-			content: '';
-			width: 199rpx;
-			height: 298rpx;
-			background: url($base-url + '/resource/icon/model1/hua2.png') no-repeat;
-			position: absolute;
-			bottom: -100rpx;
-			right: 0;
-			background-size: 100% 100%;
-		}
-	}
-
-	.hua3 {
-		position: relative;
-
-		&::before {
-			content: '';
-			width: 192rpx;
-			height: 223rpx;
-			background: url($base-url + '/resource/icon/model1/hua3.png') no-repeat;
-			position: absolute;
-			top: 0;
-			bottom: 0;
-			left: 0;
-			margin: auto;
-			background-size: 100% 100%;
-		}
-	}
-
-	.hua4 {
-		position: relative;
-
-		&::before {
-			content: '';
-			width: 128rpx;
-			height: 145rpx;
-			background: url($base-url + '/resource/icon/model1/hua4.png') no-repeat;
-			position: absolute;
-			bottom: -70rpx;
-			right: 0;
-			background-size: 100% 100%;
-		}
-	}
-
-	.hua5 {
-		position: relative;
-
-		&::before {
-			content: '';
-			width: 199rpx;
-			height: 298rpx;
-			background: url($base-url + '/resource/icon/model1/hua2.png') no-repeat;
-			position: absolute;
-			bottom: -100rpx;
-			left: 0;
-			background-size: 100% 100%;
-			transform: rotateY(180deg);
-		}
-	}
-
-	.hua6 {
-		position: relative;
-
-		&::before {
-			content: '';
-			width: 192rpx;
-			height: 223rpx;
-			background: url($base-url + '/resource/icon/model1/hua3.png') no-repeat;
-			position: absolute;
-			bottom: -110rpx;
-			right: 0;
-			background-size: 100% 100%;
-			transform: rotateY(180deg);
-		}
-	}
-
-
 	.fxmp {
+		position: fixed;
 		width: 750rpx;
+		bottom: 0;
+		padding: 0;
+		background: #f65486;
+		// border-radius: 5rpx;
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #FFFFFF;
+		text-align: center;
 
 		.share {
 			width: 50%;
@@ -758,10 +527,6 @@
 			background-color: $base-color;
 			color: #fff;
 			font-size: 32rpx;
-
-			&::after {
-				border: none;
-			}
 		}
 
 		.nav-model {
@@ -776,19 +541,6 @@
 		}
 	}
 
-	.fxmp {
-		position: fixed;
-		width: 750rpx;
-		bottom: 0;
-		padding: 0;
-		background: #f65486;
-		// border-radius: 5rpx;
-		font-size: 30rpx;
-		font-weight: 500;
-		color: #FFFFFF;
-		text-align: center;
-	}
-
 	.create-model {
 		position: fixed;
 		width: 750rpx;
@@ -805,7 +557,7 @@
 			background-color: #fff;
 			flex-grow: 1;
 
-			text {
+			.price-show-text {
 				font-size: 48rpx;
 				font-weight: 500;
 				color: #FC6F6D;
@@ -855,4 +607,19 @@
 		line-height: 45px;
 		height: 45px;
 	}
+
+	.rightIcon {
+		position: fixed;
+		right: 20rpx;
+		bottom: 200rpx;
+
+		.icon {
+			color: #fff;
+		}
+
+		.ScNum {
+			color: #FFF;
+			text-align: center;
+		}
+	}
 </style>

+ 1 - 0
pages/user/model/modelList.vue

@@ -160,6 +160,7 @@
 			.list {
 				box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
 				border-radius: 15rpx;
+				margin-bottom: 20rpx;
 
 				.list-image-box {
 					width: 330rpx;

+ 91 - 0
pages/user/mySc.vue

@@ -0,0 +1,91 @@
+<template>
+	<view class="indexBox padding-c-30 padding-v-30">
+		<cmy-mys-list :list="navList.orderList"></cmy-mys-list>
+		<uni-load-more :status="navList.loadingType"></uni-load-more>
+	</view>
+</template>
+
+<script>
+	import {
+		BookmarkList
+	} from '@/api/model.js';
+	export default {
+		data() {
+			return {
+				// 商品列表
+				navList: {
+					state: 1,
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					count: 0, //总消息条数
+				},
+			};
+		},
+		onLoad: function(option) {
+			this.getList();
+		},
+		// 滚动到底部
+		onReachBottom() {
+			this.getList();
+		},
+		methods: {
+			// 获取模板列表
+			getList(source) {
+				//这里是将订单挂载到tab列表下
+				let navItem = this.navList;
+				let state = navItem.state;
+				if (source === 'tabChange' && navItem.loaded === true) {
+					//tab切换只有第一次需要加载数据
+					return;
+				}
+				if (navItem.loadingType === 'loading') {
+					//防止重复加载
+					return;
+				}
+				if (navItem.loadingType === 'noMore') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+				BookmarkList({
+						page: navItem.page,
+						pageSize: navItem.limit
+					})
+					.then(({
+						data
+					}) => {
+						let arr = data.map(e => {
+							return e.detail;
+						});
+						navItem.orderList = navItem.orderList.concat(arr);
+						navItem.page++;
+						if (navItem.limit == arr.length) {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							navItem.loadingType = 'noMore';
+						}
+						uni.hideLoading();
+						this.$set(navItem, 'loaded', true);
+					})
+					.catch(e => {
+						console.log(e);
+					});
+
+			}
+		},
+	};
+</script>
+
+<style lang="scss">
+	page,
+	.indexBox {
+		height: auto;
+		min-height: 100%;
+	}
+</style>

+ 10 - 0
pages/userhome/user.vue

@@ -138,6 +138,16 @@
 								<image class="img" src="../../static/icon/next1.png" mode="widthFix"></image>
 							</view>
 						</view>
+						<view class="flex listItem" @click="navTo('/pages/user/mySc')">
+							<view class="flex titleBox">
+								<image class="listIconImg" src="../../static/icon/myinfo.png" mode="widthFix"></image>
+								<text class="title">我的收藏</text>
+							</view>
+							<view class="right flex">
+								<text></text>
+								<image class="img" src="../../static/icon/next1.png" mode="widthFix"></image>
+							</view>
+						</view>
 						<!-- #ifdef MP -->
 						<button hover-class="none" class="flex listItem" open-type='contact'>
 							<view class="flex titleBox">

+ 0 - 0
uni_modules/cmy-mys-list/changelog.md


+ 118 - 0
uni_modules/cmy-mys-list/components/cmy-mys-list/cmy-mys-list.vue

@@ -0,0 +1,118 @@
+<template>
+	<view class="listBox">
+		<view class="bd-btm-item"  :key='ind' v-for="(item,ind) in list"
+			@click="clickList(item)"
+			v-if="item.name != '影子' && item.name != '测试牛niu' &&item.name != '111'">
+			<view class="item-img-box">
+			<image :src="item.avatar" class="item-img"></image>
+			</view>
+			<view class="item-info" >
+				<view class="item-name flex">
+					<view class="clamp">
+						{{item.name}}
+					</view>
+					<image class="item-name-image" :src="baseURL + '/resource/icon/rz.png'"  v-if="item.is_type_audit == 1"></image>
+				</view>
+				<view class="item-where margin-t-10">
+					{{item.age}}岁
+				</view>
+				<view class="flex margin-t-10">
+					<view class="item-zy">
+						{{item.user_work_type_title}}
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		name:"mysList",
+		data() {
+			return {
+				
+			};
+		},
+		props: {
+			list: {
+				type: Array,
+				default: []
+			}
+		},
+		methods:{
+			clickList(item){
+				const url ='/pages/user/model/model?uid=' + item.uid + '&mtype=' + item.show_template_id + '&type=2'
+				uni.navigateTo({
+					url,
+				})
+			}
+		}
+	};
+</script>
+<style scoped lang="scss">
+	.listBox {
+		display: flex;
+		flex-wrap: wrap;
+		justify-content: space-between;
+		line-height: 1;
+		.bd-btm-item {
+			border-top: #f2f2f2 1px solid;
+			width: 330rpx;
+			margin-bottom: 20rpx;
+			box-shadow: 6rpx 6rpx 6rpx 6rpx rgba(46, 46, 49, 0.06);
+			border-radius: 20rpx;
+			overflow: hidden;
+			&:first-of-type {
+				border-top: none;
+			}
+			.item-info {
+				padding: 20rpx;
+				.item-name {
+					font-size: 31rpx;
+					font-weight: bold;
+					color: #333333;
+					justify-content: flex-start;
+					.item-name-image {
+						flex-shrink: 0;
+						width: 100rpx;
+						height: 30rpx;
+						margin-left: 10rpx;
+					}
+				}
+		
+				.item-zy {
+					padding: 6rpx 20rpx;
+					background: #fee7e4;
+					border-radius: 5rpx;
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #F86859;
+				}
+		
+				.item-vist,
+				.item-where {
+					font-weight: 500;
+					color: #969696;
+				}
+		
+				.item-vist {
+					font-size: 22rpx;
+					justify-items: flex-end;
+				}
+		
+				.item-where {
+					font-size: 24rpx;
+				}
+			}
+			.item-img-box{
+				line-height: 0;
+				background-color: #eee;
+			}
+			.item-img {
+				width: 330rpx;
+				height: 330rpx;
+			}
+		
+		}
+	}
+</style>

+ 83 - 0
uni_modules/cmy-mys-list/package.json

@@ -0,0 +1,83 @@
+{
+  "id": "cmy-mys-list",
+  "displayName": "cmy-mys-list",
+  "version": "1.0.0",
+  "description": "cmy-mys-list",
+  "keywords": [
+    "cmy-mys-list"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.1.0"
+  },
+  "dcloudext": {
+    "type": "component-vue",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "",
+      "data": "",
+      "permissions": ""
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "u",
+        "aliyun": "u",
+        "alipay": "u"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "u",
+          "vue3": "u"
+        },
+        "App": {
+          "app-vue": "u",
+          "app-nvue": "u",
+          "app-uvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "u",
+          "Android Browser": "u",
+          "微信浏览器(Android)": "u",
+          "QQ浏览器(Android)": "u"
+        },
+        "H5-pc": {
+          "Chrome": "u",
+          "IE": "u",
+          "Edge": "u",
+          "Firefox": "u",
+          "Safari": "u"
+        },
+        "小程序": {
+          "微信": "u",
+          "阿里": "u",
+          "百度": "u",
+          "字节跳动": "u",
+          "QQ": "u",
+          "钉钉": "u",
+          "快手": "u",
+          "飞书": "u",
+          "京东": "u"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        }
+      }
+    }
+  }
+}

+ 1 - 0
uni_modules/cmy-mys-list/readme.md

@@ -0,0 +1 @@
+# cmy-mys-list

+ 2 - 0
uni_modules/uni-icons/changelog.md

@@ -1,3 +1,5 @@
+## 2.0.10(2024-06-07)
+- 优化 uni-app x 中,size 属性的类型
 ## 2.0.9(2024-01-12)
 fix: 修复图标大小默认值错误的问题
 ## 2.0.8(2023-12-14)

+ 81 - 81
uni_modules/uni-icons/components/uni-icons/uni-icons.uvue

@@ -1,91 +1,91 @@
 <template>
-	<text class="uni-icons" :style="styleObj">
-		<slot>{{unicode}}</slot>
-	</text>
+  <text class="uni-icons" :style="styleObj">
+    <slot>{{unicode}}</slot>
+  </text>
 </template>
 
 <script>
-	import { fontData, IconsDataItem } from './uniicons_file'
+  import { fontData, IconsDataItem } from './uniicons_file'
 
-	/**
-	 * Icons 图标
-	 * @description 用于展示 icon 图标
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
-	 * @property {Number} size 图标大小
-	 * @property {String} type 图标图案,参考示例
-	 * @property {String} color 图标颜色
-	 * @property {String} customPrefix 自定义图标
-	 * @event {Function} click 点击 Icon 触发事件
-	 */
-	export default {
-		name: "uni-icons",
-		props: {
-			type: {
-				type: String,
-				default: ''
-			},
-			color: {
-				type: String,
-				default: '#333333'
-			},
-			size: {
-				type: Object,
-				default: 16
-			},
-			fontFamily: {
-				type: String,
-				default: ''
-			}
-		},
-		data() {
-			return {};
-		},
-		computed: {
-			unicode() : string {
-				let codes = fontData.find((item : IconsDataItem) : boolean => { return item.font_class == this.type })
-				if (codes !== null) {
-					return codes.unicode
-				}
-				return ''
-			},
-			iconSize() : string {
-				const size = this.size
-				if (typeof size == 'string') {
-					const reg = /^[0-9]*$/g
-					return reg.test(size as string) ? '' + size + 'px' : '' + size;
-					// return '' + this.size
-				}
-				return this.getFontSize(size as number)
-			},
-			styleObj() : UTSJSONObject {
-				if (this.fontFamily !== '') {
-					return { color: this.color, fontSize: this.iconSize, fontFamily: this.fontFamily }
-				}
-				return { color: this.color, fontSize: this.iconSize }
-			}
-		},
-		created() { },
-		methods: {
-			/**
-			 * 字体大小
-			 */
-			getFontSize(size : number) : string {
-				return size + 'px';
-			},
-		},
-	}
+  /**
+   * Icons 图标
+   * @description 用于展示 icon 图标
+   * @tutorial https://ext.dcloud.net.cn/plugin?id=28
+   * @property {Number,String} size 图标大小
+   * @property {String} type 图标图案,参考示例
+   * @property {String} color 图标颜色
+   * @property {String} customPrefix 自定义图标
+   * @event {Function} click 点击 Icon 触发事件
+   */
+  export default {
+    name: "uni-icons",
+    props: {
+      type: {
+        type: String,
+        default: ''
+      },
+      color: {
+        type: String,
+        default: '#333333'
+      },
+      size: {
+        type: [Number, String],
+        default: 16
+      },
+      fontFamily: {
+        type: String,
+        default: ''
+      }
+    },
+    data() {
+      return {};
+    },
+    computed: {
+      unicode() : string {
+        let codes = fontData.find((item : IconsDataItem) : boolean => { return item.font_class == this.type })
+        if (codes !== null) {
+          return codes.unicode
+        }
+        return ''
+      },
+      iconSize() : string {
+        const size = this.size
+        if (typeof size == 'string') {
+          const reg = /^[0-9]*$/g
+          return reg.test(size as string) ? '' + size + 'px' : '' + size;
+          // return '' + this.size
+        }
+        return this.getFontSize(size as number)
+      },
+      styleObj() : UTSJSONObject {
+        if (this.fontFamily !== '') {
+          return { color: this.color, fontSize: this.iconSize, fontFamily: this.fontFamily }
+        }
+        return { color: this.color, fontSize: this.iconSize }
+      }
+    },
+    created() { },
+    methods: {
+      /**
+       * 字体大小
+       */
+      getFontSize(size : number) : string {
+        return size + 'px';
+      },
+    },
+  }
 </script>
 
 <style scoped>
-	@font-face {
-		font-family: UniIconsFontFamily;
-		src: url('./uniicons.ttf');
-	}
+  @font-face {
+    font-family: UniIconsFontFamily;
+    src: url('./uniicons.ttf');
+  }
 
-	.uni-icons {
-		font-family: UniIconsFontFamily;
-		font-size: 18px;
-		font-style: normal;
-		color: #333;
-	}
+  .uni-icons {
+    font-family: UniIconsFontFamily;
+    font-size: 18px;
+    font-style: normal;
+    color: #333;
+  }
 </style>

+ 3 - 2
uni_modules/uni-icons/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-icons",
   "displayName": "uni-icons 图标",
-  "version": "2.0.9",
+  "version": "2.0.10",
   "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
   "keywords": [
     "uni-ui",
@@ -42,7 +42,8 @@
     "platforms": {
       "cloud": {
         "tcb": "y",
-        "aliyun": "y"
+        "aliyun": "y",
+        "alipay": "n"
       },
       "client": {
         "App": {

+ 34 - 0
uni_modules/uni-popup/changelog.md

@@ -1,3 +1,37 @@
+## 1.9.6(2025-01-08)
+- 修复 示例中过期图片地址
+## 1.9.5(2024-10-15)
+- 修复 微信小程序中的getSystemInfo警告
+## 1.9.2(2024-09-21)
+- 修复 uni-popup在android上的重复点击弹出位置不正确的bug
+## 1.9.1(2024-04-02)
+- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法)
+## 1.9.0(2024-03-28)
+- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正
+## 1.8.9(2024-03-20)
+- 修复 uni-popup-dialog 数据输入时修正为双向绑定
+## 1.8.8(2024-02-20)
+- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug
+## 1.8.7(2024-02-02)
+- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦
+## 1.8.6(2024-01-30)
+- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数
+## 1.8.5(2024-01-26)
+- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示
+## 1.8.4(2023-11-15)
+- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close`
+## 1.8.3(2023-04-17)
+- 修复 uni-popup 重复打开时的 bug
+## 1.8.2(2023-02-02)
+- uni-popup-dialog 组件新增 inputType 属性
+## 1.8.1(2022-12-01)
+- 修复 nvue 下 v-show 报错
+## 1.8.0(2022-11-29)
+- 优化 主题样式
+## 1.7.9(2022-04-02)
+- 修复 弹出层内部无法滚动的bug
+## 1.7.8(2022-03-28)
+- 修复 小程序中高度错误的bug
 ## 1.7.7(2022-03-17)
 - 修复 快速调用open出现问题的Bug
 ## 1.7.6(2022-02-14)

+ 65 - 20
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue

@@ -10,14 +10,15 @@
 		</view>
 		<view v-else class="uni-dialog-content">
 			<slot>
-				<input class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholderText" :focus="focus" >
+				<input class="uni-dialog-input" :maxlength="maxlength" v-model="val" :type="inputType"
+					:placeholder="placeholderText" :focus="focus">
 			</slot>
 		</view>
 		<view class="uni-dialog-button-group">
-			<view class="uni-dialog-button" @click="closeDialog">
+			<view class="uni-dialog-button" v-if="showClose" @click="closeDialog">
 				<text class="uni-dialog-button-text">{{closeText}}</text>
 			</view>
-			<view class="uni-dialog-button uni-border-left" @click="onOk">
+			<view class="uni-dialog-button" :class="showClose?'uni-border-left':''" @click="onOk">
 				<text class="uni-dialog-button-text uni-button-color">{{okText}}</text>
 			</view>
 		</view>
@@ -28,16 +29,19 @@
 <script>
 	import popup from '../uni-popup/popup.js'
 	import {
-	initVueI18n
+		initVueI18n
 	} from '@dcloudio/uni-i18n'
 	import messages from '../uni-popup/i18n/index.js'
-	const {	t } = initVueI18n(messages)
+	const {
+		t
+	} = initVueI18n(messages)
 	/**
 	 * PopUp 弹出层-对话框样式
 	 * @description 弹出层-对话框样式
 	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
 	 * @property {String} value input 模式下的默认值
 	 * @property {String} placeholder input 模式下输入提示
+	 * @property {Boolean} focus input模式下是否自动聚焦,默认为true
 	 * @property {String} type = [success|warning|info|error] 主题样式
 	 *  @value success 成功
 	 * 	@value warning 提示
@@ -46,8 +50,10 @@
 	 * @property {String} mode = [base|input] 模式、
 	 * 	@value base 基础对话框
 	 * 	@value input 可输入对话框
+	 * @showClose {Boolean} 是否显示关闭按钮
 	 * @property {String} content 对话框内容
 	 * @property {Boolean} beforeClose 是否拦截取消事件
+	 * @property {Number} maxlength 输入
 	 * @event {Function} confirm 点击确认按钮触发
 	 * @event {Function} close 点击取消按钮触发
 	 */
@@ -55,12 +61,30 @@
 	export default {
 		name: "uniPopupDialog",
 		mixins: [popup],
-		emits:['confirm','close'],
+		emits: ['confirm', 'close', 'update:modelValue', 'input'],
 		props: {
+			inputType: {
+				type: String,
+				default: 'text'
+			},
+			showClose: {
+				type: Boolean,
+				default: true
+			},
+			// #ifdef VUE2
 			value: {
 				type: [String, Number],
 				default: ''
 			},
+			// #endif
+			// #ifdef VUE3
+			modelValue: {
+				type: [Number, String],
+				default: ''
+			},
+			// #endif
+
+
 			placeholder: {
 				type: [String, Number],
 				default: ''
@@ -85,19 +109,26 @@
 				type: Boolean,
 				default: false
 			},
-			cancelText:{
+			cancelText: {
 				type: String,
 				default: ''
 			},
-			confirmText:{
+			confirmText: {
 				type: String,
 				default: ''
+			},
+			maxlength: {
+				type: Number,
+				default: -1,
+			},
+			focus: {
+				type: Boolean,
+				default: true,
 			}
 		},
 		data() {
 			return {
 				dialogType: 'error',
-				focus: false,
 				val: ""
 			}
 		},
@@ -125,7 +156,21 @@
 				}
 			},
 			value(val) {
-				this.val = val
+				if (this.maxlength != -1 && this.mode === 'input') {
+					this.val = val.slice(0, this.maxlength);
+				} else {
+					this.val = val
+				}
+			},
+			val(val) {
+				// #ifdef VUE2
+				// TODO 兼容 vue2
+				this.$emit('input', val);
+				// #endif
+				// #ifdef VUE3
+				// TODO 兼容 vue3
+				this.$emit('update:modelValue', val);
+				// #endif
 			}
 		},
 		created() {
@@ -134,25 +179,25 @@
 			// this.popup.closeMask()
 			if (this.mode === 'input') {
 				this.dialogType = 'info'
-				this.val = this.value
+				this.val = this.value;
+				// #ifdef VUE3
+				this.val = this.modelValue;
+				// #endif
 			} else {
 				this.dialogType = this.type
 			}
 		},
-		mounted() {
-			this.focus = true
-		},
 		methods: {
 			/**
 			 * 点击确认按钮
 			 */
 			onOk() {
-				if (this.mode === 'input'){
+				if (this.mode === 'input') {
 					this.$emit('confirm', this.val)
-				}else{
+				} else {
 					this.$emit('confirm')
 				}
-				if(this.beforeClose) return
+				if (this.beforeClose) return
 				this.popup.close()
 			},
 			/**
@@ -160,17 +205,17 @@
 			 */
 			closeDialog() {
 				this.$emit('close')
-				if(this.beforeClose) return
+				if (this.beforeClose) return
 				this.popup.close()
 			},
-			close(){
+			close() {
 				this.popup.close()
 			}
 		}
 	}
 </script>
 
-<style lang="scss" >
+<style lang="scss">
 	.uni-popup-dialog {
 		width: 300px;
 		border-radius: 11px;

+ 6 - 5
uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue

@@ -39,24 +39,25 @@
 		},
 		data() {
 			return {
+				// TODO 替换为自己的图标
 				bottomData: [{
 						text: '微信',
-						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2b17470-50be-11eb-b680-7980c8a877b8.png',
+						icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
 						name: 'wx'
 					},
 					{
 						text: '支付宝',
-						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/d684ae40-50be-11eb-8ff1-d5dcf8779628.png',
-						name: 'wx'
+						icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
+						name: 'ali'
 					},
 					{
 						text: 'QQ',
-						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/e7a79520-50be-11eb-b997-9918a5dda011.png',
+						icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
 						name: 'qq'
 					},
 					{
 						text: '新浪',
-						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/0dacdbe0-50bf-11eb-8ff1-d5dcf8779628.png',
+						icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
 						name: 'sina'
 					},
 					// {

+ 90 - 0
uni_modules/uni-popup/components/uni-popup/uni-popup.uvue

@@ -0,0 +1,90 @@
+<template>
+  <view class="popup-root" v-if="isOpen" v-show="isShow" @click="clickMask">
+    <view @click.stop>
+      <slot></slot>
+    </view>
+  </view>
+</template>
+
+<script>
+  type CloseCallBack = ()=> void;
+  let closeCallBack:CloseCallBack = () :void => {};
+  export default {
+    emits:["close","clickMask"],
+    data() {
+      return {
+        isShow:false,
+        isOpen:false
+      }
+    },
+    props: {
+      maskClick: {
+        type: Boolean,
+        default: true
+      },
+    },
+    watch: {
+      // 设置show = true 时,如果没有 open 需要设置为 open
+      isShow:{
+        handler(isShow) {
+          // console.log("isShow",isShow)
+          if(isShow && this.isOpen == false){
+            this.isOpen = true
+          }
+        },
+        immediate:true
+      },
+      // 设置isOpen = true 时,如果没有 isShow 需要设置为 isShow
+      isOpen:{
+        handler(isOpen) {
+          // console.log("isOpen",isOpen)
+          if(isOpen && this.isShow == false){
+            this.isShow = true
+          }
+        },
+        immediate:true
+      }
+    },
+    methods:{
+      open(){
+        // ...funs : CloseCallBack[]
+        // if(funs.length > 0){
+        //   closeCallBack = funs[0]
+        // }
+        this.isOpen = true;
+      },
+      clickMask(){
+        if(this.maskClick == true){
+          this.$emit('clickMask')
+          this.close()
+        }
+      },
+      close(): void{
+        this.isOpen = false;
+        this.$emit('close')
+        closeCallBack()
+      },
+      hiden(){
+        this.isShow = false
+      },
+      show(){
+        this.isShow = true
+      }
+    }
+  }
+</script>
+
+<style>
+.popup-root {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 750rpx;
+  height: 100%;
+  flex: 1;
+  background-color: rgba(0, 0, 0, 0.3);
+  justify-content: center;
+  align-items: center;
+  z-index: 99;
+}
+</style>

+ 12 - 12
uni_modules/uni-popup/package.json

@@ -1,7 +1,7 @@
 {
 	"id": "uni-popup",
 	"displayName": "uni-popup 弹出层",
-	"version": "1.7.7",
+	"version": "1.9.6",
 	"description": " Popup 组件,提供常用的弹层",
 	"keywords": [
         "uni-ui",
@@ -17,12 +17,8 @@
 	"directories": {
 		"example": "../../temps/example_temps"
 	},
-	"dcloudext": {
-		"category": [
-			"前端组件",
-			"通用组件"
-		],
-		"sale": {
+    "dcloudext": {
+        "sale": {
 			"regular": {
 				"price": "0.00"
 			},
@@ -38,7 +34,8 @@
 			"data": "无",
 			"permissions": "无"
 		},
-		"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+        "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+        "type": "component-vue"
 	},
 	"uni_modules": {
 		"dependencies": [
@@ -49,13 +46,16 @@
 		"platforms": {
 			"cloud": {
 				"tcb": "y",
-				"aliyun": "y"
+                "aliyun": "y",
+                "alipay": "n"
 			},
 			"client": {
 				"App": {
-					"app-vue": "y",
-					"app-nvue": "y"
-				},
+                    "app-vue": "y",
+                    "app-nvue": "y",
+                    "app-harmony": "u",
+                    "app-uvue": "u"
+                },
 				"H5-mobile": {
 					"Safari": "y",
 					"Android Browser": "y",

+ 4 - 0
uni_modules/uni-transition/changelog.md

@@ -1,3 +1,7 @@
+## 1.3.3(2024-04-23)
+- 修复 当元素会受变量影响自动隐藏的bug
+## 1.3.2(2023-05-04)
+- 修复 NVUE 平台报错的问题
 ## 1.3.1(2021-11-23)
 - 修复 init 方法初始化问题
 ## 1.3.0(2021-11-19)

+ 4 - 1
uni_modules/uni-transition/components/uni-transition/createAnimation.js

@@ -10,7 +10,10 @@ const nvueAnimation = uni.requireNativePlugin('animation')
 class MPAnimation {
 	constructor(options, _this) {
 		this.options = options
-		this.animation = uni.createAnimation(options)
+		// 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误
+		this.animation = uni.createAnimation({
+			...options
+		})
 		this.currentStepAnimates = {}
 		this.next = 0
 		this.$ = _this

+ 12 - 3
uni_modules/uni-transition/components/uni-transition/uni-transition.vue

@@ -1,5 +1,10 @@
 <template>
-	<view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #ifndef APP-NVUE -->
+  <view v-show="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #endif -->
+  <!-- #ifdef APP-NVUE -->
+  <view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+  <!-- #endif -->
 </template>
 
 <script>
@@ -48,7 +53,11 @@ export default {
 		customClass:{
 			type: String,
 			default: ''
-		}
+		},
+		onceRender:{
+			type:Boolean,
+			default:false
+		},
 	},
 	data() {
 		return {
@@ -245,7 +254,7 @@ export default {
 		},
 		animationType(type) {
 			return {
-				fade: type ? 1 : 0,
+				fade: type ? 0 : 1,
 				'slide-top': `translateY(${type ? '0' : '-100%'})`,
 				'slide-right': `translateX(${type ? '0' : '100%'})`,
 				'slide-bottom': `translateY(${type ? '0' : '100%'})`,

+ 6 - 8
uni_modules/uni-transition/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-transition",
   "displayName": "uni-transition 过渡动画",
-  "version": "1.3.1",
+  "version": "1.3.3",
   "description": "元素的简单过渡动画",
   "keywords": [
     "uni-ui",
@@ -17,11 +17,7 @@
   "directories": {
     "example": "../../temps/example_temps"
   },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
+"dcloudext": {
     "sale": {
       "regular": {
         "price": "0.00"
@@ -38,7 +34,8 @@
       "data": "无",
       "permissions": "无"
     },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+    "type": "component-vue"
   },
   "uni_modules": {
     "dependencies": ["uni-scss"],
@@ -46,7 +43,8 @@
     "platforms": {
       "cloud": {
         "tcb": "y",
-        "aliyun": "y"
+        "aliyun": "y",
+        "alipay": "n"
       },
       "client": {
         "App": {