sampleList.vue 20 KB

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