diff --git a/packageA/pages/cardDetails/cardDetails.js b/packageA/pages/cardDetails/cardDetails.js
new file mode 100644
index 0000000..d779387
--- /dev/null
+++ b/packageA/pages/cardDetails/cardDetails.js
@@ -0,0 +1,66 @@
+// pages/i_service/cardDetails/cardDetails.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ }
+})
\ No newline at end of file
diff --git a/packageA/pages/cardDetails/cardDetails.json b/packageA/pages/cardDetails/cardDetails.json
new file mode 100644
index 0000000..87b2198
--- /dev/null
+++ b/packageA/pages/cardDetails/cardDetails.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "卡项详情",
+ "usingComponents": {
+
+ }
+}
\ No newline at end of file
diff --git a/packageA/pages/cardDetails/cardDetails.wxml b/packageA/pages/cardDetails/cardDetails.wxml
new file mode 100644
index 0000000..4a2612c
--- /dev/null
+++ b/packageA/pages/cardDetails/cardDetails.wxml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ 3000
+ 服务卡项名称服务卡项名称服务卡项名称服务卡称服务卡项名称服务卡称服务卡项名称服务卡称服务卡项名称服务卡项名称服务卡项名称服务卡项名称服务卡项名称
+
+ 时长:30分钟
+ 次数:10次
+ 有效天数:365天
+
+
+
+
+ 详情
+
+
+
+
+
diff --git a/packageA/pages/cardDetails/cardDetails.wxss b/packageA/pages/cardDetails/cardDetails.wxss
new file mode 100644
index 0000000..660ed48
--- /dev/null
+++ b/packageA/pages/cardDetails/cardDetails.wxss
@@ -0,0 +1,45 @@
+page,
+.page {
+ height: 100%;
+}
+
+page {
+ background-color: #f2f2f2;
+}
+
+.image {
+ width: 100%;
+ display: block;
+ background-color: pink;
+}
+
+.price {
+ color: #FF6768;
+ font-size: 60rpx;
+}
+
+.price::before {
+ content: '¥';
+ font-size: 40rpx;
+}
+
+.line {
+ position: relative;
+}
+
+.line::before {
+ content: '';
+ position: absolute;
+ width: 60%;
+ height: 1rpx;
+ background-color: #7b7b7b;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1;
+}
+
+.title {
+ background-color: #f2f2f2;
+ padding: 10rpx;
+}
\ No newline at end of file
diff --git a/packageA/pages/cardList/cardList.js b/packageA/pages/cardList/cardList.js
new file mode 100644
index 0000000..92823ee
--- /dev/null
+++ b/packageA/pages/cardList/cardList.js
@@ -0,0 +1,175 @@
+// pages/i_service/cardList/cardList.js
+const app = getApp();
+let self = null;
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ list: null,
+ isLoading: false, // 检测是否已经发送请求,防止重复发送请求
+ noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据
+ pageNum: 1, // 当前页数
+
+ currentQuery: {
+ store_id: app.globalData.setting.stoid,
+ },
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad: function (options) {
+ self = this;//保存全局指针
+ app.isLogin().then(function(data) {//进入页面前已经授权登录成功
+ self.setData({
+ userInfo: data,
+ });
+ });
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow: function () {
+ let url = '/api/weshop/serviceCard/page';
+ let currentQuery = this.data.currentQuery;
+ if(app.globalData.userInfo) {
+ if(!this.data.isLogin) {
+ this.setData({
+ userInfo: app.globalData.userInfo,
+ imghost: app.globalData.setting.imghost,
+ isLogin: true,
+ });
+
+ this.getData(true, url, currentQuery);
+ };
+ };
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide: function () {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload: function () {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh: function () {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom: function () {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage: function () {
+
+ },
+
+ /**
+ * promiseGet请求数据
+ */
+ getData: function(isInit, url, data) {
+ return new Promise(function(resolve, reject) {
+
+ app.request.promiseGet(url, {
+ data: data,
+ isShowLoading: true,
+ })
+ .then(function(res) {
+ // console.log('1121', res.data.code);
+ if(res.data.code == 0) {
+
+ self.setData({
+ isLoading: false
+ });
+
+ if(isInit) {// 第一次加载
+ self.setData({
+ list: res.data.data
+ });
+ } else {
+ self.setData({
+ 'list.pageData': self.data.list.pageData.concat(res.data.data.pageData)
+ });
+ };
+
+ if((res.data.data.pageData.length == 0) || (res.data.data.pageSize * res.data.data.page >= res.data.data.total)) {
+ self.setData({
+ noMore: true
+ });
+ };
+
+ } else {
+ self.setData({
+ 'list.pageData': []
+ });
+ };
+ resolve();
+ })
+ .catch(function(err) {
+ console.log('出错拉!!!!',err);
+ self.setData({
+ 'list.pageData': []
+ });
+ });
+
+ });
+
+ },
+
+
+ /**
+ * 上拉加载数据
+ */
+ scrollToLower(url, requestData, callback) {
+ // 数据总量
+ let total = this.data.list.total;
+ // 单页最大数据量
+ let pageSize = this.data.list.pageSize;
+ // 如果数据总量不为0且小于或等于单页最大数据量,说明数据已全部加载,显示‘没有更多了’
+ if((total != 0)&&(total <= pageSize)) {
+ this.setData({
+ noMore: true
+ });
+ };
+
+ if(!this.data.isLoading && !this.data.noMore) {
+ this.setData({
+ isLoading: true,
+ pageNum: this.data.pageNum + 1
+ });
+ requestData.page = this.data.pageNum;
+
+ this.getData(false, url, requestData)
+ .then(function() {
+ callback();
+ });
+ };
+ },
+})
\ No newline at end of file
diff --git a/packageA/pages/cardList/cardList.json b/packageA/pages/cardList/cardList.json
new file mode 100644
index 0000000..33d9a03
--- /dev/null
+++ b/packageA/pages/cardList/cardList.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "卡项列表",
+ "usingComponents": {
+ "nodata": "/components/nodata/nodata"
+ }
+}
\ No newline at end of file
diff --git a/packageA/pages/cardList/cardList.wxml b/packageA/pages/cardList/cardList.wxml
new file mode 100644
index 0000000..800f045
--- /dev/null
+++ b/packageA/pages/cardList/cardList.wxml
@@ -0,0 +1,31 @@
+
+
+ 123
+ 234
+ 345
+
+
+
+
+
+
+
+
+
+
+ {{item.serviceName}}
+ 有效天数:{{item.validDays}}
+
+
+ {{item.money}}
+ 卡项详情
+
+
+
+
+
+
+
+ - 已经到底了 -
+
+
diff --git a/packageA/pages/cardList/cardList.wxss b/packageA/pages/cardList/cardList.wxss
new file mode 100644
index 0000000..19b2ec4
--- /dev/null
+++ b/packageA/pages/cardList/cardList.wxss
@@ -0,0 +1,62 @@
+/* pages/i_service/cardList/cardList.wxss */
+page,
+.page {
+ height: 100%;
+}
+
+page {
+ background-color: #f2f2f2;
+}
+
+.scroll-view {
+ height: calc(100% - 300rpx);
+}
+
+.swiper {
+ background-color: white;
+}
+
+.image {
+ display: block;
+ width: 240rpx;
+ height: 240rpx;
+ background-color: pink;
+}
+
+.price {
+ color: #FF6768;
+ font-size: 28rpx;
+}
+
+.price::before {
+ content: '¥';
+ font-size: 24rpx;
+}
+
+.btn-details {
+ color: white;
+ font-size: 24rpx;
+ border-radius: 6rpx;
+ background-color: #FF6768;
+ padding: 20rpx;
+}
+
+.scroll-view {
+ /* height: calc(100% - 300rpx); */
+}
+
+.noMore {
+ padding: 20rpx;
+ color: #bbb;
+ text-align: center;
+ font-size: 26rpx;
+ background-color: transparent !important;
+}
+
+.space-bt {
+ justify-content: space-between;
+}
+
+.ali-c {
+ align-items: center;
+}
\ No newline at end of file