| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466 |
- <template>
- <div class="borderless">
- <div class="customer-head">
- <div class="customer-back">
- <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
- @click="backToList">返回列表
- </el-button>
- </div>
- <el-button
- class="el-button--small-yh add-customer-btn"
- type="primary"
- :disabled="disabled"
- @click="editProductInfo"
- >{{ form.id ? '确认修改' : '确认新增' }}
- </el-button>
- </div>
- <div style="margin-top: 60px">
- <containerTitle title="基础信息"></containerTitle>
- <basic-container style="margin-bottom: 10px">
- <avue-form ref="form" v-model="form" :option="option">
- <template slot="goodsTypeId" slot-scope="scope">
- <avue-input-tree
- v-model="form.goodsTypeId"
- :props="{ label: 'title', value: 'id' }"
- multiple
- placeholder=" "
- type="tree"
- :dic="dicData"/>
- </template>
- </avue-form>
- </basic-container>
- <containerTitle title="商品规格"></containerTitle>
- <basic-container style="margin-bottom: 10px">
- <avue-crud
- :data="sftData"
- :option="sftOption"
- @row-del="rowSftDel"
- >
- <template slot="menuLeft" slot-scope="{ row, index }">
- <el-button
- type="primary"
- icon="el-icon-plus"
- size="small"
- @click.stop="addSftRow(row, index)"
- >新增明细
- </el-button>
- </template>
- <template slot="menu" slot-scope="{ row, index }">
- <el-button
- size="small"
- icon="el-icon-edit"
- type="text"
- @click.stop="rowSftEdit(row, index)"
- >
- {{ row.$cellEdit ? "保存" : "编辑" }}
- </el-button>
- <el-button
- size="small"
- icon="el-icon-edit"
- type="text"
- @click.stop="rowSftDel(row, index)">
- 删除
- </el-button>
- <el-button
- size="small"
- icon="el-icon-close"
- type="text">
- 下架
- </el-button>
- </template>
- </avue-crud>
- </basic-container>
- <containerTitle title="商品图片"></containerTitle>
- <basic-container style="margin-bottom: 10px">
- <avue-crud
- ref="imgUpload"
- :option="imgUploadList"
- :data="imgUploadData"
- @row-save="imgUploadSave"
- @row-update="imgUploadUpdate"
- @row-del="imgUploadDel"
- :upload-before="uploadBefore"
- ></avue-crud>
- </basic-container>
- <containerTitle title="详情页编辑"></containerTitle>
- <basic-container style="margin-bottom: 10px">
- <avue-ueditor v-model="text" :options="options"></avue-ueditor>
- </basic-container>
- </div>
- </div>
- </template>
- <script>
- import {getDetail, updateDetail, getDeptTree, priceDelete} from "@/api/basicData/commodityType";
- import sftOption from "./configuration/specification.json";
- import imgUploadList from "./configuration/imgUploadList.json";
- export default {
- name: "detailsPage",
- data() {
- return {
- form: {},
- sftData: [],
- sftOption: sftOption,
- imgUploadList: imgUploadList,
- text: '<h1 class="ql-align-center" style="text-align: center;"><a href="https://avuejs.com/doc/plugins/ueditor-plugins" target="_blank" style="font-weight: bold; color: rgb(194, 79, 74);">欢迎使用Avue富文本编辑器</a></h1><p class="ql-align-center" style="text-align: center;"><span style="font-weight: bold; color: rgb(194, 79, 74);"><img src="https://avuejs.com/images/logo-bg.jpg" height="200" width="200"></span></p>',
- options: {
- //普通图片上传
- action: "https://avuejs.com/imgupload",
- customConfig: {}, //wangEditor编辑的配置
- props: {
- res: "data",
- url: "url"
- }
- },
- disabled: false,
- userDialog: false,//供应商导入窗口
- imgUploadData: [],
- dicData: [],
- detailsSelect: {},
- option: {
- menuBtn: false,
- labelWidth: 100,
- column: [
- {
- label: "产品编码",
- prop: "code",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "产品名称",
- prop: "cname",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- slot: true
- },
- {
- label: "产品分类",
- prop: "goodsTypeId",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "花纹",
- prop: "brandItem",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "品牌",
- prop: "brand",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "状态",
- prop: "status",
- span: 8,
- type: 'select',
- dicData: [{
- label: '正常',
- value: 0
- }, {
- label: '停用',
- value: 1
- }],
- },
- {
- label: "规格",
- prop: "specs",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "规格1",
- prop: "specsOne",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "规格2",
- prop: "specsTwo",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "级别",
- prop: "level",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "产地",
- prop: "placeProduction",
- span: 8,
- rules: [
- {
- required: true,
- message: " ",
- trigger: "blur"
- }
- ],
- },
- {
- label: "三包",
- prop: "threeGuarantees",
- span: 8,
- },
- {
- label: "备注",
- prop: "remarks",
- type: "textarea",
- minRows: 2,
- span: 24
- }
- ]
- },
- }
- },
- //初始化查询
- created() {
- getDeptTree().then(res => {
- this.dicData = res.data.data;
- });
- if (this.$route.query.id) {
- getDetail(JSON.parse(this.$route.query.id)).then(res => {
- this.form = res.data.data
- })
- } else {
- this.$set(this.form, "goodsTypeId", this.$route.query.treeDeptId)
- }
- },
- methods: {
- // 商品图片上传保存
- imgUploadSave(row, done, loading) {
- console.log(row);
- this.imgUploadData.push(row);
- done();
- },
- imgUploadUpdate(row, index, done, loading) {
- done();
- },
- imgUploadDel(row, index, donerowDel) {
- this.$confirm("确定将选择数据删除?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- }).then(() => {
- //商品判断是否需要调用删除接口
- if (row.id) {
- // corpsattn(row.id).then(res => {
- // this.$message({
- // type: "success",
- // message: "操作成功!"
- // });
- // this.imgUploadData.splice(index, 1);
- // })
- } else {
- this.$message({
- type: "success",
- message: "操作成功!"
- });
- this.imgUploadData.splice(index, 1);
- }
- });
- },
- // 上传前
- uploadBefore(file, done, loading, column) {
- const is2M = file.size / 1024 / 1024 < 2;
- const isType =
- file.type === "image/jpeg" ||
- file.type === "image/png" ||
- file.type === "image/jpg";
- if (!isType) {
- this.$message.error("图片只能是JPG、JPEG、PNG格式");
- loading();
- }
- if (!is2M) {
- this.$message.error("图片大小不能超过2M");
- loading();
- }
- const img = new Image();
- const _URL = window.URL || window.webkitURL;
- let isSize = null;
- img.onload = () => {
- if (column.label == "图片") {
- isSize = img.width === img.height;
- if (!isSize) {
- this.$message.error("图片宽高限制比例为1:1");
- }
- } else {
- const width = 750;
- const height = 1000;
- isSize = img.width === width && img.height <= height;
- if (!isSize) {
- this.$message.error("商品详情轮播图宽为750,高不能超过1000");
- }
- }
- if (is2M && isType && isSize) {
- done();
- } else {
- loading();
- }
- };
- img.src = _URL.createObjectURL(file);
- },
- rowSftEdit(row) {
- if (row.$cellEdit == true) {
- this.$set(row, "$cellEdit", false);
- } else {
- this.$set(row, "$cellEdit", true);
- }
- },
- addSftRow() {
- this.sftData.push({
- $cellEdit: true,
- cname: null,
- texture: null,
- colour: null,
- describe: null,
- remarks: null
- });
- },
- rowSftDel(row, index) {
- },
- rowContactCell(row, index) {
- this.$refs.crudContact.rowCell(row, index)
- },
- rowPurchaseCell(row, index) {
- this.$refs.crudPurchase.rowCell(row, index)
- },
- //修改提交触发
- editProductInfo() {
- this.$refs["form"].validate((valid) => {
- //校验明细列表
- if (valid) {
- const params = {
- ...this.form,
- type: 0,
- }
- updateDetail(params).then(res => {
- if (res.data.success) {
- this.$message.success("操作成功!")
- }
- })
- } else {
- return false;
- }
- });
- },
- //返回列表
- backToList() {
- this.$router.$avueRouter.closeTag();
- this.$router.push({
- path: '/basicData/productInformation/index',
- query: {}
- });
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .customer-head {
- position: fixed;
- top: 105px;
- width: 100%;
- margin-left: -10px;
- height: 62px;
- background: #ffffff;
- box-shadow: 0 4px 12px 0px rgba(232, 232, 235, 1);
- z-index: 999;
- /* display: flex;
- justify-content: left; */
- }
- .customer-back {
- cursor: pointer;
- line-height: 62px;
- font-size: 16px;
- color: #323233;
- font-weight: 400;
- }
- .back-icon {
- line-height: 64px;
- font-size: 20px;
- margin-right: 8px;
- }
- .add-customer-btn {
- position: fixed;
- right: 36px;
- top: 115px;
- }
- ::v-deep .el-form-item {
- margin-bottom: 0;
- }
- .el-dialogDeep {
- ::v-deep .el-dialog {
- margin: 1vh auto 0 !important;
- padding-bottom: 10px !important;
- .el-dialog__body, .el-dialog__footer {
- padding-bottom: 0 !important;
- padding-top: 0 !important;
- }
- }
- }
- </style>
|