putin.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <view class="content">
  3. <!-- 自定义导航 -->
  4. <view class="navbar-box">
  5. <u-navbar title="物资入库" :safeAreaInsetTop="true" @leftClick="leftClick"></u-navbar>
  6. </view>
  7. <view class="wrap">
  8. <u-form :model="form" ref="uForm" label-width="180">
  9. <u-form-item label="物资">
  10. <view class="u-flex-1" @click="jumpPage('/pages/putin/goods/goods')"></view>
  11. <u-icon @click="jumpPage('/pages/putin/goods/goods')" name="plus" size="40"></u-icon>
  12. </u-form-item>
  13. <view class="datas">
  14. <view class="datas-item u-flex u-row-between u-border-bottom" v-for="item in form.datas" :key="item.mateId">
  15. <view class="info">
  16. <view class="name">{{item.mateName}}</view>
  17. </view>
  18. <view class="number u-flex">
  19. <u-input v-model="item.mateNum" type="number" :clearable="false" :border="true" />
  20. <view class="unitCode">{{filterUnitName(item.unitCode)}}</view>
  21. </view>
  22. </view>
  23. </view>
  24. <u-form-item label="来源">
  25. <u-input @click="oneSelectOpen('sourceType')" placeholder="请选择" v-model="form.sourceTypeName" disabled />
  26. <u-icon name="arrow-right"></u-icon>
  27. </u-form-item>
  28. <u-form-item label="来源名称">
  29. <u-input v-model="form.sourceName" />
  30. </u-form-item>
  31. <u-form-item label="入库仓库">
  32. <u-input @click="oneSelectOpen('store')" placeholder="请选择" v-model="form.storeName" disabled />
  33. <u-icon name="arrow-right"></u-icon>
  34. </u-form-item>
  35. </u-form>
  36. </view>
  37. <view class="fixed-button">
  38. <u-button type="success" @click="submit">确认入库</u-button>
  39. </view>
  40. <!-- 单列下拉选择 -->
  41. <u-select v-model="selectShow" :list="selectData" @confirm="selectConfirm"></u-select>
  42. </view>
  43. </template>
  44. <script>
  45. import {otherApiUrl} from '@/common/apiurl.js';
  46. export default {
  47. data() {
  48. return {
  49. form: {
  50. storeId: '',
  51. storeName:'',
  52. sourceType: '',
  53. sourceTypeName:'',
  54. sourceName: '',
  55. datas:[],
  56. },
  57. rules: {
  58. // name: [
  59. // {
  60. // required: true,
  61. // message: '请输入姓名',
  62. // // 可以单个或者同时写两个触发验证方式
  63. // trigger: ['change','blur'],
  64. // }
  65. // ],
  66. },
  67. selectTag: '',
  68. selectShow: false,
  69. listMap: {
  70. sourceType: [],
  71. store: [],
  72. },
  73. selectData: [],
  74. unitNameList:[],
  75. storeList:[],
  76. }
  77. },
  78. onLoad() {
  79. this.sourceDict();
  80. this.unitNameDict();
  81. this.getStoreList();
  82. },
  83. onReady() {
  84. // this.$refs.uForm.setRules(this.rules);
  85. },
  86. onShow() {
  87. this.form.datas = [
  88. ...this.putinList
  89. ]
  90. console.log('this.form.datas',this.form.datas);
  91. },
  92. computed:{
  93. filterUnitName(){
  94. return function(value){
  95. let v = '';
  96. for (let i = 0; i < this.unitNameList.length; i++){
  97. // console.log('value',value);
  98. // console.log('value',this.unitNameList[i]);
  99. let item = this.unitNameList[i];
  100. if (value == item.value) {
  101. v = item.label;
  102. break;
  103. }
  104. }
  105. return v
  106. }
  107. }
  108. },
  109. methods: {
  110. leftClick() {
  111. let canNavBack = getCurrentPages();
  112. if(canNavBack && canNavBack.length>1) {
  113. uni.navigateBack({
  114. delta: 1
  115. });
  116. } else {
  117. history.back();
  118. }
  119. },
  120. // 跳转页面
  121. jumpPage(url) {
  122. if (url) {
  123. uni.navigateTo({
  124. url: url
  125. });
  126. }
  127. },
  128. // 单列下拉选择框打开事件
  129. oneSelectOpen(key) {
  130. this.selectTag = key;
  131. this.selectData = this.listMap[key];
  132. if(key=='actiTypeList'){
  133. let actiTypeList = this.listMap.actiTypeList;
  134. if(!actiTypeList||actiTypeList.length<1){
  135. this.$refs.uToast.show({
  136. title: '所选商品(数量)没有活动',
  137. // type: 'error'
  138. });
  139. return
  140. }
  141. }
  142. this.selectShow = true
  143. },
  144. selectConfirm(e) {
  145. // console.log('selectConfirm',e);
  146. // console.log('selectTag', this.selectTag);
  147. switch (this.selectTag) {
  148. case 'sourceType': //业务员
  149. console.log('sourceType selectConfirm',e);
  150. this.form.sourceTypeName = e[0].label;
  151. this.form.sourceType = e[0].value;
  152. break;
  153. case 'store': //结账方式
  154. this.form.storeName = e[0].label;
  155. this.form.storeId = e[0].value;
  156. // this.$u.vuex('orderMap.payWay', e[0].value)
  157. break;
  158. default:
  159. // console.log('3', e);
  160. }
  161. },
  162. async sourceDict() {
  163. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'sys_source')
  164. if(code === 200) {
  165. this.listMap.sourceType = data.map(item => {
  166. return {
  167. label: item.dictLabel,
  168. value: item.dictValue
  169. }
  170. })
  171. }
  172. },
  173. async unitNameDict() {
  174. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'goods_unit_name')
  175. if(code === 200) {
  176. this.unitNameList = data.map(item => {
  177. return {
  178. label: item.dictLabel,
  179. value: item.dictValue
  180. }
  181. })
  182. }
  183. },
  184. async getStoreList() {
  185. let { code, data, msg} = await this.$u.api.storeList();
  186. if(code === 200) {
  187. this.listMap.store = data.map(item => {
  188. return {
  189. label: item.text,
  190. value: item.value
  191. }
  192. })
  193. }
  194. },
  195. async submit(){
  196. console.log('submit',this.form);
  197. console.log('submit',this.form.datas.length);
  198. if(this.form.datas.length<1){
  199. uni.showToast({
  200. title:'请先选择物资',
  201. icon:'error'
  202. })
  203. return
  204. }
  205. if(!this.form.storeId||!this.form.sourceType.length||!this.form.sourceName){
  206. uni.showToast({
  207. title:'请填完表单',
  208. icon:'error'
  209. })
  210. return
  211. }
  212. let {code,msg} = await this.$u.api.epiStoreIn(this.form);
  213. if(code=='200'){
  214. this.$u.vuex('putinList', [])
  215. this.$u.route({
  216. url: 'pages/succeed/succeed',
  217. params: {
  218. title: '入库完成'
  219. }
  220. })
  221. }else{
  222. uni.showToast({
  223. title:msg
  224. })
  225. }
  226. }
  227. }
  228. }
  229. </script>
  230. <style lang="scss" scoped>
  231. .datas{
  232. margin-top: 24rpx;
  233. .datas-item{
  234. padding-bottom: 24rpx;
  235. margin-bottom: 24rpx;
  236. }
  237. .u-input{
  238. width: 200rpx;
  239. margin-right: 10rpx;
  240. }
  241. }
  242. </style>