ReturnSelect.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <view class="assets-container">
  3. <u-popup :show="visible" mode="bottom" @close="visible = false">
  4. <view class="title">选择资产编号</view>
  5. <checkbox-group @change="handleCheckChange">
  6. <view class="list-wrapper">
  7. <view v-for="(item, index) in tableData" :key="index" class="cell">
  8. <label>
  9. <view class="row">
  10. <view class="col">
  11. <text class="label">编码</text
  12. ><text class="content">{{ item.assetCode }}</text>
  13. </view>
  14. <view class="col">
  15. <text class="label">名称</text
  16. ><text class="content">{{ item.assetName }}</text>
  17. </view>
  18. <view class="col">
  19. <text class="label">批次号</text
  20. ><text class="content">{{ item.batchNum }}</text>
  21. </view>
  22. <view class="col">
  23. <text class="label">牌号</text
  24. ><text class="content">{{ item.brandNum }}</text>
  25. </view>
  26. <view class="col">
  27. <text class="label">型号</text
  28. ><text class="content">{{ item.modelType }}</text>
  29. </view>
  30. <view class="col">
  31. <text class="label">最小单元</text
  32. ><text class="content"
  33. >{{ item.measurementUnit }}{{ item.unit }} /{{
  34. item.minPackUnit
  35. }}</text
  36. >
  37. </view>
  38. <view class="col">
  39. <text class="label">生产设备编号</text
  40. ><text class="content">{{ item.assetRefCode }}</text>
  41. </view>
  42. <view class="col">
  43. <text class="label">生产日期</text
  44. ><text class="content">{{ item.manufactureTime }}</text>
  45. </view>
  46. </view>
  47. <checkbox :value="item.id + ''"></checkbox
  48. ></label>
  49. </view>
  50. </view>
  51. </checkbox-group>
  52. <div class="footer">
  53. <u-button @click="cancel">取消</u-button>
  54. <u-button type="success" @click="confirm">确认</u-button>
  55. </div>
  56. </u-popup>
  57. </view>
  58. </template>
  59. <script>
  60. import { post, postJ, get, getJ } from '@/utils/api.js'
  61. export default {
  62. data () {
  63. return {
  64. visible: false,
  65. tableData: [],
  66. selectList: [],
  67. callback: null
  68. }
  69. },
  70. methods: {
  71. open (row, callback) {
  72. this.visible = true
  73. this.callback = callback
  74. this._getAssetLedgerDetail(row)
  75. },
  76. confirm () {
  77. if (!this.selectList?.length) {
  78. return this.$message.error('选择资产编号')
  79. }
  80. this.callback &&
  81. this.callback(
  82. this.tableData.filter(item => this.selectList.includes(item.id + ''))
  83. )
  84. this.cancel()
  85. },
  86. cancel () {
  87. this.selectList = []
  88. this.visible = false
  89. },
  90. handleCheckChange ({ detail }) {
  91. this.selectList = detail.value
  92. },
  93. async _getAssetLedgerDetail ({
  94. assetCode,
  95. assetType,
  96. measurementUnit,
  97. minPackUnit,
  98. unit
  99. }) {
  100. this.tableData = []
  101. console.log('_getAssetLedgerDetail', {
  102. assetCode,
  103. assetType,
  104. measurementUnit,
  105. minPackUnit,
  106. unit
  107. })
  108. const res = await get(
  109. this.apiUrl + '/outInWarehouse/select/getAssetLedgerDetail',
  110. {
  111. assetCode,
  112. assetType,
  113. measurementUnit,
  114. minPackUnit,
  115. unit
  116. }
  117. )
  118. if (res?.success) {
  119. this.tableData = res.data
  120. }
  121. }
  122. }
  123. }
  124. </script>
  125. <style lang="scss" scoped>
  126. .title {
  127. font-size: 30rpx;
  128. font-weight: bold;
  129. text-align: center;
  130. margin-bottom: 20rpx;
  131. padding: 10rpx 0;
  132. background-color: $j-primary-border-green;
  133. color: #fff;
  134. }
  135. .list-wrapper {
  136. height: 60vh;
  137. overflow: auto;
  138. .cell {
  139. position: relative;
  140. checkbox {
  141. position: absolute;
  142. bottom: 10rpx;
  143. right: 10rpx;
  144. }
  145. }
  146. .row {
  147. display: flex;
  148. justify-content: space-between;
  149. align-items: center;
  150. flex-wrap: wrap;
  151. border-bottom: 1rpx solid #ccc;
  152. padding-bottom: 30rpx;
  153. margin-bottom: 20rpx;
  154. .col {
  155. width: 50%;
  156. font-size: 28rpx;
  157. margin-bottom: 10rpx;
  158. color: grey;
  159. display: flex;
  160. .label {
  161. display: inline-block;
  162. width: 160rpx;
  163. text-align: right;
  164. margin-right: 20rpx;
  165. }
  166. .content {
  167. flex: 1;
  168. }
  169. }
  170. }
  171. }
  172. .footer {
  173. display: flex;
  174. justify-content: space-between;
  175. /deep/uni-button {
  176. border: none !important;
  177. border-radius: 0 !important;
  178. }
  179. }
  180. </style>