diff --git a/api/order.js b/api/order.js
index 7d5d3e2..ef0dbbb 100644
--- a/api/order.js
+++ b/api/order.js
@@ -160,4 +160,22 @@ export function orderVerific(verifyCode, isConfirm) {
// 延迟收货
export function orderDelay(uni) {
return request.post("/order/extendedDelivery", {uni})
+}
+
+/**
+ * 再买一单
+ * @param {*} params
+ * @returns
+ */
+export function aginConfirm(params) {
+ return request.post('/order/buyAgainConfirm', params)
+}
+
+/**
+ * 修改地址
+ * @param {*} params
+ * @returns
+ */
+export function editAddress(params) {
+ return request.post('/order/editAddress', params)
}
\ No newline at end of file
diff --git a/api/user.js b/api/user.js
index 62e18f0..ebfe155 100644
--- a/api/user.js
+++ b/api/user.js
@@ -568,3 +568,21 @@ export function getUserPointBill(param) {
export function getUserSpreadRule(param) {
return request.get('/userSpreadRule', param, { login: false })
}
+
+/**
+ * 我的足迹
+ * @param {*} params
+ * @returns
+ */
+export function getHistory(params) {
+ return request.get('/history/list', params)
+}
+
+/**
+ * 购物车猜你喜欢
+ * @param {*} params
+ * @returns
+ */
+export function getUserLike(params) {
+ return request.get('/cart/guessYouLike',params)
+}
\ No newline at end of file
diff --git a/assets/css/style.less b/assets/css/style.less
index 78275cd..1cf7285 100644
--- a/assets/css/style.less
+++ b/assets/css/style.less
@@ -3461,10 +3461,10 @@ page {
}
.order-details .footer .bnt {
- width: 1.76*100rpx;
- height: 0.6*100rpx;
+ width: 1.36*100rpx;
+ height: 0.5*100rpx;
text-align: center;
- line-height: 0.6*100rpx;
+ line-height: 0.5*100rpx;
border-radius: 0.5*100rpx;
color: #fff;
font-size: 0.27*100rpx;
diff --git a/assets/css/v12-style.less b/assets/css/v12-style.less
index 94dc2f5..a5a4b62 100644
--- a/assets/css/v12-style.less
+++ b/assets/css/v12-style.less
@@ -3,8 +3,8 @@
@dark-color: #333333;
@white-color: #fff;
-@colors: #C52733, #333333, #fff, #666, #F0F0F0;
-@classnames: primary, dark, white, secondary-dark, grey;
+@colors: #C52733, #333333, #fff, #666, #F0F0F0, #999999, #E92727, #FFC543;
+@classnames: primary, dark, white, secondary-dark, grey, dark1, red, yellow;
/*=====================================*/
each(@colors, {
@@ -59,13 +59,18 @@ each(@colors, {
margin-bottom: @baseNum;
}
.v12-ma-@{i} {
- margin: @baseNum;
+ margin-left: @baseNum;
+ margin-right: @baseNum;
+ margin-bottom: @baseNum;
+ margin-top: @baseNum;
}
.v12-mx-@{i} {
- margin: 0 @baseNum;
+ margin-left: @baseNum;
+ margin-right: @baseNum;
}
.v12-my-@{i} {
- margin: @baseNum 0;
+ margin-bottom: @baseNum;
+ margin-top: @baseNum;
}
.v12-pt-@{i} {
padding-top: @baseNum;
@@ -80,13 +85,18 @@ each(@colors, {
padding-bottom: @baseNum;
}
.v12-pa-@{i} {
- padding: @baseNum;
+ padding-top: @baseNum;
+ padding-bottom: @baseNum;
+ padding-right: @baseNum;
+ padding-left: @baseNum;
}
.v12-px-@{i} {
- padding: 0 @baseNum
+ padding-right: @baseNum;
+ padding-left: @baseNum;
}
.v12-py-@{i} {
- padding: @baseNum 0
+ padding-top: @baseNum;
+ padding-bottom: @baseNum;
}
.generateMarginAndPadding(@n, (@i + 1))
}
@@ -96,13 +106,21 @@ each(@colors, {
.generateRadius(@n, @i: 0) when (@i <= @n) {
@baseRadius: @i * 1rpx;
.v12-radius-@{i} {
- border-radius: @baseRadius
+ border-radius: @baseRadius !important;
}
.generateRadius(@n, (@i + 1))
}
.generateRadius(100);
/*=========================================*/
+.generateSpacing(@n, @i: 0) when(@i <= @n) {
+ @baseSpacing:@i * 1rpx;
+ .v12-spacing-@{i} {
+ letter-spacing: @baseSpacing !important;
+ }
+ .generateSpacing(@n, (@i + 1))
+}
+.generateSpacing(100);
/*====================flex 函数表达式=====================*/
.v12-d-flex{
@@ -123,21 +141,57 @@ each(@colors, {
display: flex;
align-items: end;
}
+.v12-align-baseline{
+ display: flex;
+ align-items: baseline;
+}
.v12-justify-center{
display: flex;
justify-content: center;
}
+.v12-justify-around{
+ display: flex;
+ justify-content: space-around;
+}
.v12-justify-between{
display: flex;
justify-content: space-between;
}
+.v12-justify-start{
+ display: flex;
+ justify-content: flex-start;
+}
+.v12-justify-end{
+ display: flex;
+ justify-content: flex-end;
+}
.v12-d-grid-columns-2 {
display: grid;
grid-template-columns: 1fr 1fr;
}
-
+.v12-text-right{
+ text-align: right;
+}
+.v12-text-left{
+ text-align: left;
+}
+.v12-text-center{
+ text-align: center;
+}
+.v12-btn{
+ width: 136rpx;
+ height: 50rpx;
+ text-align: center;
+ line-height: 50rpx;
+ border-radius: 50rpx;
+ color: #fff;
+ font-size: 27rpx;
+}
+.v12-full-width{
+ width: 100%;
+}
diff --git a/assets/script/global.js b/assets/script/global.js
index 0f263e9..5f4d9f5 100644
--- a/assets/script/global.js
+++ b/assets/script/global.js
@@ -63,6 +63,7 @@ export default {
date = date.replace(/-/g, '/');
let timestamp = new Date(date).getTime();
let now = new Date().getTime();
+
return timestamp - now;
},
diff --git a/components/Coupons.vue b/components/Coupons.vue
index fbe4d2c..d64046c 100644
--- a/components/Coupons.vue
+++ b/components/Coupons.vue
@@ -1,41 +1,46 @@
-
-
- 有效期至:
- {{ data.endTime }}
-
-
- 已到期
- 不可用
-
+
+
+
+
+
+ 有效期至:
+ {{ data.endTime }}
+
+
+ 已到期
+ 不可用
+
+
- 使用规则
+ 使用规则
-
+
@@ -81,26 +86,51 @@ export default {
diff --git a/components/ServiceWin.vue b/components/ServiceWin.vue
new file mode 100644
index 0000000..2cfed86
--- /dev/null
+++ b/components/ServiceWin.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+ 服务说明
+
+
+
+
+ 售后服务
+
+
+
+
+ {{ info }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/SubSection.vue b/components/SubSection.vue
index 1a4c867..fb5ce01 100644
--- a/components/SubSection.vue
+++ b/components/SubSection.vue
@@ -38,14 +38,15 @@ export default {
-
可使用 ({{ canUse }})
-
{{radioModel?'不可用':'已到期'}} ({{ notUse }})
+
@@ -54,20 +55,27 @@ export default {
width: 686rpx;
height: 80rpx;
box-sizing: border-box;
- border: 2rpx solid #FF564A;
- border-radius: 4rpx;
+ border-radius: 20rpx;
font-size: 32rpx;
+ overflow: hidden;
+ position: relative;
.sub-section__item {
width: 50%;
background: #FFFFFF;
color: #333333;
font-weight: bold;
+ position: relative;
}
.sub-section__active {
- background: #FF564A;
- color: #FFFFFF;
+ position: absolute;
+ width: 140rpx;
+ height: 8rpx;
+ background: linear-gradient(to right, #C52733 0%, rgba(211,92,101,0.91) 54%, rgba(255,255,255,0.62) 100%);
+ border-radius: 0rpx 0rpx 26rpx 26rpx;
+ bottom: (80 - 34) / 2 * 1rpx;
+ transition: left ease-in-out 0.3s;
}
}
\ No newline at end of file
diff --git a/components/UserEvaluation.vue b/components/UserEvaluation.vue
index dcd21d2..084d160 100644
--- a/components/UserEvaluation.vue
+++ b/components/UserEvaluation.vue
@@ -11,11 +11,14 @@
{{ item.nickname }}
-
- {{ item.createTime }} {{ item.sku||'' }}
- {{ item.comment }}
+
+ {{ item.sku }}
+
+
+
+ {{ item.comment }}
-
diff --git a/pages/cart.vue b/pages/cart.vue
index f764b2d..d773819 100644
--- a/pages/cart.vue
+++ b/pages/cart.vue
@@ -6,23 +6,92 @@
class="pages-cart tabbar-page"
>
-
+
+
+
+
+ {{ addressInfo.city }}
+
+
+
+
+ {{ isEdit ? '完成' : '管理' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.storeName }}
+
+
+ {{ item.bestContent }}
+
+
+ 券
+ {{ item.couponName }}
+
+
+
+ ¥
+ {{ item.price }}
+
+
+
+
+
+
+
+
+
-
+ /> -->
-
\ No newline at end of file
diff --git a/pages/cloud/components/HotelItem.vue b/pages/cloud/components/HotelItem.vue
index f63f17b..08a3381 100644
--- a/pages/cloud/components/HotelItem.vue
+++ b/pages/cloud/components/HotelItem.vue
@@ -55,14 +55,14 @@ export default {
margin: 20rpx 0 0 0;
.cover-box {
position: relative;
- width: 328rpx;
+ width: 338rpx;
height: auto;
border-radius: 14rpx;
overflow: hidden;
}
.cover {
- width: 328rpx;
- height: 328rpx;
+ width: 338rpx;
+ height: 338rpx;
vertical-align: middle;
}
.icon {
diff --git a/pages/cloud/haveFun.vue b/pages/cloud/haveFun.vue
index ec388e6..c24f83e 100644
--- a/pages/cloud/haveFun.vue
+++ b/pages/cloud/haveFun.vue
@@ -1,20 +1,30 @@
-
-
-
+
+
+
+ {{ cityName }}
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- {{ cityName }}
-
+
+ 推荐
@@ -95,10 +132,13 @@ export default {
page: 1,
typeList: [],
typeIndex: 0,
+ // 当前选中的类型
+ currType: {},
cityName: '',
hotelList: [],
isLoad: false,
- pageKeyId: Object.freeze('findFunIndex')
+ pageKeyId: Object.freeze('findFunIndex'),
+ isNext: false
}
},
computed: {
@@ -113,22 +153,29 @@ export default {
},
onReachBottom() {
// 后端接口结构需要调整下,需要补充总页数,前端可判断当前页数大于等于总页数则不发送网络请求
- this.page++
- this.fetchList()
+ if(this.isNext) {
+ this.page++
+ this.fetchList()
+ }
},
onLoad() {
- getHotelTypeList().then(({data}) => {
- this.typeList = data
- this.getMapData()
- })
+
},
onShow() {
+ this.page = 1
+ this.currType = {}
+ this.typeIndex = 0
+ this.name = ''
+ getHotelTypeList().then(({data}) => {
+ this.typeList = data
+ this.currType = data[this.typeIndex]
+ this.getMapData()
+ })
const memCityName = uni.getStorageSync('cityName')
if (memCityName.length) {
this.cityName = memCityName
uni.removeStorageSync('cityName')
this.name = ''
- this.search()
}
},
methods: {
@@ -147,13 +194,16 @@ export default {
if (map.length > 1) {
const {latitude, longitude} = map[1]
const address = await getCurAddress(latitude, longitude)
- this.cityName = address[1].data.result.ad_info.city
+ if(!this.cityName) {
+ this.cityName = address[1].data.result.ad_info.city
+ }
this.search()
}
},
tapType(index) {
if (this.typeIndex === index) return
this.typeIndex = index
+ this.currType = this.typeList[index]
this.name = ''
this.search()
},
@@ -187,28 +237,48 @@ export default {
data[i].videoCover = ''
}
this.hotelList.push(data[i])
+ if(data.length < 10) {
+ this.isNext = false
+ } else {
+ this.isNext = true
+ }
}
}
}).finally(() => {
this.isLoad = true
})
+ },
+ typeBannerItemClick(item) {
+ if (!item.hotelId) return
+ uni.navigateTo({ url: `/pagesInn/inn/innHome?id=${item.hotelId}` })
}
}
}
diff --git a/pages/order/MyOrder/index.vue b/pages/order/MyOrder/index.vue
index 530ab78..d2704df 100644
--- a/pages/order/MyOrder/index.vue
+++ b/pages/order/MyOrder/index.vue
@@ -1,35 +1,48 @@
-
+
+
+
+
+
+
+
+
+
-
-
-
+
-
+
-
- {{ order.merName }}
+
+ {{ order.merName }}
+
-
- {{ order.merCityName }}
+
+ {{ order.merCityName }}
- 拼团
- 秒杀
- 砍价
- 门店
+ 拼团
+ 秒杀
+ 砍价
+ 门店
订单号:{{ order.orderId }}
-
+
待核销
- {{ getStatus(order) }}
+ {{ getStatus(order) }}
- {{ cart.productInfo.storeName }}
+ {{ cart.productInfo.storeName }}
- ¥{{ force2Decimal(cart.truePrice) }}
+
+ ¥
+ {{ force2Decimal(cart.truePrice) }}
+
-
+
- 规格:{{ cart.productInfo.attrInfo.sku }}
+ {{ cart.productInfo.attrInfo.sku }}
- x{{ cart.cartNum }}
+ x{{ cart.cartNum }}
- {{ order.createTime }}
- 共{{ order.totalNum || 0 }}件商品,总金额
- ¥{{ force2Decimal(order.payPrice) }}
+ {{ order.createTime }}
+ 共{{ order.totalNum || 0 }}件商品,
+
+ 总金额
+
+
+ ¥
+
+ {{ force2Decimal(order.payPrice) }}
- 更多
+ 更多
- 联系客服
+ 联系商家
- 申请退款
+ 申请退款
- 联系客服
-
+
+
+ 联系商家
+
+
+ 查看详情
+ 删除订单
+
+
+
+
- 取消订单
- 立即付款
+ 取消订单
+ 修改地址
+ 立即付款
-
- 查看详情
+
+ 查看详情
立即核销
@@ -113,23 +145,31 @@
延长收货
- 查看物流
- 确认收货
+ 查看物流
+ 确认收货
- 去评价
+ 去评价
查看订单
+
+ 商家已接收您的订单,支付成功后预计{{ order.isFastPost === 1 ? 48 : 72 }}小时内发货
+
-
-
+
+
@@ -137,11 +177,20 @@
+
+
diff --git a/pages/shop/GoodsCon/qualifications.vue b/pages/shop/GoodsCon/qualifications.vue
new file mode 100644
index 0000000..37869d5
--- /dev/null
+++ b/pages/shop/GoodsCon/qualifications.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+ 商家名称
+
+
+ {{ merInfo.name }}
+
+
+
+
+
+
+ 查看更多
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/History/index.vue b/pages/user/History/index.vue
new file mode 100644
index 0000000..ebf63ef
--- /dev/null
+++ b/pages/user/History/index.vue
@@ -0,0 +1,282 @@
+
+
+
+
+ {{ getDate(day) }}
+ {{ getDay(day) }}
+
+
+
+
+
+
+ {{ item.historyDate }}
+
+
+
+
+
+ 券
+ {{ historyItem.couponName }}
+
+
+
+ ¥
+ {{ historyItem.price }}
+
+ ¥
+ {{ historyItem.otPrice }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/User/index.vue b/pages/user/User/index.vue
index 53ecb0a..b0cdab1 100644
--- a/pages/user/User/index.vue
+++ b/pages/user/User/index.vue
@@ -156,7 +156,7 @@
待评价
-
+
@@ -332,11 +333,10 @@ export default {
allowEnter: true
},
{
- text: '帮助中心',
- url: '',
+ text: '商品足迹',
+ url: '/pages/user/History/index',
icon: '/icon/icon-help.png',
- allowEnter: true,
- showTip: true
+ allowEnter: true
},
{
text: '设置中心',
@@ -426,10 +426,18 @@ export default {
this.$yrouter.push('/pages/order/ReturnList/index')
},
goMyOrder(type) {
+ const types = {
+ 0: 0,
+ 1: 1,
+ 2: 2,
+ 3: 3,
+ 4: 5,
+ 5: 4,
+ }
this.$yrouter.push({
path: '/pages/order/MyOrder/index',
query: {
- type
+ type: types[type]
}
})
},
@@ -524,6 +532,9 @@ export default {
diff --git a/pkg_product/views/famousQianxianVillageShop.vue b/pkg_product/views/famousQianxianVillageShop.vue
index e2e69cd..0a436a7 100644
--- a/pkg_product/views/famousQianxianVillageShop.vue
+++ b/pkg_product/views/famousQianxianVillageShop.vue
@@ -56,8 +56,8 @@
-
- {{ inn.name }}
+
+ {{ inn.name }}
{{ inn.contact }}/联系人
@@ -232,9 +232,9 @@ export default {
height: '500rpx'
},
tabList: [
- { text: '村屋详情', value: 0, isShow: true },
- { text: '村屋介绍', value: 1, isShow: true },
- { text: '村屋资讯', value: 2, isShow: true }
+ { text: '详情', value: 0, isShow: true },
+ { text: '介绍', value: 1, isShow: true },
+ { text: '资讯', value: 2, isShow: true }
],
// 资讯
infoArray: [],
@@ -444,17 +444,15 @@ export default {
line-height: 48rpx;
}
.inn-owner {
- width: calc(100% - 240rpx);
- font-size: 36rpx;
+ flex: 2;
+ font-size: 32rpx;
font-weight: bold;
color: #333;
- line-height: 40rpx;
}
.inn-owner-desc {
margin: 0 0 0 20rpx;
color: #999;
font-size: 24rpx;
- line-height: 40rpx;
}
.inn-tag-wrap {
margin-top: 10rpx;
diff --git a/pkg_user/views/myFavorite.vue b/pkg_user/views/myFavorite.vue
index dfe2d9f..6271b9f 100644
--- a/pkg_user/views/myFavorite.vue
+++ b/pkg_user/views/myFavorite.vue
@@ -47,6 +47,7 @@
v-if="tabsIndex === 0"
:class="{'manage-state': isManage}"
class="scroll-box"
+ :style="{background : productList.length === 0 ? '#f5f5f5' : '#fff !important'}"
scroll-y
@scrolltolower="fetchProduct()"
>
@@ -102,6 +103,7 @@
v-if="tabsIndex === 1"
:class="{'manage-state':isManage}"
class="scroll-box"
+ :style="{background : storeList.length === 0 ? '#f5f5f5' : '#fff !important'}"
scroll-y
@scrolltolower="fetchStore()"
>
@@ -169,6 +171,7 @@
v-if="tabsIndex === 2"
scroll-y
:class="{'manage-state':isManage}"
+ :style="{background : videoList.length === 0 ? '#f5f5f5' : '#fff !important'}"
class="scroll-box"
@scrolltolower="fetchVideo()"
>
@@ -217,6 +220,7 @@
v-if="tabsIndex === 3"
:class="{'manage-state':isManage}"
class="scroll-box county-scroll"
+ :style="{background : countyFamousList.length === 0 ? '#f5f5f5' : '#fff !important'}"
scroll-y
@scrolltolower="fetchCountyFamous()"
>
@@ -631,13 +635,13 @@ export default {
.scroll-box {
height: calc(100vh - 168rpx);
box-sizing: border-box;
- background: #FFFFFF;
+ background: #f5f5f5;
&.county-scroll {
- background-color: #f0f0f0;
+ background-color: #f5f5f5;
}
.no-data {
padding: 100px 0 0 0;
- border-top: 20px solid #f0f0f0;
+ border-top: 20px solid #f5f5f5;
.img {
display: block;
width: 305rpx;
diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md
new file mode 100644
index 0000000..16fc324
--- /dev/null
+++ b/uni_modules/uni-countdown/changelog.md
@@ -0,0 +1,26 @@
+## 1.2.3(2024-02-20)
+- 新增 支持控制小时,分钟的显隐:showHour showMinute
+## 1.2.2(2022-01-19)
+- 修复 在微信小程序中样式不生效的bug
+## 1.2.1(2022-01-18)
+- 新增 update 方法 ,在动态更新时间后,刷新组件
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown)
+## 1.1.3(2021-10-18)
+- 重构
+- 新增 font-size 支持自定义字体大小
+## 1.1.2(2021-08-24)
+- 新增 支持国际化
+## 1.1.1(2021-07-30)
+- 优化 vue3下小程序事件警告的问题
+## 1.1.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.5(2021-06-18)
+- 修复 uni-countdown 重复赋值跳两秒的 bug
+## 1.0.4(2021-05-12)
+- 新增 组件示例地址
+## 1.0.3(2021-05-08)
+- 修复 uni-countdown 不能控制倒计时的 bug
+## 1.0.2(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
new file mode 100644
index 0000000..06309cb
--- /dev/null
+++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "day",
+ "uni-countdown.h": "h",
+ "uni-countdown.m": "m",
+ "uni-countdown.s": "s"
+}
diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
new file mode 100644
index 0000000..358cdd1
--- /dev/null
+++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "时",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
new file mode 100644
index 0000000..e5a63de
--- /dev/null
+++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "時",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
new file mode 100644
index 0000000..1e28dda
--- /dev/null
+++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
@@ -0,0 +1,281 @@
+
+
+ {{ d }}
+ {{dayText}}
+ {{ h }}
+ {{ showColon ? ':' : hourText }}
+ {{ i }}
+ {{ showColon ? ':' : minuteText }}
+ {{ s }}
+ {{secondText}}
+
+
+
+
diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json
new file mode 100644
index 0000000..6622074
--- /dev/null
+++ b/uni_modules/uni-countdown/package.json
@@ -0,0 +1,83 @@
+{
+ "id": "uni-countdown",
+ "displayName": "uni-countdown 倒计时",
+ "version": "1.2.3",
+ "description": "CountDown 倒计时组件",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "countdown",
+ "倒计时"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+"dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md
new file mode 100644
index 0000000..4bcb1aa
--- /dev/null
+++ b/uni_modules/uni-countdown/readme.md
@@ -0,0 +1,10 @@
+
+
+## CountDown 倒计时
+> **组件名:uni-countdown**
+> 代码块: `uCountDown`
+
+倒计时组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file