msgDialog.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <template>
  2. <view class="a">
  3. <uni-popup ref="inputDialog" type="dialog">
  4. <view class="edit-view">
  5. <view class="title">不合格明细登记</view>
  6. <view class="tabs">
  7. <view class="tabs-item" :class="{'active': detailActive === 'xmnga'}" @click="detailClick('xmnga')">废品明细</view>
  8. <view class="tabs-item" :class="{'active': detailActive === 'upmnga'}" @click="detailClick('upmnga')">返修明细</view>
  9. <view class="tabs-item" :class="{'active': detailActive === 'cmnga'}" @click="detailClick('cmnga')">让步明细</view>
  10. <view class="tabs-item" :class="{'active': detailActive === 'umnga'}" @click="detailClick('umnga')">改型明细</view>
  11. </view>
  12. <view class="inp-view">
  13. <view v-for="(item, index) in showList" :key='index' class="form-wrapper">
  14. <view class="row-box">
  15. 类型<text>{{item.last}}</text>
  16. </view>
  17. <view class="row-box">
  18. 数量<text>{{item.first}}</text>
  19. </view>
  20. <view class="row-box">
  21. 重量<text>{{multiply(item.first, digit)}}</text>
  22. </view>
  23. </view>
  24. <view v-if="!showList.length" class="no-data">暂无明细</view>
  25. </view>
  26. <view class="footer">
  27. <button @click='handleCancel'>关闭</button>
  28. </view>
  29. </view>
  30. </uni-popup>
  31. </view>
  32. </template>
  33. <script>
  34. import {multiply} from "@/utils/math"
  35. export default {
  36. props:{
  37. processesInfo:{
  38. type:Object,
  39. default:() =>({})
  40. }
  41. },
  42. data(){
  43. return {
  44. detailActive:'xmnga',
  45. xmngaList:[],
  46. cmngaList:[],
  47. umngaList:[],
  48. upmngaList:[],
  49. }
  50. },
  51. created(){
  52. },
  53. computed:{
  54. showList(){
  55. return this[this.detailActive + 'List']
  56. },
  57. digit(){
  58. const map = {
  59. KG:1,
  60. G: 0.001,
  61. TON: 1000
  62. }
  63. if(['KG', 'G', 'TON'].includes(this.processesInfo.meins)){
  64. return map[this.processesInfo.meins]
  65. }else{
  66. return map[this.processesInfo.gewei]
  67. }
  68. }
  69. },
  70. methods:{
  71. multiply,
  72. open(active, data){
  73. this.xmngaList = JSON.parse(data.xmngaJson || '[]')
  74. this.cmngaList = JSON.parse(data.cmngaJson || '[]')
  75. this.umngaList = JSON.parse(data.umngaJson || '[]')
  76. this.upmngaList = JSON.parse(data.upmngaJson || '[]')
  77. this.detailClick(active)
  78. this.$refs.inputDialog.open()
  79. },
  80. handleCancel(){
  81. this.$refs.inputDialog.close()
  82. },
  83. detailClick(name){
  84. this.detailActive = name
  85. }
  86. }
  87. }
  88. </script>
  89. <style lang="scss" scoped>
  90. .edit-view{
  91. background: #fff;
  92. border-radius: 16rpx;
  93. padding: 20rpx;
  94. .inp-view{
  95. width: 90vw;
  96. max-height: 60vh;
  97. overflow: auto;
  98. }
  99. .title{
  100. font-size: $uni-font-size-lg;
  101. padding: 20rpx 0 ;
  102. margin-bottom: 10rpx;
  103. }
  104. .form-wrapper{
  105. padding:0 50rpx 15rpx;
  106. font-size: $uni-font-size-sm;
  107. border-bottom: 1rpx solid #ccc;
  108. .row-box{
  109. padding: 12rpx 0;
  110. display: flex;
  111. justify-content: space-between;
  112. align-items: center;
  113. }
  114. }
  115. }
  116. .tabs{
  117. display: flex;
  118. justify-content: flex-start;
  119. align-items: center;
  120. margin-bottom: 20rpx;
  121. font-size: $uni-font-size-sm;
  122. margin-bottom: 10rpx;
  123. .tabs-item{
  124. background: rgba(226, 226, 226, 1);
  125. border: 1rpx solid rgba(226, 226, 226, 1);
  126. padding: 10rpx 16rpx;
  127. &.active{
  128. background: #fff;
  129. }
  130. }
  131. }
  132. .footer{
  133. display: flex;
  134. justify-content: space-between;
  135. align-items: center;
  136. padding: 20rpx;
  137. button{
  138. width: 150rpx;
  139. }
  140. }
  141. .no-data{
  142. padding: 50rpx;
  143. text-align: center;
  144. font-size: $uni-font-size-lg;
  145. }
  146. </style>