workbranch.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. <template>
  2. <view>
  3. <gui-page :custom-header="true" :is-header-sized="false" :header-class="['gui-bg-gray', 'gui-dark-bg-level-1']">
  4. <template #gHeader>
  5. <view style="height:44px;" class="gui-flex gui-nowrap gui-rows gui-align-items-center">
  6. <!-- 导航文本此处也可以是其他自定义内容 -->
  7. <text class="gui-h4 gui-blod gui-flex1 gui-text-center gui-ellipsis gui-primary-text">工作台</text>
  8. <!-- 此处加一个右侧展位元素与左侧同宽,实现标题居中 -->
  9. <!-- 实际宽度请根据自己情况设置 -->
  10. <!-- 如果右侧有其他内容可以利用条件编译和定位来实现-->
  11. </view>
  12. </template>
  13. <template #gBody>
  14. <view class="uni-margin-wrap">
  15. <!-- <swiper class="swiper" circular indicator-dots="indicatorDots" interval="2000" duration="500">
  16. <swiper-item>
  17. <image class="adapt-image" src="@/static/material/156017341021.jpg" mode="aspectFill"></image>
  18. </swiper-item>
  19. <swiper-item>
  20. <image class="adapt-image" src="@/static/material/wallhaven-k7v9yq.png" mode="aspectFill">
  21. </image>
  22. </swiper-item>
  23. <swiper-item>
  24. <image class="adapt-image" src="@/static/material/wallhaven-m9xyg8.jpg" mode="aspectFill">
  25. </image>
  26. </swiper-item>
  27. </swiper> -->
  28. </view>
  29. <div class="gridBody">
  30. <!-- v-show="$permission('home:system:list')" -->
  31. <div class="grid-box">
  32. <view class="panel">
  33. <text class="panel-title">系统管理</text>
  34. </view>
  35. <view
  36. class="grid-list"
  37. :style="[isPad == true?'grid-template-columns: repeat(5, 1fr)':
  38. isPhone == true?'grid-template-columns: repeat(4, 1fr)':
  39. 'grid-template-columns: repeat(3, 1fr)']"
  40. >
  41. <view v-for="(item, key) in systemList" :key="key" class="gui-grid">
  42. <view class="gui-grid-item" @click="handleTap(item)">
  43. <text
  44. :class="['gui-grid-icon', item.iconClass ?? 'font-icons']"
  45. >{{ item.iconBase }}</text>
  46. <text class="gui-grid-text gui-color-black">{{ item.name }}</text>
  47. </view>
  48. </view>
  49. <!-- <view class="gui-grid">
  50. <view class="gui-grid-item" @click="takePhoto">
  51. <text :class="['gui-grid-icon','font-icons']">&#xe6d4;</text>
  52. <text class="gui-grid-text gui-color-black">测试拍照</text>
  53. </view>
  54. </view>
  55. <image v-for="item in srcs" :src="item" mode="aspectFit" /> -->
  56. </view>
  57. </div>
  58. <div class="grid-box">
  59. <view class="panel">
  60. <text class="panel-title">仓库管理</text>
  61. </view>
  62. <view
  63. class="grid-list"
  64. :style="[isPad == true?'grid-template-columns: repeat(5, 1fr)':
  65. isPhone == true?'grid-template-columns: repeat(4, 1fr)':
  66. 'grid-template-columns: repeat(3, 1fr)']"
  67. >
  68. <view
  69. v-for="(item, key) in WMSList"
  70. v-show="$permission(item.permission)"
  71. :key="key"
  72. class="gui-grid"
  73. >
  74. <view class="gui-grid-item" @click="handleTap(item)">
  75. <text
  76. :class="['gui-grid-icon', item.iconClass ?? 'font-icons']"
  77. >{{ item.iconBase }}</text>
  78. <text class="gui-grid-text gui-color-black">{{ item.name }}</text>
  79. </view>
  80. </view>
  81. </view>
  82. </div>
  83. <!-- <div class="grid-box">
  84. <view class="panel">
  85. <text class="panel-title">生产管理</text>
  86. </view>
  87. <view
  88. class="grid-list"
  89. :style="[isPad == true?'grid-template-columns: repeat(5, 1fr)':
  90. isPhone == true?'grid-template-columns: repeat(4, 1fr)':
  91. 'grid-template-columns: repeat(3, 1fr)']"
  92. >
  93. <view
  94. v-for="(item, key) in MESList"
  95. v-show="$permission(item.permission)"
  96. :key="key"
  97. class="gui-grid"
  98. >
  99. <view class="gui-grid-item" @click="handleTap(item)">
  100. <text
  101. :class="['gui-grid-icon', item.iconClass ?? 'font-icons']"
  102. style="background-color: #2cb755;"
  103. >{{ item.iconBase }}</text>
  104. <text class="gui-grid-text gui-color-black">{{ item.name }}</text>
  105. </view>
  106. </view>
  107. </view>
  108. </div> -->
  109. <!-- <div class="grid-box">
  110. <view class="panel">
  111. <text class="panel-title">设备管理</text>
  112. </view>
  113. <view
  114. class="grid-list"
  115. :style="[isPad == true?'grid-template-columns: repeat(5, 1fr)':
  116. isPhone == true?'grid-template-columns: repeat(4, 1fr)':
  117. 'grid-template-columns: repeat(3, 1fr)']"
  118. >
  119. <view v-for="(item, key) in ETMList" :key="key" class="gui-grid">
  120. <view class="gui-grid-item" @click="handleTap(item)">
  121. <text
  122. :class="['gui-grid-icon', item.iconClass ?? 'font-icons']"
  123. style="background-color: #30c6c8;"
  124. >{{ item.iconBase }}</text>
  125. <text class="gui-grid-text gui-color-black">{{ item.name }}</text>
  126. </view>
  127. </view>
  128. </view>
  129. </div> -->
  130. <!-- <div class="grid-box">
  131. <view class="panel">
  132. <text class="panel-title">供应商管理</text>
  133. </view>
  134. <view
  135. class="grid-list"
  136. :style="[isPad == true?'grid-template-columns: repeat(5, 1fr)':
  137. isPhone == true?'grid-template-columns: repeat(4, 1fr)':
  138. 'grid-template-columns: repeat(3, 1fr)']"
  139. >
  140. <view v-for="(item, key) in SRMList" :key="key" class="gui-grid">
  141. <view class="gui-grid-item" @click="handleTap(item)">
  142. <text
  143. :class="['gui-grid-icon', item.iconClass ?? 'font-icons']"
  144. style="background-color: #ff800e;"
  145. >{{ item.iconBase }}</text>
  146. <text class="gui-grid-text gui-color-black">{{ item.name }}</text>
  147. </view>
  148. </view>
  149. </view>
  150. </div> -->
  151. </div>
  152. <uni-popup ref="errorTip" type="dialog">
  153. <uni-popup-dialog
  154. type="error"
  155. cancel-text="关闭"
  156. confirm-text="确认"
  157. title="提示"
  158. :content="errorTipMessage"
  159. @confirm="handleCloseErrorTipsModal"
  160. @close="handleCloseErrorTipsModal"
  161. />
  162. </uni-popup>
  163. </template>
  164. </gui-page>
  165. </view>
  166. </template>
  167. <script>
  168. // import { getCLodop } from "../../unit/CLodopfuncs2.js"
  169. import {
  170. ref,
  171. getCurrentInstance
  172. } from 'vue'
  173. export default {
  174. setup() {
  175. const {
  176. proxy
  177. } = getCurrentInstance()
  178. console.log(proxy)
  179. const errorTip = ref('')
  180. const errorTipMessage = ref('')
  181. const srcs = ref([])
  182. const systemList = ref([
  183. {
  184. iconClass: 'font-icons',
  185. iconBase: '\ue6aa',
  186. name: '打印测试'
  187. },
  188. // {
  189. // iconClass: 'font-icons',
  190. // iconBase: '\ue673',
  191. // name: '扫码'
  192. // },
  193. // {
  194. // iconClass: "font-icons",
  195. // iconBase: "\ue6d4",
  196. // name: "蓝牙测试"
  197. // },
  198. {
  199. iconClass: 'font-icons',
  200. iconBase: '\ue6d8',
  201. name: '蓝牙配置'
  202. }
  203. ])
  204. const SRMList = ref([{
  205. iconClass: 'font-icons',
  206. iconBase: '\ue692',
  207. name: '预收单'
  208. }])
  209. const ETMList = ref([{
  210. iconClass: 'font-icons',
  211. iconBase: '\ue7f2',
  212. name: '模具保养'
  213. }])
  214. const MESList = ref([{
  215. iconClass: 'font-icons',
  216. iconBase: '\ue692',
  217. permission: 'system:home:glue',
  218. name: '点胶机'
  219. }, {
  220. iconClass: 'font-icons',
  221. iconBase: '\ue692',
  222. permission: '',
  223. // permission: 'system:home:ipqc',
  224. name: 'IPQC检验'
  225. }, {
  226. iconClass: 'font-icons',
  227. iconBase: '\ue692',
  228. permission: '',
  229. // permission: 'system:home:oqc',
  230. name: 'IQC检验'
  231. }, {
  232. iconClass: 'font-icons',
  233. iconBase: '\ue692',
  234. permission: 'system:home:cutting',
  235. name: '分切'
  236. }, {
  237. iconClass: 'font-icons',
  238. iconBase: '\ue692',
  239. permission: '',
  240. name: '工序执行'
  241. }, {
  242. iconClass: 'font-icons',
  243. iconBase: '\ue692',
  244. permission: '',
  245. name: '全检执行'
  246. }])
  247. const WMSList = ref([
  248. // {
  249. // iconClass: "font-icons",
  250. // iconBase: "\ue613",
  251. // name: "基础设置"
  252. // },
  253. // {
  254. // iconClass: "font-icons",
  255. // iconBase: "\ue7da",
  256. // name: "报表中心"
  257. // },
  258. // {
  259. // iconClass: 'font-icons',
  260. // iconBase: '\ue6b7',
  261. // permission: '',
  262. // name: '扫码出入库'
  263. // },
  264. {
  265. iconClass: 'font-icons',
  266. iconBase: '\ue7d4',
  267. permission: '',
  268. name: '来料登记'
  269. },
  270. {
  271. iconClass: 'font-icons',
  272. iconBase: '\ue692',
  273. permission: '',
  274. // permission: 'system:home:oqc',
  275. name: 'IQC检验'
  276. },
  277. {
  278. iconClass: 'font-icons',
  279. iconBase: '\ue6b7',
  280. permission: '',
  281. name: '扫码入库'
  282. },
  283. {
  284. iconClass: 'font-icons',
  285. iconBase: '\ue6b7',
  286. permission: '',
  287. name: '扫码出库'
  288. },
  289. // {
  290. // iconClass: 'font-icons',
  291. // iconBase: '\ue660',
  292. // permission: '',
  293. // name: '物料上架'
  294. // },
  295. // {
  296. // iconClass: 'font-icons',
  297. // iconBase: '\ue660',
  298. // permission: '',
  299. // name: '入库申请'
  300. // },
  301. // {
  302. // iconClass: 'font-icons',
  303. // iconBase: '\ue660',
  304. // permission: '',
  305. // name: '分切备料'
  306. // },
  307. // {
  308. // iconClass: 'font-icons',
  309. // iconBase: '\ue660',
  310. // permission: '',
  311. // name: '送货单回签'
  312. // },
  313. // {
  314. // iconClass: 'font-icons',
  315. // iconBase: '\uebb6',
  316. // permission: '',
  317. // name: '退料申请'
  318. // },
  319. // {
  320. // iconClass: 'font-icons',
  321. // iconBase: '\ue7eb',
  322. // permission: '',
  323. // name: '货位调整'
  324. // },
  325. // {
  326. // iconClass: 'font-icons',
  327. // iconBase: '\ue64c',
  328. // permission: '',
  329. // name: '栈板拆合批'
  330. // },
  331. // {
  332. // iconClass: 'font-icons',
  333. // iconBase: '\ue64a',
  334. // permission: '',
  335. // name: '成品拆合箱'
  336. // },
  337. // {
  338. // iconClass: 'font-icons',
  339. // iconBase: '\ue64d',
  340. // permission: '',
  341. // name: '物料拆合批'
  342. // },
  343. // {
  344. // iconClass: 'font-icons',
  345. // iconBase: '\ue7dd',
  346. // permission: '',
  347. // name: '生产领料'
  348. // },
  349. // {
  350. // iconClass: 'font-icons',
  351. // iconBase: '\ue7dd',
  352. // permission: '',
  353. // name: '委外备料'
  354. // },
  355. // {
  356. // iconClass: 'font-icons',
  357. // iconBase: '\uebb6',
  358. // permission: '',
  359. // name: '生产发料'
  360. // },
  361. // {
  362. // iconClass: 'font-icons',
  363. // iconBase: '\ue697',
  364. // permission: '',
  365. // name: '条码拆分'
  366. // },
  367. // {
  368. // iconClass: 'font-icons',
  369. // iconBase: '\ue681',
  370. // permission: '',
  371. // name: '条码合并'
  372. // },
  373. // {
  374. // iconClass: 'font-icons',
  375. // iconBase: '\ue60e',
  376. // permission: '',
  377. // name: '出货标签'
  378. // },
  379. // {
  380. // iconClass: 'font-icons',
  381. // iconBase: '\ue641',
  382. // permission: '',
  383. // name: '出货列表'
  384. // },
  385. // {
  386. // iconClass: 'font-icons',
  387. // iconBase: '\ue60e',
  388. // // permission: 'wms:sale-out-order:permission',
  389. // permission: '',
  390. // name: '销售出货'
  391. // },
  392. // {
  393. // iconClass: 'font-icons',
  394. // iconBase: '\ue60e',
  395. // permission: '',
  396. // name: '出入冷库'
  397. // },
  398. // {
  399. // iconClass: 'font-icons',
  400. // iconBase: '\ue60e',
  401. // permission: '',
  402. // name: '半成品流转'
  403. // }
  404. ])
  405. const handleTap = function(row) {
  406. uni.$grace.msg(row.name + '模块正在火速开发中')
  407. // #ifdef APP-PLUS
  408. const mpaasScanModule = uni.requireNativePlugin('Mpaas-Scan-Module')
  409. // #endif
  410. switch (row.name) {
  411. case '扫码':
  412. // #ifdef APP-PLUS
  413. mpaasScanModule.mpaasScan({
  414. // 扫码识别类型,参数可多选,qrCode、barCode,不设置,默认识别所有
  415. 'scanType': ['qrCode', 'barCode'],
  416. // 是否隐藏相册,默认false不隐藏
  417. 'hideAlbum': false
  418. },
  419. (ret) => {
  420. uni.showModal({
  421. title: '弹窗标题',
  422. // 返回值中,resp_code 表示返回结果值,10:用户取消,11:其他错误,1000:成功
  423. // 返回值中,resp_message 表示返回结果信息
  424. // 返回值中,resp_result 表示扫码结果,只有成功才会有返回
  425. content: JSON.stringify(ret),
  426. showCancel: false,
  427. confirmText: '确定'
  428. })
  429. })
  430. // #endif
  431. break
  432. case '打印测试':
  433. uni.navigateTo({
  434. url: "/pages/tabbar/printTest"
  435. })
  436. // // #ifdef APP-PLUS
  437. // const Activity = plus.android.runtimeMainActivity()
  438. // const Intent = plus.android.importClass('android.content.Intent')
  439. // const Uri = plus.android.importClass('android.net.Uri')
  440. // const browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(`${uni.$baseUrl}/jmreport/view/828502348750999552?token=32701364ce02496ba2b8a5f17c06dae4`))
  441. // Activity.startActivity(browserIntent)
  442. // // #endif
  443. // // #ifdef H5
  444. // const dom = document.createElement('a')
  445. // dom.setAttribute('href',
  446. // `http://192.168.1.101:48080/jmreport/view/828502348750999552?hotPressId=1664178203920498689`
  447. // )
  448. // dom.setAttribute('target', '_blank')
  449. // dom.click()
  450. // // #endif
  451. break
  452. case '蓝牙测试':
  453. uni.navigateTo({
  454. url: '/pages/workbranch/system/bluetooth'
  455. })
  456. break
  457. case '蓝牙配置':
  458. uni.navigateTo({
  459. url: '/pages/workbranch/system/bluetoothConfig'
  460. })
  461. break
  462. case '生产领料':
  463. uni.navigateTo({
  464. url: '/pages/workbranch/warehouse/production/prepareMaterials'
  465. })
  466. break
  467. case '委外备料':
  468. uni.navigateTo({
  469. url: '/pages/workbranch/warehouse/outSourceMaterial/outSourceList'
  470. })
  471. break
  472. case '来料登记':
  473. uni.navigateTo({
  474. url: '/pages/workbranch/warehouse/materialRegister/registerType'
  475. })
  476. break
  477. case '物料上架':
  478. uni.navigateTo({
  479. url: '/pages/workbranch/warehouse/feeding/shelfType'
  480. })
  481. break
  482. case '入库申请':
  483. uni.navigateTo({
  484. url: '/pages/workbranch/warehouse/warehousing/warehousingType'
  485. })
  486. break
  487. case '退料申请':
  488. uni.navigateTo({
  489. url: '/pages/workbranch/warehouse/returnMaterial/returnMaterialType'
  490. })
  491. break
  492. case '送货单回签':
  493. uni.navigateTo({
  494. url: '/pages/workbranch/warehouse/deliveryNote/deliveryNoteList'
  495. })
  496. break
  497. case '分切备料':
  498. uni.navigateTo({
  499. url: '/pages/workbranch/production/cutting/cuttingMaterialPreparation'
  500. })
  501. break
  502. case '货位调整':
  503. uni.navigateTo({
  504. url: '/pages/workbranch/warehouse/location/locationPage'
  505. })
  506. break
  507. case '物料拆合批':
  508. uni.navigateTo({
  509. url: '/pages/workbranch/warehouse/materialDisass/materialWorkBranch'
  510. })
  511. break
  512. case '栈板拆合批':
  513. uni.navigateTo({
  514. url: '/pages/workbranch/warehouse/trestle/trestleList'
  515. })
  516. break
  517. case '成品拆合箱':
  518. uni.navigateTo({
  519. url: '/pages/workbranch/warehouse/box/boxList'
  520. })
  521. break
  522. // case '生产发料':
  523. // uni.navigateTo({
  524. // url: '/pages/workbranch/warehouse/productionIssue/productionIssue'
  525. // })
  526. // break
  527. case '条码拆分':
  528. uni.navigateTo({
  529. url: '/pages/workbranch/warehouse/codeSplitOrMerge/codeSplit'
  530. })
  531. break
  532. case '条码合并':
  533. uni.navigateTo({
  534. url: '/pages/workbranch/warehouse/codeSplitOrMerge/codeMerge'
  535. })
  536. break
  537. case '出货标签':
  538. uni.navigateTo({
  539. url: '/pages/workbranch/production/shipment/shipmentPage'
  540. })
  541. break
  542. case '出货列表':
  543. uni.navigateTo({
  544. url: '/pages/workbranch/production/shipment/shipmentPatchworkPage'
  545. })
  546. break
  547. case '销售出货':
  548. uni.navigateTo({
  549. url: '/pages/workbranch/production/shipmentMHT/shipmentPage'
  550. })
  551. break
  552. case '点胶机':
  553. uni.navigateTo({
  554. url: '/pages/workbranch/production/glue/indexPage'
  555. })
  556. break
  557. case 'IPQC检验':
  558. uni.navigateTo({
  559. url: '/pages/workbranch/production/IPQC/ipqcCheckout'
  560. })
  561. break
  562. case 'IQC检验':
  563. uni.navigateTo({
  564. url: '/pages/workbranch/production/FQC/fqcList'
  565. })
  566. break
  567. case '分切':
  568. uni.navigateTo({
  569. url: '/pages/workbranch/production/cutting/cuttingList'
  570. })
  571. break
  572. case '工序执行':
  573. uni.navigateTo({
  574. url: '/pages/workbranch/production/processExecution/processList'
  575. })
  576. break
  577. case '全检执行':
  578. uni.navigateTo({
  579. url: '/pages/workbranch/production/processExecution/processFullInspection'
  580. })
  581. break
  582. case '模具保养':
  583. uni.navigateTo({
  584. url: '/pages/workbranch/ETM/moldPreserve/indexPage'
  585. })
  586. break
  587. case '出入冷库':
  588. uni.navigateTo({
  589. url: '/pages/workbranch/warehouse/coldStorage/indexPage'
  590. })
  591. break
  592. case '半成品流转':
  593. uni.navigateTo({
  594. url: '/pages/workbranch/warehouse/SemiFinishedProducts/indexPage'
  595. })
  596. break
  597. case '扫码出入库':
  598. uni.navigateTo({
  599. url: '/pages/workbranch/warehouse/scanInOut/scanInOutType'
  600. })
  601. break
  602. case '扫码入库':
  603. uni.navigateTo({
  604. url: '/pages/workbranch/warehouse/scanInOut/In/scanInPage'
  605. })
  606. break
  607. case '扫码出库':
  608. uni.navigateTo({
  609. url: '/pages/workbranch/warehouse/scanInOut/Out/scanOutPage'
  610. })
  611. break
  612. }
  613. }
  614. const takePhoto = function() {
  615. uni.chooseImage({
  616. count: 6, // count: 6, //默认9
  617. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  618. sourceType: ['album', 'camera'], // 从相册选择
  619. success: function(res) {
  620. srcs.value = res.tempFilePaths
  621. console.log(res, JSON.stringify(res.tempFilePaths))
  622. }
  623. })
  624. }
  625. // 关闭错误信息弹窗
  626. const handleCloseErrorTipsModal = async function() {
  627. errorTip.value.close()
  628. }
  629. return {
  630. WMSList,
  631. systemList,
  632. MESList,
  633. SRMList,
  634. ETMList,
  635. handleTap,
  636. srcs,
  637. takePhoto,
  638. errorTip,
  639. errorTipMessage,
  640. handleCloseErrorTipsModal
  641. }
  642. }
  643. }
  644. </script>
  645. <style lang="scss" scoped>
  646. .gridBody {
  647. margin: 80px 0;
  648. overflow-y: scroll;
  649. }
  650. .grid-box {
  651. width: calc(100vw - 16px);
  652. margin: 14px 8px;
  653. display: flex;
  654. flex-direction: column;
  655. border-radius: 4px;
  656. box-shadow: 0 0 9px 0 rgba(121, 118, 118, 0.34);
  657. .panel {
  658. height: 2.2rem;
  659. width: calc(100vw - 32px);
  660. padding-left: 16px;
  661. border-top-left-radius: 4px;
  662. border-top-right-radius: 4px;
  663. background: linear-gradient(to right, rgb(78, 188, 250), rgb(0, 239, 239));
  664. .panel-title {
  665. width: calc(100vw / 4 - 2px);
  666. height: inherit;
  667. line-height: 2.2rem;
  668. text-align: center;
  669. font-size: 16px;
  670. color: white;
  671. }
  672. }
  673. .grid-list {
  674. width: calc(100vw - 16px);
  675. /* 设置容器布局为grid布局 */
  676. display: grid;
  677. /* 指定每一行的宽度 每个宽度中间用空格隔开 */
  678. grid-template-rows: auto;
  679. /* 指定每一列的宽度 每个宽度中间用空格隔开 */
  680. grid-template-columns: 1fr 1fr 1fr;
  681. border-bottom-left-radius: 10px;
  682. border-bottom-right-radius: 10px;
  683. background-color: white;
  684. .gui-grid {
  685. display: flex;
  686. justify-content: center;
  687. .font-icons {
  688. width: 40px;
  689. height: 40px;
  690. border-radius: 6px;
  691. display: flex;
  692. justify-content: center;
  693. align-items: center;
  694. font-size: 26px;
  695. color: #f4f4f4;
  696. box-shadow: 2px 2px 1px 0 #d5dffd;
  697. background-color: #539cf8;
  698. }
  699. .gui-grid-item {
  700. width: 85px;
  701. height: 85px;
  702. margin-top: 4px;
  703. display: flex;
  704. justify-content: center;
  705. align-items: center;
  706. uni-text:nth-of-type(2) {
  707. padding-top: 4px;
  708. padding-left: 3px;
  709. font-size: 14px;
  710. }
  711. }
  712. }
  713. }
  714. }
  715. .adapt-image {
  716. width: 750rpx;
  717. }
  718. </style>