technicianList.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. <!-- 技师列表 -->
  2. <!-- 首页,支持店铺装修 -->
  3. <template>
  4. <s-layout class='ss-w-100 ss-h-100 box-sizing' style="position: relative;" title="技师" navbar="custom"
  5. tabbar="/pages/XDHomePage/technicianList/technicianList">
  6. <view class="body" :style="'padding-top:'+bottomHeight">
  7. <!-- 头部 -->
  8. <view style="margin-top: 20rpx;padding: 10rpx;" id="head-box">
  9. <!-- 导航标题 -->
  10. <view class="ss-flex ss-w-100">
  11. <view class="ss-flex">
  12. <view style="width:40rpx;height:40rpx;">
  13. <image referrerpolicy="no-referrer"
  14. src="/static/lanhu_shouye/6461e1be91dd49c48afbbacf664a38ec_mergeImage.png"
  15. class="icon-image"></image>
  16. </view>
  17. <view style="font-size:26rpx;color:#fff;margin-left:15rpx;">
  18. 技师列表
  19. </view>
  20. </view>
  21. <view class="ss-flex-1"></view>
  22. <view style="width:40rpx;height:40rpx;">
  23. <image referrerpolicy="no-referrer"
  24. src="/static/lanhu_shouye/61f5a7931f9d41caafd7d60ec1efadb4_mergeImage.png"
  25. class="icon-image"></image>
  26. </view>
  27. <view style="width:40rpx;height:40rpx;margin-left:15rpx;margin-right:15rpx;">
  28. <image referrerpolicy="no-referrer"
  29. src="/static/lanhu_shouye/psza2ppvfwx4d6fnhi4tcrcfmrgvqf7x4jb799f8f8-619e-4a58-9606-3e6cd5bf62c6.png"
  30. class="icon-image"></image>
  31. </view>
  32. </view>
  33. <!-- 搜索框 -->
  34. <view style="width:100%;height:60rpx;margin-top:20rpx;">
  35. <uni-search-bar radius="30" v-model="searchInfo" placeholder="请输入搜索关键字" cancelButton="none" clearButton="none" @confirm="onSearch" ></uni-search-bar>
  36. </view>
  37. <!-- 多种搜索 -->
  38. <view style="width:100%;height:60rpx;margin-top:20rpx;" class="ss-flex">
  39. <view style="width:40rpx;height:40rpx;margin-left:15rpx;margin-right:15rpx;">
  40. <image referrerpolicy="no-referrer"
  41. src="/static/lanhu_shouye/psza2ppvfwx4d6fnhi4tcrcfmrgvqf7x4jb799f8f8-619e-4a58-9606-3e6cd5bf62c6.png"
  42. class="icon-image"></image>
  43. </view>
  44. <view style="width:25%;height:40rpx;">
  45. <uni-data-select
  46. class="icon-image"
  47. v-model="address"
  48. :localdata="range"
  49. :clear="false"
  50. @change="changeAddress"
  51. ></uni-data-select>
  52. </view>
  53. <view style="width:20rpx;"></view>
  54. <view style="width:25%;height:40rpx;" class="distance">
  55. <uni-data-select
  56. class="icon-image"
  57. v-model="distance"
  58. :localdata="distanceData"
  59. :clear="false"
  60. @change="changeDistance"
  61. ></uni-data-select>
  62. </view>
  63. <view class="ss-flex-1"></view>
  64. <view style="width:120rpx;display:flex;margin-right:20rpx;" @click="searchAll">
  65. <view style="width:80rpx;height:40rpx;line-height:40rpx;text-align:center;font-size:26rpx;color:#fff;">筛选</view>
  66. <view style="width:40rpx;height:40rpx;margin-left:15rpx;margin-right:15rpx;">
  67. <image referrerpolicy="no-referrer"
  68. src="/static/lanhu_shouye/psza2ppvfwx4d6fnhi4tcrcfmrgvqf7x4jb799f8f8-619e-4a58-9606-3e6cd5bf62c6.png"
  69. class="icon-image"></image>
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <!-- 中部 -->
  75. <view class="list-wrap">
  76. <scroll-view scroll-y="true" class="list">
  77. <view class="ss-flex-2 box-sizing list-box" v-for="item in 10" :key="item">
  78. <!-- 左右布局 -->
  79. <view style="width:190rpx;">
  80. <view style="width:190rpx;height:160rpx;">
  81. <image referrerpolicy="no-referrer"
  82. src="/static/lanhu_shouye/psq752p4oxrur1kwz38o9hz2uugu327v8c905774083-1ff9-40d7-8687-01c969b1461d.png"
  83. class="icon-image"></image>
  84. </view>
  85. <view class="bt-box">
  86. 可预约
  87. </view>
  88. </view>
  89. <!-- 右边布局 -->
  90. <view class="ss-flex-1" style="margin-left: 20rpx;">
  91. <view class="ss-flex">
  92. <view style="font-size: 30rpx;color:#1A2433;font-weight: 650;">王琳haha</view>
  93. <view class="ss-flex" style="margin-left:20rpx;margin-top:5rpx;">
  94. <view style="width:25rpx;height:25rpx;">
  95. <image class="icon-image" referrerpolicy="no-referrer"
  96. src="/static/lanhu_shouye/ps45z8ynos8u6p0hlyciknnu9trq6jgvec6ac864-6e48-46fc-a850-9e88158e568c.png" />
  97. </view>
  98. <view style="font-size: 24rpx;margin-left:5rpx;color:#009FE8;margin-top: 5rpx;">4.8</view>
  99. </view>
  100. <view class="ss-flex-1"></view>
  101. <view class="job-box">
  102. NO.00158
  103. </view>
  104. </view>
  105. <view class="ss-flex-2">
  106. <view class="flag-box" style="background-color: #E57F3A;">
  107. 新人
  108. </view>
  109. <view class="flag-box" style="background-color: #E50012;">
  110. 明星
  111. </view>
  112. <view class="flag-box" style="background-color: #48B790;">
  113. 手法哈哈哈哈
  114. </view>
  115. </view>
  116. <uni-tooltip style="margin-top: 5rpx;" content="哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈哈哈哈" placement="bottom">
  117. <view class="text-info-box">
  118. 哈哈哈哈哈哈哈,哈哈哈哈哈哈哈,哈哈哈哈,哈哈哈哈哈哈哈,
  119. </view>
  120. </uni-tooltip>
  121. <view class="ss-flex-2">
  122. <view class="ss-flex-2 shop-box ss-row-center" style="height:25rpx;">
  123. <view style="width:17rpx;height:17rpx;margin-top:3rpx;" class="ss-flex-2">
  124. <image class="icon-image" referrerpolicy="no-referrer"
  125. src="/static/lanhu_shouye/ps45z8ynos8u6p0hlyciknnu9trq6jgvec6ac864-6e48-46fc-a850-9e88158e568c.png" />
  126. </view>
  127. <view style="font-size:16rpx;margin-left: 5rpx;color:#444;">秋水伊人</view>
  128. </view>
  129. </view>
  130. <view class="ss-flex-2 ss-row-center ss-col-center" style="box-sizing: border-box;">
  131. <view style="width:23rpx;height:25rpx;">
  132. <image class="icon-image" referrerpolicy="no-referrer"
  133. src="/static/lanhu_shouye/ps45z8ynos8u6p0hlyciknnu9trq6jgvec6ac864-6e48-46fc-a850-9e88158e568c.png" />
  134. </view>
  135. <view style="font-size: 22rpx;margin-left:5rpx;margin-top: 15rpx;">
  136. 15
  137. </view>
  138. <view style="width:17rpx;height:25rpx;margin-left:30rpx;">
  139. <image class="icon-image" referrerpolicy="no-referrer"
  140. src="/static/lanhu_shouye/ps45z8ynos8u6p0hlyciknnu9trq6jgvec6ac864-6e48-46fc-a850-9e88158e568c.png" />
  141. </view>
  142. <view style="font-size: 22rpx;margin-left:5rpx;color:#009FE8;margin-top: 15rpx;">
  143. 15.256km
  144. </view>
  145. <view style="font-size: 16rpx;margin-left:20rpx;color:#666;margin-top: 15rpx;">
  146. 莱山区哈哈哈
  147. </view>
  148. <view class="ss-flex-1"></view>
  149. <view class="bt-box-two">点TA</view>
  150. </view>
  151. </view>
  152. </view>
  153. </scroll-view>
  154. </view>
  155. </view>
  156. <!-- 弹窗 -->
  157. <view v-if="isShow" class="popup-box" :style="'top:'+topSize" @click="close(2)">
  158. <view style="position: relative;width:100%;background-color: #fff;" @click.stop="prevent">
  159. <view style="display: flex;flex-direction:row;border-bottom: 4rpx solid #DCDCDC;">
  160. <!-- 左右布局 -->
  161. <view style="width:160rpx;background-color: #DCDCDC;color:#6B6B6B;font-size:26rpx;">
  162. <view style="width:100%;height:90rpx;line-height: 90rpx;text-align: center;font-size:34rpx;color:#333;font-weight: 650;background-color: #fff;">技师筛选</view>
  163. <view style="width:100%;height:90rpx;line-height: 90rpx;text-align: center;">时段</view>
  164. <view style="width:100%;height:90rpx;line-height: 90rpx;text-align: center;">价格</view>
  165. <view style="width:100%;height:90rpx;line-height: 90rpx;text-align: center;">服务状态</view>
  166. <view style="width:100%;height:90rpx;line-height: 90rpx;text-align: center;">服务类别</view>
  167. </view>
  168. <view class="ss-flex-1 box-sizing" style="padding-top:10rpx;">
  169. <view class="search-title">
  170. 技师登记
  171. </view>
  172. <view class="content-info-box">
  173. <view class="content-text" @click.stop="newInfo(1)">新人组</view>
  174. <view class="content-text">明星组</view>
  175. <view class="content-text">专业组</view>
  176. <view class="content-text">5星好评</view>
  177. </view>
  178. <view class="search-title">
  179. 技师性别
  180. </view>
  181. <view class="content-info-box">
  182. <view class="content-text">女技师</view>
  183. <view class="content-text">男技师</view>
  184. <view class="content-text">性别不限</view>
  185. </view>
  186. <view class="search-title">
  187. 服务类别
  188. </view>
  189. <view class="content-info-box">
  190. <view class="content-text">上门服务</view>
  191. <view class="content-text">店面体验</view>
  192. </view>
  193. <view class="search-title">
  194. 服务状态
  195. </view>
  196. <view class="content-info-box">
  197. <view class="content-text">空闲中</view>
  198. <view class="content-text">休息中</view>
  199. <view class="content-text">服务中</view>
  200. </view>
  201. <view class="search-title">
  202. 技师年龄(岁)
  203. </view>
  204. <view style="width: 95%;margin-left:2.5%;">
  205. <slider :value="age" @change="sliderChange" min="18" max="55" show-value />
  206. </view>
  207. <view class="search-title">
  208. 技师距离(km)
  209. </view>
  210. <view style="width: 95%;margin-left:2.5%;">
  211. <slider :value="distanceNum" @change="changeDistanceTwo" min="3" max="20" show-value />
  212. </view>
  213. </view>
  214. </view>
  215. <view style="display: flex;flex-wrap: nowrap;width:100%;height: 120rpx;">
  216. <view class="button-info-box" style="color:#41474B;background-color: #DCDCDC;">重置</view>
  217. <view class="button-info-box" style="color:#fff;background-color: #49B58E;">完成</view>
  218. </view>
  219. </view>
  220. </view>
  221. </s-layout>
  222. </template>
  223. <script setup>
  224. import {
  225. computed,
  226. ref
  227. } from 'vue';
  228. import {
  229. onLoad,
  230. onPageScroll,
  231. onPullDownRefresh
  232. } from '@dcloudio/uni-app';
  233. import sheep from '@/sheep';
  234. import $share from '@/sheep/platform/share';
  235. // 隐藏原生tabBar
  236. uni.hideTabBar();
  237. /**搜索栏*/
  238. const searchInfo=ref('')
  239. //搜索事件
  240. const onSearch=async(e)=>{
  241. console.log(e,'触发搜索事件')
  242. }
  243. const address=ref(0)
  244. const range=ref([
  245. { value: 0, text: "华庭路橡树湾小区10-909" },
  246. { value: 1, text: "足球" },
  247. { value: 2, text: "游泳" },
  248. ])
  249. const changeAddress=async(e)=>{
  250. console.log(e,'获取地址信息')
  251. }
  252. const distance=ref(0)
  253. const distanceData=ref(
  254. [{ value: 0, text: "距离" },
  255. { value: 1, text: "0~3km" },
  256. { value: 2, text: "3~5km" },
  257. { value: 2, text: "5~10km" },]
  258. )
  259. const changeDistance=async(e)=>{
  260. console.log(e,'获取距离')
  261. }
  262. const topSize=ref('0rpx')
  263. const isShow=ref(false)
  264. const searchAll=async()=>{
  265. //获取头部盒子宽高
  266. const query = uni.createSelectorQuery().select("#head-box")
  267. //获取宽度
  268. query.boundingClientRect(function(data){
  269. console.log(data,'元素的各种信息')
  270. topSize.value=(data.height*2+20)+'rpx'
  271. isShow.value=true
  272. }).exec()
  273. }
  274. const age=ref(21)
  275. const sliderChange=async(e)=>{
  276. console.log(e.detail.value,'技师年龄')
  277. age.value=e.detail.value
  278. }
  279. const distanceNum=ref(3)
  280. const changeDistanceTwo=async(e)=>{
  281. console.log(e.detail.value,'技师距离')
  282. distanceNum.value=e.detail.value
  283. }
  284. const newInfo=async(e)=>{
  285. console.log(e,'pppppppppppppp')
  286. }
  287. const prevent=async()=>{
  288. console.log('阻止事件冒泡')
  289. }
  290. const close=async(e)=>{
  291. console.log(e,'qqqqqq')
  292. isShow.value=false
  293. }
  294. //获取顶部安全距离
  295. const app = uni.getSystemInfoSync()
  296. const bottomHeightOne = (app.statusBarHeight) + 'rpx'
  297. const bottomHeight = ref(bottomHeightOne)
  298. onLoad((options) => {
  299. });
  300. </script>
  301. <style scoped>
  302. /deep/uni-slider .uni-slider-handle-wrapper{
  303. height:18rpx !important;
  304. }
  305. .distance{
  306. /deep/.uni-select__input-text{
  307. width:130rpx;
  308. color:#fff;
  309. overflow: hidden;
  310. white-space: nowrap;
  311. text-overflow: ellipsis;
  312. font-size:24rpx;
  313. text-align: right;
  314. }
  315. }
  316. /deep/.uni-select__input-text{
  317. width:180rpx;
  318. color:#fff;
  319. overflow: hidden;
  320. white-space: nowrap;
  321. text-overflow: ellipsis;
  322. font-size:24rpx;
  323. text-align: right;
  324. }
  325. /deep/.uni-searchbar__box{
  326. height:100% !important;
  327. }
  328. /deep/.uni-select{
  329. border: none !important;
  330. padding-left: 0rpx;
  331. }
  332. </style>
  333. <style scoped lang="scss">
  334. .list-box{
  335. width:95%;
  336. margin-left:2.5%;
  337. margin-top: 20rpx;
  338. padding-bottom: 20rpx;
  339. border-bottom: 3rpx dashed #AAAAAA;
  340. }
  341. .bt-box-two{
  342. padding: 5rpx;
  343. padding-left: 20rpx;
  344. padding-right: 20rpx;
  345. font-size: 20rpx;
  346. color:#fff;
  347. background-color: #009FE8;
  348. border-radius: 5rpx;
  349. }
  350. .shop-box{
  351. padding:3rpx;
  352. padding-left: 15rpx;
  353. padding-right: 15rpx;
  354. // background-color: #E3007F;
  355. color:#fff;
  356. border-radius: 5rpx;
  357. box-sizing: border-box;
  358. }
  359. .text-info-box{
  360. width: 100%;
  361. font-size: 23rpx;
  362. color: #6F7379;
  363. display: -webkit-box;
  364. -webkit-box-orient: vertical;
  365. -webkit-line-clamp: 2;
  366. overflow: hidden;
  367. text-overflow: ellipsis;
  368. min-height: 60rpx;
  369. }
  370. .flag-box{
  371. font-size: 16rpx !important;
  372. color:#fff;
  373. margin-right: 15rpx;
  374. padding-top:2rpx;
  375. padding-bottom:2rpx;
  376. text-align: center;
  377. box-sizing: border-box;
  378. border-radius: 5rpx;
  379. margin-top:5rpx;
  380. padding-left:15rpx;
  381. padding-right:15rpx;
  382. }
  383. .job-box{
  384. font-size: 22rpx;
  385. color: #fff;
  386. background-color: #898F96;
  387. padding:3rpx;
  388. padding-left: 5rpx;
  389. padding-right: 5rpx;
  390. -moz-box-sizing: border-box;
  391. }
  392. .bt-box{
  393. width:100rpx;
  394. height:30rpx;
  395. line-height:30rpx;
  396. text-align:center;
  397. color:#fff;
  398. background-color: #009FE8;
  399. font-size: 20rpx;
  400. padding:3rpx;
  401. border-radius: 5rpx;
  402. margin-top:10rpx;
  403. margin-left:40rpx;
  404. }
  405. .button-info-box{
  406. width:41%;
  407. margin-left:6%;
  408. height: 70rpx;
  409. line-height: 70rpx;
  410. text-align: center;
  411. font-size:40rpx;
  412. margin-top:25rpx;
  413. border-radius: 10rpx;
  414. }
  415. .content-text{
  416. width: 30%;
  417. height: 60rpx;
  418. line-height: 60rpx;
  419. text-align: center;
  420. font-size: 28rpx;
  421. color:#707374;
  422. background-color: #EFEEF1;
  423. margin-top:15rpx;
  424. border-radius: 10rpx;
  425. margin-left: 2.5%;
  426. }
  427. .content-info-box{
  428. width: 95%;
  429. margin-left:2.5%;
  430. display: flex;
  431. flex-wrap: wrap;
  432. justify-content: flex-start;
  433. align-items: center;
  434. }
  435. .search-title{
  436. width: 90%;
  437. height: 50rpx;
  438. margin-left:5%;
  439. margin-top: 20rpx;
  440. font-size: 30rpx;
  441. color: #333;
  442. font-weight: 650;
  443. text-align: left;
  444. }
  445. .popup-box{
  446. position: absolute;
  447. left:0;
  448. bottom:0;
  449. right:0;
  450. z-index: 999;
  451. background-color: rgba(0, 0, 0, .2);
  452. }
  453. .icon-image{
  454. width:100%;
  455. height:100%;
  456. }
  457. // 上中下布局样式
  458. .body {
  459. display: flex;
  460. flex-direction: column;
  461. height: calc(100vh - 50px);
  462. background: linear-gradient(to bottom, #08A3E9, #fff);
  463. box-sizing: border-box;
  464. }
  465. // 中部滚动
  466. .list-wrap {
  467. flex-grow: 1;
  468. position: relative;
  469. background-color: #fff;
  470. border-radius: 10rpx;
  471. width: 95%;
  472. margin-left: 2.5%;
  473. box-sizing: border-box;
  474. }
  475. .list {
  476. position: absolute;
  477. top: 0;
  478. left: 0;
  479. right: 0;
  480. bottom: 0;
  481. padding:10rpx;
  482. box-sizing: border-box;
  483. }
  484. .list-scroll-view {
  485. display: flex;
  486. flex-direction: row;
  487. flex-wrap: wrap;
  488. justify-content: space-between;
  489. margin-left: 2vw;
  490. margin-right: 2vw;
  491. }
  492. .course-card {
  493. width: 47vw;
  494. margin-top: 10px;
  495. margin-bottom: 10px;
  496. }
  497. </style>