edit.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. <template>
  2. <view class="page inspection">
  3. <uni-nav-bar dark :fixed="true" :border="false" background-color="#004098" status-bar left-icon="left" :title="$t('inspection.editWorkOrder')" @clickLeft="navigatorBack()" />
  4. <template v-if="details.length > 0">
  5. <view class="page-top">
  6. <view class="top-content flex-row justify-between align-center">
  7. <view class="align-end">
  8. {{ details[currentTab].deviceName }}
  9. </view>
  10. <view class="align-end">
  11. <!-- 当前设备tab·所有步骤列表·当前步骤·indexId -->
  12. <span class="align-end" style="font-size: 24px">
  13. {{ details[currentTab].allStepsList[details[currentTab].currentStep].indexId }}
  14. </span>
  15. <span class="align-end">/{{ details[currentTab].allStepsList.length }}</span>
  16. </view>
  17. </view>
  18. </view>
  19. <view class="page-content">
  20. <scroll-view class="tabs-container" :scroll-x="true" :scroll-left="tabScrollLeft" scroll-with-animation ref="scrollContainerRef">
  21. <uv-tabs ref="tabsRef" :current="currentTab" :list="tabs" :line-color="'#0082CC'" :active-style="{ color: '#004098', fontWeight: '600' }" @click="onClickItem"></uv-tabs>
  22. <uni-segmented-control
  23. ref="segmentedControlRef"
  24. class="justify-start"
  25. :current="currentTab"
  26. :values="tabs"
  27. :style-type="'text'"
  28. :active-color="'#0082CC'"
  29. @clickItem="onClickItem"
  30. v-if="false"
  31. ></uni-segmented-control>
  32. </scroll-view>
  33. <swiper class="swiper-container" :current="currentTab" duration="100" @change="onSwiperChanged($event)">
  34. <swiper-item v-for="detail in details">
  35. <view class="step-section">
  36. <!-- 点击查看巡检项目 -->
  37. <view class="step-all" @click="allStepShow">
  38. {{ $t('inspection.clickView') }}
  39. {{ detail.deviceName }}
  40. {{ $t('inspection.proj') }}
  41. <view class="border"></view>
  42. </view>
  43. <!-- 巡检项 -->
  44. <view class="step-form">
  45. <view class="step-title">
  46. {{ currentStepInfo.item }}
  47. <view class="border"></view>
  48. </view>
  49. <!-- 巡检标准 -->
  50. <view class="step-standard">
  51. <span>{{ $t('inspection.standard') }}:</span>
  52. {{ currentStepInfo.standard }}
  53. </view>
  54. <!-- 巡检标准文件 -->
  55. <view class="step-standard file" v-if="currentStepInfo.urls">
  56. <view class="file-title">
  57. {{ $t('inspection.standardFile') }}
  58. </view>
  59. <view class="file-media">
  60. <video class="video" id="myVideo" :src="currentStepInfo.urls" controls v-if="currentStepInfo.urls && currentStepInfo.urls.includes('mp4')"></video>
  61. <uni-file-picker
  62. class="pic"
  63. file-mediatype="image"
  64. mode="grid"
  65. :auto-upload="false"
  66. :limit="1"
  67. :imageStyles="{ border: false }"
  68. v-model="currentStepInfo.urlsList"
  69. readonly
  70. v-if="currentStepInfo.urls && (currentStepInfo.urls.includes('jpg') || currentStepInfo.urls.includes('png'))"
  71. >
  72. <template #default>
  73. <view class="flex-col align-center justify-center" style="width: 60px; height: 60px; background-color: #f4f4f4">
  74. <uni-icons type="plusempty" color="#ACACAC" size="12" />
  75. </view>
  76. </template>
  77. </uni-file-picker>
  78. </view>
  79. </view>
  80. <view class="step-form-item">
  81. <!-- 是否异常 -->
  82. <view class="form-title">
  83. {{ $t('inspection.isAbnormal') }}
  84. </view>
  85. <view class="form-btns flex-row justify-center">
  86. <button type="default" class="abnormal-btn" :class="{ active: currentStepInfo.ifNormal == true }" @click="() => (currentStepInfo.ifNormal = true)">
  87. {{ $t('inspection.normal') }}
  88. <uni-icons type="checkmarkempty" color="#004098" v-if="currentStepInfo.ifNormal == true"></uni-icons>
  89. </button>
  90. <button type="default" class="abnormal-btn" :class="{ active: currentStepInfo.ifNormal == false }" @click="() => (currentStepInfo.ifNormal = false)">
  91. {{ $t('inspection.abnormal') }}
  92. <uni-icons type="checkmarkempty" color="#004098" v-if="currentStepInfo.ifNormal == false"></uni-icons>
  93. </button>
  94. </view>
  95. <!-- 异常描述 -->
  96. <view class="form-remark flex-row justify-between align-center">
  97. <view class="form-title align-center">
  98. <span v-if="currentStepInfo.ifNormal == false" style="color: #ff3b36">*</span>
  99. {{ $t('inspection.abnormalDesc') }}
  100. </view>
  101. <uni-easyinput
  102. style="text-align: right"
  103. type="textarea"
  104. :autoHeight="true"
  105. :inputBorder="false"
  106. :clearable="false"
  107. :styles="{ disableColor: '#fff' }"
  108. v-model="currentStepInfo.description"
  109. :placeholder="$t('operation.PleaseFillIn')"
  110. />
  111. </view>
  112. <!-- 图片 -->
  113. <view class="flex-row">
  114. <view class="form-title">
  115. {{ $t('general.picture') }}
  116. </view>
  117. <uni-file-picker
  118. file-mediatype="image"
  119. mode="grid"
  120. :auto-upload="false"
  121. :limit="1"
  122. :imageStyles="{ border: false }"
  123. v-model="currentStepInfo.picUrlList"
  124. @select="upload($event)"
  125. >
  126. <template #default>
  127. <view class="flex-col align-center justify-center" style="width: 60px; height: 60px; background-color: #f4f4f4">
  128. <uni-icons type="plusempty" color="#ACACAC" size="12" />
  129. </view>
  130. </template>
  131. </uni-file-picker>
  132. </view>
  133. </view>
  134. </view>
  135. <view class="step-btns flex-row justify-end align-center">
  136. <button type="primary" :plain="true" @click="onFault" v-if="currentStepInfo.ifNormal == false">
  137. {{ $t('home.faultReporting') }}
  138. </button>
  139. <!-- 上一步 -->
  140. <button type="primary" :plain="true" v-if="currentStepInfo.indexId > 1" @click="onLast">
  141. {{ $t('inspection.last') }}
  142. </button>
  143. <!-- 下一步 -->
  144. <button type="primary" :plain="false" v-if="currentStepInfo.indexId != detail.allStepsList.length" @click="onNext()">{{ $t('inspection.next') }}</button>
  145. <button type="primary" :plain="false" v-if="currentStepInfo.indexId == detail.allStepsList.length" @click="onNext('finished')">
  146. {{ $t('inspection.finish') }}
  147. </button>
  148. </view>
  149. </view>
  150. </swiper-item>
  151. </swiper>
  152. </view>
  153. </template>
  154. </view>
  155. <!-- 所有步骤弹窗 -->
  156. <uni-popup ref="allStepPopRef" background-color="#fff" type="top" borderRadius="0 0 10px 10px">
  157. <view class="popup-content flex-col">
  158. <view class="step-route-desc" v-if="details[currentTab].routeDesc">
  159. <view class="popup-step-title">
  160. <uni-section class="desc-section" :title="details[currentTab].routeName" type="line"></uni-section>
  161. </view>
  162. <view class="route-desc-content">
  163. {{ details[currentTab].routeDesc }}
  164. </view>
  165. <view class="step-border"></view>
  166. </view>
  167. <view class="step-all-content" :class="{ 'has-route': details[currentTab].routeDesc }">
  168. <view class="popup-step-title">
  169. <uni-section title="巡检项" type="line"></uni-section>
  170. </view>
  171. <uni-steps
  172. :options="details[currentTab].allStepsList"
  173. active-color="#004098"
  174. active-icon="smallcircle-filled"
  175. :active="details[currentTab].currentStep"
  176. direction="column"
  177. />
  178. </view>
  179. </view>
  180. </uni-popup>
  181. </template>
  182. <script setup>
  183. import { ref, reactive, onMounted, computed, getCurrentInstance, nextTick } from 'vue';
  184. import { onLoad, onReady } from '@dcloudio/uni-app';
  185. import { getInspectOrderGet, getInspectOrderGetDetails, inspectOrderWrite } from '@/api/inspection.js';
  186. import { useDataDictStore } from '@/store/modules/dataDict';
  187. import { reloginByUserId } from '@/utils/auth';
  188. import { uploadFile } from '@/api';
  189. // 引用全局变量$t
  190. const { appContext } = getCurrentInstance();
  191. const t = appContext.config.globalProperties.$t;
  192. // 巡检工单id
  193. const workOrderId = ref('');
  194. // 巡检工单tab列表
  195. const tabs = ref([]);
  196. // 巡检工单详情
  197. const details = ref([]);
  198. // 巡检工单详情原始数据
  199. const originalDetails = ref([]);
  200. // 获取巡检工单详情
  201. const getData = async () => {
  202. await getInspectOrderGetDetails({
  203. id: workOrderId.value
  204. }).then((res) => {
  205. console.log('getInspectOrderGetDetails', res);
  206. // 遍历res.data数组中orderDetails数组
  207. res.data.map((item) => {
  208. console.log('🚀 ~ getData ~ item:', item);
  209. // 存放所有路径
  210. // 存放所有步骤
  211. item.allStepsList = [];
  212. // 默认当前步骤为0
  213. item.currentStep = 0;
  214. const ifNormalArr = [];
  215. item.orderDetails.map((detail) => {
  216. // 将picUrl和urls字段组成数组
  217. detail.picUrlList = [];
  218. detail.urlsList = [];
  219. if (detail.picUrl) {
  220. detail.picUrlList.push({
  221. url: detail.picUrl
  222. });
  223. }
  224. if (detail.urls) {
  225. detail.urlsList.push({
  226. url: detail.urls
  227. });
  228. }
  229. // 存放所有步骤
  230. item.allStepsList.push({
  231. title: detail.item,
  232. indexId: detail.indexId
  233. });
  234. // 存放是否异常
  235. ifNormalArr.push(detail.ifNormal);
  236. });
  237. // 判断所有步骤是否异常是否全部选择
  238. if (ifNormalArr.every((item) => item != null)) {
  239. // 全部选择 - 将当前步骤设置为最后一步
  240. item.currentStep = ifNormalArr.length - 1;
  241. } else {
  242. // 未全部选择 - 将当前步骤设置为未选择异常的步骤
  243. item.currentStep = ifNormalArr.findIndex((item) => item == null);
  244. }
  245. });
  246. details.value = res.data;
  247. console.log('details.value', details.value);
  248. // 备份原始数据
  249. originalDetails.value = JSON.parse(JSON.stringify(res.data));
  250. // 根据原始数据生成tabs选项卡数据,避免填报时数据变化影响tab状态
  251. const tabsData = originalDetails.value.map((item) => {
  252. // 判断Tab是否已完成
  253. const isCompleted = isTabCompleted(item);
  254. return {
  255. name: item.deviceName, // 必备字段,展示的tab名称
  256. textStyle: isCompleted ? '' : { color: '#e96900' } //手动修改组件添加的字段,用于控制文字颜色
  257. };
  258. });
  259. tabs.value = tabsData;
  260. console.log('🚀 ~ getData ~ tabs.value:', tabs.value);
  261. });
  262. };
  263. // 当前巡检步骤信息
  264. const currentStepInfo = computed(() => details.value[currentTab.value].orderDetails[details.value[currentTab.value].currentStep]);
  265. // --------- 巡检工单tab ---------
  266. // 当前巡检tab
  267. const currentTab = ref(0);
  268. // 巡检工单tab滚动容器
  269. const scrollContainerRef = ref(null);
  270. // 巡检工单tab segmented-control
  271. const segmentedControlRef = ref(null);
  272. // 巡检工单tab滚动容器 scroll位置
  273. const tabScrollLeft = ref(0);
  274. const tabsRef = ref(null);
  275. // 判断Tab是否已完成的方法
  276. const isTabCompleted = (item) => {
  277. // 根据实际业务逻辑判断,这里假设当前Tab索引小于当前步骤则视为已完成
  278. const { allStepsList, currentStep, orderDetails } = item;
  279. if (currentStep < allStepsList.length - 1) return false; // 如果当前步骤小于总步骤数,则说明未完成
  280. // 如果当前步骤等于总步骤数,且最后一步的ifNormal字段不为null,则说明已完成
  281. const lastStep = orderDetails[orderDetails.length - 1];
  282. return lastStep.ifNormal !== null;
  283. };
  284. // 点击切换tab
  285. const onClickItem = async (e) => {
  286. // console.log("🚀 ~ onClickItem ~ e:", e);
  287. if (currentTab.value !== e.index) {
  288. currentTab.value = e.index;
  289. }
  290. };
  291. // Swiper滑动切换Tab时,同步滚动Tab到中心
  292. const onSwiperChanged = async (e) => {
  293. // console.log("🚀 ~ onSwiperChanged ~ e:", e);
  294. const newTabIndex = e.detail.current;
  295. currentTab.value = newTabIndex;
  296. };
  297. // -------------------所有步骤弹窗-------------------
  298. const allStepPopRef = ref(null);
  299. const allStepShow = () => {
  300. allStepPopRef.value.open();
  301. };
  302. // 故障上报
  303. const onFault = () => {
  304. uni.navigateTo({
  305. url: '/pages/fault/create',
  306. success() {
  307. const data = {
  308. id: currentStepInfo.value.deviceId,
  309. deptId: currentStepInfo.value.deptId,
  310. deviceCode: details.value[currentTab.value].deviceCode,
  311. deviceName: details.value[currentTab.value].deviceName
  312. };
  313. setTimeout(() => {
  314. uni.$emit('inspection-falut', data);
  315. }, 300);
  316. }
  317. });
  318. };
  319. // 上一步
  320. const onLast = () => {
  321. details.value[currentTab.value].currentStep -= 1;
  322. console.log('🚀 ~ onLast ~ details.value[currentTab.value].:', details.value[currentTab.value]);
  323. };
  324. // 下一步
  325. const onNext = (finished) => {
  326. // 判断当前步骤是否异常
  327. if (currentStepInfo.value.ifNormal == null) {
  328. uni.showToast({
  329. title: t('operation.PleaseSelect') + t('inspection.isAbnormal'),
  330. icon: 'none'
  331. });
  332. return;
  333. }
  334. // 判断当前步骤是否填写异常描述
  335. console.log('🚀 ~ onNext ~ currentStepInfo.value:', currentStepInfo.value);
  336. if (currentStepInfo.value.ifNormal == false && (currentStepInfo.value.description == '' || currentStepInfo.value.description == null)) {
  337. uni.showToast({
  338. title: t('operation.PleaseFillIn') + t('inspection.abnormalDesc'),
  339. icon: 'none'
  340. });
  341. return;
  342. }
  343. inspectOrderWrite(workOrderId.value, {
  344. description: currentStepInfo.value.description,
  345. deviceId: currentStepInfo.value.deviceId,
  346. ifNormal: currentStepInfo.value.ifNormal,
  347. indexId: currentStepInfo.value.indexId,
  348. picUrl: currentStepInfo.value.picUrl
  349. }).then((res) => {
  350. if (res.code == 0) {
  351. if (finished) {
  352. uni.showToast({ title: t('general.submitSuccess'), icon: 'none' });
  353. // navigatorBack();
  354. } else {
  355. details.value[currentTab.value].currentStep += 1;
  356. }
  357. } else {
  358. uni.showToast({ title: res.msg, icon: 'none' });
  359. }
  360. });
  361. };
  362. const getDataInfo = async () => {
  363. await getInspectOrderGet({
  364. id: workOrderId.value
  365. }).then((res) => {
  366. // 将res.data.details数组中的deviceCode赋值给details.value数组中的对应deviceId 的 deviceCode
  367. res.data.details.map((item) => {
  368. const device = details.value.find((detail) => detail.deviceId == item.deviceId);
  369. if (device) {
  370. device.deviceCode = item.deviceCode;
  371. }
  372. });
  373. console.log('details.value', details.value);
  374. });
  375. };
  376. // 上传图片
  377. const upload = async (event) => {
  378. for (const path of event.tempFilePaths) {
  379. currentStepInfo.value.picUrl = (await uploadFile(path)).data;
  380. currentStepInfo.value.picUrlList.push({
  381. url: currentStepInfo.value.picUrl
  382. });
  383. }
  384. };
  385. const navigatorBack = () => {
  386. uni.navigateBack();
  387. };
  388. onLoad(async (option) => {
  389. console.log('🚀 ~ inspection edit ~ onLoad:');
  390. await reloginByUserId(option.reloginUserId);
  391. workOrderId.value = option.id;
  392. await getData();
  393. await getDataInfo();
  394. console.log('🚀 onLoad ~ tabs.value:', tabs.value);
  395. });
  396. onReady(async () => {
  397. console.log('🚀 ~ inspection edit ~ onReady:');
  398. });
  399. onMounted(() => {
  400. console.log('🚀 ~ inspection edit ~ onMounted:');
  401. });
  402. </script>
  403. <style lang="scss" scoped>
  404. @import '@/style/work-order-detail.scss';
  405. // 补充自定义Tab项样式,确保宽度正常(避免Tab过窄或过宽)
  406. :deep(.uni-segmented-control__item) {
  407. .tab-item {
  408. width: max-content;
  409. padding: 0 16px; // 增加Tab内边距,避免文字拥挤
  410. height: 36px; // 固定Tab高度,确保对齐
  411. line-height: 36px; // 垂直居中
  412. }
  413. }
  414. :deep(.custom-finish-tab) {
  415. .uv-tabs__wrapper__nav__item__text {
  416. // color: #79C278 !important;
  417. }
  418. }
  419. .page {
  420. padding: 0;
  421. position: relative;
  422. }
  423. .page-top {
  424. background: #004098;
  425. width: 100%;
  426. box-sizing: border-box;
  427. padding: 10px 20px;
  428. }
  429. .top-content {
  430. padding-bottom: 30px;
  431. box-sizing: border-box;
  432. width: 100%;
  433. min-height: 70px;
  434. font-weight: bold;
  435. font-size: 16px;
  436. color: #ffffff;
  437. line-height: 28px;
  438. }
  439. .page-content {
  440. width: 100%;
  441. height: calc(100% - 100px);
  442. margin-top: -30px;
  443. background: #fff;
  444. background: #ffffff;
  445. border-radius: 20px 20px 0px 0px;
  446. // z-index: 1;
  447. }
  448. .tabs-container {
  449. position: relative;
  450. width: 100%;
  451. white-space: nowrap;
  452. padding: 20px;
  453. box-sizing: border-box;
  454. }
  455. :deep(.segmented-control) {
  456. overflow: unset;
  457. }
  458. :deep(.segmented-control__item) {
  459. uni-view {
  460. width: max-content;
  461. padding: 10px;
  462. }
  463. }
  464. .swiper-container {
  465. position: relative;
  466. width: 100%;
  467. height: calc(100% - 110px);
  468. padding: 0 20px;
  469. box-sizing: border-box;
  470. }
  471. .step-section {
  472. // font-weight: 600;
  473. width: 100%;
  474. height: 100%;
  475. font-size: 14px;
  476. color: #333333;
  477. position: relative;
  478. }
  479. .step-form {
  480. height: calc(100% - 50px - 30px - 10px - var(--status-bar-height));
  481. margin-bottom: 60px;
  482. overflow-y: auto;
  483. }
  484. .step-all {
  485. font-weight: 600;
  486. font-size: 14px;
  487. color: #004098;
  488. position: relative;
  489. padding-left: 10px;
  490. margin-bottom: 10px;
  491. }
  492. .step-title {
  493. position: relative;
  494. font-weight: 600;
  495. padding-left: 10px;
  496. margin-bottom: 10px;
  497. }
  498. .border {
  499. width: 2px;
  500. height: 14px;
  501. background-color: #004098;
  502. position: absolute;
  503. left: 0;
  504. top: 3px;
  505. }
  506. .step-standard {
  507. padding-left: 10px;
  508. margin-bottom: 10px;
  509. span {
  510. font-weight: 600;
  511. }
  512. }
  513. .file-media {
  514. margin: 10px 0;
  515. .pic,
  516. .video {
  517. width: 100px !important;
  518. height: 100px !important;
  519. }
  520. :deep(.file-picker__box) {
  521. width: 100px !important;
  522. height: 100px !important;
  523. }
  524. }
  525. .abnormal-btn {
  526. width: 45%;
  527. height: 35px;
  528. line-height: 35px;
  529. margin-top: 10px;
  530. font-weight: 600;
  531. font-size: 14px;
  532. color: #666666;
  533. background: #f3f5f9;
  534. border-radius: 4px;
  535. position: relative;
  536. &.active {
  537. background: #e4effe;
  538. color: #004098;
  539. }
  540. .uni-icons {
  541. position: absolute;
  542. right: 20px;
  543. }
  544. }
  545. .form-title {
  546. margin-right: 15px;
  547. }
  548. .form-remark {
  549. height: 50px;
  550. border-bottom: 1px dashed #cacccf;
  551. margin-bottom: 20px;
  552. margin-top: 10px;
  553. }
  554. :deep(.uni-easyinput__content-textarea) {
  555. min-height: inherit;
  556. margin: 10px;
  557. }
  558. .step-btns {
  559. // margin: 10px;
  560. height: 50px;
  561. width: 100%;
  562. background: #ffffff;
  563. position: fixed;
  564. bottom: 0;
  565. left: 0;
  566. z-index: 2;
  567. padding-bottom: var(--status-bar-height);
  568. uni-button {
  569. width: calc(33.3% - 20px);
  570. font-size: 14px;
  571. height: 32px;
  572. line-height: 32px;
  573. }
  574. }
  575. .popup-content {
  576. width: 100%;
  577. min-height: 300px;
  578. max-height: 500px;
  579. overflow-y: auto;
  580. position: relative;
  581. box-sizing: border-box;
  582. padding: 20px;
  583. margin-top: var(--status-bar-height);
  584. }
  585. .step-route-desc {
  586. position: fixed;
  587. top: 0px;
  588. left: 0px;
  589. padding: 10px 20px;
  590. padding-bottom: 0;
  591. background: #f2f4f8;
  592. color: #004098;
  593. font-size: 14px;
  594. z-index: 2;
  595. box-shadow: 0px -2px 10px 0px rgba(0, 0, 0, 0.1);
  596. // max-height: 130px;
  597. overflow: hidden;
  598. }
  599. .route-desc-content {
  600. width: 100%;
  601. max-height: 100px;
  602. overflow-y: auto;
  603. }
  604. .step-border {
  605. border-bottom: 1px dashed #cacccf;
  606. padding-top: 10px;
  607. width: 100%;
  608. }
  609. .step-all-content {
  610. &.has-route {
  611. margin-top: 150px;
  612. }
  613. }
  614. .popup-step-title {
  615. :deep(.uni-section) {
  616. padding: 10px 0;
  617. }
  618. :deep(.uni-section__content-title) {
  619. font-weight: 600;
  620. }
  621. .desc-section {
  622. background: #f2f4f8;
  623. }
  624. }
  625. :deep(.uni-steps__column-text) {
  626. height: 38px;
  627. font-weight: 600;
  628. font-size: 14px;
  629. color: #666666;
  630. line-height: 30px;
  631. display: flex;
  632. // justify-content: center;
  633. border: none;
  634. }
  635. :deep(.uni-steps__column-title) {
  636. color: #666666;
  637. }
  638. :deep(.uni-steps__column-line-item) {
  639. color: #666666;
  640. height: 50px !important;
  641. }
  642. :deep(.uni-steps__column-circle) {
  643. color: #666666;
  644. height: 10px;
  645. width: 10px;
  646. }
  647. </style>