猫妈狗爸伴宠师小程序前端代码
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.

845 lines
30 KiB

3 months ago
3 months ago
3 months ago
3 months ago
  1. <template>
  2. <!-- <div>服务档案</div> -->
  3. <view class="box box-size">
  4. <view style="margin: 32rpx 0;">
  5. <up-steps :current="currentStep" activeColor="#FFA042" inactiveColor="#E5E5E5" class="up-steps-custom">
  6. <up-steps-item title="喂养要求"
  7. :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 0 ? '#FFA042' : '#999999'}"></up-steps-item>
  8. <up-steps-item title="清洁要求"
  9. :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 1 ? '#FFA042' : '#999999'}"></up-steps-item>
  10. <up-steps-item title="附加服务"
  11. :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 2 ? '#FFA042' : '#999999'}"></up-steps-item>
  12. </up-steps>
  13. </view>
  14. <!-- v-if="detail.includeDryFood
  15. || detail.includeWetFood
  16. || detail.includeHomemadeFood
  17. || detail.includeRawMeat
  18. || detail.includeHealthSupplements
  19. || detail.includeSnacks
  20. " -->
  21. <!-- 喂养要求内容 -->
  22. <view v-if="currentStep === 0">
  23. <view class="top box-size" :style="{borderRadius:'16rpx'}">
  24. <view class="form-title">
  25. 本次喂养过程中您需要喂养的食品包括
  26. </view>
  27. <view class=" mt32 ml10">
  28. <view class="color-A55 size-30 fw400">
  29. 干粮(主粮冻干等)
  30. </view>
  31. <view class="size-30 mt32 fw400">
  32. 干粮摆放位置
  33. </view>
  34. <view class="img mt20">
  35. <template v-if="handleImageUrl(detail.dryFoodLocation).length > 0">
  36. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  37. @click="previewImage(item)"
  38. v-for="(item, index) in handleImageUrl(detail.dryFoodLocation)" :key="index"></u-image>
  39. </template>
  40. <view v-else class="empty-state">
  41. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  42. <text class="empty-text">暂无图片</text>
  43. </view>
  44. </view>
  45. <view class="size-30 mt24 flex-between">
  46. <view :style="{color:'#999999'}">干粮喂养重量</view>
  47. <view class="level">
  48. <view class="input_ mr10">
  49. <input type="text" :value="detail.dryFoodFeedWeight"
  50. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  51. </view>
  52. <view>/(单位:)</view>
  53. </view>
  54. </view>
  55. <view class="size-30 mt24 flex-between">
  56. <view :style="{color:'#999999'}">干粮喂养频率</view>
  57. <view class="level">
  58. <view class="input_ mr10">
  59. <input type="text" :value="detail.dryFoodFeedFrequencyDays"
  60. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  61. </view>
  62. <view></view>
  63. <view class="input_ mr10">
  64. <input type="text" :value="detail.dryFoodFeedFrequencyTimes"
  65. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  66. </view>
  67. <view></view>
  68. </view>
  69. </view>
  70. <view class="size-30 mt24" :style="{color:'#999999'}">
  71. 备注信息
  72. </view>
  73. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  74. <input type="text" disabled :value="detail.dryFoodRemarks || '无'"
  75. :style="{height:'50rpx',fontSize:'30rpx'}">
  76. </view>
  77. </view>
  78. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  79. <view class=" mt32 ml10">
  80. <view class="color-A55 size-30 fw400">
  81. 湿粮(罐头等)
  82. </view>
  83. <view class="size-30 mt32 fw400">
  84. 湿粮摆放位置
  85. </view>
  86. <view class="img mt20">
  87. <template v-if="handleImageUrl(detail.wetFoodLocation).length > 0">
  88. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  89. @click="previewImage(item)"
  90. v-for="(item, index) in handleImageUrl(detail.wetFoodLocation)" :key="index"></u-image>
  91. </template>
  92. <view v-else class="empty-state">
  93. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  94. <text class="empty-text">暂无图片</text>
  95. </view>
  96. </view>
  97. <view class="size-30 mt24 flex-between">
  98. <view :style="{color:'#999999'}">湿粮喂养重量</view>
  99. <view class="level">
  100. <view class="input_ mr10">
  101. <input type="text" disabled :value="detail.wetFoodFeedWeight"
  102. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  103. </view>
  104. <view>/(单位:)</view>
  105. </view>
  106. </view>
  107. <view class="size-30 mt24 flex-between">
  108. <view :style="{color:'#999999'}">湿粮喂养频率</view>
  109. <view class="level">
  110. <view class="input_ mr10">
  111. <input type="text" disabled :value="detail.wetFoodFeedFrequencyDays"
  112. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  113. </view>
  114. <view></view>
  115. <view class="input_ mr10">
  116. <input type="text" disabled :value="detail.wetFoodFeedFrequencyTimes"
  117. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  118. </view>
  119. <view></view>
  120. </view>
  121. </view>
  122. <view class="size-30 mt24" :style="{color:'#999999'}">
  123. 备注信息
  124. </view>
  125. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  126. <input type="text" :value="detail.wetFoodRemarks || '无'" :style="{height:'50rpx',fontSize:'30rpx'}">
  127. </view>
  128. </view>
  129. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  130. <view class=" mt32 ml10">
  131. <view class="color-A55 size-30 fw400">
  132. 自制食品
  133. </view>
  134. <view class="size-30 mt32 fw400">
  135. 自制食品摆放位置
  136. </view>
  137. <view class="img mt20">
  138. <template v-if="handleImageUrl(detail.homemadeFoodLocation).length > 0">
  139. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  140. @click="previewImage(item)"
  141. v-for="(item, index) in handleImageUrl(detail.homemadeFoodLocation)"
  142. :key="index"></u-image>
  143. </template>
  144. <view v-else class="empty-state">
  145. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  146. <text class="empty-text">暂无图片</text>
  147. </view>
  148. </view>
  149. <view class="size-30 mt24" :style="{color:'#999999'}">
  150. 自制饭制作和喂食说明
  151. </view>
  152. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  153. <input type="text" :value="detail.homemadeFoodInstructions || '无'"
  154. :style="{height:'50rpx',fontSize:'30rpx'}">
  155. </view>
  156. </view>
  157. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  158. <view class=" mt32 ml10">
  159. <view class="color-A55 size-30 fw400">
  160. 生骨肉
  161. </view>
  162. <view class="size-30 mt32 fw400">
  163. 生骨肉摆放位置
  164. </view>
  165. <view class="img mt20">
  166. <template v-if="handleImageUrl(detail.rawMeatLocation).length > 0">
  167. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  168. @click="previewImage(item)"
  169. v-for="(item, index) in handleImageUrl(detail.rawMeatLocation)" :key="index"></u-image>
  170. </template>
  171. <view v-else class="empty-state">
  172. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  173. <text class="empty-text">暂无图片</text>
  174. </view>
  175. </view>
  176. <view class="size-30 mt24" :style="{color:'#999999'}">
  177. 生骨肉喂食说明
  178. </view>
  179. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  180. <input type="text" disabled :value="detail.rawMeatFeedingInstructions || '无'"
  181. :style="{height:'50rpx',fontSize:'30rpx'}">
  182. </view>
  183. </view>
  184. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  185. <view class=" mt32 ml10">
  186. <view class="color-A55 size-30 fw400">
  187. 保健品
  188. </view>
  189. <view class="size-30 mt32 fw400">
  190. 保健品摆放位置
  191. </view>
  192. <view class="img mt20">
  193. <template v-if="handleImageUrl(detail.healthSupplementsLocation).length > 0">
  194. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  195. @click="previewImage(item)"
  196. v-for="(item, index) in handleImageUrl(detail.healthSupplementsLocation)"
  197. :key="index"></u-image>
  198. </template>
  199. <view v-else class="empty-state">
  200. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  201. <text class="empty-text">暂无图片</text>
  202. </view>
  203. </view>
  204. <view class="size-30 mt24" :style="{color:'#999999'}">
  205. 保健品喂养方式
  206. </view>
  207. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  208. <input type="text" disabled :value="detail.healthSupplementsFeedingInstructions || '无'"
  209. :style="{height:'50rpx',fontSize:'30rpx'}">
  210. </view>
  211. </view>
  212. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  213. <view class=" mt32 ml10">
  214. <view class="color-A55 size-30 fw400">
  215. 零食
  216. </view>
  217. <view class="size-30 mt32 fw400">
  218. 零食摆放位置
  219. </view>
  220. <view class="img mt20">
  221. <template v-if="handleImageUrl(detail.snacksLocation).length > 0">
  222. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  223. @click="previewImage(item)"
  224. v-for="(item, index) in handleImageUrl(detail.snacksLocation)" :key="index"></u-image>
  225. </template>
  226. <view v-else class="empty-state">
  227. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  228. <text class="empty-text">暂无图片</text>
  229. </view>
  230. </view>
  231. <view class="size-30 mt24" :style="{color:'#999999'}">
  232. 零食喂养方式
  233. </view>
  234. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  235. <input type="text" disabled :value="detail.snacksFeedingMethod || '无'"
  236. :style="{height:'50rpx',fontSize:'30rpx'}">
  237. </view>
  238. </view>
  239. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  240. </view>
  241. <view class="top mt24" :style="{borderRadius:'16rpx'}">
  242. <view class="form-title">
  243. 食盆/自动喂食器
  244. </view>
  245. <view class=" mt32 ml10">
  246. <view class="color-A55 size-30 fw400">
  247. 喂食器具摆放位置
  248. </view>
  249. <view class="mt20">
  250. <template v-if="handleImageUrl(detail.feedingTrayAutomaticFeederLocation).length > 0">
  251. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  252. @click="previewImage(item)"
  253. v-for="(item, index) in handleImageUrl(detail.feedingTrayAutomaticFeederLocation)"
  254. :key="index"></u-image>
  255. </template>
  256. <view v-else class="empty-state">
  257. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  258. <text class="empty-text">暂无图片</text>
  259. </view>
  260. </view>
  261. <view class="size-30 mt24" :style="{color:'#999999'}">
  262. 备注信息
  263. </view>
  264. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  265. <input type="text" disabled :value="detail.feedingTrayAutomaticFeederRemarks || '无'"
  266. :style="{height:'50rpx',fontSize:'30rpx'}">
  267. </view>
  268. </view>
  269. </view>
  270. <view class="top mt24" :style="{borderRadius:'16rpx'}">
  271. <view class="form-title">
  272. 饮用水
  273. </view>
  274. <view class=" mt32 ml10">
  275. <view class="color-A55 size-30 fw400">
  276. 饮用水摆放位置
  277. </view>
  278. <view class="mt20">
  279. <template v-if="handleImageUrl(detail.waterBowlLocation).length > 0">
  280. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  281. @click="previewImage(item)"
  282. v-for="(item, index) in handleImageUrl(detail.waterBowlLocation)"
  283. :key="index"></u-image>
  284. </template>
  285. <view v-else class="empty-state">
  286. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  287. <text class="empty-text">暂无图片</text>
  288. </view>
  289. </view>
  290. <view class="size-30 mt24" :style="{color:'#999999'}">
  291. 饮用水添加要求
  292. </view>
  293. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  294. <input type="text" disabled :value="detail.waterBowlRemarks || '无'"
  295. :style="{height:'50rpx',fontSize:'30rpx'}">
  296. </view>
  297. </view>
  298. </view>
  299. <view class="top mt24" :style="{borderRadius:'16rpx'}">
  300. <view class="form-title">
  301. 其他补充信息(非必填)
  302. </view>
  303. <view class=" mt32 ml10">
  304. <view class="size-30 mt24" :style="{color:'#999999'}">
  305. 备注信息
  306. </view>
  307. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  308. <input type="text" disabled :value="detail.otherRemark || '无'"
  309. :style="{height:'50rpx',fontSize:'30rpx'}">
  310. </view>
  311. </view>
  312. </view>
  313. </view>
  314. <!-- 清洁要求内容 -->
  315. <view v-if="currentStep === 1">
  316. <view class="top box-size" :style="{borderRadius:'16rpx'}">
  317. <view class="form-title">
  318. 您需要的清洁内容 </view>
  319. <!-- <view class="empty-state-full">
  320. <up-icon name="info-circle" size="60rpx" color="#999999"></up-icon>
  321. <text class="empty-text-full">暂无清洁内容</text>
  322. </view> -->
  323. <view class="mt32 ml10">
  324. <view class="color-A55 size-30 fw400">
  325. 猫砂
  326. </view>
  327. <view class="size-30 mt32 fw400">
  328. 猫砂摆放位置
  329. </view>
  330. <view class="img mt20">
  331. <template v-if="handleImageUrl(detail.catLitterLocation).length > 0">
  332. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  333. @click="previewImage(item)"
  334. v-for="(item, index) in handleImageUrl(detail.catLitterLocation)"
  335. :key="index"></u-image>
  336. </template>
  337. <view v-else class="empty-state">
  338. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  339. <text class="empty-text">暂无图片</text>
  340. </view>
  341. </view>
  342. <view class="size-30 mt24 flex-between">
  343. <view :style="{color:'#999999'}">猫砂更换频率</view>
  344. <view class="level">
  345. <view class="input_ mr10">
  346. <input type="text" disabled :value="detail.catLitterChangeFrequencyDays"
  347. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  348. </view>
  349. <view></view>
  350. <view class="input_ mr10">
  351. <input type="text" disabled :value="detail.catLitterChangeFrequencyTimes"
  352. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  353. </view>
  354. <view></view>
  355. </view>
  356. </view>
  357. <view class="size-30 mt24" :style="{color:'#999999'}">
  358. 备注信息
  359. </view>
  360. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  361. <input type="text" :value="detail.catLitterRemarks || '无'" :style="{height:'50rpx',fontSize:'30rpx'}">
  362. </view>
  363. </view>
  364. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  365. <view class="mt32 ml10">
  366. <view class="color-A55 size-30 fw400">
  367. 尿垫
  368. </view>
  369. <view class="size-30 mt32 fw400">
  370. 尿垫摆放位置
  371. </view>
  372. <view class="img mt20">
  373. <template v-if="handleImageUrl(detail.urinePadLocation).length > 0">
  374. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  375. @click="previewImage(item)"
  376. v-for="(item, index) in handleImageUrl(detail.urinePadLocation)" :key="index"></u-image>
  377. </template>
  378. <view v-else class="empty-state">
  379. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  380. <text class="empty-text">暂无图片</text>
  381. </view>
  382. </view>
  383. <view class="size-30 mt24 flex-between">
  384. <view :style="{color:'#999999'}">更换尿垫</view>
  385. <view class="level">
  386. <view class="input_ mr10">
  387. <input type="text" :value="detail.urinePadChangeFrequency"
  388. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  389. </view>
  390. <view></view>
  391. </view>
  392. </view>
  393. <view class="size-30 mt24 flex-between">
  394. <view :style="{color:'#999999'}">尿垫更换频率</view>
  395. <view class="level">
  396. <view class="input_ mr10">
  397. <input type="text" :value="detail.urinePadChangeFrequencyDays"
  398. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  399. </view>
  400. <view></view>
  401. <view class="input_ mr10">
  402. <input type="text" :value="detail.urinePadChangeFrequencyTimes"
  403. :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
  404. </view>
  405. <view></view>
  406. </view>
  407. </view>
  408. <view class="size-30 mt24" :style="{color:'#999999'}">
  409. 备注信息
  410. </view>
  411. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  412. <input type="text" disabled :value="detail.urinePadRemarks || '无'"
  413. :style="{height:'50rpx',fontSize:'30rpx'}">
  414. </view>
  415. </view>
  416. </view>
  417. </view>
  418. <!-- 附加服务内容 -->
  419. <view v-if="currentStep === 2">
  420. <view class="top box-size" :style="{borderRadius:'16rpx'}">
  421. <view class="form-title">
  422. 您需要的附加服务
  423. </view>
  424. <!-- 陪玩服务 -->
  425. <view class="mt32 ml10">
  426. <view class="color-A55 size-30 fw400">
  427. 陪玩
  428. </view>
  429. <view class="size-30 mt32 fw400">
  430. 陪玩用具摆放位置
  431. </view>
  432. <view class="img mt20">
  433. <template v-if="handleImageUrl(detail.playtimeToolsLocation).length > 0">
  434. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  435. @click="previewImage(item)"
  436. v-for="(item, index) in handleImageUrl(detail.playtimeToolsLocation)"
  437. :key="index"></u-image>
  438. </template>
  439. <view v-else class="empty-state">
  440. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  441. <text class="empty-text">暂无图片</text>
  442. </view>
  443. </view>
  444. <view class="size-30 mt24" :style="{color:'#999999'}">
  445. 您希望的互动方式和要求
  446. </view>
  447. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  448. <input type="text" :value="detail.playtimeRequirements || '无'"
  449. :style="{height:'50rpx',fontSize:'30rpx'}">
  450. </view>
  451. </view>
  452. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  453. <!-- 活动区吸毛 -->
  454. <view class="mt32 ml10" v-if="detail.furCleaningService">
  455. <view class="color-A55 size-30 fw400">
  456. 活动区吸毛
  457. </view>
  458. <view class="size-30 mt32 fw400">
  459. 吸毛用品摆放位置
  460. </view>
  461. <view class="img mt20">
  462. <template v-if="handleImageUrl(detail.furCleaningToolsLocation).length > 0">
  463. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  464. @click="previewImage(item)"
  465. v-for="(item, index) in handleImageUrl(detail.furCleaningToolsLocation)"
  466. :key="index"></u-image>
  467. </template>
  468. <view v-else class="empty-state">
  469. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  470. <text class="empty-text">暂无图片</text>
  471. </view>
  472. </view>
  473. <view class="size-30 mt24" :style="{color:'#999999'}">
  474. 请说明吸毛区域及要求
  475. </view>
  476. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  477. <input type="text" :value="detail.furCleaningRequirements || '无'"
  478. :style="{height:'50rpx',fontSize:'30rpx'}">
  479. </view>
  480. </view>
  481. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  482. <!-- 毛发梳理 -->
  483. <view class="mt32 ml10">
  484. <view class="color-A55 size-30 fw400">
  485. 毛发梳理
  486. </view>
  487. <view class="size-30 mt32 fw400">
  488. 毛发梳理用品摆放位置
  489. </view>
  490. <view class="img mt20">
  491. <template v-if="handleImageUrl(detail.groomingToolsLocation).length > 0">
  492. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  493. @click="previewImage(item)"
  494. v-for="(item, index) in handleImageUrl(detail.groomingToolsLocation)"
  495. :key="index"></u-image>
  496. </template>
  497. <view v-else class="empty-state">
  498. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  499. <text class="empty-text">暂无图片</text>
  500. </view>
  501. </view>
  502. <view class="size-30 mt24" :style="{color:'#999999'}">
  503. 请说明毛发梳理要求(: 天数,次数等)
  504. </view>
  505. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  506. <input type="text" :value="detail.groomingRequirements || '无'"
  507. :style="{height:'50rpx',fontSize:'30rpx'}">
  508. </view>
  509. </view>
  510. <view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.groomingService"></view>
  511. <!-- 食具深度清洁 -->
  512. <view class="mt32 ml10">
  513. <view class="color-A55 size-30 fw400">
  514. 食具深度清洁
  515. </view>
  516. <view class="size-30 mt32 fw400">
  517. 需深度清洁的用具及消毒剂摆放位置
  518. </view>
  519. <view class="img mt20">
  520. <template v-if="handleImageUrl(detail.deepCleaningToolsLocation).length > 0">
  521. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  522. @click="previewImage(item)"
  523. v-for="(item, index) in handleImageUrl(detail.deepCleaningToolsLocation)"
  524. :key="index"></u-image>
  525. </template>
  526. <view v-else class="empty-state">
  527. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  528. <text class="empty-text">暂无图片</text>
  529. </view>
  530. </view>
  531. <view class="size-30 mt24" :style="{color:'#999999'}">
  532. 请说明食具/饮水机深度清洁要求(如清洁方式消毒剂使用方式频率等)
  533. </view>
  534. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  535. <input type="text" :value="detail.deepCleaningRemarks || '无'"
  536. :style="{height:'50rpx',fontSize:'30rpx'}">
  537. </view>
  538. </view>
  539. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  540. <!-- 喂药上药 -->
  541. <view class="mt32 ml10">
  542. <view class="color-A55 size-30 fw400">
  543. 喂药上药
  544. </view>
  545. <view class="size-30 mt32 fw400">
  546. 药品摆放位置
  547. </view>
  548. <view class="img mt20">
  549. <template v-if="handleImageUrl(detail.walkDogToolsLocation).length">
  550. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  551. @click="previewImage(item)"
  552. v-for="(item, index) in handleImageUrl(detail.administerMedicationLocation)"
  553. :key="index"></u-image>
  554. </template>
  555. <view v-else class="empty-state">
  556. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  557. <text class="empty-text">暂无图片</text>
  558. </view>
  559. </view>
  560. <view class="size-30 mt24" :style="{color:'#999999'}">
  561. 请说明药品使用方式
  562. </view>
  563. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  564. <input type="text" disabled :value="detail.administerMedicationRemarks || '无'"
  565. :style="{height:'50rpx',fontSize:'30rpx'}">
  566. </view>
  567. </view>
  568. <view class="line" :style="{borderRadius:'1rpx'}"></view>
  569. <!-- 遛狗服务 -->
  570. <view class="mt32 ml10">
  571. <view class="color-A55 size-30 fw400">
  572. 遛狗服务
  573. </view>
  574. <view class="size-30 mt32 fw400">
  575. 遛狗用品摆放位置
  576. </view>
  577. <view class="img mt20">
  578. <template v-if="handleImageUrl(detail.walkDogToolsLocation).length">
  579. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  580. @click="previewImage(item)"
  581. v-for="(item, index) in handleImageUrl(detail.walkDogToolsLocation)" :key="index"></u-image>
  582. </template>
  583. <view v-else class="empty-state">
  584. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  585. <text class="empty-text">暂无图片</text>
  586. </view>
  587. </view>
  588. <!-- 雨天遛狗 -->
  589. <view>
  590. <view class="size-30 mt32 fw400">
  591. 狗狗雨具位置
  592. </view>
  593. <view class="img mt20">
  594. <template v-if="handleImageUrl(detail.dogRainGearLocation).length">
  595. <u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx"
  596. @click="previewImage(item)"
  597. v-for="(item, index) in handleImageUrl(detail.dogRainGearLocation)"
  598. :key="index"></u-image>
  599. </template>
  600. <view v-else class="empty-state">
  601. <up-icon name="info-circle" size="40rpx" color="#999999"></up-icon>
  602. <text class="empty-text">暂无图片</text>
  603. </view>
  604. </view>
  605. <view class="size-30 mt24" :style="{color:'#999999'}">
  606. 下雨天遛狗要求
  607. </view>
  608. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  609. <input type="text" :value="detail.walkDogRainRemark || '无'"
  610. :style="{height:'50rpx',fontSize:'30rpx'}">
  611. </view>
  612. </view>
  613. <!-- 遛狗时长 -->
  614. <view>
  615. <view class="size-30 mt24" :style="{color:'#999999'}">
  616. 遛狗时长
  617. </view>
  618. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  619. <input type="text" :value="detail.walkDogDuration || '无'"
  620. :style="{height:'50rpx',fontSize:'30rpx'}">
  621. </view>
  622. </view>
  623. <!-- 狗狗行为 -->
  624. <view>
  625. <view class="size-30 mt24" :style="{color:'#999999'}">
  626. 狗狗行为
  627. </view>
  628. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  629. <input type="text" :value="detail.dogBehavior || '无'" :style="{height:'50rpx',fontSize:'30rpx'}">
  630. </view>
  631. </view>
  632. <!-- 偏好区域 -->
  633. <view>
  634. <view class="size-30 mt24" :style="{color:'#999999'}">
  635. 偏好区域
  636. </view>
  637. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  638. <input type="text" :value="detail.favoriteRegion || '无'"
  639. :style="{height:'50rpx',fontSize:'30rpx'}">
  640. </view>
  641. </view>
  642. <!-- 偏好路线 -->
  643. <view>
  644. <view class="size-30 mt24" :style="{color:'#999999'}">
  645. 偏好路线
  646. </view>
  647. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  648. <input type="text" :value="detail.favoriteRoute || '无'"
  649. :style="{height:'50rpx',fontSize:'30rpx'}">
  650. </view>
  651. </view>
  652. </view>
  653. <!-- 附加服务备注 -->
  654. <view class="mt32 ml10">
  655. <view class="size-30 mt24" :style="{color:'#999999'}">
  656. 附加服务备注
  657. </view>
  658. <view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
  659. <input type="text" :value="detail.additionalServicesRemarks || '无'"
  660. :style="{height:'50rpx',fontSize:'30rpx'}">
  661. </view>
  662. </view>
  663. </view>
  664. </view>
  665. <!-- 底部按钮 -->
  666. <view class="buttom_ mt60 box-size level" v-if="currentStep > 0">
  667. <view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="prevStep">
  668. 上一页
  669. </view>
  670. <view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
  671. {{ currentStep === 2 ? '完成' : '下一页' }}
  672. </view>
  673. </view>
  674. <view class="buttom mt60 box-size" v-else>
  675. <view class="buttom-item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
  676. 下一页
  677. </view>
  678. </view>
  679. </view>
  680. </template>
  681. <script>
  682. import {
  683. getpetList
  684. } from "@/api/pet/index.js"
  685. import {
  686. getDictList
  687. } from "@/api/system/user.js"
  688. import {
  689. getPetCareByPetId
  690. } from "@/api/order/order.js";
  691. export default {
  692. data() {
  693. return {
  694. detail: {},
  695. show: false,
  696. petTypes: [],
  697. petType: '',
  698. orderId: 0,
  699. currentStep: 0, // 当前步骤,0:喂养要求,1:清洁要求,2:附加服务
  700. }
  701. },
  702. onLoad(options) {
  703. this.orderId = options.petId
  704. this.getPetCareByPetId()
  705. // 如果有指定步骤,则切换到对应步骤
  706. if (options.step) {
  707. this.currentStep = parseInt(options.step)
  708. }
  709. },
  710. methods: {
  711. getPetCareByPetId() {
  712. getPetCareByPetId(this.orderId).then(res => {
  713. this.detail = res.data || {}
  714. })
  715. },
  716. handleImageUrl(url) {
  717. if (!url) return []
  718. return url.split(',')
  719. },
  720. previewImage(url) {
  721. uni.previewImage({
  722. urls: [url]
  723. })
  724. },
  725. // 切换到上一步
  726. prevStep() {
  727. if (this.currentStep > 0) {
  728. this.currentStep--;
  729. }
  730. },
  731. // 切换到下一步
  732. nextStep() {
  733. if (this.currentStep < 2) {
  734. this.currentStep++;
  735. } else {
  736. // 如果是最后一步,可以提交表单或返回上一页
  737. uni.navigateBack();
  738. }
  739. },
  740. }
  741. }
  742. </script>
  743. <style scoped lang="scss">
  744. @import"detail.scss";
  745. @import"steps-custom.scss";
  746. .empty-state {
  747. display: flex;
  748. flex-direction: column;
  749. align-items: center;
  750. justify-content: center;
  751. width: 173rpx;
  752. height: 230rpx;
  753. background-color: #f5f5f5;
  754. border-radius: 8rpx;
  755. }
  756. .empty-text {
  757. margin-top: 10rpx;
  758. font-size: 24rpx;
  759. color: #999999;
  760. }
  761. .empty-state-full {
  762. display: flex;
  763. flex-direction: column;
  764. align-items: center;
  765. justify-content: center;
  766. width: 100%;
  767. height: 200rpx;
  768. background-color: #f9f9f9;
  769. border-radius: 8rpx;
  770. margin-top: 20rpx;
  771. }
  772. .empty-text-full {
  773. margin-top: 20rpx;
  774. font-size: 28rpx;
  775. color: #999999;
  776. }
  777. /* 自定义步骤条样式 */
  778. :deep(.up-steps-custom) {
  779. .u-steps-item__wrapper {
  780. width: 40rpx !important;
  781. height: 40rpx !important;
  782. &__circle {
  783. width: 40rpx !important;
  784. height: 40rpx !important;
  785. background: #E5E5E5;
  786. &__text {
  787. font-size: 24rpx;
  788. }
  789. }
  790. }
  791. .u-steps-item__line {
  792. top: 20rpx !important;
  793. height: 4rpx !important;
  794. background: #E5E5E5 !important;
  795. }
  796. /* 激活状态样式 */
  797. .u-steps-item--active {
  798. .u-steps-item__wrapper__circle {
  799. background: linear-gradient(90deg, #FFA042, #FFD591) !important;
  800. }
  801. }
  802. /* 已完成步骤前的线条样式 */
  803. .u-steps-item--process {
  804. .u-steps-item__line {
  805. background: linear-gradient(90deg, #FFA042, #FFD591) !important;
  806. }
  807. }
  808. }
  809. </style>