inventory.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804
  1. <template>
  2. <!-- 盘点清单 -->
  3. <view class="">
  4. <uni-nav-bar fixed="true" statusBar="true" left-icon="back" @clickLeft="back" :title="`盘点清单`" v-if="navShow">
  5. <block slot="right">
  6. <view class="bc-btn" @click="selected">选择</view>
  7. </block>
  8. </uni-nav-bar>
  9. <!-- <view class="tab-title">
  10. <view v-for="[key, item] in Object.entries(tabList)" :key="key" class="tab-item" :class="{ active: active == key }" @click="changeChartsTab(key)">{{ key }}({{ item.num }})</view>
  11. </view> -->
  12. <view class="tab-main">
  13. <!-- <uni-search-bar @input="search" v-model="searchKey" cancelButton="none" placeholder="编码/名称/货位/批次"></uni-search-bar> -->
  14. <template v-if="list.length > 0">
  15. <view class="order-list" v-for="(item, index) in list" :key="index">
  16. <view class="s1">
  17. <view class="b1">{{ item.categoryName }}</view>
  18. <!-- <view class="b2">
  19. <template v-if="[5, 6, 7].includes(item.equStatus)">
  20. <view class="type" :style="styleClass(el.type)" v-for="el in ycEquStatus(item)">{{ dict.equStatus[el.type] }}({{ el.num }})</view>
  21. </template>
  22. <view class="type" :style="styleClass(item.equStatus)" v-else>
  23. {{ dict.equStatus[item.equStatus] }}
  24. </view>
  25. </view> -->
  26. </view>
  27. <view class="wrap">
  28. <view class="item">
  29. <view class="label">批次号</view>
  30. <view class="value">
  31. {{ item.batchNo }}
  32. </view>
  33. </view>
  34. </view>
  35. <view class="wrap">
  36. <view class="item w100">
  37. <view class="label">包装编码</view>
  38. <view class="value">
  39. {{ item.packageNo }}
  40. </view>
  41. </view>
  42. </view>
  43. <view class="wrap">
  44. <view class="item">
  45. <view class="label">包装数量</view>
  46. <view class="value">
  47. {{ item.info.packingCountBase }}
  48. </view>
  49. </view>
  50. <view class="item">
  51. <view class="label">包装单位</view>
  52. <view class="value">
  53. {{ item.info.packingUnit }}
  54. </view>
  55. </view>
  56. </view>
  57. <view class="wrap">
  58. <view class="item">
  59. <view class="label">重量</view>
  60. <view class="value">{{ item.info.weight }}</view>
  61. </view>
  62. <view class="item">
  63. <view class="label">重量单位</view>
  64. <view class="value">
  65. {{ item.info.weightUnit }}
  66. </view>
  67. </view>
  68. </view>
  69. <view class="wrap" style="padding-right: 100rpx">
  70. <view class="item" style="width: 100%">
  71. <view class="label">仓库</view>
  72. <view class="value">{{ item.info.warehouseName }}</view>
  73. </view>
  74. </view>
  75. <view class="wrap">
  76. <view class="item">
  77. <view class="label">盘点状态</view>
  78. <view class="value"><uni-data-select v-model="item.controlStatus" :localdata="range"></uni-data-select></view>
  79. </view>
  80. <view class="item">
  81. <view class="label">数量</view>
  82. <view class="value">
  83. <u-number-box button-size="70" :min="0" :max="9999" v-model="item.count"></u-number-box>
  84. </view>
  85. </view>
  86. </view>
  87. <view class="wrap_btn">
  88. <view class="bd-btn" @click="handlDelete(index)">移除</view>
  89. </view>
  90. <!-- <view class="wrap">
  91. <view class="item">
  92. <view class="label">
  93. 货位
  94. </view>
  95. <view class="value">
  96. {{item.warehouseName}}/{{item.reservoirName}}/{{item.goodsShelfName}}/{{item.goodsAllocationName}}
  97. </view>
  98. </view>
  99. </view> -->
  100. <!-- <template v-if="isExecute && (infoData.status == 1 || infoData.status == 6)">
  101. <template v-if="active == '待盘点'">
  102. <view class="bd-btn" @click="handlSdpd(item)" v-if="item.inventoryNum > 0">手动盘点</view>
  103. <view class="bd-btn" @click="handlQrpd(item)" v-else>标记已盘</view>
  104. </template>
  105. <view class="bd-btn" @click="handlDelete(item)" v-if="active == '已盘点' || active == '异常记录'">移除</view>
  106. </template> -->
  107. </view>
  108. </template>
  109. <u-empty v-else></u-empty>
  110. </view>
  111. <view class="fixed-bottom" v-if="status == 0">
  112. <view class="smpd" @click="handlStart">盘点报工</view>
  113. <!-- <view class="ycdj">扫码盘点</view> -->
  114. </view>
  115. <!-- <view class="fixed-bottom" v-if="isExecute && (infoData.status === 1 || infoData.status == 6)">
  116. <view class="ycdj" @click="handlYc">溢出登记</view>
  117. <view class="smpd" @click="handlscanCheck">扫码盘点</view>
  118. </view>
  119. <view class="fixed-bottom" v-if="isExecute && infoData.status === 0">
  120. <view class="kspd" @click="handlStart">开始盘点</view>
  121. </view> -->
  122. <InventoryDialog ref="InventoryDialogRef" @cancel="navShow = true" @success="inventoryConfirm" />
  123. <!-- <ScanCode @scancodedate="cbScancodedate" :model="'uni'"></ScanCode> -->
  124. </view>
  125. </template>
  126. <script>
  127. import { reportWork } from '@/api/warehouseManagement'
  128. import InventoryDialog from '../components/InventoryDialog'
  129. import { postJ, post, get } from '@/utils/api'
  130. let [page, size, isEnd] = [1, 20, true]
  131. import ScanCode from '@/components/ScanCode.vue'
  132. import _ from 'lodash'
  133. export default {
  134. components: {
  135. ScanCode,
  136. InventoryDialog
  137. },
  138. data() {
  139. return {
  140. range: [
  141. {
  142. text: '盘盈',
  143. value: '2'
  144. },
  145. {
  146. text: '丢失',
  147. value: '3'
  148. },
  149. {
  150. text: '破损',
  151. value: '4'
  152. }
  153. ],
  154. value1: '',
  155. value2: '',
  156. list: [],
  157. status: '',
  158. navShow: true,
  159. planOrderId: '',
  160. active: '待盘点',
  161. tabList: {
  162. 待盘点: {
  163. num: 0,
  164. type: [0],
  165. list: []
  166. },
  167. 已盘点: {
  168. num: 0,
  169. type: [4],
  170. list: []
  171. },
  172. 异常记录: {
  173. num: 0,
  174. type: [1, 2, 3, 5, 6, 7],
  175. list: []
  176. }
  177. },
  178. searchKey: '',
  179. /* 盘点工单id */
  180. workOrderId: '',
  181. // 工单编码
  182. workOrderCode: '',
  183. // 盘点类型,仓库内,仓库外
  184. BizType: '',
  185. // 工单详情
  186. infoData: '',
  187. dict: {
  188. equStatus: {
  189. 0: '待盘',
  190. 1: '丢失',
  191. 2: '破损',
  192. 3: '溢出',
  193. 4: '正常',
  194. 5: '异常'
  195. }
  196. },
  197. // 扫码条码信息
  198. qrContent: '',
  199. barType: '',
  200. ScanData: ''
  201. }
  202. },
  203. onLoad(data) {
  204. console.log(data)
  205. this.planOrderId = data.id
  206. this.status = data.status
  207. this.search = _.debounce(this.search, 1000)
  208. },
  209. onShow() {
  210. // this.initPagination()
  211. // this.getdata()
  212. // this.getNum()
  213. // this.getdetales()
  214. let _this = this
  215. uni.$off('scancodedate') // 每次进来先 移除全局自定义事件监听器
  216. uni.$on('scancodedate', function (data) {
  217. _this.cbScancodedate(data)
  218. })
  219. },
  220. onUnload() {
  221. uni.$off('scancodedate')
  222. },
  223. onHide() {
  224. uni.$off('scancodedate')
  225. },
  226. // onReachBottom() {
  227. // if (isEnd) {
  228. // return
  229. // }
  230. // this.getMoreLists()
  231. // console.log('触底')
  232. // },
  233. // onPullDownRefresh() {
  234. // this.initPagination()
  235. // this.getdata()
  236. // this.getNum()
  237. // console.log('下拉刷新')
  238. // },
  239. computed: {
  240. // 当前是否为执行人
  241. isExecute() {
  242. let userInfo = uni.getStorageSync('userInfo')
  243. // 当前登录人id
  244. let userId = userInfo.id
  245. console.log()
  246. // 审批人id
  247. let executeUserId = this.infoData.executeUserId
  248. if (executeUserId == userId) {
  249. return true
  250. } else {
  251. return false
  252. }
  253. }
  254. },
  255. methods: {
  256. changeChartsTab(key) {
  257. this.active = key
  258. this.initPagination()
  259. this.getdata()
  260. this.getNum()
  261. },
  262. search(e) {
  263. this.searchKey = e
  264. this.initPagination()
  265. this.getdata()
  266. },
  267. getdata() {
  268. uni.showLoading({
  269. title: '加载中'
  270. })
  271. let par = {
  272. size: size,
  273. page: page,
  274. workOrderId: this.workOrderId,
  275. equStatusList: this.tabList[this.active].type,
  276. searchKey: this.searchKey,
  277. bizType: Number(this.BizType)
  278. //bizType:2
  279. }
  280. //par = this.URLSearchParams(par)
  281. // postJ(this.apiUrl + '/repertoryCheck/getList', par).then(res => {
  282. // if (res.success) {
  283. // let list = this.tabList[this.active].list
  284. // this.tabList[this.active].list = [...list, ...res.data.records]
  285. // let pages = res.data.pages
  286. // if (page < pages) {
  287. // isEnd = false
  288. // } else {
  289. // isEnd = true
  290. // }
  291. // console.log(page, pages, isEnd)
  292. // setTimeout(() => {
  293. // uni.stopPullDownRefresh()
  294. // uni.hideLoading()
  295. // }, 1000)
  296. // }
  297. // })
  298. uni.hideLoading()
  299. },
  300. getMoreLists() {
  301. page++
  302. this.getdata()
  303. },
  304. // 初始化分页
  305. initPagination() {
  306. size = 10
  307. page = 1
  308. isEnd = true
  309. this.tabList[this.active].list = []
  310. },
  311. // 删除清单
  312. handlDelete(index) {
  313. this.list.splice(index, 1)
  314. // uni.showModal({
  315. // content: '是否移除已盘清单?',
  316. // success: res => {
  317. // if (res.confirm) {
  318. // // let par = {
  319. // // id: item.id
  320. // // }
  321. // // par = this.URLSearchParams(par)
  322. // // post(this.apiUrl + '/repertoryCheck/deleteInventory?' + par).then(res => {
  323. // // if (res.success) {
  324. // // uni.showToast({
  325. // // title: '已移除'
  326. // // })
  327. // // this.initPagination()
  328. // // this.getdata()
  329. // // this.getNum()
  330. // // }
  331. // // })
  332. // }
  333. // }
  334. // })
  335. },
  336. // 获取数量
  337. getNum() {
  338. let par = {
  339. workOrderId: this.workOrderId
  340. }
  341. par = this.URLSearchParams(par)
  342. // post(this.apiUrl + '/repertoryCheck/statistics?' + par).then(res => {
  343. // if (res.success) {
  344. // this.tabList['待盘点'].num = res.data.stayNum
  345. // this.tabList['已盘点'].num = res.data.yetNum
  346. // this.tabList['异常记录'].num = res.data.abnormalNum
  347. // }
  348. // })
  349. },
  350. selected() {
  351. this.navShow = false
  352. this.$refs.InventoryDialogRef.open(this.planOrderId)
  353. },
  354. inventoryConfirm(data) {
  355. this.list = data
  356. },
  357. // 跳转盘点详情
  358. handlBc() {
  359. let par = {
  360. workOrderId: this.workOrderId
  361. }
  362. par = this.URLSearchParams(par)
  363. uni.navigateTo({
  364. url: '/pages/warehouse/workOrder/details/details?' + par
  365. })
  366. },
  367. // 手动盘点
  368. handlSdpd(item) {
  369. let par = {
  370. workOrderId: this.workOrderId,
  371. planInventoryId: item.id,
  372. bizType: this.BizType,
  373. info: encodeURIComponent(JSON.stringify(item))
  374. }
  375. par = this.URLSearchParams(par)
  376. uni.navigateTo({
  377. url: '/pages/warehouse/workOrder/manualCheck/manualCheck?' + par
  378. })
  379. },
  380. // 扫码盘点
  381. handlscanCheck() {
  382. // this.Scancodedate(data.code)
  383. let _this = this
  384. uni.scanCode({
  385. success: function (res) {
  386. _this.Scancodedate(res.result)
  387. }
  388. })
  389. },
  390. // 溢出登记
  391. handlYc() {
  392. let par = {
  393. workOrderId: this.workOrderId
  394. }
  395. par = this.URLSearchParams(par)
  396. uni.navigateTo({
  397. url: '/pages/warehouse/workOrder/registerOverflow/registerOverflow?' + par
  398. })
  399. },
  400. // 获取工单详情
  401. getdetales() {
  402. let par = {
  403. workOrderId: this.workOrderId
  404. }
  405. // postJ(this.apiUrl + '/repertoryCheck/getCheckDetail', par).then(res => {
  406. // if (res.success) {
  407. // this.infoData = res.data
  408. // this.infoData.status = res.data.status.code
  409. // }
  410. // })
  411. },
  412. // 开始盘点
  413. handlStart() {
  414. if (this.list.length > 0) {
  415. let isBoolen = this.list.every(item => item.controlStatus > 0 && item.count > 0)
  416. if (!isBoolen) {
  417. uni.showToast({
  418. title: '请选择盘点状态和数量',
  419. icon: 'none'
  420. })
  421. return
  422. }
  423. let arr = this.list.map(item => {
  424. let key = null
  425. switch (item.controlStatus) {
  426. case '2':
  427. key = 'surplusQuantity'
  428. break
  429. case '3':
  430. key = 'loseQuantity'
  431. break
  432. case '4':
  433. key = 'wornQuantity'
  434. break
  435. }
  436. return {
  437. id: item.id,
  438. status: item.controlStatus,
  439. planOrderId: this.planOrderId,
  440. [key]: item.count
  441. }
  442. })
  443. uni.showLoading({
  444. title: '加载中'
  445. })
  446. reportWork(arr, this.planOrderId)
  447. .then(() => {
  448. uni.showToast({
  449. title: '操作成功',
  450. icon: 'success'
  451. })
  452. uni.$emit('refreshInventoryList')
  453. setTimeout(() => {
  454. uni.navigateBack()
  455. }, 1500)
  456. })
  457. .finally(() => {
  458. uni.hideLoading()
  459. })
  460. } else {
  461. uni.showToast({
  462. title: '请选择物品',
  463. icon: 'none'
  464. })
  465. return
  466. }
  467. // let par = this.URLSearchParams({
  468. // workOrderCode: this.workOrderCode
  469. // })
  470. // post(this.apiUrl + '/workOrder/execute?' + par).then(res => {
  471. // if (res.success) {
  472. // uni.showToast({
  473. // title: '操作成功'
  474. // })
  475. // this.getdetales()
  476. // }
  477. // })
  478. },
  479. // 异常的显示
  480. ycEquStatus(item) {
  481. let list = []
  482. if (item.loseNum) {
  483. list.push({
  484. type: 1,
  485. num: item.loseNum
  486. })
  487. }
  488. if (item.damageNum) {
  489. list.push({
  490. type: 2,
  491. num: item.damageNum
  492. })
  493. }
  494. if (item.normalNum) {
  495. list.push({
  496. type: 4,
  497. num: item.normalNum
  498. })
  499. }
  500. return list
  501. },
  502. styleClass(type) {
  503. switch (Number(type)) {
  504. case 0:
  505. case 4:
  506. return 'background-color: #70B603;color: #fff;'
  507. case 1:
  508. return 'background-color: #feeaeb;color: #555;'
  509. case 2:
  510. return 'background-color: #555;color: #fff;'
  511. case 3:
  512. return 'background-color: #dacde6;color: #fff;'
  513. default:
  514. break
  515. }
  516. },
  517. // 数量为0标记已盘
  518. handlQrpd(item) {
  519. uni.showModal({
  520. content: '该清单没有可盘项,是否标记已盘?',
  521. success: res => {
  522. if (res.confirm) {
  523. let par = {
  524. planInventoryId: item.id
  525. }
  526. par = this.URLSearchParams(par)
  527. // post(this.apiUrl + '/repertoryCheck/checkVerify?' + par).then(res => {
  528. // if (res.success) {
  529. // uni.showToast({
  530. // title: '操作成功'
  531. // })
  532. // this.initPagination()
  533. // this.getdata()
  534. // this.getNum()
  535. // }
  536. // })
  537. }
  538. }
  539. })
  540. },
  541. // 扫码枪扫码
  542. cbScancodedate(data) {
  543. this.Scancodedate(data.code)
  544. },
  545. async Scancodedate(code) {
  546. this.qrContent = code.trim()
  547. this.barType = this.setBarType(this.qrContent)
  548. await this.getScanData()
  549. let res = await this.getScanCheckMate()
  550. // 扫码失败
  551. if (!res.success) return
  552. if (res.message === 'false') {
  553. uni.showToast({
  554. title: '该资产不在盘点清单内',
  555. duration: 2000,
  556. icon: 'none'
  557. })
  558. return
  559. }
  560. let par = {
  561. workOrderId: this.workOrderId,
  562. info: encodeURIComponent(JSON.stringify(res.data)),
  563. bizType: this.BizType
  564. }
  565. par = this.URLSearchParams(par)
  566. uni.navigateTo({
  567. url: '/pages/warehouse/workOrder/scanCheck/scanCheck?' + par
  568. })
  569. },
  570. // 设置barType
  571. setBarType(val) {
  572. let index = val.indexOf('@_@')
  573. let result = 0
  574. if (index !== -1) {
  575. let item = val.substr(index + 3, 1)
  576. if (item) {
  577. result = Number(item)
  578. }
  579. }
  580. return result
  581. },
  582. // 获取扫码设备详情
  583. getScanData() {
  584. let par = {
  585. qrContent: this.qrContent,
  586. barType: this.barType
  587. }
  588. // return postJ(this.apiUrl + '/scan/getAssetInfo', par).then(res => {
  589. // this.ScanData = res.data
  590. // })
  591. },
  592. // 获取扫码盘点明细数据
  593. getScanCheckMate() {
  594. if (!this.ScanData.assetCode) {
  595. uni.showToast({
  596. title: '设备编码为空'
  597. })
  598. return
  599. }
  600. let par = {
  601. assetCode: this.ScanData.assetCode,
  602. bizType: this.BizType,
  603. workOrderId: this.workOrderId
  604. // assetCode: 'w05xing0002test0510050',
  605. // bizType: '1',
  606. // workOrderId: '9173'
  607. }
  608. console.log(par)
  609. // return postJ(this.apiUrl + '/repertoryCheck/scanCheckMate', par, true, false).catch(err => {
  610. // if (err.code === '222') {
  611. // uni.showModal({
  612. // title: '提示',
  613. // content: err.message,
  614. // confirmText: '确认', // 确认按钮的文字
  615. // showCancel: false, // 是否显示取消按钮,默认为 true
  616. // success: res => {}
  617. // })
  618. // }
  619. // })
  620. }
  621. }
  622. }
  623. </script>
  624. <style lang="scss" scoped>
  625. .bc-btn {
  626. height: 60rpx;
  627. line-height: 60rpx;
  628. background-color: #157a2c;
  629. font-size: 28rpx;
  630. color: #fff;
  631. padding: 0 30rpx;
  632. border-radius: 10rpx;
  633. }
  634. .tab-title {
  635. position: fixed;
  636. width: 100%;
  637. display: flex;
  638. justify-content: space-between;
  639. height: 82rpx;
  640. line-height: 82rpx;
  641. background-color: #ffffff;
  642. border-bottom: 1px solid #f2f2f2;
  643. z-index: 99;
  644. box-sizing: border-box;
  645. .tab-item {
  646. width: 50%;
  647. text-align: center;
  648. font-size: 32rpx;
  649. color: $uni-text-color-grey;
  650. }
  651. .tab-item.active {
  652. color: $j-primary-border-green;
  653. border-bottom: 1px solid $j-primary-border-green;
  654. }
  655. }
  656. .tab-main {
  657. padding-bottom: 82rpx;
  658. }
  659. .order-list {
  660. padding: 30rpx 20rpx;
  661. border-bottom: 1px solid #f2f2f2;
  662. position: relative;
  663. .s1 {
  664. display: flex;
  665. justify-content: space-between;
  666. align-items: center;
  667. .b1 {
  668. color: #555555;
  669. font-size: 30rpx;
  670. }
  671. .b2 {
  672. color: #000000;
  673. font-size: 28rpx;
  674. display: flex;
  675. width: 500rpx;
  676. justify-content: flex-end;
  677. }
  678. .type {
  679. font-size: 28rpx;
  680. height: 40rpx;
  681. padding: 0 10rpx;
  682. line-height: 40rpx;
  683. & + .type {
  684. margin-left: 10rpx;
  685. }
  686. &.yc {
  687. background-color: #dacde6;
  688. }
  689. &.ds {
  690. background-color: #feeaeb;
  691. }
  692. &.ps {
  693. background-color: #cbcbcb;
  694. }
  695. }
  696. }
  697. .wrap {
  698. display: flex;
  699. margin-top: 20rpx;
  700. .item {
  701. color: #555555;
  702. font-size: 28rpx;
  703. display: flex;
  704. width: 50%;
  705. .label {
  706. display: flex;
  707. align-items: center;
  708. justify-content: center;
  709. margin-right: 20rpx;
  710. }
  711. .value {
  712. display: flex;
  713. align-items: center;
  714. justify-content: center;
  715. }
  716. }
  717. .w100 {
  718. width: 100% !important;
  719. }
  720. }
  721. .wrap_btn {
  722. margin-top: 20rpx;
  723. width: 100%;
  724. display: flex;
  725. align-items: center;
  726. justify-content: flex-end;
  727. }
  728. }
  729. .bd-btn {
  730. height: 56rpx;
  731. padding: 0 20rpx;
  732. display: flex;
  733. justify-content: flex-end;
  734. align-items: center;
  735. color: #4b7902;
  736. font-size: 28rpx;
  737. border: 1px solid #4b7902;
  738. }
  739. .fixed-bottom {
  740. position: fixed;
  741. left: 0;
  742. bottom: 0;
  743. width: 100%;
  744. height: 80rpx;
  745. display: flex;
  746. border: 1px solid #157a2c;
  747. box-sizing: border-box;
  748. .ycdj {
  749. background-color: #fff;
  750. width: 200rpx;
  751. display: flex;
  752. justify-content: center;
  753. align-items: center;
  754. color: #157a2c;
  755. }
  756. .smpd {
  757. background-color: #157a2c;
  758. flex: 1;
  759. display: flex;
  760. justify-content: center;
  761. align-items: center;
  762. color: #fff;
  763. }
  764. }
  765. .kspd {
  766. height: 100%;
  767. width: 100%;
  768. display: flex;
  769. justify-content: center;
  770. align-items: center;
  771. background-color: #157a2c;
  772. color: #fff;
  773. font-size: 28rpx;
  774. }
  775. </style>