Przeglądaj źródła

新增标签管理

hwb0 3 lat temu
rodzic
commit
4edf4bd179

+ 1 - 1
src/views/business/banner/index.vue

@@ -209,7 +209,7 @@ export default {
       this.createShow = true;
     },
 
-    // 关闭发货弹框
+    // 关闭弹框
     close() {
       this.createShow = false;
       this.bannerId = "";

+ 3 - 2
src/views/business/category/components/CategoryCreate.vue

@@ -31,9 +31,10 @@
         </el-form-item>
         <el-form-item label="是否显示" prop="isShow">
           <el-radio-group v-model="form.isShow" size="small">
-            <el-radio :label="1"></el-radio>
-            <el-radio :label="0"></el-radio>
+            <el-radio :label="1">显示</el-radio>
+            <el-radio :label="0">不显示</el-radio>
           </el-radio-group>
+          <div>选择“不显示”,则用户看不到该分类</div>
         </el-form-item>
       </el-form>
 

+ 1 - 1
src/views/business/category/index.vue

@@ -200,7 +200,7 @@ export default {
       this.createShow = true;
     },
 
-    // 关闭发货弹框
+    // 关闭弹框
     close() {
       this.createShow = false;
       this.categoryId = ''

+ 152 - 0
src/views/business/tag/components/TagCreate.vue

@@ -0,0 +1,152 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :visible.sync="dialogShow"
+      width="800px"
+      :before-close="close"
+    >
+      <el-form :model="form" ref="form" :rules="rules" label-width="100px">
+        <el-form-item label="标签名称" prop="name">
+          <el-input
+            v-model="form.name"
+            style="width: 300px"
+            size="small"
+            placeholder="请输入标签名称"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="排序" prop="sort">
+          <el-input
+            v-model.number="form.sort"
+            style="width: 300px"
+            size="small"
+            placeholder="请输入排序"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="是否显示" prop="isShow">
+          <el-radio-group v-model="form.isShow" size="small">
+            <el-radio :label="1">显示</el-radio>
+            <el-radio :label="0">不显示</el-radio>
+          </el-radio-group>
+          <div>选择“不显示”,则用户看不到该标签</div>
+        </el-form-item>
+      </el-form>
+
+      <!-- 按钮 -->
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="close">取 消</el-button>
+        <el-button type="primary" :disabled="loading" @click="saveClick"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import CustomFieldsMixin from "@/mixins/CustomFields";
+import { goodsTagCreate, goodsTagDetail, goodsTagUpdate } from "@/api/business/tag";
+export default {
+  mixins: [CustomFieldsMixin],
+  props: {
+    // 弹框显示
+    dialogShow: {
+      type: Boolean,
+      default: false,
+    },
+    // 标签ID
+    tagId: {
+      type: [String, Number],
+      default: null
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      form: {
+        isShow: 1,
+        sort: 0
+      },
+      rules: {
+        name: [
+          { required: true, message: "请输入标签名称", trigger: "blur" },
+        ],
+        sort: [
+          { required: true, message: "请输入排序", trigger: "blur" },
+          {
+            pattern: /^([0-9]\d*)$/,
+            message: "请输入合法的数字",
+            trigger: ["blur", "change"],
+          },
+        ],
+        isShow:  [
+          { required: true, message: "请选择", trigger: "change" },
+        ],
+      },
+    };
+  },
+  computed: {
+    title() {
+      return this.tagId ? '编辑标签' : '添加标签';
+    },
+  },
+  created() {
+    if(this.tagId){
+      goodsTagDetail({ tagId: this.tagId }).then(res => {
+        const { name, sort, isShow } = res && res.data
+        this.form = {
+          name, sort, isShow
+        }
+      })
+    }
+  },
+  methods: {
+    // 关闭弹框
+    close() {
+      this.$emit("close");
+      this.loading = false;
+      this.$refs["form"].resetFields();
+    },
+
+    // 确认
+    saveClick() {
+      this.loading = true;
+      const subForm = this.$refs["form"];
+      subForm.validate((valid) => {
+        if (valid) {
+          this.submitForm(this.form);
+        } else {
+          this.loading = false;
+          // 提示第一个error
+          this.getFormErrorMessage(subForm);
+          return false;
+        }
+      });
+    },
+
+    // 提交
+    submitForm(form) {
+      let request = this.tagId ? goodsTagUpdate : goodsTagCreate
+      if(this.tagId){
+        form.tagId = this.tagId
+      }
+      request(form)
+        .then((res) => {
+          if (res.code == 0) {
+            this.msgSuccess(this.tagId ? "修改成功" : '添加成功');
+            this.close();
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+  },
+};
+</script>
+<style scoped>
+.channel {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+</style>

+ 187 - 6
src/views/business/tag/index.vue

@@ -1,19 +1,200 @@
 <template>
   <div class="app-container">
+    <!-- <el-form
+      :model="queryParams"
+      ref="queryForm"
+      :inline="true"
+      v-show="showSearch"
+      label-width="90px"
+    >
+      <el-form-item label="位置">
+        <el-select
+          v-model="queryParams.location"
+          placeholder="请选择位置"
+          clearable
+          @change="queryParams.pageNum = 1;getList()"
+        >
+          <el-option
+            :label="item.dictLabel"
+            :value="item.dictValue"
+            v-for="(item, index) in bannerLocationList"
+            :key="index"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="getList(true)"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form> -->
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['business:ticket:add']"
+          >添加标签</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList()"
+      ></right-toolbar>
+    </el-row>
+    <!-- 列表 -->
+    <el-table ref="table" v-loading="loading" :data="list">
+      <el-table-column label="标签名称" prop="name" />
+      <el-table-column label="是否在兑换大厅显示" prop="status" align="center">
+        <template slot-scope="{ row }">
+          <el-tag :type="row.isShow === 1 ? 'success' : 'info'">{{
+            row.isShow === 1 ? "显示" : "不显示"
+          }}</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="排序" align="center">
+        <template slot-scope="{ row }">
+          <div>{{ row.sort }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center">
+        <template slot-scope="{ row }">
+          <div>
+            <el-button
+              v-hasPermi="['business:tag:edit']"
+              type="text"
+              @click="edit(row)"
+              >编辑</el-button
+            >
+            <el-button
+              v-hasPermi="['business:tag:remove']"
+              type="text"
+              class="del"
+              @click="del(row)"
+              >删除</el-button
+            >
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
 
+    <!-- 分页 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="pageParams.pageNum"
+      :limit.sync="pageParams.pageSize"
+      @pagination="getList"
+    />
+
+    <tag-create
+      v-if="createShow"
+      :tag-id="tagId"
+      :dialog-show="createShow"
+      @close="close"
+    />
   </div>
 </template>
 <script>
+import { publicFileGetUrl } from "@/api/common";
+import {
+  goodsTagList,
+  goodsTagRemove,
+} from "@/api/business/tag";
+import TagCreate from "./components/TagCreate";
 export default {
-  name: 'ListTag',
-  components: {},
+  name: "ListTag",
+  components: {
+    TagCreate,
+  },
   data() {
-    return {};
+    return {
+      loading: false,
+      showSearch: true,
+      queryParams: {},
+      pageParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 总条数
+      total: 0,
+      list: [],
+      createShow: false,
+      tagId: '',
+    };
   },
-  created(){
-    
+  created() {
+    this.getList();
+  },
+  methods: {
+    getList() {
+      this.loading = true;
+      goodsTagList(
+        "pageNum=" +
+          this.pageParams.pageNum +
+          "&pageSize=" +
+          this.pageParams.pageSize +
+          "&",
+        this.queryParams
+      )
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 0) {
+            this.total = res.total;
+            this.list = res.rows;
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+
+    del(item) {
+      this.$confirm(`确认删除标签 “${item.name}” 吗?`, "删除标签", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        goodsTagRemove({ tagId: item.tagId }).then((res) => {
+          if (res.code === 0) {
+            this.$message.success("操作已完成!");
+            this.getList();
+          }
+        });
+      });
+    },
+
+    edit(item){
+      this.tagId = item.tagId
+      this.createShow = true;
+    },
+
+    // 重置
+    resetQuery() {
+      this.pageParams.pageNum = 1
+      this.getList();
+    },
+
+    handleAdd() {
+      this.createShow = true;
+    },
+
+    // 关闭弹框
+    close() {
+      this.createShow = false;
+      this.tagId = ''
+      this.getList();
+    },
   },
-  methods: {},
 };
 </script>
 <style>