applyItem.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <view class="content">
  3. <!-- 自定义导航 -->
  4. <view class="navbar-box">
  5. <u-navbar title="申请详情" :safeAreaInsetTop="true" @custom-back="leftClick"></u-navbar>
  6. </view>
  7. <view class="wrap">
  8. <view class="item-title">物资信息</view>
  9. <view class="list">
  10. <view class="item u-flex u-row-between" v-for="item in productList" :key="item.id">
  11. <view class="left u-flex">
  12. <image :src="item.imgUrl" mode="aspectFill"></image>
  13. <view class="text">
  14. <view class="name u-m-b-10">{{item.mateName}}</view>
  15. <view class="u-tips-color">{{filterSpecName(item.specCode)}}*{{filterUnitName(item.unitCode)}}</view>
  16. </view>
  17. </view>
  18. <view class="right">
  19. <view class="" v-if="askforStatus==2" style="color: #919191;">
  20. <view class="u-m-b-10">申请数量:{{item.askforNum}}</view>
  21. <view class="">审批数量:{{item.grantNum}}</view>
  22. </view>
  23. <view class="" v-else style="color: #003bff;">
  24. {{item.askforNum}}{{filterUnitName(item.unitCode)}}
  25. </view>
  26. </view>
  27. </view>
  28. <view class="show-more" v-if="showMore" @click="jumpPage(`/pages/apply/applylist/list?id=${id}&askforStatus=${askforStatus}`)">
  29. <text>查看更多</text>
  30. </view>
  31. </view>
  32. <u-gap class="gap" height="20" bg-color="#ededed"></u-gap>
  33. <view class="item-title">领取信息</view>
  34. <view class="info-item u-flex">
  35. <view class="til u-m-r-10">领取方式:</view>
  36. <view class="con u-tips-color">{{filterPaymentName(details.storeOutType)}}</view>
  37. </view>
  38. <view class="info-item u-flex" v-if="details.storeOutType==1">
  39. <view class="til u-m-r-10">预计取货时间:</view>
  40. <view class="con u-tips-color">{{details.dispTime}}</view>
  41. </view>
  42. <view class="info-item u-flex" v-if="details.storeOutType==2">
  43. <view class="til u-m-r-10">派送地址:</view>
  44. <view class="con u-tips-color">{{details.dispAddress}}</view>
  45. </view>
  46. <view class="info-item u-flex">
  47. <view class="til u-m-r-10">联系人姓名:</view>
  48. <view class="con u-tips-color">{{details.contactPerson}}</view>
  49. </view>
  50. <view class="info-item u-flex">
  51. <view class="til u-m-r-10">联系人电话:</view>
  52. <view class="con u-tips-color">{{details.contactPhone}}</view>
  53. </view>
  54. <u-gap class="gap" height="20" bg-color="#ededed"></u-gap>
  55. <view class="item-title">审批信息</view>
  56. <view class="info-item u-flex">
  57. <view class="til u-m-r-10">审批状态:</view>
  58. <view class="con u-tips-color">{{details.askforStatus|filterAskforStatus}}</view>
  59. </view>
  60. <view class="info-item u-flex">
  61. <view class="til u-m-r-10">审批人:</view>
  62. <view class="con u-tips-color">{{details.processUserName||'-'}}</view>
  63. </view>
  64. <view class="info-item u-flex">
  65. <view class="til u-m-r-10">审批时间:</view>
  66. <view class="con u-tips-color">{{details.processTime||'-'}}</view>
  67. </view>
  68. <view class="text-color-red" v-if="details.remark">备注:{{details.remark}}</view>
  69. </view>
  70. </view>
  71. </template>
  72. <script>
  73. import {otherApiUrl} from '@/common/apiurl.js';
  74. export default {
  75. data() {
  76. return {
  77. id:'',
  78. details:{},
  79. productList:[],
  80. unitNameList:[],
  81. askforStatus:'',
  82. paymentList:[],
  83. specNameList:[],
  84. showMore:false,
  85. }
  86. },
  87. onLoad(page) {
  88. this.id = page.id;
  89. this.askforStatus = page.askforStatus;
  90. this.getApplyDetails(page.id);
  91. this.getApplyDetailsProduct();
  92. this.unitNameDict();
  93. this.getpaymentList();
  94. this.specNameDict();
  95. },
  96. computed:{
  97. filterUnitName(){
  98. return function(value){
  99. let v = '';
  100. for (let i = 0; i < this.unitNameList.length; i++){
  101. // console.log('value',value);
  102. // console.log('value',this.unitNameList[i]);
  103. let item = this.unitNameList[i];
  104. if (value == item.value) {
  105. v = item.label;
  106. break;
  107. }
  108. }
  109. return v
  110. }
  111. },
  112. filterSpecName(){
  113. return function(value){
  114. let v = '';
  115. for (let i = 0; i < this.specNameList.length; i++){
  116. // console.log('value',value);
  117. // console.log('value',this.specNameList[i]);
  118. let item = this.specNameList[i];
  119. if (value == item.value) {
  120. v = item.label;
  121. break;
  122. }
  123. }
  124. return v
  125. }
  126. },
  127. filterPaymentName(){
  128. return function(value){
  129. let v = '';
  130. for (let i = 0; i < this.paymentList.length; i++){
  131. // console.log('value',value);
  132. // console.log('value',this.paymentList[i]);
  133. let item = this.paymentList[i];
  134. if (value == item.value) {
  135. v = item.label;
  136. break;
  137. }
  138. }
  139. return v
  140. }
  141. }
  142. },
  143. methods: {
  144. leftClick() {
  145. let canNavBack = getCurrentPages();
  146. if(canNavBack && canNavBack.length>1) {
  147. uni.navigateBack({
  148. delta: 1
  149. });
  150. } else {
  151. history.back();
  152. }
  153. },
  154. // 跳转页面
  155. jumpPage (url) {
  156. if(url) {
  157. uni.navigateTo({
  158. url: url
  159. });
  160. }
  161. },
  162. async getApplyDetails(id) {
  163. let { code, data, msg} = await this.$u.get(otherApiUrl.applyDetails + id)
  164. if(code === 200) {
  165. this.details = data
  166. }else{
  167. uni.showToast({
  168. title:msg,
  169. icon:'error'
  170. })
  171. }
  172. },
  173. async getApplyDetailsProduct(id) {
  174. let param ={
  175. pageNum:1,
  176. pageSize:1000,
  177. askfoId:this.id,
  178. }
  179. let { code, rows, msg} = await this.$u.api.applyDetailsProduct(param);
  180. if(code === 200) {
  181. // this.productList = rows;
  182. if(rows.length>2){
  183. this.showMore = true;
  184. }
  185. this.productList = rows.slice(0,2);
  186. }else{
  187. uni.showToast({
  188. title:msg,
  189. icon:'error'
  190. })
  191. }
  192. },
  193. async unitNameDict() {
  194. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'goods_unit_name')
  195. if(code === 200) {
  196. this.unitNameList = data.map(item => {
  197. return {
  198. label: item.dictLabel,
  199. value: item.dictValue
  200. }
  201. })
  202. }
  203. },
  204. async specNameDict() {
  205. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'goods_spec_name')
  206. if(code === 200) {
  207. this.specNameList = data.map(item => {
  208. return {
  209. label: item.dictLabel,
  210. value: item.dictValue
  211. }
  212. })
  213. }
  214. },
  215. async getpaymentList() {
  216. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'payment')
  217. if(code === 200) {
  218. this.paymentList = data.map(item => {
  219. return {
  220. label: item.dictLabel,
  221. value: item.dictValue
  222. }
  223. })
  224. }
  225. },
  226. }
  227. }
  228. </script>
  229. <style lang="scss" scoped>
  230. .item{
  231. margin: 24rpx;
  232. padding: 24rpx;
  233. border: 1px solid #ddd;
  234. border-radius: 10rpx;
  235. .left image {
  236. width: 120rpx;
  237. height: 120rpx;
  238. border-radius: 8rpx;
  239. margin-right: 12rpx;
  240. }
  241. }
  242. .info-item{
  243. margin-bottom: 10rpx;
  244. }
  245. .show-more{
  246. text-align: center;
  247. color: blue;
  248. }
  249. </style>