You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

811 lines
20 KiB

10 months ago
8 months ago
6 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
8 months ago
6 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
6 months ago
8 months ago
6 months ago
8 months ago
6 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
6 months ago
10 months ago
6 months ago
10 months ago
6 months ago
10 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
10 months ago
6 months ago
10 months ago
10 months ago
10 months ago
6 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
8 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
6 months ago
6 months ago
6 months ago
6 months ago
10 months ago
  1. <template>
  2. <div class="pda-container">
  3. <!-- 头部栏 -->
  4. <div class="header-bar">
  5. <div class="warehouse-selector" @click="toggleWarehouseDropdown">
  6. <span class="warehouse-text">{{ selectedWarehouseName || '选择仓库' }}</span>
  7. <i class="el-icon-arrow-down" :class="{ 'rotate': showWarehouseDropdown }"></i>
  8. <div class="warehouse-dropdown" v-show="showWarehouseDropdown">
  9. <div class="dropdown-item loading" v-if="warehouseLoading">
  10. <i class="el-icon-loading"></i>
  11. 加载中...
  12. </div>
  13. <div
  14. v-else
  15. v-for="item in warehouseList"
  16. :key="item.warehouseid"
  17. class="dropdown-item"
  18. :class="{ 'active': selectedWarehouse === item.warehouseid }"
  19. @click.stop="selectWarehouse(item)">
  20. {{ item.warehousename }}
  21. </div>
  22. <div class="dropdown-item empty" v-if="!warehouseLoading && warehouseList.length === 0">
  23. 暂无可用仓库
  24. </div>
  25. </div>
  26. </div>
  27. <div class="logout-button" @click="logoutHandle()">
  28. <i class="el-icon-close"></i>
  29. <span>退出</span>
  30. </div>
  31. </div>
  32. <!-- 功能区域 -->
  33. <div class="content-area">
  34. <!-- 收货入库 -->
  35. <div class="section">
  36. <div class="section-header">
  37. <span class="bullet"></span>
  38. <span class="section-title">收货入库</span>
  39. </div>
  40. <div class="button-grid">
  41. <div class="menu-item" @click="navigateWithWarehouseCheck('porecv')">
  42. <div class="menu-icon purchase">
  43. <van-icon name="shopping-cart-o" size="24" />
  44. </div>
  45. <div class="menu-text">采购入库</div>
  46. </div>
  47. <div class="menu-item disabled" @click="handleDisabledFeature('productionInboundProduction')">
  48. <div class="menu-icon production-inbound">
  49. <van-icon name="cart" size="24" />
  50. </div>
  51. <div class="menu-text">生产入库</div>
  52. </div>
  53. <div class="menu-item disabled" @click="handleDisabledFeature('productionreturn')">
  54. <div class="menu-icon production-return">
  55. <van-icon name="revoke" size="24" />
  56. </div>
  57. <div class="menu-text">生产退料</div>
  58. </div>
  59. <div class="menu-item disabled" @click="handleDisabledFeature('salereturn')">
  60. <div class="menu-icon sales-return">
  61. <van-icon name="revoke" size="24" />
  62. </div>
  63. <div class="menu-text">销售退货</div>
  64. </div>
  65. </div>
  66. </div>
  67. <!-- 拣货出库 -->
  68. <div class="section">
  69. <div class="section-header">
  70. <span class="bullet"></span>
  71. <span class="section-title">拣货出库</span>
  72. </div>
  73. <div class="button-grid">
  74. <div class="menu-item" @click="navigateWithWarehouseCheck('inventory-move')">
  75. <div class="menu-icon inventory-move">
  76. <van-icon name="exchange" size="24" />
  77. </div>
  78. <div class="menu-text">移库</div>
  79. </div>
  80. <div class="menu-item" @click="navigateWithWarehouseCheck('otherinout')">
  81. <div class="menu-icon other">
  82. <van-icon name="exchange" size="24" />
  83. </div>
  84. <div class="menu-text">其他出入库</div>
  85. </div>
  86. <div class="menu-item" @click="navigateWithWarehouseCheck('productionissue')">
  87. <div class="menu-icon production-issue">
  88. <van-icon name="send-gift-o" size="24" />
  89. </div>
  90. <div class="menu-text">生产领料</div>
  91. </div>
  92. <div class="menu-item" @click="navigateWithWarehouseCheck('mrissue')">
  93. <div class="menu-icon mr">
  94. <van-icon name="orders-o" size="24" />
  95. </div>
  96. <div class="menu-text">MR发料</div>
  97. </div>
  98. <div class="menu-item" @click="navigateWithWarehouseCheck('outsource')">
  99. <div class="menu-icon outsourcing">
  100. <van-icon name="logistics" size="24" />
  101. </div>
  102. <div class="menu-text">委外发料</div>
  103. </div>
  104. <div class="menu-item disabled" @click="handleDisabledFeature('saleshipping')">
  105. <div class="menu-icon sales-delivery">
  106. <van-icon name="logistics" size="24" />
  107. </div>
  108. <div class="menu-text">销售出库</div>
  109. </div>
  110. <div class="menu-item disabled" @click="handleDisabledFeature('transportation')">
  111. <div class="menu-icon transport">
  112. <van-icon name="guide-o" size="24" />
  113. </div>
  114. <div class="menu-text">运输任务</div>
  115. </div>
  116. </div>
  117. </div>
  118. <div class="section">
  119. <div class="section-header">
  120. <span class="bullet"></span>
  121. <span class="section-title">立库操作</span>
  122. </div>
  123. <div class="button-grid">
  124. <div class="menu-item" @click="navigateWithWarehouseCheck('callOut')">
  125. <div class="menu-icon purchase">
  126. <van-icon name="shopping-cart-o" size="24" />
  127. </div>
  128. <div class="menu-text">Call料</div>
  129. </div>
  130. <div class="menu-item" @click="navigateWithWarehouseCheck('palletPacking')">
  131. <div class="menu-icon purchase">
  132. <van-icon name="shopping-cart-o" size="24" />
  133. </div>
  134. <div class="menu-text">组盘入库</div>
  135. </div>
  136. <div class="menu-item" @click="navigateWithWarehouseCheck('palletAssembly')">
  137. <div class="menu-icon purchase">
  138. <van-icon name="shopping-cart-o" size="24" />
  139. </div>
  140. <div class="menu-text">直接组盘</div>
  141. </div>
  142. </div>
  143. </div>
  144. <!-- 库内管理 -->
  145. <div class="section">
  146. <div class="section-header">
  147. <span class="bullet"></span>
  148. <span class="section-title">库内管理</span>
  149. </div>
  150. <div class="button-grid">
  151. <!-- <div class="menu-item disabled" @click="handleDisabledFeature('attributechange')">
  152. <div class="menu-icon attribute">
  153. <van-icon name="setting-o" size="24" />
  154. </div>
  155. <div class="menu-text">属性变动</div>
  156. </div>-->
  157. <div class="menu-item disabled" @click="handleDisabledFeature('stocktaking')">
  158. <div class="menu-icon inventory">
  159. <van-icon name="records" size="24" />
  160. </div>
  161. <div class="menu-text">盘点</div>
  162. </div>
  163. <div class="menu-item disabled" @click="handleDisabledFeature('handlingunit')">
  164. <div class="menu-icon hu">
  165. <van-icon name="cluster-o" size="24" />
  166. </div>
  167. <div class="menu-text">HU管理</div>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. </template>
  174. <script>
  175. import { getUserAuthorizedWarehouses } from "@/api/warehouse.js"
  176. export default {
  177. data() {
  178. return {
  179. username: localStorage.getItem('userName'),
  180. warehouseList: [],
  181. selectedWarehouse: localStorage.getItem('selectedWarehouse') || '',
  182. selectedWarehouseName: '',
  183. warehouseLoading: false,
  184. showWarehouseDropdown: false
  185. }
  186. },
  187. computed: {
  188. documentClientHeight: {
  189. get() {
  190. return this.$store.state.common.documentClientHeight
  191. },
  192. set(val) {
  193. this.$store.commit('common/updateDocumentClientHeight', val)
  194. }
  195. },
  196. sidebarFold: {
  197. get() {
  198. return this.$store.state.common.sidebarFold
  199. }
  200. },
  201. userId: {
  202. get() {
  203. return this.$store.state.user.id
  204. },
  205. set(val) {
  206. this.$store.commit('user/updateId', val)
  207. }
  208. },
  209. userName: {
  210. get() {
  211. return this.$store.state.user.name
  212. },
  213. set(val) {
  214. this.$store.commit('user/updateName', val)
  215. }
  216. },
  217. site: {
  218. get() {
  219. return this.$store.state.user.site
  220. },
  221. set(val) {
  222. this.$store.commit('user/updateSite', val)
  223. }
  224. },
  225. languageDefault: {
  226. get() {
  227. return this.$store.state.user.languageDefault
  228. },
  229. set(val) {
  230. this.$store.commit('user/updateLanguageDefault', val)
  231. }
  232. },
  233. userDisplay: {
  234. get() {
  235. return this.$store.state.user.userDisplay
  236. },
  237. set(val) {
  238. this.$store.commit('user/updateUserDisplay', val)
  239. }
  240. },
  241. },
  242. mounted() {
  243. // 点击外部关闭下拉框
  244. document.addEventListener('click', this.handleDocumentClick)
  245. },
  246. beforeDestroy() {
  247. document.removeEventListener('click', this.handleDocumentClick)
  248. },
  249. created() {
  250. this.getUserInfo()
  251. this.getWarehouseList();
  252. },
  253. methods: {
  254. // 处理禁用功能点击
  255. handleDisabledFeature(featureName) {
  256. this.$message({
  257. type: 'warning',
  258. message: `开发中,敬请期待...`,
  259. duration: 8000 // 停留 5 秒
  260. });
  261. },
  262. // 处理点击事件
  263. handleDocumentClick(event) {
  264. // 检查点击是否在仓库选择器内部
  265. const warehouseSelector = this.$el.querySelector('.warehouse-selector');
  266. if (warehouseSelector && !warehouseSelector.contains(event.target)) {
  267. this.showWarehouseDropdown = false;
  268. }
  269. },
  270. // 获取仓库列表
  271. getWarehouseList() {
  272. const currentSite = localStorage.getItem('site');
  273. if (!currentSite) {
  274. this.$message.error('请先选择工厂');
  275. this.$router.push({ name: 'login' });
  276. return;
  277. }
  278. this.warehouseLoading = true;
  279. getUserAuthorizedWarehouses({ site: currentSite }).then(({data}) => {
  280. this.warehouseLoading = false;
  281. if (data && data.code === 0) {
  282. this.warehouseList = data.data || [];
  283. // 如果只有一个仓库,自动选中
  284. if (this.warehouseList.length === 1) {
  285. this.selectWarehouse(this.warehouseList[0]);
  286. }
  287. // 如果之前有选择的仓库,检查是否还在列表中并设置名称
  288. else if (this.selectedWarehouse) {
  289. const warehouse = this.warehouseList.find(w => w.warehouseid === this.selectedWarehouse);
  290. if (warehouse) {
  291. this.selectedWarehouseName = warehouse.warehousename;
  292. } else {
  293. this.selectedWarehouse = '';
  294. this.selectedWarehouseName = '';
  295. localStorage.removeItem('selectedWarehouse');
  296. }
  297. }
  298. } else {
  299. this.$message.error(data.msg || '获取仓库列表失败');
  300. }
  301. }).catch(error => {
  302. this.warehouseLoading = false;
  303. console.error('获取仓库列表失败:', error);
  304. this.$message.error('获取仓库列表失败');
  305. })
  306. },
  307. // 切换下拉框显示
  308. toggleWarehouseDropdown(event) {
  309. event.stopPropagation(); // 阻止事件冒泡
  310. this.showWarehouseDropdown = !this.showWarehouseDropdown;
  311. },
  312. // 关闭下拉框
  313. closeWarehouseDropdown() {
  314. this.showWarehouseDropdown = false;
  315. },
  316. // 选择仓库
  317. selectWarehouse(warehouse) {
  318. this.selectedWarehouse = warehouse.warehouseid;
  319. this.selectedWarehouseName = warehouse.warehousename;
  320. localStorage.setItem('selectedWarehouse', warehouse.warehouseid);
  321. this.showWarehouseDropdown = false;
  322. this.$message.success(`已切换到仓库:${warehouse.warehousename}`);
  323. },
  324. // 检查是否已选择仓库
  325. checkWarehouseSelection() {
  326. if (!this.selectedWarehouse) {
  327. this.$message.warning('请先选择仓库');
  328. return false;
  329. }
  330. return true;
  331. },
  332. // 带仓库检查的路由跳转
  333. navigateWithWarehouseCheck(routeName) {
  334. if (this.checkWarehouseSelection()) {
  335. this.$router.push(routeName);
  336. }
  337. },
  338. // 退出
  339. logoutHandle() {
  340. this.$confirm('确定退出?', '提示', {
  341. confirmButtonText: '确认',
  342. cancelButtonText: '取消',
  343. type: 'warning'
  344. }).then(() => {
  345. this.$http({
  346. url: this.$http.adornUrl('/sys/logout'),
  347. method: 'post',
  348. data: this.$http.adornData()
  349. }).then(({data}) => {
  350. if (data && data.code === 0) {
  351. this.$router.push({name: 'login'})
  352. }
  353. })
  354. }).catch(() => {
  355. })
  356. }, // 获取当前管理员信息
  357. getUserInfo() {
  358. this.$http({
  359. url: this.$http.adornUrl('/sys/user/info'),
  360. method: 'get',
  361. params: this.$http.adornParams()
  362. }).then(({data}) => {
  363. if (data && data.code === 0) {
  364. this.loading = false
  365. this.userId = data.user.userId
  366. this.userName = data.user.username
  367. this.site = data.user.site
  368. this.languageDefault = data.user.languageDefault
  369. this.site = data.user.site
  370. this.userDisplay = data.user.userDisplay
  371. }
  372. })
  373. },
  374. },
  375. }
  376. </script>
  377. <style>
  378. .pda-container {
  379. width: 100vw;
  380. height: 100vh;
  381. display: flex;
  382. flex-direction: column;
  383. background: #f5f5f5;
  384. font-family: 'Arial', sans-serif;
  385. }
  386. /* 头部栏 */
  387. .header-bar {
  388. display: flex;
  389. justify-content: space-between;
  390. align-items: center;
  391. padding: 8px 16px;
  392. background: #17B3A3;
  393. color: white;
  394. height: 40px;
  395. min-height: 40px;
  396. max-height: 40px;
  397. }
  398. /* 仓库选择器样式 */
  399. .warehouse-selector {
  400. position: relative;
  401. display: flex;
  402. align-items: center;
  403. cursor: pointer;
  404. padding: 0;
  405. user-select: none;
  406. }
  407. .warehouse-text {
  408. color: white;
  409. font-size: 16px;
  410. font-weight: 500;
  411. margin-right: 8px;
  412. }
  413. .warehouse-selector .el-icon-arrow-down {
  414. color: white;
  415. font-size: 14px;
  416. transition: transform 0.2s ease;
  417. }
  418. .warehouse-selector .el-icon-arrow-down.rotate {
  419. transform: rotate(180deg);
  420. }
  421. /* 下拉框样式 */
  422. .warehouse-dropdown {
  423. position: absolute;
  424. top: 100%;
  425. left: 0;
  426. min-width: 120px;
  427. background: white;
  428. border-radius: 4px;
  429. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  430. z-index: 9999;
  431. margin-top: 4px;
  432. overflow: hidden;
  433. border: 1px solid #e0e0e0;
  434. }
  435. .dropdown-item {
  436. padding: 12px 16px;
  437. cursor: pointer;
  438. font-size: 14px;
  439. color: #333;
  440. transition: background-color 0.2s ease;
  441. }
  442. .dropdown-item:hover {
  443. background: #f5f5f5;
  444. }
  445. .dropdown-item.active {
  446. //background: #17B3A3;
  447. color: #17B3A3;
  448. }
  449. .dropdown-item.loading {
  450. text-align: center;
  451. color: #666;
  452. cursor: default;
  453. }
  454. .dropdown-item.loading:hover {
  455. background: white;
  456. }
  457. .dropdown-item.loading i {
  458. margin-right: 6px;
  459. animation: spin 1s linear infinite;
  460. }
  461. @keyframes spin {
  462. from { transform: rotate(0deg); }
  463. to { transform: rotate(360deg); }
  464. }
  465. .dropdown-item.empty {
  466. text-align: center;
  467. color: #999;
  468. cursor: default;
  469. }
  470. .dropdown-item.empty:hover {
  471. background: white;
  472. }
  473. .logout-button {
  474. background: rgba(255, 255, 255, 0.15);
  475. color: white;
  476. padding: 6px 12px;
  477. border-radius: 16px;
  478. cursor: pointer;
  479. display: flex;
  480. align-items: center;
  481. font-size: 13px;
  482. font-weight: 400;
  483. transition: all 0.3s ease;
  484. min-width: 55px;
  485. justify-content: center;
  486. border: 1px solid rgba(255, 255, 255, 0.3);
  487. backdrop-filter: blur(10px);
  488. position: relative;
  489. overflow: hidden;
  490. }
  491. .logout-button::before {
  492. content: '';
  493. position: absolute;
  494. top: 0;
  495. left: -100%;
  496. width: 100%;
  497. height: 100%;
  498. background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  499. transition: left 0.5s ease;
  500. }
  501. .logout-button:hover {
  502. background: rgba(255, 255, 255, 0.25);
  503. border-color: rgba(255, 255, 255, 0.5);
  504. transform: translateY(-1px);
  505. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  506. }
  507. .logout-button:hover::before {
  508. left: 100%;
  509. }
  510. .logout-button:active {
  511. transform: translateY(0);
  512. box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  513. }
  514. .logout-button i {
  515. margin-right: 6px;
  516. font-size: 14px;
  517. flex-shrink: 0;
  518. }
  519. .logout-button span {
  520. white-space: nowrap;
  521. }
  522. /* 内容区域 */
  523. .content-area {
  524. flex: 1;
  525. padding: 10px;
  526. overflow-y: auto;
  527. }
  528. /* 功能区域 */
  529. .section {
  530. margin-bottom: 15px;
  531. }
  532. .section-header {
  533. display: flex;
  534. align-items: center;
  535. margin-bottom: 9px;
  536. padding: 6px 0;
  537. border-bottom: 1.5px solid #17B3A3;
  538. }
  539. .bullet {
  540. color: #17B3A3;
  541. font-size: 16px;
  542. margin-right: 8px;
  543. font-weight: bold;
  544. }
  545. .section-title {
  546. color: #17B3A3;
  547. font-size: 15px;
  548. font-weight: bold;
  549. }
  550. /* 按钮网格 */
  551. .button-grid {
  552. display: grid;
  553. grid-template-columns: repeat(4, 1fr) !important;
  554. gap: 8px;
  555. }
  556. /* 菜单项 */
  557. .menu-item {
  558. background: white;
  559. border-radius: 12px;
  560. padding: 12px 6px 10px;
  561. text-align: center;
  562. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  563. transition: transform 0.2s;
  564. cursor: pointer;
  565. display: flex;
  566. flex-direction: column;
  567. align-items: center;
  568. justify-content: center;
  569. min-height: 80px;
  570. }
  571. .menu-item:active {
  572. transform: scale(0.95);
  573. }
  574. .menu-item.disabled {
  575. opacity: 0.6;
  576. position: relative;
  577. }
  578. .menu-item.disabled::after {
  579. content: '开发中';
  580. position: absolute;
  581. top: 6px;
  582. right: 6px;
  583. background: #ff9500;
  584. color: white;
  585. font-size: 8px;
  586. padding: 2px 4px;
  587. border-radius: 6px;
  588. font-weight: bold;
  589. z-index: 1;
  590. }
  591. .menu-icon {
  592. width: 40px;
  593. height: 40px;
  594. border-radius: 50%;
  595. display: flex;
  596. align-items: center;
  597. justify-content: center;
  598. margin: 0 auto 8px;
  599. color: white;
  600. flex-shrink: 0;
  601. }
  602. .menu-icon.purchase {
  603. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  604. }
  605. .menu-icon.production-return {
  606. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  607. }
  608. .menu-icon.production-inbound {
  609. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  610. }
  611. .menu-icon.sales-return {
  612. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  613. }
  614. .menu-icon.purchase-return {
  615. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  616. }
  617. .menu-icon.production-issue {
  618. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  619. }
  620. .menu-icon.mr {
  621. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  622. }
  623. .menu-icon.outsourcing {
  624. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  625. }
  626. .menu-icon.sales-delivery {
  627. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  628. }
  629. .menu-icon.transport {
  630. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  631. }
  632. .menu-icon.attribute {
  633. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  634. }
  635. .menu-icon.inventory {
  636. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  637. }
  638. .menu-icon.other {
  639. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  640. }
  641. .menu-icon.hu {
  642. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  643. }
  644. .menu-icon.inventory-move {
  645. background: linear-gradient(135deg, #17B3A3 0%, #1dc5ef 100%);
  646. }
  647. .menu-text {
  648. font-size: 11px;
  649. color: #333;
  650. font-weight: bold;
  651. line-height: 1.2;
  652. margin-top: 2px;
  653. white-space: nowrap;
  654. overflow: hidden;
  655. text-overflow: ellipsis;
  656. max-width: 100%;
  657. }
  658. /* 响应式设计 */
  659. @media screen and (max-width: 480px) {
  660. .header-bar {
  661. padding: 8px 12px;
  662. }
  663. .warehouse-text {
  664. font-size: 14px;
  665. }
  666. .logout-button {
  667. padding: 5px 10px;
  668. font-size: 12px;
  669. min-width: 50px;
  670. border-radius: 14px;
  671. }
  672. .logout-button i {
  673. margin-right: 4px;
  674. font-size: 12px;
  675. }
  676. .warehouse-dropdown {
  677. min-width: 120px;
  678. }
  679. .content-area {
  680. padding: 8px;
  681. }
  682. .section-header {
  683. padding: 2px 10px;
  684. }
  685. .section-title {
  686. font-size: 13px;
  687. }
  688. .button-grid {
  689. grid-template-columns: repeat(2, 1fr);
  690. gap: 10px;
  691. }
  692. .menu-item {
  693. padding: 8px 4px 6px;
  694. min-height: 70px;
  695. }
  696. .menu-icon {
  697. width: 35px;
  698. height: 35px;
  699. margin-bottom: 6px;
  700. }
  701. .menu-text {
  702. font-size: 10px;
  703. line-height: 1.1;
  704. margin-top: 2px;
  705. }
  706. .menu-item.disabled::after {
  707. top: 4px;
  708. right: 4px;
  709. font-size: 7px;
  710. padding: 1px 3px;
  711. border-radius: 4px;
  712. }
  713. }
  714. @media screen and (min-width: 481px) and (max-width: 767px) {
  715. .button-grid {
  716. grid-template-columns: repeat(3, 1fr);
  717. }
  718. .menu-item {
  719. padding: 10px 5px 8px;
  720. min-height: 75px;
  721. }
  722. .menu-icon {
  723. width: 38px;
  724. height: 38px;
  725. margin-bottom: 7px;
  726. }
  727. .menu-text {
  728. font-size: 10.5px;
  729. }
  730. }
  731. @media screen and (min-width: 768px) {
  732. .button-grid {
  733. grid-template-columns: repeat(4, 1fr);
  734. }
  735. }
  736. </style>