goods-add.vue 10 KB

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