category-create.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <div class="app-container" style="padding-top:0;">
  3. <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal">
  4. <el-menu-item index="1" @click="backToList">商品分类</el-menu-item>
  5. <el-menu-item index="2">添加分类</el-menu-item>
  6. </el-menu>
  7. <el-form ref="dataForm" :rules="rules" :model="temp" label-position="left" label-width="120px" style="width:400px; margin:30px 0 0 50px;">
  8. <el-form-item label="分类名称" prop="classifyName">
  9. <el-input v-model="temp.classifyName" placeholder="请输入分类名称" maxlength="5" />
  10. </el-form-item>
  11. <!--<el-form-item label="图标" prop="classifyImage">
  12. <el-input v-model="temp.classifyImage" />
  13. </el-form-item>-->
  14. <el-form-item label="图标:" prop="classifyImage">
  15. <div class="form-el-upload">
  16. <el-upload
  17. class="avatar-uploader"
  18. :action="action"
  19. :headers="getToken"
  20. :show-file-list="false"
  21. :on-success="handleSuccess"
  22. :before-upload="beforeUpload"
  23. >
  24. <img v-if="temp.classifyImage" :src="temp.classifyImage" class="avatar">
  25. <i v-else class="el-icon-plus avatar-uploader-icon" />
  26. <div slot="tip" class="el-upload__tip">注意:请上传jpg/png格式的图片,最大不超过5M</div>
  27. </el-upload>
  28. </div>
  29. </el-form-item>
  30. <el-form-item label="排序值" prop="sort">
  31. <el-input v-model="temp.sort" type="number" placeholder="请输入排序值" maxlength="3" />
  32. </el-form-item>
  33. <el-form-item label="邮费是否到付" prop="postageToPay" style="width: 500px;">
  34. <el-select v-model="temp.postageToPay" class="filter-item filter-item-temp" placeholder="请选择" value="">
  35. <el-option label="是" value="1" />
  36. <el-option label="否" value="2" />
  37. </el-select>
  38. <span class="span_tip">注意:仪器分类请选择"是",其他分类请选择"否"</span>
  39. </el-form-item>
  40. <el-form-item label="状态" prop="status">
  41. <el-select v-model="temp.status" class="filter-item filter-item-temp" placeholder="请选择" value="">
  42. <el-option label="启用" value="1" />
  43. <el-option label="停用" value="2" />
  44. </el-select>
  45. </el-form-item>
  46. <el-form-item>
  47. <router-link :to="{path:'/goods/category'}">
  48. <el-button type="primary" plain style="margin-right:10px">返回</el-button>
  49. </router-link>
  50. <el-button type="primary" @click="updateData">提交</el-button>
  51. </el-form-item>
  52. </el-form>
  53. </div>
  54. </template>
  55. <script>
  56. import { saveClassify } from '@/api/goods-classify'
  57. export default {
  58. data() {
  59. return {
  60. msg: '添加分类',
  61. action: `${this.baseUrl}/formData/MultiPictareaddData`,
  62. activeIndex: '2',
  63. rules: {
  64. classifyName: [{ required: true, message: '分类名称不能为空', trigger: 'blur' }],
  65. sort: [{ required: true, message: '分类名称不能为空', trigger: 'blur' }],
  66. postageToPay: [{ required: true, message: '请选择邮费是否到付', trigger: 'blur' }],
  67. classifyImage: [{ required: true, message: '请上传分类图标', trigger: 'change' }],
  68. postage: [{ required: true, message: '请选择邮费是否到付', trigger: 'change' }],
  69. status: [{ required: true, message: '请选择状态', trigger: 'change' }]
  70. },
  71. temp: {
  72. id: '',
  73. organizeID: this.$store.getters.organizeID,
  74. classifyName: '',
  75. classifyImage: '',
  76. sort: '',
  77. status: '1',
  78. postageToPay: '',
  79. addTime: '',
  80. updateTime: '',
  81. delFlag: 0
  82. }
  83. }
  84. },
  85. computed: {
  86. getToken() {
  87. return {
  88. 'token': this.$store.getters.token
  89. }
  90. },
  91. classifyId: function() {
  92. return window.location.href.split('/').reverse()[0]
  93. },
  94. organizeID() {
  95. return this.$store.getters.organizeID
  96. }
  97. },
  98. methods: {
  99. updateData() {
  100. this.$refs['dataForm'].validate((valid) => {
  101. if (valid) {
  102. saveClassify(this.temp).then(response => {
  103. this.$notify({
  104. title: response.code * 1 === 1 ? 'Success' : 'Error',
  105. message: response.code * 1 === 1 ? '添加分类成功' : response.msg,
  106. type: response.code * 1 === 1 ? 'success' : 'error',
  107. duration: 2000
  108. })
  109. setTimeout(() => {
  110. this.$router.push({ path: '/goods/category' })
  111. }, 2000)
  112. })
  113. }
  114. })
  115. },
  116. // 上传图标事件
  117. handleSuccess(response, file) {
  118. this.temp.classifyImage = response.data
  119. },
  120. // 对上传图片的大小、格式进行限制
  121. beforeUpload(file) {
  122. const isJPG = file.type === 'image/jpeg'
  123. const isJPG2 = file.type === 'image/jpg'
  124. const isPNG = file.type === 'image/png'
  125. const isLt5M = file.size / 1024 / 1024 < 5
  126. if (!isJPG && !isJPG2 && !isPNG) {
  127. this.$message.error('只支持jpg或png格式图片')
  128. }
  129. if (!isLt5M) {
  130. this.$message.error('请上传5MB以内的图片!')
  131. }
  132. return (isJPG || isJPG2 || isPNG) && isLt5M
  133. },
  134. backToList() {
  135. this.$store.dispatch('tagsView/delView', this.$route).then(() => {
  136. this.$nextTick(() => {
  137. this.$router.replace({
  138. path: '/goods/category'
  139. })
  140. })
  141. })
  142. }
  143. }
  144. }
  145. </script>
  146. <style lang="scss">
  147. .form-el-upload{
  148. width: 150px;
  149. }
  150. .avatar-uploader .el-upload {
  151. border: 1px dashed #d9d9d9;
  152. border-radius: 6px;
  153. cursor: pointer;
  154. position: relative;
  155. overflow: hidden;
  156. float: left;
  157. }
  158. .avatar-uploader .el-upload:hover {
  159. border-color: #409EFF;
  160. }
  161. .avatar-uploader-icon {
  162. font-size: 28px;
  163. color: #8c939d;
  164. width: 148px;
  165. height: 148px;
  166. line-height: 148px;
  167. text-align: center;
  168. }
  169. .avatar {
  170. width: 148px;
  171. height: 148px;
  172. display: block;
  173. }
  174. .el-form-item__label{
  175. text-align: right !important;
  176. }
  177. .el-upload__tip{
  178. margin-top: 0;
  179. line-height: 20px;
  180. color: red;
  181. text-align: left;
  182. position: absolute;
  183. right: -50%;
  184. bottom: 0;
  185. }
  186. .span_tip{
  187. font-size: 12px;
  188. color: red;
  189. margin-left: 5px;
  190. }
  191. .filter-item-temp{
  192. width: 100px;
  193. }
  194. </style>