add.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <template>
  2. <view class="p-content">
  3. <view class="u-forms">
  4. <u--form
  5. labelPosition="left"
  6. :model="form"
  7. ref="uForm"
  8. errorType="toast"
  9. labelWidth="auto"
  10. >
  11. <u-form-item
  12. label="盘点类型"
  13. prop="checkType"
  14. borderBottom
  15. @click="showCheckType = true;"
  16. ref="item1"
  17. required
  18. >
  19. <!-- <u-radio-group
  20. v-model="form.checkType"
  21. @change="checkTypeChange"
  22. placement="row">
  23. <u-radio
  24. :customStyle="{marginLeft: '20px'}"
  25. v-for="item in checkTypeList"
  26. :key="item.code"
  27. :label="item.name"
  28. :name="item.code">
  29. </u-radio>
  30. </u-radio-group> -->
  31. <view style="text-align: right;width: 100%;">
  32. 自选盘点
  33. </view>
  34. </u-form-item>
  35. <!-- <u-form-item
  36. label="是否区分仓库"
  37. prop="warehouseFlag"
  38. borderBottom
  39. @change="warehouseFlagChange"
  40. @click="showWarehouseFlag = true;"
  41. ref="item2"
  42. required
  43. v-if="form.checkType=='SELECT'"
  44. >
  45. <u-radio-group
  46. v-model="form.warehouseFlag"
  47. placement="row">
  48. <u-radio
  49. :customStyle="{marginLeft: '20px'}"
  50. v-for="item in warehouseFlagList"
  51. :key="item.code"
  52. :label="item.name"
  53. :name="item.code">
  54. </u-radio>
  55. </u-radio-group>
  56. </u-form-item> -->
  57. <u-form-item
  58. label="盘点仓库"
  59. prop="warehouseSnList"
  60. borderBottom
  61. @click="showWarehouse = true;"
  62. ref="item2"
  63. required
  64. v-if="form.checkType=='SELECT'"
  65. >
  66. <u--input
  67. v-model="warehouseName"
  68. disabled
  69. inputAlign="right"
  70. disabledColor="#ffffff"
  71. placeholder="请选择盘点仓库"
  72. border="none"
  73. ></u--input>
  74. <u-icon
  75. slot="right"
  76. name="arrow-right"
  77. ></u-icon>
  78. </u-form-item>
  79. </u--form>
  80. </view>
  81. <view class="f-button">
  82. <u-button @click="cansel" hairline>取消</u-button>
  83. <u-button :loading="spinning" type="primary" @click="submit" hairline>提交</u-button>
  84. </view>
  85. <!-- 请选择盘点仓库 -->
  86. <u-picker
  87. title="请选择盘点仓库"
  88. :show="showWarehouse"
  89. @cancel="showWarehouse = false"
  90. @close="showWarehouse = false"
  91. @confirm="warehouseSelect"
  92. :columns="warehouseList"
  93. :closeOnClickOverlay="true"
  94. keyName="name">
  95. </u-picker>
  96. </view>
  97. </template>
  98. <script>
  99. import { checkWarehouseSave } from '@/config/api.js'
  100. export default {
  101. data() {
  102. return {
  103. spinning: false,
  104. showCheckType: false,
  105. checkTypeList: [],
  106. showWarehouseFlag: false,
  107. warehouseFlagList: [],
  108. showWarehouse: false,
  109. warehouseList:[],
  110. warehouseName: '',
  111. form:{
  112. checkType: 'SELECT',
  113. warehouseFlag: '0',
  114. warehouseSnList: undefined
  115. }
  116. };
  117. },
  118. onLoad() {
  119. this.checkTypeList = this.$store.state.vuex_checkTypeList
  120. this.warehouseFlagList = this.$store.state.vuex_warehouseFlagList
  121. const warehouseList = this.$store.state.vuex_checkWarehouseList
  122. this.warehouseList = [warehouseList]
  123. console.log(this.warehouseList)
  124. // 只有一个仓库是默认选中
  125. if(warehouseList.length==1){
  126. this.form.warehouseSnList = warehouseList[0].warehouseSn
  127. this.warehouseName = warehouseList[0].name
  128. this.$refs.uForm.validateField('warehouseSnList')
  129. }
  130. },
  131. onBackPress(e) {
  132. if(this.showWarehouse){
  133. this.showWarehouse = false
  134. return true
  135. }
  136. },
  137. onNavigationBarButtonTap(e){
  138. if(e.index == 0){
  139. uni.navigateTo({
  140. url: "/pages/stockPan/list"
  141. })
  142. }
  143. },
  144. methods: {
  145. checkTypeChange (e) {
  146. this.form.warehouseFlag = '0'
  147. this.form.warehouseSnList = undefined
  148. },
  149. warehouseFlagChange (e) {
  150. this.form.warehouseSnList = undefined
  151. },
  152. // 请选择盘点仓库
  153. warehouseSelect(e) {
  154. this.form.warehouseSnList = e.value[0].warehouseSn
  155. this.warehouseName = e.value[0].name
  156. this.$refs.uForm.validateField('warehouseSnList')
  157. this.showWarehouse = false
  158. },
  159. // 获取仓库列表
  160. getWarehouseList () {
  161. checkWarehouseWarehouse({}).then(res => {
  162. if (res.status == 200) {
  163. this.warehouseList = res.data || []
  164. } else {
  165. this.warehouseList = []
  166. }
  167. })
  168. },
  169. submit() {
  170. const form = JSON.parse(JSON.stringify(this.form))
  171. form.sourceType = 'HAND'
  172. if(!form.warehouseSnList){
  173. uni.$u.toast("请选择盘点仓库")
  174. return false
  175. }
  176. // 全部
  177. if (form.warehouseSnList == '-1') {
  178. form.warehouseFlag = '0'
  179. form.warehouseSnList = undefined
  180. }else{
  181. form.warehouseFlag = '1'
  182. }
  183. this.spinning = true
  184. checkWarehouseSave(form,{custom:{catch:true}}).then(res => {
  185. console.log(res)
  186. if (res.status == 200) {
  187. uni.$u.toast(res.message)
  188. uni.redirectTo({
  189. url:"/pages/stockPan/index?id="+res.data.id+"&checkWarehouseSn="+res.data.checkWarehouseSn
  190. })
  191. }
  192. this.spinning = false
  193. }).catch(res => {
  194. this.spinning = false
  195. })
  196. },
  197. cansel(){
  198. uni.navigateBack()
  199. }
  200. }
  201. };
  202. </script>
  203. <style lang="scss">
  204. .p-content{
  205. .u-forms{
  206. flex-grow: 1;
  207. height: 100%;
  208. overflow: auto;
  209. padding: 0 50upx;
  210. }
  211. .f-button{
  212. display: flex;
  213. justify-content: space-around;
  214. padding: 60upx 40upx;
  215. button{
  216. width: 40%;
  217. }
  218. }
  219. }
  220. </style>