goods-add.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-form ref="form" label-width="250px" class="form-page">
  5. <el-form-item label="商品名称">
  6. <el-input v-model="form.goodsName"></el-input>
  7. </el-form-item>
  8. <!-- <el-form-item label="商品来源">
  9. <el-select v-model="form.type" placeholder="请选择商品来源">
  10. <el-option v-for="(item,index) in goodsType" :key="index" :label="item.name"
  11. :value="index"></el-option>
  12. </el-select>
  13. </el-form-item> -->
  14. <el-form-item label="会员折扣">
  15. <el-input v-model="form.sellDiscount"></el-input>
  16. </el-form-item>
  17. <el-form-item label="商品类型">
  18. <el-checkbox v-for="(value,key) in GiftTypeArr" v-model="form.giftType[key-1]" :key="key" >{{value.name}}</el-checkbox>
  19. </el-form-item>
  20. <!-- <el-form-item label="复消购买方式">
  21. <el-checkbox v-for="(value,key) in sellType" v-model="form.sellType[key-1]" :key="key" >{{value.name}}</el-checkbox>
  22. </el-form-item> -->
  23. <el-form-item label="PV分期">
  24. <!-- <el-checkbox v-model="form.pvSplit"></el-checkbox>-->
  25. <el-select v-model="form.pvSplit" placeholder="">
  26. <el-option
  27. v-for="item in pvSplitOptions"
  28. :key="item.value"
  29. :label="item.label"
  30. :value="item.value">
  31. </el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="商品编号">
  35. <el-input v-model="form.goodsNo"></el-input>
  36. </el-form-item>
  37. <el-form-item label="单位">
  38. <el-input v-model="form.unit"></el-input>
  39. </el-form-item>
  40. <el-form-item label="市场价格">
  41. <el-input v-model="form.marketPrice"></el-input>
  42. </el-form-item>
  43. <el-form-item label="销售价格">
  44. <el-input v-model="form.sellPrice"></el-input>
  45. </el-form-item>
  46. <el-form-item label="价格PV ">
  47. <el-input v-model="form.pricePv"></el-input>
  48. </el-form-item>
  49. <!-- <el-form-item label="兑换积分">
  50. <el-input v-model="form.point"></el-input>
  51. </el-form-item> -->
  52. <el-form-item label="库存">
  53. <el-input v-model="form.storeNums"></el-input>
  54. </el-form-item>
  55. <el-form-item label="商品详情">
  56. <el-input
  57. type="textarea"
  58. :rows="2"
  59. placeholder="请输入内容"
  60. v-model="form.content">
  61. </el-input>
  62. </el-form-item>
  63. <el-form-item label="排序">
  64. <el-input v-model="form.sort"></el-input>
  65. </el-form-item>
  66. <el-form-item label="上传图片">
  67. <div class='up_load'>
  68. <leo-uploader
  69. @on-success='upLoadSuccess'
  70. :request-route="'shop/upload'"
  71. ></leo-uploader>
  72. </div>
  73. </el-form-item>
  74. <el-form-item>
  75. <el-button type="primary" @click="addSubmit" :loading="submitButtonStat">添加</el-button>
  76. </el-form-item>
  77. </el-form>
  78. </div>
  79. </div>
  80. </template>
  81. <script>
  82. import store from '@/utils/vuexStore'
  83. import network from '@/utils/network'
  84. import tool from '@/utils/tool'
  85. import baseInfo from '../../utils/baseInfo'
  86. import LeoUploader from '@/components/Uploader';
  87. export default {
  88. name: "goods-add",
  89. components:{LeoUploader},
  90. mounted () {
  91. this.getData();
  92. this.getFileToken();
  93. },
  94. data(){
  95. return{
  96. dialogImageUrl: '',
  97. dialogVisible: false,
  98. disabled: false,
  99. loading: false,
  100. file:null,
  101. uploadToken:'',
  102. pvSplitOptions: [
  103. {
  104. value: '0',
  105. label: 'No'
  106. },
  107. {
  108. value: '1',
  109. label: 'Yes'
  110. }],
  111. form:{
  112. goodsName:'',
  113. type:'',
  114. giftType:[false,false,false,false],
  115. sellType:[false,false],
  116. goodsNo:'',
  117. unit:'',
  118. marketPrice:'',
  119. sellPrice:'',
  120. pvSplit: '0',
  121. pricePv:'',
  122. point:'',
  123. storeNums:'',
  124. content:'',
  125. sort:'',
  126. discount:'',
  127. cover:'',
  128. textarea:'',
  129. sellDiscount:'',
  130. },
  131. submitButtonStat: false,
  132. goodsType:[],
  133. GiftTypeArr:[],
  134. sellType:null,
  135. width:'100px',
  136. height:'100px',
  137. }
  138. },
  139. watch:{
  140. dialogVisible(newVal,oldVal){
  141. console.log(newVal,oldVal)
  142. }
  143. },
  144. methods: {
  145. handleRemove(file) {
  146. console.log(file);
  147. },
  148. upLoadSuccess(file){
  149. this.form.cover=file;
  150. this.form.cover = tool.getLocaleLink(file, '/files/');
  151. this.form.coverOrigin = file
  152. this.img_show=false;
  153. },
  154. handlePictureCardPreview(file) {
  155. this.dialogImageUrl = file.url;
  156. this.dialogVisible = true;
  157. this.file=file;
  158. // console.log(file);
  159. },
  160. handleDownload(file) {
  161. console.log(file);
  162. },
  163. getFile(){
  164. let data={
  165. uploadToken:this.uploadToken,
  166. file:this.file
  167. }
  168. if(this.uploadToken){
  169. network.postData('shop/upload',data)
  170. .then(response=>{
  171. console.log(response);
  172. })
  173. }
  174. },
  175. getFileToken(){
  176. network.getData('shop/upload').then(response=>{
  177. this.uploadToken=response;
  178. })
  179. },
  180. getData (page, pageSize) {
  181. let filterData = this.filterModel
  182. let vueObj = this
  183. network.getPageData(this, 'shop/goods-add', page, pageSize, this.filterModel, response=>{
  184. console.log(response)
  185. this.goodsType=response.goodsType
  186. this.GiftTypeArr=response.giftType
  187. this.sellType=response.sellType
  188. this.form.sellType=this.form.sellType.map((item,index)=>{
  189. return response.sellType.some(val=>(index+1).toString()==val)
  190. })
  191. })
  192. },addSubmit() {
  193. this.submitButtonStat = true
  194. let path = 'shop/goods-add';
  195. let sellType =[]
  196. this.form.sellType.map((item,index)=>{
  197. if(item){
  198. sellType.push((index+1).toString())
  199. }
  200. });
  201. let sen_gift=[];
  202. this.form.giftType.map((item,index)=>{
  203. if(item){
  204. sen_gift.push((index+1).toString())
  205. }
  206. })
  207. let postData = {
  208. goodsName: this.form.goodsName,
  209. sellDiscount: this.form.sellDiscount,
  210. discount: this.form.type.discount,
  211. type: this.form.type,
  212. giftType: sen_gift,
  213. sellType: sellType,
  214. pvSplit: this.form.pvSplit,
  215. goodsNo: this.form.goodsNo,
  216. unit: this.form.unit,
  217. marketPrice: this.form.marketPrice,
  218. sellPrice: this.form.sellPrice,
  219. pricePv: this.form.pricePv,
  220. // point: this.form.point,
  221. storeNums: this.form.storeNums,
  222. content: this.form.content,
  223. sort: this.form.sort,
  224. cover: this.form.cover,
  225. }
  226. return network.postData(path, postData).then(response => {
  227. console.log(response);
  228. this.$message({
  229. message: response,
  230. type: 'success'
  231. })
  232. this.submitButtonStat = false
  233. this.$router.go(-1)
  234. }).catch(() => {
  235. this.submitButtonStat = false
  236. })
  237. },
  238. /*
  239. handleEdit() {
  240. this.dialogEditFormVisible = false
  241. this.$message({
  242. message: '正在修改数据',
  243. type: 'info'
  244. })
  245. let path = 'finance/deal-type-edit'
  246. network.postData(path, this.form).then(response => {
  247. this.$message({
  248. message: response,
  249. type: 'success'
  250. })
  251. this.getData(this.currentPage, this.pageSize)
  252. }).catch(response => {
  253. })
  254. },*/
  255. }
  256. }
  257. </script>
  258. <style scoped>
  259. .up_load{
  260. width: 100px;
  261. }
  262. </style>