混凝土运输管理微信小程序、替班
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

360 lines
8.6 KiB

2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
  1. <template>
  2. <view class="page">
  3. <view class="content">
  4. <!-- 顶部背景和用户信息 -->
  5. <view class="banner b-relative">
  6. <image src="/static/re/center.png" class="banner-before" mode="scaleToFill" />
  7. <view class="flex head-d" @click="clickLogin">
  8. <view class="square120 garden mr20">
  9. <image :src="userAvatar" mode="aspectFill" class="square120" />
  10. </view>
  11. <view class="nickname">{{ name || '点击登录' }}</view>
  12. </view>
  13. </view>
  14. <!-- 用户/泵司功能菜单 -->
  15. <view v-if="Number(role) === 0" style="background-color:white">
  16. <view class="re-item flex-sb bottom-line" @click="clickSells">
  17. <view>我要推荐</view>
  18. <view class="subf">推荐领奖
  19. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  20. </view>
  21. </view>
  22. <view class="re-item flex-sb bottom-line" @click="clickOrder">
  23. <view>我的订单</view>
  24. <view class="subf">立即查看
  25. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  26. </view>
  27. </view>
  28. <view class="re-item flex-sb bottom-line" @click="clickHistory">
  29. <view>历史订单</view>
  30. <view class="subf">点击查看
  31. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  32. </view>
  33. </view>
  34. <view class="re-item flex-sb">
  35. <view>我要拒单</view>
  36. <button class="subf" @click="clickService">联系客服
  37. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  38. </button>
  39. </view>
  40. </view>
  41. <!-- 企业功能菜单 -->
  42. <view v-if="Number(role) === 1" style="background-color:white">
  43. <view class="re-item flex-sb bottom-line" @click="clickCars">
  44. <view>企业设备</view>
  45. <view class="subf">{{ cars.length || 0 }}
  46. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  47. </view>
  48. </view>
  49. <view class="re-item flex-sb bottom-line" @click="clickPush">
  50. <view>发布订单</view>
  51. <view class="subf">立即发布
  52. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  53. </view>
  54. </view>
  55. <view class="re-item flex-sb">
  56. <view>联系客服</view>
  57. <button class="subf" @click="clickService">微信客服
  58. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  59. </button>
  60. </view>
  61. </view>
  62. <!-- 员工功能菜单 -->
  63. <view v-if="Number(role) === 2" style="background-color:white">
  64. <view class="re-item flex-sb bottom-line" @click="clickCars">
  65. <view>企业设备</view>
  66. <view class="subf">{{ cars.length || 0 }}
  67. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  68. </view>
  69. </view>
  70. <view class="re-item flex-sb bottom-line" @click="clickSells">
  71. <view>推荐司机</view>
  72. <view class="subf">推荐有礼
  73. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  74. </view>
  75. </view>
  76. <view class="re-item flex-sb bottom-line" @click="clickStaff">
  77. <view>员工管理</view>
  78. <view class="subf">管理员工
  79. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  80. </view>
  81. </view>
  82. <view class="re-item flex-sb">
  83. <view>员工订单</view>
  84. <view class="subf" @click="swichHall">查看订单
  85. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  86. </view>
  87. </view>
  88. </view>
  89. <!-- 区域管理员功能菜单 -->
  90. <view v-if="Number(role) === 3" style="background-color:white">
  91. <view class="re-item flex-sb bottom-line" @click="clickRejectApply">
  92. <view>拒单申请</view>
  93. <view class="subf">查看申请
  94. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  95. </view>
  96. </view>
  97. <view class="re-item flex-sb">
  98. <view>区域订单</view>
  99. <view class="subf" @click="swichHall">查看订单
  100. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  101. </view>
  102. </view>
  103. </view>
  104. <!-- 通用功能菜单 -->
  105. <view style="background-color:white; margin-top: 20rpx;">
  106. <view class="re-item flex-sb bottom-line" @click="swichHall">
  107. <view>切换大厅</view>
  108. <view class="subf">{{ roleText }}
  109. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  110. </view>
  111. </view>
  112. <view class="re-item flex-sb bottom-line" @click="clickYuan">
  113. <view>意见反馈</view>
  114. <view class="subf">提交建议
  115. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  116. </view>
  117. </view>
  118. <view class="re-item flex-sb">
  119. <view>关于我们</view>
  120. <view class="subf" @click="clickShen">了解更多
  121. <uv-icon name="arrow-right" size="16" color="#999"></uv-icon>
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. <tabber select="center" />
  127. </view>
  128. </template>
  129. <script>
  130. import tabber from '@/components/base/tabbar.vue'
  131. export default {
  132. components: {
  133. tabber,
  134. },
  135. data() {
  136. return {
  137. name: '',
  138. role: '1',
  139. cars: [],
  140. userAvatar: 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132'
  141. }
  142. },
  143. computed: {
  144. roleText() {
  145. const roleNum = Number(this.role);
  146. if (roleNum === 0) {
  147. return '用户/泵司';
  148. } else if (roleNum === 1) {
  149. return '企业用户';
  150. } else if (roleNum === 2) {
  151. return '员工';
  152. } else if (roleNum === 3) {
  153. return '区域管理员';
  154. } else {
  155. return '用户';
  156. }
  157. }
  158. },
  159. onShow() {
  160. this.role = uni.getStorageSync('role') || '1';
  161. this.name = uni.getStorageSync('name') || '用户';
  162. this.loadCars();
  163. },
  164. methods: {
  165. // 点击头像
  166. clickLogin() {
  167. uni.showToast({
  168. title: '用户信息',
  169. icon: 'none'
  170. });
  171. },
  172. // 我的订单
  173. clickOrder() {
  174. uni.navigateTo({ url: '/pages_order/user/orders' });
  175. },
  176. // 历史订单
  177. clickHistory() {
  178. uni.navigateTo({ url: '/pages_order/user/history' });
  179. },
  180. // 推荐功能
  181. clickSells() {
  182. uni.navigateTo({ url: '/pages_order/base/sells' });
  183. },
  184. // 员工功能
  185. clickStaff() {
  186. uni.navigateTo({ url: '/pages_order/staff/staffManage' });
  187. },
  188. // 企业设备
  189. clickCars() {
  190. uni.navigateTo({ url: '/pages_order/staff/cars' });
  191. },
  192. // 发布订单
  193. clickPush() {
  194. uni.navigateTo({ url: '/pages_order/staff/create' });
  195. },
  196. // 意见反馈
  197. clickYuan() {
  198. uni.navigateTo({ url: '/pages_order/base/yuan' });
  199. },
  200. // 关于我们
  201. clickShen() {
  202. uni.navigateTo({ url: '/pages_order/base/shen' });
  203. },
  204. // 切换大厅
  205. swichHall() {
  206. uni.reLaunch({ url: '/pages/index/order' });
  207. },
  208. // 拒单申请(区域管理员)
  209. clickRejectApply() {
  210. uni.navigateTo({ url: '/pages_order/base/rejectApply' });
  211. },
  212. // 联系客服
  213. clickService() {
  214. uni.showModal({
  215. title: '联系客服',
  216. content: '确定拨打客服电话?',
  217. success: (res) => {
  218. if (res.confirm) {
  219. uni.makePhoneCall({
  220. phoneNumber: '400-123-4567'
  221. });
  222. }
  223. }
  224. });
  225. },
  226. // 加载设备数据
  227. loadCars() {
  228. // 模拟加载设备数据
  229. this.cars = [
  230. { id: 1, name: '泵车001' },
  231. { id: 2, name: '泵车002' },
  232. { id: 3, name: '搅拌车001' }
  233. ];
  234. }
  235. }
  236. }
  237. </script>
  238. <style scoped lang="scss">
  239. body {
  240. background-color: #f5f5f5;
  241. }
  242. page {
  243. background-color: #f5f5f5;
  244. }
  245. button {
  246. padding: 0;
  247. margin: 0;
  248. background-color: transparent;
  249. border: none;
  250. }
  251. button::after {
  252. border: none;
  253. }
  254. button:hover {
  255. background-color: transparent;
  256. }
  257. .head-d {
  258. position: absolute;
  259. top: 188rpx;
  260. left: 64rpx;
  261. z-index: 3;
  262. }
  263. .banner {
  264. width: 100vw;
  265. min-height: 420rpx;
  266. position: relative;
  267. }
  268. .banner-before {
  269. content: " ";
  270. position: absolute;
  271. top: 0;
  272. left: 0;
  273. width: 100%;
  274. height: 100%;
  275. filter: blur(2rpx);
  276. z-index: -1;
  277. }
  278. .banner::after {
  279. content: " ";
  280. position: absolute;
  281. top: 0;
  282. left: 0;
  283. width: 100%;
  284. height: 100%;
  285. background-color: rgba(0, 0, 0, .2);
  286. -webkit-backdrop-filter: blur(5rpx);
  287. backdrop-filter: blur(5rpx);
  288. z-index: 1;
  289. }
  290. .nickname {
  291. line-height: 120rpx !important;
  292. font-weight: bolder !important;
  293. color: #fff;
  294. font-size: 32rpx;
  295. }
  296. .square120 {
  297. width: 120rpx;
  298. height: 120rpx;
  299. border-radius: 60rpx;
  300. overflow: hidden;
  301. }
  302. .garden {
  303. border-radius: 50%;
  304. }
  305. .mr20 {
  306. margin-right: 20rpx;
  307. }
  308. .flex {
  309. display: flex;
  310. align-items: center;
  311. }
  312. .flex-sb {
  313. display: flex;
  314. justify-content: space-between;
  315. align-items: center;
  316. }
  317. .re-item {
  318. padding: 30rpx;
  319. font-size: 32rpx;
  320. color: #333;
  321. }
  322. .bottom-line {
  323. border-bottom: 1rpx solid #f0f0f0;
  324. }
  325. .subf {
  326. font-size: 28rpx;
  327. color: #999;
  328. display: flex;
  329. align-items: center;
  330. gap: 10rpx;
  331. }
  332. .b-relative {
  333. position: relative;
  334. }
  335. </style>