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.

140 lines
4.0 KiB

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
  1. <template>
  2. <div>
  3. <div class="pda-container">
  4. <div class="status-bar">
  5. <div class="goBack" @click="goBack"><i class="el-icon-arrow-left"></i>上一页</div>
  6. <div class="goBack">{{ functionTitle }}</div>
  7. <div class="network" style="color: #fff" @click="$router.push({ path: '/' })">🏠首页</div>
  8. </div>
  9. <div style="overflow-y: auto">
  10. <!-- 功能选择 -->
  11. <div class="function-selector" v-if="!selectedFunction">
  12. <div class="function-card" @click="selectFunction('direct')">
  13. <div class="function-icon">📦</div>
  14. <div class="function-title">直接发料</div>
  15. <div class="function-desc">输入工单/PO号扫描物料标签直接发料</div>
  16. </div>
  17. <div class="function-card" @click="selectFunction('picking')">
  18. <div class="function-icon">🏗</div>
  19. <div class="function-title">拣选装托盘</div>
  20. <div class="function-desc">基于申请单创建托盘扫描箱卷绑定</div>
  21. </div>
  22. <div class="function-card" @click="selectFunction('move')">
  23. <div class="function-icon">🚚</div>
  24. <div class="function-title">移库发料</div>
  25. <div class="function-desc">输入申请单/PO号选择库位生成移库记录</div>
  26. </div>
  27. <div class="function-card" @click="selectFunction('return')">
  28. <div class="function-icon"></div>
  29. <div class="function-title">退料</div>
  30. <div class="function-desc">选择退料类型录入退料数量生成退料记录</div>
  31. </div>
  32. </div>
  33. <!-- 直接发料骨架 -->
  34. <div v-if="selectedFunction === 'direct'">
  35. <direct-issue @back="resetAll" />
  36. </div>
  37. <!-- 拣选装托盘骨架 -->
  38. <div v-if="selectedFunction === 'picking'">
  39. <picking-issue @back="resetAll" />
  40. </div>
  41. <!-- 移库发料骨架 -->
  42. <div v-if="selectedFunction === 'move'">
  43. <move-issue @back="resetAll" />
  44. </div>
  45. <!-- 退料骨架 -->
  46. <div v-if="selectedFunction === 'return'">
  47. <return-issue @back="resetAll" />
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </template>
  53. <script>
  54. import DirectIssue from './DirectIssue.vue'
  55. import PickingIssue from './PickingIssue.vue'
  56. import MoveIssue from './MoveIssue.vue'
  57. import ReturnIssue from './ReturnIssue.vue'
  58. export default {
  59. name: 'OutsourcingIssuePDA',
  60. components: {
  61. DirectIssue,
  62. PickingIssue,
  63. MoveIssue,
  64. ReturnIssue
  65. },
  66. data() {
  67. return {
  68. selectedFunction: null
  69. }
  70. },
  71. computed: {
  72. functionTitle() {
  73. if (!this.selectedFunction) return '委外发料';
  74. if (this.selectedFunction === 'direct') return '直接发料';
  75. if (this.selectedFunction === 'picking') return '拣选装托盘';
  76. if (this.selectedFunction === 'move') return '移库发料';
  77. if (this.selectedFunction === 'return') return '退料';
  78. return '委外发料';
  79. }
  80. },
  81. methods: {
  82. selectFunction(func) {
  83. this.selectedFunction = func
  84. },
  85. resetAll() {
  86. this.selectedFunction = null
  87. },
  88. goBack() {
  89. if (!this.selectedFunction) {
  90. this.$router.push('/')
  91. } else {
  92. this.selectedFunction = null
  93. }
  94. }
  95. }
  96. }
  97. </script>
  98. <style scoped>
  99. .outsourcing-issue {
  100. padding: 10px;
  101. font-family: Arial, sans-serif;
  102. background-color: #f5f5f5;
  103. min-height: 100vh;
  104. }
  105. .function-selector {
  106. display: flex;
  107. flex-direction: column;
  108. gap: 15px;
  109. padding: 20px 0;
  110. }
  111. .function-card {
  112. background: white;
  113. border-radius: 8px;
  114. padding: 20px;
  115. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  116. cursor: pointer;
  117. transition: all 0.3s;
  118. text-align: center;
  119. }
  120. .function-card:hover {
  121. transform: translateY(-2px);
  122. box-shadow: 0 4px 8px rgba(0,0,0,0.15);
  123. }
  124. .function-icon {
  125. font-size: 48px;
  126. margin-bottom: 10px;
  127. }
  128. .function-title {
  129. font-size: 18px;
  130. font-weight: bold;
  131. margin-bottom: 8px;
  132. color: #333;
  133. }
  134. .function-desc {
  135. font-size: 14px;
  136. color: #666;
  137. }
  138. </style>