sunlupeng 1 년 전
부모
커밋
ba613430b1
94개의 변경된 파일908개의 추가작업 그리고 199개의 파일을 삭제
  1. BIN
      .image/Java监控.jpg
  2. BIN
      .image/MySQL.jpg
  3. BIN
      .image/OA请假-列表.jpg
  4. BIN
      .image/OA请假-发起.jpg
  5. BIN
      .image/OA请假-详情.jpg
  6. BIN
      .image/Redis.jpg
  7. BIN
      .image/admin-uniapp/01.png
  8. BIN
      .image/admin-uniapp/02.png
  9. BIN
      .image/admin-uniapp/03.png
  10. BIN
      .image/admin-uniapp/04.png
  11. BIN
      .image/admin-uniapp/05.png
  12. BIN
      .image/admin-uniapp/06.png
  13. BIN
      .image/admin-uniapp/07.png
  14. BIN
      .image/admin-uniapp/08.png
  15. BIN
      .image/admin-uniapp/09.png
  16. BIN
      .image/common/mall-feature.png
  17. BIN
      .image/common/mall-preview.png
  18. BIN
      .image/common/project-vs.png
  19. BIN
      .image/common/ruoyi-vue-pro-architecture.png
  20. BIN
      .image/common/ruoyi-vue-pro-biz.png
  21. BIN
      .image/common/yudao-cloud-architecture.png
  22. BIN
      .image/common/yudao-roadmap.png
  23. BIN
      .image/个人中心.jpg
  24. BIN
      .image/代码生成.jpg
  25. BIN
      .image/令牌管理.jpg
  26. BIN
      .image/任务列表-审批.jpg
  27. BIN
      .image/任务列表-已办.jpg
  28. BIN
      .image/任务列表-待办.jpg
  29. BIN
      .image/任务日志.jpg
  30. BIN
      .image/商户信息.jpg
  31. BIN
      .image/在线用户.jpg
  32. BIN
      .image/大屏设计器-列表.jpg
  33. BIN
      .image/大屏设计器-编辑.jpg
  34. BIN
      .image/大屏设计器-预览.jpg
  35. BIN
      .image/字典数据.jpg
  36. BIN
      .image/字典类型.jpg
  37. BIN
      .image/定时任务.jpg
  38. BIN
      .image/岗位管理.jpg
  39. BIN
      .image/应用信息-列表.jpg
  40. BIN
      .image/应用信息-编辑.jpg
  41. BIN
      .image/应用管理.jpg
  42. BIN
      .image/我的流程-列表.jpg
  43. BIN
      .image/我的流程-发起.jpg
  44. BIN
      .image/我的流程-详情.jpg
  45. BIN
      .image/报表设计器-图形报表.jpg
  46. BIN
      .image/报表设计器-打印设计.jpg
  47. BIN
      .image/报表设计器-数据报表.jpg
  48. BIN
      .image/操作日志.jpg
  49. BIN
      .image/支付订单.jpg
  50. BIN
      .image/敏感词.jpg
  51. BIN
      .image/数据库文档.jpg
  52. BIN
      .image/文件管理.jpg
  53. BIN
      .image/文件管理2.jpg
  54. BIN
      .image/文件配置.jpg
  55. BIN
      .image/日志中心.jpg
  56. BIN
      .image/流程模型-列表.jpg
  57. BIN
      .image/流程模型-定义.jpg
  58. BIN
      .image/流程模型-设计.jpg
  59. BIN
      .image/流程表单.jpg
  60. BIN
      .image/生成效果.jpg
  61. BIN
      .image/用户分组.jpg
  62. BIN
      .image/用户管理.jpg
  63. BIN
      .image/登录.jpg
  64. BIN
      .image/登录日志.jpg
  65. BIN
      .image/短信日志.jpg
  66. BIN
      .image/短信模板.jpg
  67. BIN
      .image/短信渠道.jpg
  68. BIN
      .image/租户套餐.png
  69. BIN
      .image/租户管理.jpg
  70. BIN
      .image/系统接口.jpg
  71. BIN
      .image/菜单管理.jpg
  72. BIN
      .image/表单构建.jpg
  73. BIN
      .image/角色管理.jpg
  74. BIN
      .image/访问日志.jpg
  75. BIN
      .image/退款订单.jpg
  76. BIN
      .image/通知公告.jpg
  77. BIN
      .image/部门管理.jpg
  78. BIN
      .image/配置管理.jpg
  79. BIN
      .image/链路追踪.jpg
  80. BIN
      .image/错误日志.jpg
  81. BIN
      .image/错误码管理.jpg
  82. BIN
      .image/首页.jpg
  83. 26 0
      components/myIconfont/myIconfont.vue
  84. 36 0
      components/myLoading/loading.css
  85. 62 0
      components/myLoading/myLoading.vue
  86. 80 0
      components/myTabs/myTabs.vue
  87. 83 0
      components/myUnits/purchaseUnit/unit.vue
  88. 12 2
      pages.json
  89. 245 18
      pages/index.vue
  90. 183 0
      pages/message/index.vue
  91. 67 178
      pages/work/index.vue
  92. BIN
      static/images/profile.png
  93. 113 0
      static/js/myPull.js
  94. 1 1
      store/modules/user.js

BIN
.image/Java监控.jpg


BIN
.image/MySQL.jpg


BIN
.image/OA请假-列表.jpg


BIN
.image/OA请假-发起.jpg


BIN
.image/OA请假-详情.jpg


BIN
.image/Redis.jpg


BIN
.image/admin-uniapp/01.png


BIN
.image/admin-uniapp/02.png


BIN
.image/admin-uniapp/03.png


BIN
.image/admin-uniapp/04.png


BIN
.image/admin-uniapp/05.png


BIN
.image/admin-uniapp/06.png


BIN
.image/admin-uniapp/07.png


BIN
.image/admin-uniapp/08.png


BIN
.image/admin-uniapp/09.png


BIN
.image/common/mall-feature.png


BIN
.image/common/mall-preview.png


BIN
.image/common/project-vs.png


BIN
.image/common/ruoyi-vue-pro-architecture.png


BIN
.image/common/ruoyi-vue-pro-biz.png


BIN
.image/common/yudao-cloud-architecture.png


BIN
.image/common/yudao-roadmap.png


BIN
.image/个人中心.jpg


BIN
.image/代码生成.jpg


BIN
.image/令牌管理.jpg


BIN
.image/任务列表-审批.jpg


BIN
.image/任务列表-已办.jpg


BIN
.image/任务列表-待办.jpg


BIN
.image/任务日志.jpg


BIN
.image/商户信息.jpg


BIN
.image/在线用户.jpg


BIN
.image/大屏设计器-列表.jpg


BIN
.image/大屏设计器-编辑.jpg


BIN
.image/大屏设计器-预览.jpg


BIN
.image/字典数据.jpg


BIN
.image/字典类型.jpg


BIN
.image/定时任务.jpg


BIN
.image/岗位管理.jpg


BIN
.image/应用信息-列表.jpg


BIN
.image/应用信息-编辑.jpg


BIN
.image/应用管理.jpg


BIN
.image/我的流程-列表.jpg


BIN
.image/我的流程-发起.jpg


BIN
.image/我的流程-详情.jpg


BIN
.image/报表设计器-图形报表.jpg


BIN
.image/报表设计器-打印设计.jpg


BIN
.image/报表设计器-数据报表.jpg


BIN
.image/操作日志.jpg


BIN
.image/支付订单.jpg


BIN
.image/敏感词.jpg


BIN
.image/数据库文档.jpg


BIN
.image/文件管理.jpg


BIN
.image/文件管理2.jpg


BIN
.image/文件配置.jpg


BIN
.image/日志中心.jpg


BIN
.image/流程模型-列表.jpg


BIN
.image/流程模型-定义.jpg


BIN
.image/流程模型-设计.jpg


BIN
.image/流程表单.jpg


BIN
.image/生成效果.jpg


BIN
.image/用户分组.jpg


BIN
.image/用户管理.jpg


BIN
.image/登录.jpg


BIN
.image/登录日志.jpg


BIN
.image/短信日志.jpg


BIN
.image/短信模板.jpg


BIN
.image/短信渠道.jpg


BIN
.image/租户套餐.png


BIN
.image/租户管理.jpg


BIN
.image/系统接口.jpg


BIN
.image/菜单管理.jpg


BIN
.image/表单构建.jpg


BIN
.image/角色管理.jpg


BIN
.image/访问日志.jpg


BIN
.image/退款订单.jpg


BIN
.image/通知公告.jpg


BIN
.image/部门管理.jpg


BIN
.image/配置管理.jpg


BIN
.image/链路追踪.jpg


BIN
.image/错误日志.jpg


BIN
.image/错误码管理.jpg


BIN
.image/首页.jpg


+ 26 - 0
components/myIconfont/myIconfont.vue

@@ -0,0 +1,26 @@
+<template>
+	<view class="iconfont con_coinpurse_line icon-icon_coinpurse_line"></view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+
+			}
+		},
+		onLoad() {
+
+		},
+		methods: {
+
+		}
+	}
+</script>
+<style lang='scss'>
+	.iconfont{
+		display: inline-block;
+		color: #666;
+		font-size: 24px;
+	}
+</style>

+ 36 - 0
components/myLoading/loading.css

@@ -0,0 +1,36 @@
+
+.loader-17 .css-square { position: absolute; top: 50%; width: 40upx; height: 12upx; background: #ffffff; }
+.loader-17 .square1 { left: 180upx; -webkit-animation: dominos 1s 0.125s ease infinite; animation: dominos 1s 0.125s ease infinite; }
+.loader-17 .square2 { left: 160upx; -webkit-animation: dominos 1s 0.3s ease infinite;   animation: dominos 1s 0.3s ease infinite; }
+.loader-17 .square3 { left: 140upx; -webkit-animation: dominos 1s 0.425s ease infinite; animation: dominos 1s 0.425s ease infinite; }
+.loader-17 .square4 { left: 120upx; -webkit-animation: dominos 1s 0.540s ease infinite; animation: dominos 1s 0.540s ease infinite; }
+.loader-17 .square5 { left: 100upx; -webkit-animation: dominos 1s 0.665s ease infinite; animation: dominos 1s 0.665s ease infinite; }
+.loader-17 .square6 { left: 80upx; 	-webkit-animation: dominos 1s 0.79s ease infinite;  animation: dominos 1s 0.79s ease infinite; }
+.loader-17 .square7 { left: 60upx; 	-webkit-animation: dominos 1s 0.9s ease infinite;   animation: dominos 1s 0.9s ease infinite; }
+.loader-17 .square8 { left: 40upx; 	-webkit-animation: dominos 1s 1.01s ease infinite;  animation: dominos 1s 1.01s ease infinite; }
+.loader-17 .square9 { left: 20upx; 	-webkit-animation: dominos 1s 1.10s ease infinite;  animation: dominos 1s 1.10s ease infinite; }
+
+
+ @keyframes dominos {
+ 50% {
+opacity: 0.7;
+}
+ 75% {
+-webkit-transform: rotate(90deg);
+transform: rotate(90deg);
+}
+ 80% {
+opacity: 1;
+}
+}
+
+ @keyframes ball-turn {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+}
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+}
+}

+ 62 - 0
components/myLoading/myLoading.vue

@@ -0,0 +1,62 @@
+<template>
+	<view class="loading_box" v-show="is_loading" @click="switch_loading">
+		<view class="loading">
+			<view class="loader loader-17">
+			  <view v-for="(item,index) in 9" :key="index" :class="'css-square '+`square`+(index+1)"></view>
+			</view>
+			 <!-- <view class="loader loader-4"></view> -->
+		</view>
+	</view>
+</template>
+ 
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			switch_loading(){
+				this.$store.commit("switch_loading")
+			}
+		},
+		computed:{
+			is_loading(){
+				return this.$store.state.loading.loading
+			}
+		}
+	}
+</script>
+
+<style>
+@import "./loading.css";
+.loading_box{
+	width: 100%;
+	height: 100%;
+	/* background-color: rgba(0,0,0,0.4); */
+	position: absolute;
+	left: 0;
+	top: 0;
+	z-index: 10000;
+}
+.loading{
+	width: 250upx;
+	height: 200upx;
+	background-color: rgba(0,0,0,0.5);
+	color: #fff;
+	position: relative;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%,-50%);
+	border-radius: 20upx;
+}
+.loader{
+	display:inline-block;
+	width:100%;
+	height:200upx;
+	overflow:hidden;
+	/* background-color:#ccc; */
+	position:relative;
+}
+</style>

+ 80 - 0
components/myTabs/myTabs.vue

@@ -0,0 +1,80 @@
+<template>
+	<view :class="{'my-tabs':true,'space-between':formatBe}">
+		<view  v-for="(item,index) in getModelData" :key="index" :class="{'tab-item':true,'active':formatIndex==index}" @tap="tap(index)">
+			{{item.label}}
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props:['modelData','initIndex'],
+		data() {
+			return {
+				
+			}
+		},
+		computed:{
+			getModelData(){
+				return this.modelData
+			},
+			formatBe(){
+				return this.modelData
+						?this.modelData.length>4?true:false
+						:false
+			},
+			formatIndex(){
+				return this.initIndex
+			}
+		},
+		methods: {
+			tap(index){
+				console.log("我点击了",index);
+				this.$emit("change",index);
+			}
+		}
+	}
+</script>
+<style lang='scss'>
+	.my-tabs {
+		background-color: #ffffff;
+		height: 88upx;
+		font-size: 28upx;
+		display: flex;
+		justify-content: space-around;
+		box-sizing: border-box;
+		border-top: 2upx solid #dddddd;
+		border-bottom: 2upx solid #dddddd;
+		min-width: 100%;
+		overflow-x: auto;
+		
+		.tab-item{
+			line-height: 48upx;
+			padding: 20upx;
+			min-width: 100upx;
+			text-align: center;
+		}
+		.tab-item.active{
+			position: relative;
+			color: #3682FF;
+		}
+		.tab-item.active::after{
+			content: "";
+			position: absolute;
+			bottom: 0;
+			left:50%;
+			transform: translateX(-50%);
+			width: 100%;
+			border-bottom: 4upx solid #3682FF;
+			animation: test ease 1 1.5s;
+		}
+	}
+	.my-tabs.space-between{
+		justify-content: space-between;
+	}
+	@keyframes test{
+		0%{width: 100%}
+		50%{width: 150%}
+		100%{width: 100%}
+	}
+</style>

+ 83 - 0
components/myUnits/purchaseUnit/unit.vue

@@ -0,0 +1,83 @@
+<template>
+    <view class='my-unit'>
+		<view class="unit-head">
+			<text>求购编号:12346579812</text><text class="fr color-999">正在报价</text>
+		</view>
+		<view class="unit-body">
+			<text v-for="(item,index) in unitModel1" :key="index" >{{item.label}}:<text v-if="item.isMoney" :class="item.class">¥ </text><text :class="item.class">暂无</text><text v-if="item.isMoney" :class="item.class"> 元</text></text>
+		</view>
+		<view class="unit-foot">
+			<text class="color-999">20190212</text>
+			<button class="fr btn" type="warn" @click="doDel">删除求购</button>
+		</view>
+    </view>
+</template>
+	
+<script>
+    export default{
+        data() {
+            return {
+				unitModel1:[
+					{prop:"",label:"匹配商铺数"},
+					{prop:"",label:"已报价商铺数"},
+					{prop:"",label:"最新报价",class:"color-red",isMoney:true},
+					{prop:"",label:"商品报价",class:"color-999",isMoney:true},
+					{prop:"",label:"税点",class:"color-999"},
+					{prop:"",label:"税费",class:"color-999",isMoney:true},
+					{prop:"",label:"运费",class:"color-999",isMoney:true},
+				]
+            }
+        },
+        methods:{
+			doDel(){
+				this.$store.commit("switch_loading")
+			}
+        },
+		computed:{
+			
+		},
+		created() {
+			
+		},
+    }
+</script>
+<style lang='scss'>
+    .my-unit{
+		margin: 20upx 0;
+		background-color: #ffffff;
+		font-size: 28upx;
+		transform: all 1s;
+		
+		.unit-head{
+			padding: 20upx;
+			height: 80upx;
+			box-sizing: border-box;
+			border-bottom: 2upx solid #f5f5f5;
+		}
+		.unit-body{
+			padding: 20upx;
+			display: flex;
+			flex-wrap: wrap;
+			
+			text{
+				width: 50%;
+				font-size: 28upx;
+				line-height: 55upx;
+			}
+		}
+		.unit-foot{
+			height: 88upx;
+			padding: 0 20upx;
+			border-top: 2upx solid #f5f5f5;
+			border-bottom: none;
+			line-height: 88upx;
+			
+			.btn{
+				height: 60upx;
+				font-size: 28upx;
+				line-height: 60upx;
+				margin: 14upx 0;
+			}
+		}
+	}
+</style>

+ 12 - 2
pages.json

@@ -13,9 +13,14 @@
   }, {
     "path": "pages/work/index",
     "style": {
-      "navigationBarTitleText": "工作台"
+      "navigationBarTitleText": "审批中心"
     }
   }, {
+    "path": "pages/message/index",
+    "style": {
+      "navigationBarTitleText": "消息"
+    }
+  },  {
     "path": "pages/mine/index",
     "style": {
       "navigationBarTitleText": "我的"
@@ -80,8 +85,13 @@
         "pagePath": "pages/work/index",
         "iconPath": "static/images/tabbar/work.png",
         "selectedIconPath": "static/images/tabbar/work_.png",
-        "text": "工作台"
+        "text": "审批中心"
       }, {
+        "pagePath": "pages/message/index",
+        "iconPath": "static/images/tabbar/work.png",
+        "selectedIconPath": "static/images/tabbar/work_.png",
+        "text": "消息"
+      },{
         "pagePath": "pages/mine/index",
         "iconPath": "static/images/tabbar/mine.png",
         "selectedIconPath": "static/images/tabbar/mine_.png",

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 245 - 18
pages/index.vue


+ 183 - 0
pages/message/index.vue

@@ -0,0 +1,183 @@
+<template>
+  <view class="work-container">
+    <!-- 轮播图 -->
+    <uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
+      <swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
+        <swiper-item v-for="(item, index) in data" :key="index">
+          <view class="swiper-item" @click="clickBannerItem(item)">
+            <image :src="item.image" mode="aspectFill" :draggable="false" />
+          </view>
+        </swiper-item>
+      </swiper>
+    </uni-swiper-dot>
+
+    <!-- 宫格组件 -->
+    <uni-section title="系统管理" type="line"></uni-section>
+    <view class="grid-body">
+      <uni-grid :column="4" :showBorder="false" @change="changeGrid">
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="person-filled" size="30"></uni-icons>
+            <text class="text">用户管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="staff-filled" size="30"></uni-icons>
+            <text class="text">角色管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="color" size="30"></uni-icons>
+            <text class="text">菜单管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="settings-filled" size="30"></uni-icons>
+            <text class="text">部门管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="heart-filled" size="30"></uni-icons>
+            <text class="text">岗位管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="bars" size="30"></uni-icons>
+            <text class="text">字典管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="gear-filled" size="30"></uni-icons>
+            <text class="text">参数设置</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="chat-filled" size="30"></uni-icons>
+            <text class="text">通知公告</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="wallet-filled" size="30"></uni-icons>
+            <text class="text">日志管理</text>
+          </view>
+        </uni-grid-item>
+      </uni-grid>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        current: 0,
+        swiperDotIndex: 0,
+        data: [{
+            image: '/static/images/banner/banner01.jpg'
+          },
+          {
+            image: '/static/images/banner/banner02.jpg'
+          },
+          {
+            image: '/static/images/banner/banner03.jpg'
+          }
+        ]
+      }
+    },
+    methods: {
+      clickBannerItem(item) {
+        console.info(item)
+      },
+      changeSwiper(e) {
+        this.current = e.detail.current
+      },
+      changeGrid(e) {
+        this.$modal.showToast('模块建设中~')
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  /* #ifndef APP-NVUE */
+  page {
+    display: flex;
+    flex-direction: column;
+    box-sizing: border-box;
+    background-color: #fff;
+    min-height: 100%;
+    height: auto;
+  }
+
+  view {
+    font-size: 14px;
+    line-height: inherit;
+  }
+
+  /* #endif */
+
+  .text {
+    text-align: center;
+    font-size: 26rpx;
+    margin-top: 10rpx;
+  }
+
+  .grid-item-box {
+    flex: 1;
+    /* #ifndef APP-NVUE */
+    display: flex;
+    /* #endif */
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    padding: 15px 0;
+  }
+
+  .uni-margin-wrap {
+    width: 690rpx;
+    width: 100%;
+    ;
+  }
+
+  .swiper {
+    height: 300rpx;
+  }
+
+  .swiper-box {
+    height: 150px;
+  }
+
+  .swiper-item {
+    /* #ifndef APP-NVUE */
+    display: flex;
+    /* #endif */
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    color: #fff;
+    height: 300rpx;
+    line-height: 300rpx;
+  }
+
+  @media screen and (min-width: 500px) {
+    .uni-swiper-dot-box {
+      width: 400px;
+      /* #ifndef APP-NVUE */
+      margin: 0 auto;
+      /* #endif */
+      margin-top: 8px;
+    }
+
+    .image {
+      width: 100%;
+    }
+  }
+</style>

+ 67 - 178
pages/work/index.vue

@@ -1,183 +1,72 @@
 <template>
-  <view class="work-container">
-    <!-- 轮播图 -->
-    <uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
-      <swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
-        <swiper-item v-for="(item, index) in data" :key="index">
-          <view class="swiper-item" @click="clickBannerItem(item)">
-            <image :src="item.image" mode="aspectFill" :draggable="false" />
-          </view>
-        </swiper-item>
-      </swiper>
-    </uni-swiper-dot>
-
-    <!-- 宫格组件 -->
-    <uni-section title="系统管理" type="line"></uni-section>
-    <view class="grid-body">
-      <uni-grid :column="4" :showBorder="false" @change="changeGrid">
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="person-filled" size="30"></uni-icons>
-            <text class="text">用户管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="staff-filled" size="30"></uni-icons>
-            <text class="text">角色管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="color" size="30"></uni-icons>
-            <text class="text">菜单管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="settings-filled" size="30"></uni-icons>
-            <text class="text">部门管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="heart-filled" size="30"></uni-icons>
-            <text class="text">岗位管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="bars" size="30"></uni-icons>
-            <text class="text">字典管理</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="gear-filled" size="30"></uni-icons>
-            <text class="text">参数设置</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="chat-filled" size="30"></uni-icons>
-            <text class="text">通知公告</text>
-          </view>
-        </uni-grid-item>
-        <uni-grid-item>
-          <view class="grid-item-box">
-            <uni-icons type="wallet-filled" size="30"></uni-icons>
-            <text class="text">日志管理</text>
-          </view>
-        </uni-grid-item>
-      </uni-grid>
-    </view>
-  </view>
+	<view class='purchase-list'>
+		<my-tabs @change="tapChange" :modelData="modelData" :initIndex="initIndex"></my-tabs>
+		<scroll-view class="purchase-body" scroll-y="true" @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper" @scroll="scroll" @touchstart="touchstart" @touchend="touchend">
+			<my-unit v-for="(item,index) in 10" :key="index" :info="item"></my-unit>
+		</scroll-view>
+	</view>
 </template>
-
 <script>
-  export default {
-    data() {
-      return {
-        current: 0,
-        swiperDotIndex: 0,
-        data: [{
-            image: '/static/images/banner/banner01.jpg'
-          },
-          {
-            image: '/static/images/banner/banner02.jpg'
-          },
-          {
-            image: '/static/images/banner/banner03.jpg'
-          }
-        ]
-      }
-    },
-    methods: {
-      clickBannerItem(item) {
-        console.info(item)
-      },
-      changeSwiper(e) {
-        this.current = e.detail.current
-      },
-      changeGrid(e) {
-        this.$modal.showToast('模块建设中~')
-      }
-    }
-  }
+	import myTabs from '@/components/myTabs/myTabs.vue'
+	import myUnit from '@/components/myUnits/purchaseUnit/unit.vue'
+	import myPull from '@/static/js/myPull.js'
+	export default {
+		components:{myTabs,myUnit},
+		data() {
+			return {
+				
+			}
+		},
+		onLoad(){
+			this.refresh();
+		},
+		methods: {
+			/**
+			 * @name 获取列表
+			 */
+			getList(page,done){
+				 console.log(`获取第${page}页数据`);
+				 done([1])
+			},
+			
+			/**
+			 * @name 触底加载
+			 */
+			scrolltolower(event){
+				this.getList(this.page,this.__pulldone)
+			},
+			
+			scroll(e){
+				// 重新设置pulldown
+				this.setPullDown(e.detail.scrollTop<10)
+			},
+			
+			scrolltoupper(){
+				
+			},
+			
+			
+			/**
+			 * @name 改变tab
+			 * @param val 索引
+			 */
+			tapChange(val){
+				this.initIndex=val
+			}
+		},
+		mixins:[myPull({})],
+		
+	}
 </script>
-
-<style lang="scss">
-  /* #ifndef APP-NVUE */
-  page {
-    display: flex;
-    flex-direction: column;
-    box-sizing: border-box;
-    background-color: #fff;
-    min-height: 100%;
-    height: auto;
-  }
-
-  view {
-    font-size: 14px;
-    line-height: inherit;
-  }
-
-  /* #endif */
-
-  .text {
-    text-align: center;
-    font-size: 26rpx;
-    margin-top: 10rpx;
-  }
-
-  .grid-item-box {
-    flex: 1;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    padding: 15px 0;
-  }
-
-  .uni-margin-wrap {
-    width: 690rpx;
-    width: 100%;
-    ;
-  }
-
-  .swiper {
-    height: 300rpx;
-  }
-
-  .swiper-box {
-    height: 150px;
-  }
-
-  .swiper-item {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    color: #fff;
-    height: 300rpx;
-    line-height: 300rpx;
-  }
-
-  @media screen and (min-width: 500px) {
-    .uni-swiper-dot-box {
-      width: 400px;
-      /* #ifndef APP-NVUE */
-      margin: 0 auto;
-      /* #endif */
-      margin-top: 8px;
-    }
-
-    .image {
-      width: 100%;
-    }
-  }
+<style lang='scss'>
+	.purchase-list {
+		background-color: #f5f5f5;
+		height: 100%;
+		overflow: hidden;
+		
+		.purchase-body{
+			height: calc(100% - 88upx);
+			overflow: auto
+		}
+	}
 </style>

BIN
static/images/profile.png


+ 113 - 0
static/js/myPull.js

@@ -0,0 +1,113 @@
+/**
+ * @name 封装下拉
+ * @params getList 刷新数据的函数
+ * @params listData 存放数据的变量名
+ * @params page 页数变量名
+ */
+export default({getList="getList",listData="listData",page="page",initIndex="initIndex",modelData="modelData"})=> {
+	var startPoint={}
+	var endPoint={}
+	return {
+		data(){
+			return {
+				[listData]:[],
+				[page]:1,
+				[initIndex]:0,
+				[modelData]:[
+					{label:"测试"},
+					{label:"测试"},
+					{label:"测试"},
+				]
+			}
+		},
+		onPullDownRefresh() {
+			this.refresh();
+		},
+		onReachBottom() {
+			this[getList].call(this, this[page], this.__pulldone);
+		},
+		methods:{
+			refresh(){
+				this[page]=1;
+				this[getList].call(this, this[page], this.__pulldone);
+			},
+			__pulldone(data){
+				var db = data || [];
+				if (this[page] == 1) {
+				  this[listData] = db;
+				} else {
+				  this[listData] = (this[listData] || []).concat(db);
+				}
+				uni.stopPullDownRefresh();
+				this[page]++;
+			},
+			
+			/**
+			 * @name 动态开启或关闭pulldown
+			 * @params {boolean} isOpen
+			 */
+			setPullDown(isOpen){
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();  
+				const page = pages[pages.length - 1]; 
+				var currentWebview = page.$getAppWebview();
+				currentWebview.setStyle({//设置当前webview的style
+					pullToRefresh: {
+						support: isOpen ,
+						style: plus.os.name === 'Android' ? 'circle' : 'default'  
+					}
+				});
+				// #endif
+			},
+			
+			/**
+			 * @name 开始滑动
+			 */
+			touchstart(e){
+				startPoint={
+					pageX:e.pageX||e.changedTouches[0].pageX,
+					pageY:e.pageY||e.changedTouches[0].pageY,
+				}
+			},
+			
+			/**
+			 * @name 滑动结束
+			 */
+			touchend(e){
+				endPoint={
+					pageX:e.mp.changedTouches[0].pageX,
+					pageY:e.mp.changedTouches[0].pageY,
+				}
+				// 判断是左滑动还是右滑动 当横向位移大于10,纵向位移大于100,则判定为滑动事件
+				var disX=endPoint.pageX-startPoint.pageX;//计算移动的位移差
+				var disY=endPoint.pageY-startPoint.pageY;
+				if(Math.abs(disX)>10||Math.abs(disY)>100){
+					if(Math.abs(disX)>Math.abs(disY)){//判断是横向滑动还是纵向滑动
+					    if(disX>10){
+					        this.swiperight()//右滑
+					    };
+					    if(disX<-10){
+					        this.swipeleft()//左滑
+					    };
+					}
+				}
+			},
+			
+			/**
+			 * @name 向左滑动
+			 */
+			swipeleft(){
+				if(this[initIndex]<this[modelData].length-1)this[initIndex]++
+				console.log("左滑");
+			},
+			
+			/**
+			 * @name 监听右滑
+			 */
+			swiperight(){
+				if(this[initIndex]>0)this[initIndex]--
+				console.log("右滑");
+			},
+		}
+	}
+}

+ 1 - 1
store/modules/user.js

@@ -61,7 +61,7 @@ const user = {
         getInfo().then(res => {
           res = res.data; // 读取 data 数据
           const user = res.user
-          const avatar = (user == null || user.avatar === "" || user.avatar == null) ? require("@/static/images/profile.jpg") : user.avatar
+          const avatar = (user == null || user.avatar === "" || user.avatar == null) ? require("@/static/images/profile.png") : user.avatar
           const nickname = (user == null || user.nickname === "" || user.nickname == null) ? "" : user.nickname
           if (res.roles && res.roles.length > 0) {
             commit('SET_ROLES', res.roles)