technicianList.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  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" @click="onTechnician">点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. // 点击技师,跳转到技师详情
  299. const onTechnician=async()=>{
  300. uni.navigateTo({
  301. url:'/pages/XDHome/technician/technicianDetails/technicianDetails'
  302. })
  303. }
  304. onLoad((options) => {
  305. });
  306. </script>
  307. <style scoped>
  308. /deep/uni-slider .uni-slider-handle-wrapper{
  309. height:18rpx !important;
  310. }
  311. .distance{
  312. /deep/.uni-select__input-text{
  313. width:130rpx;
  314. color:#fff;
  315. overflow: hidden;
  316. white-space: nowrap;
  317. text-overflow: ellipsis;
  318. font-size:24rpx;
  319. text-align: right;
  320. }
  321. }
  322. /deep/.uni-select__input-text{
  323. width:180rpx;
  324. color:#fff;
  325. overflow: hidden;
  326. white-space: nowrap;
  327. text-overflow: ellipsis;
  328. font-size:24rpx;
  329. text-align: right;
  330. }
  331. /deep/.uni-searchbar__box{
  332. height:100% !important;
  333. }
  334. /deep/.uni-select{
  335. border: none !important;
  336. padding-left: 0rpx;
  337. }
  338. </style>
  339. <style scoped lang="scss">
  340. .list-box{
  341. width:95%;
  342. margin-left:2.5%;
  343. margin-top: 20rpx;
  344. padding-bottom: 20rpx;
  345. border-bottom: 3rpx dashed #AAAAAA;
  346. }
  347. .bt-box-two{
  348. padding: 5rpx;
  349. padding-left: 20rpx;
  350. padding-right: 20rpx;
  351. font-size: 20rpx;
  352. color:#fff;
  353. background-color: #009FE8;
  354. border-radius: 5rpx;
  355. }
  356. .shop-box{
  357. padding:3rpx;
  358. padding-left: 15rpx;
  359. padding-right: 15rpx;
  360. // background-color: #E3007F;
  361. color:#fff;
  362. border-radius: 5rpx;
  363. box-sizing: border-box;
  364. }
  365. .text-info-box{
  366. width: 100%;
  367. font-size: 23rpx;
  368. color: #6F7379;
  369. display: -webkit-box;
  370. -webkit-box-orient: vertical;
  371. -webkit-line-clamp: 2;
  372. overflow: hidden;
  373. text-overflow: ellipsis;
  374. min-height: 60rpx;
  375. }
  376. .flag-box{
  377. font-size: 16rpx !important;
  378. color:#fff;
  379. margin-right: 15rpx;
  380. padding-top:2rpx;
  381. padding-bottom:2rpx;
  382. text-align: center;
  383. box-sizing: border-box;
  384. border-radius: 5rpx;
  385. margin-top:5rpx;
  386. padding-left:15rpx;
  387. padding-right:15rpx;
  388. }
  389. .job-box{
  390. font-size: 22rpx;
  391. color: #fff;
  392. background-color: #898F96;
  393. padding:3rpx;
  394. padding-left: 5rpx;
  395. padding-right: 5rpx;
  396. -moz-box-sizing: border-box;
  397. }
  398. .bt-box{
  399. width:100rpx;
  400. height:30rpx;
  401. line-height:30rpx;
  402. text-align:center;
  403. color:#fff;
  404. background-color: #009FE8;
  405. font-size: 20rpx;
  406. padding:3rpx;
  407. border-radius: 5rpx;
  408. margin-top:10rpx;
  409. margin-left:40rpx;
  410. }
  411. .button-info-box{
  412. width:41%;
  413. margin-left:6%;
  414. height: 70rpx;
  415. line-height: 70rpx;
  416. text-align: center;
  417. font-size:40rpx;
  418. margin-top:25rpx;
  419. border-radius: 10rpx;
  420. }
  421. .content-text{
  422. width: 30%;
  423. height: 60rpx;
  424. line-height: 60rpx;
  425. text-align: center;
  426. font-size: 28rpx;
  427. color:#707374;
  428. background-color: #EFEEF1;
  429. margin-top:15rpx;
  430. border-radius: 10rpx;
  431. margin-left: 2.5%;
  432. }
  433. .content-info-box{
  434. width: 95%;
  435. margin-left:2.5%;
  436. display: flex;
  437. flex-wrap: wrap;
  438. justify-content: flex-start;
  439. align-items: center;
  440. }
  441. .search-title{
  442. width: 90%;
  443. height: 50rpx;
  444. margin-left:5%;
  445. margin-top: 20rpx;
  446. font-size: 30rpx;
  447. color: #333;
  448. font-weight: 650;
  449. text-align: left;
  450. }
  451. .popup-box{
  452. position: absolute;
  453. left:0;
  454. bottom:0;
  455. right:0;
  456. z-index: 999;
  457. background-color: rgba(0, 0, 0, .2);
  458. }
  459. .icon-image{
  460. width:100%;
  461. height:100%;
  462. }
  463. // 上中下布局样式
  464. .body {
  465. display: flex;
  466. flex-direction: column;
  467. height: calc(100vh - 50px);
  468. background: linear-gradient(to bottom, #08A3E9, #fff);
  469. box-sizing: border-box;
  470. }
  471. // 中部滚动
  472. .list-wrap {
  473. flex-grow: 1;
  474. position: relative;
  475. background-color: #fff;
  476. border-radius: 10rpx;
  477. width: 95%;
  478. margin-left: 2.5%;
  479. box-sizing: border-box;
  480. }
  481. .list {
  482. position: absolute;
  483. top: 0;
  484. left: 0;
  485. right: 0;
  486. bottom: 0;
  487. padding:10rpx;
  488. box-sizing: border-box;
  489. }
  490. .list-scroll-view {
  491. display: flex;
  492. flex-direction: row;
  493. flex-wrap: wrap;
  494. justify-content: space-between;
  495. margin-left: 2vw;
  496. margin-right: 2vw;
  497. }
  498. .course-card {
  499. width: 47vw;
  500. margin-top: 10px;
  501. margin-bottom: 10px;
  502. }
  503. </style>