sampleList.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <!-- 样品列表页面 -->
  2. <template>
  3. <view class="mainBox">
  4. <uni-nav-bar
  5. fixed="true"
  6. statusBar="true"
  7. left-icon="back"
  8. :title="title"
  9. @clickLeft="handleClose"
  10. >
  11. </uni-nav-bar>
  12. <!-- <view class="nav-placeholder"></view> -->
  13. <view class="wrapper">
  14. <scroll-view class="scroll-wrapper" scroll-y>
  15. <view class="sample-list">
  16. <view
  17. class="sample-item"
  18. v-for="(sample, sampleIndex) in projectId
  19. ? tableData.filter((item) => item.id == projectId)
  20. : tableData"
  21. :key="sampleIndex"
  22. >
  23. <view class="sample-header" @click="toggleExpand(sampleIndex)">
  24. <view class="sample-info">
  25. <view class="info-row">
  26. <text class="label">编码:</text>
  27. <text class="value">{{ sample.categoryCode }}</text>
  28. </view>
  29. <view class="info-row">
  30. <text class="label">名称:</text>
  31. <text class="value">{{ sample.categoryName }}</text>
  32. </view>
  33. <view class="info-row" v-if="sample.batchNo">
  34. <text class="label">批次号:</text>
  35. <text class="value">{{ sample.batchNo }}</text>
  36. </view>
  37. <view class="info-row" v-if="sample.packageNo">
  38. <text class="label">包装编码:</text>
  39. <text class="value">{{ sample.packageNo }}</text>
  40. </view>
  41. </view>
  42. <view
  43. class="expand-arrow"
  44. :class="{ expanded: expandedItems[sampleIndex] }"
  45. >›</view
  46. >
  47. </view>
  48. <view
  49. class="quality-table-wrapper"
  50. v-if="expandedItems[sampleIndex]"
  51. >
  52. <scroll-view class="quality-table-scroll" scroll-x>
  53. <view class="quality-table">
  54. <view class="table-header">
  55. <view class="table-cell">质检项名称</view>
  56. <view class="table-cell">质检内容</view>
  57. <view class="table-cell">质检结果</view>
  58. <view class="table-cell">质检方案编码</view>
  59. <view class="table-cell">质检方案名称</view>
  60. <view class="table-cell">质检类型</view>
  61. <view class="table-cell">工艺参数</view>
  62. </view>
  63. <view class="table-body">
  64. <view
  65. class="table-row"
  66. v-for="(
  67. quality, qualityIndex
  68. ) in sample.qualitySampleTemplateList"
  69. :key="qualityIndex"
  70. >
  71. <view class="table-cell">
  72. <text
  73. class="cell-text"
  74. :class="{ warn: quality.qualityResults === 2 }"
  75. >{{ quality.inspectionName }}</text
  76. >
  77. </view>
  78. <view class="table-cell">
  79. <u-input
  80. v-model="quality.qualityResultContent"
  81. placeholder="请输入"
  82. border="none"
  83. @change="
  84. clientEnvironmentId == 10
  85. ? newHandleInput(
  86. sample.qualitySampleTemplateList,
  87. sampleIndex,
  88. )
  89. : handleInput(
  90. quality,
  91. quality.qualityResultContent,
  92. tableData,
  93. )
  94. "
  95. :class="{ warn: quality.qualityResults === 2 }"
  96. :disabled="
  97. type === 'detail' ||
  98. ((!pageName || pageName == 'myList') &&
  99. sample.correlationId)
  100. "
  101. >
  102. <template #suffix v-if="quality.unitName">
  103. <text class="unit">{{ quality.unitName }}</text>
  104. </template>
  105. </u-input>
  106. </view>
  107. <view
  108. class="table-cell"
  109. v-if="
  110. ['炉水电导率', '给水电导率'].includes(
  111. quality.inspectionName,
  112. )
  113. "
  114. ></view>
  115. <view class="table-cell" v-else>
  116. <u-input
  117. disabled
  118. placeholder=" "
  119. v-if="
  120. type === 'detail' ||
  121. ((!pageName || pageName == 'myList') &&
  122. sample.correlationId)
  123. "
  124. border="surround"
  125. :value="
  126. quality.qualityResults &&
  127. qualityResultsList.find(
  128. (item) => item.value == quality.qualityResults,
  129. ).text
  130. "
  131. >
  132. </u-input>
  133. <uni-data-picker
  134. v-else
  135. v-model="quality.qualityResults"
  136. placeholder="请选择"
  137. :localdata="qualityResultsList"
  138. @change="qualityResultsListChange(tableData)"
  139. :clear-icon="false"
  140. >
  141. </uni-data-picker>
  142. </view>
  143. <view class="table-cell">
  144. <text
  145. class="cell-text"
  146. :class="{ warn: quality.qualityResults === 2 }"
  147. >{{ quality.qualitySchemeTemplateCode }}</text
  148. >
  149. </view>
  150. <view class="table-cell">
  151. <text
  152. class="cell-text"
  153. :class="{ warn: quality.qualityResults === 2 }"
  154. >{{ quality.qualitySchemeTemplateName }}</text
  155. >
  156. </view>
  157. <view class="table-cell">
  158. <text
  159. class="cell-text"
  160. :class="{ warn: quality.qualityResults === 2 }"
  161. >{{ quality.categoryLevelClassName }}</text
  162. >
  163. </view>
  164. <view class="table-cell parameter-cell">
  165. <text
  166. class="cell-text"
  167. :class="{ warn: quality.qualityResults === 2 }"
  168. >
  169. <text v-if="quality.textType == 3">
  170. {{ quality.symbol }}
  171. {{ quality.minValue }}-{{ quality.maxValue }}
  172. </text>
  173. <text v-else-if="quality.textType == 8">
  174. 标准值:{{ quality.defaultValue
  175. }}{{ quality.unitName || "" }} 下限:{{
  176. quality.minValue || 0
  177. }}{{ quality.unitName || "" }} 上限:{{
  178. quality.minValue || 0
  179. }}{{ quality.unitName || "" }}
  180. </text>
  181. <text v-else>
  182. {{ quality.symbol }} {{ quality.defaultValue }}
  183. </text>
  184. <text v-if="quality.textType != 8">
  185. {{ quality.unitName }}</text
  186. >
  187. </text>
  188. </view>
  189. </view>
  190. </view>
  191. </view>
  192. </scroll-view>
  193. </view>
  194. <view class="quality-summary" v-if="sample.qualityResults">
  195. <view style="min-width: 10px; margin-left: 16rpx">
  196. <text>
  197. {{
  198. sample.status == 1
  199. ? "已检"
  200. : sample.status == 2
  201. ? "已派单"
  202. : sample.status == 3
  203. ? "已请托"
  204. : "待检"
  205. }}
  206. </text>
  207. </view>
  208. <view>
  209. <text class="summary-label">样品质检结果:</text>
  210. <text
  211. class="summary-value"
  212. :class="getQualityResultClass(sample.qualityResults)"
  213. >
  214. {{ formatQualityResult(sample.qualityResults) }}
  215. </text>
  216. </view>
  217. </view>
  218. </view>
  219. <view class="empty-state" v-if="!tableData || tableData.length === 0">
  220. <text>暂无数据</text>
  221. </view>
  222. </view>
  223. </scroll-view>
  224. <view style="height: 84rpx"></view>
  225. <view class="footerButton">
  226. <u-button @click="handleClose" type="default" text="返回"></u-button>
  227. <u-button
  228. v-if="type != 'view' && !isCorrelationId && workData.status != 1"
  229. type="primary"
  230. @click="save"
  231. text="保存"
  232. ></u-button>
  233. </view>
  234. </view>
  235. <u-toast ref="uToast"></u-toast>
  236. </view>
  237. </template>
  238. <script>
  239. import {
  240. getById,
  241. update,
  242. queryQualityInventory,
  243. } from "@/api/inspectionWork/index.js";
  244. import { handleInput, qualityResultsListChange } from "./unit.js";
  245. export default {
  246. components: {},
  247. data() {
  248. return {
  249. title: "样品列表",
  250. rowIndex: 0,
  251. type: "",
  252. pageName: "",
  253. tableData: [],
  254. handleInput,
  255. qualityResultsListChange,
  256. isCorrelationId: false,
  257. expandedItems: {},
  258. workData: {},
  259. inventoryList: [],
  260. projectId: "",
  261. qualityResultsList: [
  262. {
  263. text: "合格",
  264. value: 1,
  265. },
  266. {
  267. text: "不合格",
  268. value: 2,
  269. },
  270. {
  271. text: "让步接收",
  272. value: 3,
  273. },
  274. ],
  275. };
  276. },
  277. onLoad(data) {
  278. if (data.workId) {
  279. this.projectId = data.projectId;
  280. this.type = data.type || "";
  281. this.pageName = data.pageName || "";
  282. this.clientEnvironmentId =uni.getStorageSync("userInfo").clientEnvironmentId
  283. getById(data.workId).then((res) => {
  284. this.workData = res;
  285. if (data.projectId) {
  286. const qualitySampleList = res.qualitySampleList.filter(
  287. (item) => item.id == data.projectId,
  288. );
  289. if (
  290. qualitySampleList[0].correlationId &&
  291. ![
  292. "myInspectionProjectEntrusted",
  293. "myInspectionProjectTask",
  294. ].includes(this.pageName)
  295. ) {
  296. this.isCorrelationId = true;
  297. } else {
  298. qualitySampleList[0].status = 1;
  299. }
  300. } else {
  301. this.isCorrelationId = true;
  302. res.qualitySampleList.forEach((item) => {
  303. if (
  304. !item.correlationId ||
  305. [
  306. "myInspectionProjectEntrusted",
  307. "myInspectionProjectTask",
  308. ].includes(this.pageName)
  309. ) {
  310. this.isCorrelationId = false;
  311. item.status = 1;
  312. }
  313. });
  314. }
  315. this.tableData = res.qualitySampleList.map((item) => {
  316. if (
  317. !item.qualitySampleTemplateList.length &&
  318. res.templateList.length
  319. ) {
  320. item.qualitySampleTemplateList = JSON.parse(
  321. JSON.stringify(res.templateList),
  322. );
  323. }
  324. return item;
  325. });
  326. });
  327. this.expandedItems = {};
  328. this.getQueryQualityInventory(data.workId);
  329. }
  330. },
  331. methods: {
  332. async getQueryQualityInventory(workId) {
  333. const res = await queryQualityInventory({
  334. qualityWorkerId: workId,
  335. size: -1,
  336. });
  337. if (res.list.length > 0) {
  338. this.inventoryList = res.list;
  339. }
  340. },
  341. handleClose() {
  342. uni.navigateBack();
  343. },
  344. handleConfirm() {
  345. this.tableData.forEach((item) => {
  346. if (!this.pageName && item.correlationId) {
  347. return;
  348. }
  349. item.status = 1;
  350. });
  351. const pages = getCurrentPages();
  352. const prevPage = pages[pages.length - 2];
  353. if (prevPage) {
  354. prevPage.$vm.handleConfirm &&
  355. prevPage.$vm.handleConfirm(this.tableData, this.rowIndex);
  356. }
  357. uni.navigateBack();
  358. },
  359. toggleExpand(index) {
  360. this.$set(this.expandedItems, index, !this.expandedItems[index]);
  361. },
  362. setNum() {
  363. let sampleQualifiedNumber = 0; // 样品合格数
  364. let sampleNoQualifiedNumber = 0; // 样品不合格数
  365. let sampleQualificationRate = 0; //样品合格率
  366. let sampleNoQualificationRate = 0; //样品不合格率
  367. let qualifiedNumber = 0; // 合格数
  368. let noQualifiedNumber = 0; // 不合格数
  369. let qualificationRate = 0; // 合格率
  370. let noQualificationRate = 0; //不合格率
  371. this.tableData.forEach((item) => {
  372. if (item.qualityResults == 2) {
  373. sampleNoQualifiedNumber += item.measureQuantity;
  374. }
  375. });
  376. sampleQualifiedNumber =
  377. this.workData.sampleQuantity - sampleNoQualifiedNumber;
  378. sampleQualificationRate =
  379. ((sampleQualifiedNumber / this.workData.sampleQuantity) * 100).toFixed(
  380. 2,
  381. ) || "";
  382. sampleNoQualificationRate =
  383. (
  384. (sampleNoQualifiedNumber / this.workData.sampleQuantity) *
  385. 100
  386. ).toFixed(2) || "";
  387. if (this.workData.qualityMode == 2 && this.workData.qualityResults == 2) {
  388. qualifiedNumber = sampleQualifiedNumber;
  389. noQualifiedNumber = this.workData.total - sampleQualifiedNumber;
  390. } else {
  391. qualifiedNumber = this.workData.total - sampleNoQualifiedNumber;
  392. noQualifiedNumber = sampleNoQualifiedNumber;
  393. }
  394. qualificationRate =
  395. ((qualifiedNumber / this.workData.total) * 100).toFixed(2) || "";
  396. noQualificationRate =
  397. ((noQualifiedNumber / this.workData.total) * 100).toFixed(2) || "";
  398. this.workData.sampleQualifiedNumber = sampleQualifiedNumber;
  399. this.workData.sampleNoQualifiedNumber = sampleNoQualifiedNumber;
  400. this.workData.sampleQualificationRate = sampleQualificationRate;
  401. this.workData.sampleNoQualificationRate = sampleNoQualificationRate;
  402. this.workData.qualifiedNumber = qualifiedNumber;
  403. this.workData.noQualifiedNumber = noQualifiedNumber;
  404. this.workData.qualificationRate = qualificationRate;
  405. this.workData.noQualificationRate = noQualificationRate;
  406. // qualityMode
  407. },
  408. /* 保存编辑 */
  409. save() {
  410. this.workData.isUpdate = 1;
  411. this.setNum();
  412. let params = {
  413. ...this.workData,
  414. sampleList: this.tableData,
  415. planTemplateList: this.workData.templateList,
  416. templateList: this.workData.templateList,
  417. qualityInventoryList: this.inventoryList,
  418. };
  419. update(params)
  420. .then((msg) => {
  421. uni.$emit("successInit");
  422. this.back();
  423. })
  424. .catch((e) => {});
  425. },
  426. formatQualityResult(value) {
  427. const map = {
  428. 1: "合格",
  429. 2: "不合格",
  430. 3: "让步接收",
  431. };
  432. return map[value] || "";
  433. },
  434. //宇信特殊处理
  435. newHandleInput(arr, index) {
  436. let num = arr.find(
  437. (item) => item.inspectionName == "炉水电导率",
  438. )?.qualityResultContent;
  439. let num1 = arr.find(
  440. (item) => item.inspectionName == "给水电导率",
  441. )?.qualityResultContent;
  442. console.log(num, num1);
  443. arr.forEach((item, i) => {
  444. if (num && num1 && item.inspectionName == "干度值") {
  445. let val = parseFloat((((num - num1 / 1000) / num) * 100).toFixed(5));
  446. this.$set(
  447. this.tableData[index].qualitySampleTemplateList[i],
  448. "qualityResultContent",
  449. val,
  450. );
  451. this.handleInput(item, val, this.tableData);
  452. }
  453. });
  454. },
  455. getQualityResultClass(value) {
  456. return {
  457. 1: "result-pass",
  458. 2: "result-fail",
  459. 3: "result-concession",
  460. }[value];
  461. },
  462. },
  463. };
  464. </script>
  465. <style lang="scss" scoped>
  466. .mainBox {
  467. height: 100vh;
  468. display: flex;
  469. flex-direction: column;
  470. background-color: #f3f8fb;
  471. }
  472. .nav-placeholder {
  473. height: calc(var(--status-bar-height, 0px) + 44px);
  474. }
  475. .wrapper {
  476. flex: 1;
  477. display: flex;
  478. flex-direction: column;
  479. overflow: hidden;
  480. }
  481. .scroll-wrapper {
  482. flex: 1;
  483. height: 0;
  484. padding: 20rpx;
  485. .sample-list {
  486. padding-bottom: 20rpx;
  487. .sample-item {
  488. background: #fff;
  489. border-radius: 30rpx;
  490. margin-bottom: 20rpx;
  491. overflow: hidden;
  492. // box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
  493. // border: 1rpx solid #f0f0f0;
  494. .quality-summary {
  495. padding: 24rpx;
  496. background: #fff;
  497. border-top: 1rpx solid #f5f3f3;
  498. display: flex;
  499. align-items: center;
  500. justify-content: space-between;
  501. font-size: 28rpx;
  502. font-weight: bold;
  503. .summary-label {
  504. color: #333;
  505. margin-right: 20rpx;
  506. }
  507. .summary-value {
  508. padding: 8rpx 20rpx;
  509. border-radius: 8rpx;
  510. &.result-pass {
  511. color: #52c41a;
  512. background: #f6ffed;
  513. }
  514. &.result-fail {
  515. color: #ff4d4f;
  516. background: #fff2f0;
  517. }
  518. &.result-concession {
  519. color: #faad14;
  520. background: #fffbe6;
  521. }
  522. }
  523. }
  524. .empty-state {
  525. padding: 100rpx 0;
  526. text-align: center;
  527. font-size: 28rpx;
  528. color: #999;
  529. }
  530. .sample-header {
  531. display: flex;
  532. justify-content: space-between;
  533. align-items: center;
  534. padding: 40rpx 40rpx 20rpx 40rpx;
  535. background: #ffffff;
  536. box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
  537. .sample-info {
  538. flex: 1;
  539. }
  540. .info-row {
  541. display: flex;
  542. margin-bottom: 8rpx;
  543. &:last-child {
  544. margin-bottom: 0;
  545. }
  546. .label {
  547. font-size: 28rpx;
  548. color: #333;
  549. font-weight: 800;
  550. margin-right: 10rpx;
  551. min-width: 120rpx;
  552. }
  553. .value {
  554. font-size: 26rpx;
  555. color: #333;
  556. flex: 1;
  557. font-weight: 800;
  558. }
  559. }
  560. .expand-arrow {
  561. font-size: 40rpx;
  562. color: #999;
  563. margin-left: 20rpx;
  564. transform: rotate(0deg);
  565. transition: transform 0.3s;
  566. background: #fff;
  567. width: 48rpx;
  568. height: 48rpx;
  569. border-radius: 50%;
  570. display: flex;
  571. align-items: center;
  572. justify-content: center;
  573. box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
  574. &.expanded {
  575. transform: rotate(90deg);
  576. }
  577. }
  578. }
  579. .quality-table-wrapper {
  580. // margin: 20rpx;
  581. margin-top: 0;
  582. // border-radius: 12rpx;
  583. overflow: hidden;
  584. // box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
  585. }
  586. // 自定义滚动条样式
  587. ::v-deep .quality-table-scroll ::-webkit-scrollbar {
  588. width: 6rpx;
  589. height: 6rpx;
  590. }
  591. ::v-deep .quality-table-scroll ::-webkit-scrollbar-track {
  592. background: #f1f1f1;
  593. border-radius: 3rpx;
  594. }
  595. ::v-deep .quality-table-scroll ::-webkit-scrollbar-thumb {
  596. background: #c1c1c1;
  597. border-radius: 3rpx;
  598. }
  599. ::v-deep .quality-table-scroll ::-webkit-scrollbar-thumb:hover {
  600. background: #a8a8a8;
  601. }
  602. ::v-deep .table-cell:last-child::-webkit-scrollbar {
  603. width: 4rpx;
  604. }
  605. ::v-deep .table-cell:last-child::-webkit-scrollbar-track {
  606. background: #f9f9f9;
  607. border-radius: 2rpx;
  608. }
  609. ::v-deep .table-cell:last-child::-webkit-scrollbar-thumb {
  610. background: #d9d9d9;
  611. border-radius: 2rpx;
  612. }
  613. .quality-table-scroll {
  614. width: 100%;
  615. }
  616. .quality-table {
  617. min-width: 100%;
  618. width: 1540rpx;
  619. background: #fff;
  620. }
  621. .table-header {
  622. display: flex;
  623. background: #f5f5f5;
  624. border-bottom: 2rpx solid #e5e5e5;
  625. .table-cell {
  626. padding: 24rpx 12rpx;
  627. font-size: 26rpx;
  628. font-weight: bold;
  629. color: #333;
  630. text-align: center;
  631. border-right: 1rpx solid #e5e5e5;
  632. white-space: nowrap;
  633. flex-shrink: 0;
  634. display: flex;
  635. align-items: center;
  636. justify-content: center;
  637. background: #f5f5f5;
  638. width: 200rpx;
  639. &:last-child {
  640. border-right: none;
  641. background: #f5f5f5;
  642. }
  643. &:nth-child(2) {
  644. width: 260rpx;
  645. }
  646. &:nth-child(3) {
  647. width: 220rpx;
  648. }
  649. &:nth-child(7) {
  650. width: 260rpx;
  651. }
  652. }
  653. }
  654. .table-body {
  655. .table-row {
  656. display: flex;
  657. border-bottom: 1rpx solid #e5e5e5;
  658. transition: background 0.2s;
  659. &:nth-child(even) {
  660. // background: #fafafa;
  661. }
  662. &:last-child {
  663. border-bottom: none;
  664. }
  665. .table-cell {
  666. padding: 20rpx 12rpx;
  667. font-size: 24rpx;
  668. // color: #666;
  669. text-align: center;
  670. border-right: 1rpx solid #e5e5e5;
  671. white-space: nowrap;
  672. flex-shrink: 0;
  673. display: flex;
  674. align-items: center;
  675. justify-content: center;
  676. width: 200rpx;
  677. &:last-child {
  678. border-right: none;
  679. // background: #f5f5f5;
  680. }
  681. &:nth-child(2) {
  682. width: 260rpx;
  683. }
  684. &:nth-child(3) {
  685. width: 220rpx;
  686. }
  687. &:nth-child(7) {
  688. width: 260rpx !important;
  689. }
  690. .cell-text {
  691. overflow: hidden;
  692. text-overflow: ellipsis;
  693. white-space: nowrap;
  694. max-width: 100%;
  695. &.warn {
  696. color: #ff4d4f;
  697. }
  698. }
  699. .unit {
  700. font-size: 22rpx;
  701. color: #999;
  702. margin-left: 6rpx;
  703. }
  704. &.parameter-cell {
  705. max-height: 120rpx;
  706. overflow-y: auto;
  707. align-items: flex-start;
  708. padding: 16rpx 12rpx;
  709. width: 200rpx;
  710. }
  711. }
  712. }
  713. }
  714. }
  715. }
  716. }
  717. .footerButton {
  718. width: 100%;
  719. height: 84rpx;
  720. display: flex;
  721. position: fixed;
  722. bottom: 0;
  723. z-index: 10;
  724. background-color: #fff;
  725. /deep/.u-button {
  726. height: 100%;
  727. }
  728. > view {
  729. flex: 1;
  730. }
  731. }
  732. .warn {
  733. color: #ff4d4f !important;
  734. }
  735. /deep/.text-color {
  736. font-size: 28rpx;
  737. }
  738. </style>