Commit 1e0f197c35834e0da500a47acc66933d9f179445
1 parent
407cbb10
spu 新增前端页面完成
Showing
1 changed file
with
347 additions
and
46 deletions
yudao-ui-admin/src/views/mall/product/spu/index.vue
| @@ -111,31 +111,33 @@ | @@ -111,31 +111,33 @@ | ||
| 111 | <el-form-item label="商品规格"> | 111 | <el-form-item label="商品规格"> |
| 112 | <el-button size="mini" @click="shopTagInput()">添加规格</el-button> | 112 | <el-button size="mini" @click="shopTagInput()">添加规格</el-button> |
| 113 | <div v-for="(tag, tagIndex) in skuTags" :key="tagIndex"> | 113 | <div v-for="(tag, tagIndex) in skuTags" :key="tagIndex"> |
| 114 | - <span>{{tag.tagName}}</span> | ||
| 115 | - <el-button class="button-new-tag" type="text" icon="el-icon-delete" @click="removeTag(tagIndex)">删除</el-button> | 114 | + <span>{{tag.name}}</span> |
| 115 | + <el-button style="margin-left: 10px" class="button-new-tag" type="text" icon="el-icon-delete" | ||
| 116 | + @click="removeTag(tagIndex)">删除 | ||
| 117 | + </el-button> | ||
| 116 | <br/> | 118 | <br/> |
| 117 | <el-tag | 119 | <el-tag |
| 118 | - v-for="(tagItem, tagItemIndex) in tag.tagItems" | ||
| 119 | - :key="tagItem.valueId" | ||
| 120 | - closable | ||
| 121 | - :disable-transitions="false" | ||
| 122 | - @close="handleTagClose(tagIndex, tagItemIndex)"> | ||
| 123 | - {{tagItem.propValue}} | 120 | + v-for="(tagItem, tagItemIndex) in tag.selectValues" |
| 121 | + :key="tagItem" | ||
| 122 | + style="margin-right: 10px" | ||
| 123 | + :disable-transitions="false"> | ||
| 124 | + {{tagItem}} | ||
| 124 | </el-tag> | 125 | </el-tag> |
| 125 | - <el-input | ||
| 126 | - class="input-new-tag" | ||
| 127 | - v-if="tagItemInputs[tagIndex] && tagItemInputs[tagIndex].visible" | ||
| 128 | - v-model="tagItemInputs[tagIndex].value" | ||
| 129 | - :ref="`saveTagInput${tagIndex}`" | ||
| 130 | - size="small" | ||
| 131 | - @keyup.enter.native="handleInputConfirm(tagIndex)" | ||
| 132 | - @blur="handleInputConfirm(tagIndex)"> | ||
| 133 | - </el-input> | 126 | + <!-- <el-input--> |
| 127 | + <!-- class="input-new-tag"--> | ||
| 128 | + <!-- v-if="tagItemInputs[tagIndex] && tagItemInputs[tagIndex].visible"--> | ||
| 129 | + <!-- v-model="tagItemInputs[tagIndex].value"--> | ||
| 130 | + <!-- :ref="`saveTagInput${tagIndex}`"--> | ||
| 131 | + <!-- size="small"--> | ||
| 132 | + <!-- @keyup.enter.native="handleInputConfirm(tagIndex)"--> | ||
| 133 | + <!-- @blur="handleInputConfirm(tagIndex)">--> | ||
| 134 | + <!-- </el-input>--> | ||
| 134 | </div> | 135 | </div> |
| 135 | </el-form-item> | 136 | </el-form-item> |
| 136 | <el-form-item label="规格名" v-show="isShowTagInput"> | 137 | <el-form-item label="规格名" v-show="isShowTagInput"> |
| 137 | <el-col :span="8"> | 138 | <el-col :span="8"> |
| 138 | - <el-select v-model="addTagInput.name" filterable allow-create default-first-option placeholder="请选择" @change="handleTagClick"> | 139 | + <el-select v-model="addTagInput.name" filterable allow-create default-first-option placeholder="请选择" |
| 140 | + @change="handleTagClick"> | ||
| 139 | <el-option | 141 | <el-option |
| 140 | v-for="item in unUseTags" | 142 | v-for="item in unUseTags" |
| 141 | :key="item.id" | 143 | :key="item.id" |
| @@ -147,12 +149,13 @@ | @@ -147,12 +149,13 @@ | ||
| 147 | </el-form-item> | 149 | </el-form-item> |
| 148 | <el-form-item label="规格值" v-show="isShowTagInput"> | 150 | <el-form-item label="规格值" v-show="isShowTagInput"> |
| 149 | <el-col :span="8"> | 151 | <el-col :span="8"> |
| 150 | - <el-select v-model="addTagInput.selectValues" multiple filterable allow-create default-first-option placeholder="请选择"> | 152 | + <el-select v-model="addTagInput.selectValues" multiple filterable allow-create default-first-option |
| 153 | + placeholder="请选择"> | ||
| 151 | <el-option | 154 | <el-option |
| 152 | v-for="item in dbTagValues" | 155 | v-for="item in dbTagValues" |
| 153 | - :key="item.valueId" | ||
| 154 | - :label="item.propValue" | ||
| 155 | - :value="item.propValue"> | 156 | + :key="item.id" |
| 157 | + :label="item.name" | ||
| 158 | + :value="item.name"> | ||
| 156 | </el-option> | 159 | </el-option> |
| 157 | </el-select> | 160 | </el-select> |
| 158 | </el-col> | 161 | </el-col> |
| @@ -161,7 +164,90 @@ | @@ -161,7 +164,90 @@ | ||
| 161 | <el-button size="mini" type="primary" @click="addTag()" v-show="isShowTagInput">确定</el-button> | 164 | <el-button size="mini" type="primary" @click="addTag()" v-show="isShowTagInput">确定</el-button> |
| 162 | <el-button size="mini" @click="hideTagInput()" v-show="isShowTagInput">取消</el-button> | 165 | <el-button size="mini" @click="hideTagInput()" v-show="isShowTagInput">取消</el-button> |
| 163 | </el-form-item> | 166 | </el-form-item> |
| 164 | - | 167 | + <el-form-item v-if="form.skus.length>0"> |
| 168 | + <el-table | ||
| 169 | + :data="form.skus" | ||
| 170 | + border | ||
| 171 | + style="width: 100%; margin-top: 20px" | ||
| 172 | + :span-method="tableSpanMethod"> | ||
| 173 | + <el-table-column v-for="(leftTitle, index) in skuTags" :key="index" :label="leftTitle.name"> | ||
| 174 | + <template slot-scope="scope"> | ||
| 175 | + {{scope.row.propertyChildNames[index]}} | ||
| 176 | + </template> | ||
| 177 | + </el-table-column> | ||
| 178 | + <el-table-column v-if="skuTags.length" | ||
| 179 | + prop="picUrl" | ||
| 180 | + label="sku图片" | ||
| 181 | + width="180"> | ||
| 182 | + <template slot-scope="scope"> | ||
| 183 | + <ImageUpload v-model="scope.row.picUrl" :limit="1"> | ||
| 184 | + </ImageUpload> | ||
| 185 | + </template> | ||
| 186 | + </el-table-column> | ||
| 187 | + <el-table-column | ||
| 188 | + prop="prodName" | ||
| 189 | + label="条形码" | ||
| 190 | + width="250" v-if="skuTags.length"> | ||
| 191 | + <template slot-scope="scope"> | ||
| 192 | + <el-input v-model="scope.row.barCode" type="textarea" :disabled="scope.row.status==1"></el-input> | ||
| 193 | + </template> | ||
| 194 | + </el-table-column> | ||
| 195 | + <el-table-column | ||
| 196 | + prop="price" | ||
| 197 | + label="销售价"> | ||
| 198 | + <template slot-scope="scope"> | ||
| 199 | + <el-input-number | ||
| 200 | + size="small" | ||
| 201 | + v-model="scope.row.price" | ||
| 202 | + controls-position="right" | ||
| 203 | + :precision="2" | ||
| 204 | + :max="1000000000" | ||
| 205 | + :min="0.01" | ||
| 206 | + :disabled="scope.row.status==1"> | ||
| 207 | + </el-input-number> | ||
| 208 | + </template> | ||
| 209 | + </el-table-column> | ||
| 210 | + <el-table-column | ||
| 211 | + prop="oriPrice" | ||
| 212 | + label="成本价"> | ||
| 213 | + <template slot-scope="scope"> | ||
| 214 | + <el-input-number | ||
| 215 | + size="small" | ||
| 216 | + v-model="scope.row.costPrice" | ||
| 217 | + controls-position="right" | ||
| 218 | + :precision="2" | ||
| 219 | + :max="1000000000" | ||
| 220 | + :min="0.01" | ||
| 221 | + :disabled="scope.row.status==1"> | ||
| 222 | + </el-input-number> | ||
| 223 | + </template> | ||
| 224 | + </el-table-column> | ||
| 225 | + <el-table-column | ||
| 226 | + prop="oriPrice" | ||
| 227 | + label="原价"> | ||
| 228 | + <template slot-scope="scope"> | ||
| 229 | + <el-input-number | ||
| 230 | + size="small" | ||
| 231 | + v-model="scope.row.originalPrice" | ||
| 232 | + controls-position="right" | ||
| 233 | + :precision="2" | ||
| 234 | + :max="1000000000" | ||
| 235 | + :min="0.01" | ||
| 236 | + :disabled="scope.row.status==1"> | ||
| 237 | + </el-input-number> | ||
| 238 | + </template> | ||
| 239 | + </el-table-column> | ||
| 240 | + <el-table-column | ||
| 241 | + label="操作"> | ||
| 242 | + <template slot-scope="scope"> | ||
| 243 | + <el-button type="text" size="small" @click="changeSkuStatus(`${scope.$index}`)" v-if="scope.row.status==0"> | ||
| 244 | + 正常 | ||
| 245 | + </el-button> | ||
| 246 | + <el-button type="text" size="small" @click="changeSkuStatus(`${scope.$index}`)" v-else>已禁用</el-button> | ||
| 247 | + </template> | ||
| 248 | + </el-table-column> | ||
| 249 | + </el-table> | ||
| 250 | + </el-form-item> | ||
| 165 | <el-form-item label="排序字段" prop="sort"> | 251 | <el-form-item label="排序字段" prop="sort"> |
| 166 | <el-input v-model="form.sort" placeholder="请输入排序字段"/> | 252 | <el-input v-model="form.sort" placeholder="请输入排序字段"/> |
| 167 | </el-form-item> | 253 | </el-form-item> |
| @@ -199,30 +285,42 @@ | @@ -199,30 +285,42 @@ | ||
| 199 | listCategory, | 285 | listCategory, |
| 200 | updateCategory | 286 | updateCategory |
| 201 | } from "@/api/mall/product/category"; | 287 | } from "@/api/mall/product/category"; |
| 202 | - import { createProperty, updateProperty, deleteProperty, getProperty, getPropertyPage, exportPropertyExcel } from "@/api/mall/product/property"; | 288 | + import { |
| 289 | + createProperty, | ||
| 290 | + updateProperty, | ||
| 291 | + deleteProperty, | ||
| 292 | + getProperty, | ||
| 293 | + getPropertyPage, | ||
| 294 | + exportPropertyExcel | ||
| 295 | + } from "@/api/mall/product/property"; | ||
| 203 | 296 | ||
| 204 | import Editor from '@/components/Editor'; | 297 | import Editor from '@/components/Editor'; |
| 205 | import ImageUpload from '@/components/ImageUpload'; | 298 | import ImageUpload from '@/components/ImageUpload'; |
| 299 | + | ||
| 206 | export default { | 300 | export default { |
| 207 | name: "Spu", | 301 | name: "Spu", |
| 208 | components: { | 302 | components: { |
| 209 | - Editor,ImageUpload | 303 | + Editor, ImageUpload |
| 210 | }, | 304 | }, |
| 211 | data() { | 305 | data() { |
| 212 | return { | 306 | return { |
| 213 | - dbTagValues:[], | ||
| 214 | - unUseTags:[], | ||
| 215 | - propertyPageList:[], | 307 | + tableLeftTitles: [], |
| 308 | + dbTagValues: [], | ||
| 309 | + allhistoryTags: [], | ||
| 310 | + unUseTags: [], | ||
| 311 | + propertyPageList: [], | ||
| 216 | isShowTagInput: false, | 312 | isShowTagInput: false, |
| 217 | addTagInput: { | 313 | addTagInput: { |
| 218 | name: '', | 314 | name: '', |
| 219 | - selectValues: [] | 315 | + propertyId: '', |
| 316 | + selectValues: [], | ||
| 317 | + selectValueIds: [], | ||
| 220 | }, | 318 | }, |
| 221 | - skuTags:[], | 319 | + skuTags: [], |
| 222 | propName: { | 320 | propName: { |
| 223 | checkStrictly: true, | 321 | checkStrictly: true, |
| 224 | - label:'name', | ||
| 225 | - value:'id' | 322 | + label: 'name', |
| 323 | + value: 'id' | ||
| 226 | }, | 324 | }, |
| 227 | categoryList: [], | 325 | categoryList: [], |
| 228 | // 遮罩层 | 326 | // 遮罩层 |
| @@ -256,7 +354,22 @@ | @@ -256,7 +354,22 @@ | ||
| 256 | status: null, | 354 | status: null, |
| 257 | }, | 355 | }, |
| 258 | // 表单参数 | 356 | // 表单参数 |
| 259 | - form: {}, | 357 | + form: { |
| 358 | + id: undefined, | ||
| 359 | + name: undefined, | ||
| 360 | + sellPoint: undefined, | ||
| 361 | + description: undefined, | ||
| 362 | + categoryId: undefined, | ||
| 363 | + categoryIds: [], | ||
| 364 | + picUrls: undefined, | ||
| 365 | + sort: undefined, | ||
| 366 | + likeCount: undefined, | ||
| 367 | + price: undefined, | ||
| 368 | + quantity: undefined, | ||
| 369 | + status: undefined, | ||
| 370 | + isShowTagInput: undefined, | ||
| 371 | + skus:[], | ||
| 372 | + }, | ||
| 260 | // 表单校验 | 373 | // 表单校验 |
| 261 | rules: { | 374 | rules: { |
| 262 | sellPoint: [{required: true, message: "卖点不能为空", trigger: "blur"}], | 375 | sellPoint: [{required: true, message: "卖点不能为空", trigger: "blur"}], |
| @@ -264,38 +377,183 @@ | @@ -264,38 +377,183 @@ | ||
| 264 | categoryIds: [{required: true, message: "分类id不能为空", trigger: "blur"}], | 377 | categoryIds: [{required: true, message: "分类id不能为空", trigger: "blur"}], |
| 265 | picUrls: [{required: true, message: "商品主图地址", trigger: "blur"}], | 378 | picUrls: [{required: true, message: "商品主图地址", trigger: "blur"}], |
| 266 | sort: [{required: true, message: "排序字段不能为空", trigger: "blur"}], | 379 | sort: [{required: true, message: "排序字段不能为空", trigger: "blur"}], |
| 267 | - } | 380 | + }, |
| 381 | + tagIndex:0, | ||
| 268 | }; | 382 | }; |
| 269 | }, | 383 | }, |
| 270 | created() { | 384 | created() { |
| 385 | + | ||
| 271 | this.getList(); | 386 | this.getList(); |
| 272 | - this.getListCategory(); | ||
| 273 | - this.getPropertyPageList(); | 387 | + |
| 274 | }, | 388 | }, |
| 275 | methods: { | 389 | methods: { |
| 276 | - addTag(){ | 390 | + getTableSpecData() { |
| 391 | + return this.value | ||
| 392 | + }, | ||
| 393 | + tableSpanMethod({row, column, rowIndex, columnIndex}) { | ||
| 277 | 394 | ||
| 278 | }, | 395 | }, |
| 279 | - hideTagInput(){ | 396 | + changeSkuStatus(tagIndex) { |
| 397 | + if(this.form.skus[tagIndex].status == 0){ | ||
| 398 | + this.form.skus[tagIndex].status = 1 ; | ||
| 399 | + }else { | ||
| 400 | + this.form.skus[tagIndex].status = 0 ; | ||
| 401 | + } | ||
| 280 | 402 | ||
| 281 | }, | 403 | }, |
| 282 | - shopTagInput(){ | 404 | + skuAddProdName() { |
| 405 | + if (this.initing) { | ||
| 406 | + return | ||
| 407 | + } | ||
| 408 | + let skuList = [] | ||
| 409 | + for (let i = 0; i < this.value.length; i++) { | ||
| 410 | + const sku = Object.assign({}, this.value[i]) | ||
| 411 | + if (!sku.properties) { | ||
| 412 | + return | ||
| 413 | + } | ||
| 414 | + sku.skuName = '' | ||
| 415 | + let properties = sku.properties.split(';') | ||
| 416 | + for (const propertiesKey in properties) { | ||
| 417 | + sku.skuName += properties[propertiesKey].split(':')[1] + ' ' | ||
| 418 | + } | ||
| 419 | + sku.prodName = this.prodName + ' ' + sku.skuName | ||
| 420 | + skuList.push(sku) | ||
| 421 | + } | ||
| 422 | + this.$emit('input', skuList) | ||
| 423 | + }, | ||
| 424 | + handleTagClose(tagIndex, tagItemIndex) { | ||
| 283 | 425 | ||
| 284 | }, | 426 | }, |
| 285 | - removeTag(row){ | 427 | + //确定添加sku规格 |
| 428 | + addTag() { | ||
| 286 | 429 | ||
| 430 | + let skus = this.unUseTags.map(function (item, index) { | ||
| 431 | + return item.name | ||
| 432 | + }); | ||
| 433 | + console.log("skus=="+JSON.stringify(skus)) | ||
| 434 | + let index = skus.indexOf(this.addTagInput.name); | ||
| 435 | + console.log("index=="+index) | ||
| 436 | + console.log("skus[index].id=="+this.unUseTags[index].id) | ||
| 437 | + console.log("this.unUseTags[index].propertyValueList=="+JSON.stringify(this.unUseTags[index].propertyValueList)) | ||
| 438 | + this.addTagInput.propertyId = this.unUseTags[index].id; | ||
| 439 | + for (let i = 0; i < this.addTagInput.selectValues.length; i++) { | ||
| 440 | + for (let j = 0; j < this.unUseTags[index].propertyValueList.length; j++) { | ||
| 441 | + if (this.addTagInput.selectValues[i] == this.unUseTags[index].propertyValueList[j].name) { | ||
| 442 | + this.addTagInput.selectValueIds.push(this.unUseTags[index].propertyValueList[j].id) | ||
| 443 | + } | ||
| 444 | + } | ||
| 445 | + } | ||
| 446 | + let addTagInput = JSON.parse(JSON.stringify(this.addTagInput)) | ||
| 447 | + console.log("addTagInput=="+JSON.stringify(addTagInput)) | ||
| 448 | + this.skuTags.push(addTagInput); | ||
| 449 | + this.unUseTags.splice(index, 1); | ||
| 450 | + this.isShowTagInput = false; | ||
| 451 | + this.getTable(); | ||
| 287 | }, | 452 | }, |
| 288 | - handleTagClick(row){ | 453 | + getTable(){ |
| 454 | + this.form.skus=[]; | ||
| 455 | + let skuTags = JSON.parse(JSON.stringify(this.skuTags)); | ||
| 456 | + let sku1s = []; | ||
| 457 | + let skuIds = []; | ||
| 458 | + let propertyIds = []; | ||
| 459 | + let propertyNames = []; | ||
| 460 | + for (let i = 0; i < skuTags.length; i++) { | ||
| 461 | + sku1s.push(skuTags[i].selectValues); | ||
| 462 | + skuIds.push(skuTags[i].selectValueIds); | ||
| 463 | + propertyIds.push(skuTags[i].propertyId); | ||
| 464 | + propertyNames.push(skuTags[i].name); | ||
| 465 | + } | ||
| 466 | + let skuAll = sku1s.reduce((x,y) =>{ | ||
| 467 | + let arr = []; | ||
| 468 | + x.forEach(m => y.forEach(y => arr.push(m.concat([y])))) | ||
| 469 | + return arr; | ||
| 470 | + },[[]]) | ||
| 471 | + console.log(skuAll); | ||
| 289 | 472 | ||
| 473 | + let skuIdAll = skuIds.reduce((x,y) =>{ | ||
| 474 | + let arr = []; | ||
| 475 | + x.forEach(m => y.forEach(y => arr.push(m.concat([y])))) | ||
| 476 | + return arr; | ||
| 477 | + },[[]]) | ||
| 478 | + console.log(skuIdAll); | ||
| 479 | + for (let i = 0; i < skuAll.length; i++) { | ||
| 480 | + let han = { | ||
| 481 | + propertyNames:propertyNames, | ||
| 482 | + propertyIds:propertyIds, | ||
| 483 | + propertyChildNames:skuAll[i], | ||
| 484 | + propertyChildIds:skuIdAll[i], | ||
| 485 | + properties: [], | ||
| 486 | + picUrl: '', | ||
| 487 | + costPrice: '', | ||
| 488 | + originalPrice: '', | ||
| 489 | + spuId: '', | ||
| 490 | + prodName: '', | ||
| 491 | + price: '', | ||
| 492 | + barCode: '', | ||
| 493 | + status: '0', | ||
| 494 | + } | ||
| 495 | + this.form.skus.push(han); | ||
| 496 | + } | ||
| 497 | + this.form.skus.forEach(x=>{ | ||
| 498 | + x.properties=[]; | ||
| 499 | + for (let i = 0; i <x.propertyIds.length ; i++) { | ||
| 500 | + x.properties.push({ | ||
| 501 | + propertyId:x.propertyIds[i], | ||
| 502 | + valueId:x.propertyChildIds[i] | ||
| 503 | + }) | ||
| 504 | + } | ||
| 505 | + }) | ||
| 506 | + | ||
| 507 | + console.log("this.skus=="+JSON.stringify(this.form.skus)) | ||
| 508 | + }, | ||
| 509 | + hideTagInput() { | ||
| 510 | + this.isShowTagInput = false; | ||
| 511 | + this.addTagInput = { | ||
| 512 | + name: '', | ||
| 513 | + propertyId: '', | ||
| 514 | + selectValues: [], | ||
| 515 | + selectValueIds: [], | ||
| 516 | + }; | ||
| 517 | + }, | ||
| 518 | + shopTagInput() { | ||
| 519 | + if (this.unUseTags.length <= 0) { | ||
| 520 | + return this.$message.error("规格已经添加完毕") | ||
| 521 | + } | ||
| 522 | + this.isShowTagInput = true; | ||
| 523 | + this.addTagInput = { | ||
| 524 | + name: '', | ||
| 525 | + propertyId: '', | ||
| 526 | + selectValues: [], | ||
| 527 | + selectValueIds: [], | ||
| 528 | + }; | ||
| 529 | + }, | ||
| 530 | + //删除已选的规格 | ||
| 531 | + removeTag(row) { | ||
| 532 | + let skus = this.allhistoryTags.map(function (item, index) { | ||
| 533 | + return item.name | ||
| 534 | + }) | ||
| 535 | + let index = skus.indexOf(this.skuTags[row].name); | ||
| 536 | + this.unUseTags.push(this.allhistoryTags[index]); | ||
| 537 | + this.skuTags.splice(row, 1); | ||
| 538 | + this.getTable(); | ||
| 539 | + }, | ||
| 540 | + handleTagClick(row) { | ||
| 541 | + for (let i = 0; i < this.propertyPageList.length; i++) { | ||
| 542 | + if (row == this.propertyPageList[i].name) { | ||
| 543 | + this.dbTagValues = this.propertyPageList[i].propertyValueList | ||
| 544 | + } | ||
| 545 | + } | ||
| 290 | }, | 546 | }, |
| 291 | /** 查询规格 */ | 547 | /** 查询规格 */ |
| 292 | getPropertyPageList() { | 548 | getPropertyPageList() { |
| 293 | // 执行查询 | 549 | // 执行查询 |
| 294 | getPropertyPage().then(response => { | 550 | getPropertyPage().then(response => { |
| 295 | this.propertyPageList = response.data.list; | 551 | this.propertyPageList = response.data.list; |
| 296 | - this.unUseTags= this.propertyPageList.map(function (item,index) { | 552 | + |
| 553 | + this.unUseTags = this.propertyPageList.map(function (item, index) { | ||
| 297 | return item | 554 | return item |
| 298 | }) | 555 | }) |
| 556 | + this.allhistoryTags = JSON.parse(JSON.stringify(this.unUseTags)); | ||
| 299 | console.log(this.propertyPageList) | 557 | console.log(this.propertyPageList) |
| 300 | }); | 558 | }); |
| 301 | }, | 559 | }, |
| @@ -327,6 +585,7 @@ | @@ -327,6 +585,7 @@ | ||
| 327 | }, | 585 | }, |
| 328 | /** 表单重置 */ | 586 | /** 表单重置 */ |
| 329 | reset() { | 587 | reset() { |
| 588 | + | ||
| 330 | this.form = { | 589 | this.form = { |
| 331 | id: undefined, | 590 | id: undefined, |
| 332 | name: undefined, | 591 | name: undefined, |
| @@ -340,9 +599,10 @@ | @@ -340,9 +599,10 @@ | ||
| 340 | price: undefined, | 599 | price: undefined, |
| 341 | quantity: undefined, | 600 | quantity: undefined, |
| 342 | status: undefined, | 601 | status: undefined, |
| 343 | - isShowTagInput:undefined, | ||
| 344 | - | 602 | + isShowTagInput: undefined, |
| 603 | + skus:[], | ||
| 345 | }; | 604 | }; |
| 605 | + this.skuTags=[]; | ||
| 346 | this.resetForm("form"); | 606 | this.resetForm("form"); |
| 347 | }, | 607 | }, |
| 348 | /** 搜索按钮操作 */ | 608 | /** 搜索按钮操作 */ |
| @@ -361,13 +621,31 @@ | @@ -361,13 +621,31 @@ | ||
| 361 | this.reset(); | 621 | this.reset(); |
| 362 | this.open = true; | 622 | this.open = true; |
| 363 | this.title = "添加商品spu"; | 623 | this.title = "添加商品spu"; |
| 624 | + this.getListCategory(); | ||
| 625 | + this.getPropertyPageList(); | ||
| 364 | }, | 626 | }, |
| 365 | /** 修改按钮操作 */ | 627 | /** 修改按钮操作 */ |
| 366 | handleUpdate(row) { | 628 | handleUpdate(row) { |
| 367 | this.reset(); | 629 | this.reset(); |
| 368 | const id = row.id; | 630 | const id = row.id; |
| 369 | getSpu(id).then(response => { | 631 | getSpu(id).then(response => { |
| 370 | - this.form = response.data; | 632 | + let dataSpu = response.data; |
| 633 | + this.form = { | ||
| 634 | + id: dataSpu.id, | ||
| 635 | + name: dataSpu.name, | ||
| 636 | + sellPoint: dataSpu.sellPoint, | ||
| 637 | + description: dataSpu.sellPoint, | ||
| 638 | + categoryId: dataSpu.sellPoint, | ||
| 639 | + categoryIds: [], | ||
| 640 | + picUrls: dataSpu.picUrls, | ||
| 641 | + sort: dataSpu.sort, | ||
| 642 | + likeCount: dataSpu.likeCount, | ||
| 643 | + price: dataSpu.price, | ||
| 644 | + quantity: dataSpu.quantity, | ||
| 645 | + status: dataSpu.status, | ||
| 646 | + isShowTagInput:undefined, | ||
| 647 | + skus:dataSpu.productSkuRespVOS, | ||
| 648 | + }; | ||
| 371 | this.open = true; | 649 | this.open = true; |
| 372 | this.title = "修改商品spu"; | 650 | this.title = "修改商品spu"; |
| 373 | }); | 651 | }); |
| @@ -380,7 +658,9 @@ | @@ -380,7 +658,9 @@ | ||
| 380 | if (!valid) { | 658 | if (!valid) { |
| 381 | return; | 659 | return; |
| 382 | } | 660 | } |
| 383 | - this.form.categoryId= this.form.categoryIds[(this.form.categoryIds.length-1)] | 661 | + this.form.picUrls = this.form.picUrls.split(','); |
| 662 | + this.form.categoryId = this.form.categoryIds[(this.form.categoryIds.length - 1)]; | ||
| 663 | + this.form.status = Number(this.form.status); | ||
| 384 | // 修改的提交 | 664 | // 修改的提交 |
| 385 | if (this.form.id != null) { | 665 | if (this.form.id != null) { |
| 386 | updateSpu(this.form).then(response => { | 666 | updateSpu(this.form).then(response => { |
| @@ -429,3 +709,24 @@ | @@ -429,3 +709,24 @@ | ||
| 429 | } | 709 | } |
| 430 | }; | 710 | }; |
| 431 | </script> | 711 | </script> |
| 712 | +<style lang="scss"> | ||
| 713 | + .app-container { | ||
| 714 | + .el-tag + .el-tag { | ||
| 715 | + margin-left: 10px; | ||
| 716 | + } | ||
| 717 | + | ||
| 718 | + .button-new-tag { | ||
| 719 | + margin-left: 10px; | ||
| 720 | + height: 32px; | ||
| 721 | + line-height: 30px; | ||
| 722 | + padding-top: 0; | ||
| 723 | + padding-bottom: 0; | ||
| 724 | + } | ||
| 725 | + | ||
| 726 | + .input-new-tag { | ||
| 727 | + width: 90px; | ||
| 728 | + margin-left: 10px; | ||
| 729 | + vertical-align: bottom; | ||
| 730 | + } | ||
| 731 | + } | ||
| 732 | +</style> |