فهرست منبع

新增供应商管理页面

DELL 3 سال پیش
والد
کامیت
136ae5c702

+ 50 - 0
src/api/business/supplier.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+// 查询供应商列表
+export function getSupplierList(data) {
+  return request({
+    url: '/api/v1/mp/admin/supplier/list',
+    method: 'post',
+    data,
+  })
+}
+
+// 查询供应商详情
+export function getSupplierDetail(id) {
+  return request({
+    url: `/api/v1/mp/admin/supplier/detail/${id}`,
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/x-www-form-urlencoded'
+    },
+  })
+}
+
+// 修改供应商信息
+export function setSupplierList(data) {
+  return request({
+    url: '/api/v1/mp/admin/supplier/update',
+    method: 'post',
+    data
+  })
+}
+
+// 新增供应商信息
+export function addSupplierList(data) {
+  return request({
+    url: '/api/v1/mp/admin/supplier/create',
+    method: 'post',
+    data
+  })
+}
+
+// 删除供应商信息
+export function removeSupplierList(id) {
+  return request({
+    url: `/api/v1/mp/admin/supplier/delete/${id}`,
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/x-www-form-urlencoded'
+    },
+  })
+}

+ 153 - 0
src/views/business/supplier/components/addSupplier.vue

@@ -0,0 +1,153 @@
+<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" :inline="true">
+        <el-form-item label="供应商" prop="name">
+          <el-input
+            v-model="form.name"
+            style="width: 240px"
+            size="small"
+            placeholder="请输入供应商公司名称"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="联系人">
+          <el-input
+            v-model.number="form.contact"
+            style="width: 240px"
+            size="small"
+            placeholder="请输入联系人"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="手机号码">
+          <el-input
+            v-model.number="form.phone"
+            style="width: 240px"
+            size="small"
+            placeholder="请输入联系人手机号码"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="备注">
+          <el-input
+            v-model.number="form.remark"
+            style="width: 240px"
+            size="small"
+            placeholder="请输入备注信息"
+          ></el-input>
+        </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 { getSupplierDetail, setSupplierList, addSupplierList, removeSupplierList} from "@/api/business/supplier";
+export default {
+  props: {
+    // 弹框显示
+    dialogShow: {
+      type: Boolean,
+      default: false,
+    },
+    // ID
+    id: {
+      type:[Number, String],
+      default: ''
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      form: {
+        type: 'link',
+        sort: 0
+      },
+
+      rules: {
+        name: [
+          { required: true, message: "请输入供应商名称", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  computed: {
+    title() {
+      return this.id ? '编辑供应商' : '添加供应商';
+    },
+  },
+  created() {
+    if(this.id){
+      getSupplierDetail(this.id).then(res => {
+        const { name, phone, contact, remark} = res.data
+        this.form = { name, phone, contact, remark}
+      })
+    }
+  },
+  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;
+          return false;
+        }
+      });
+    },
+
+    // 提交
+    submitForm(form) {
+      let data = {
+        ... form,
+      };
+      let request = this.id ? setSupplierList : addSupplierList
+      if(this.id){
+        data.id = this.id
+      }
+      request(data)
+        .then((res) => {
+          if (res.code == 0) {
+            this.msgSuccess(this.id ? "修改成功" : '添加成功');
+            this.close();
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+  },
+};
+</script>
+<style scoped>
+.channel {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.tip {
+  font-size: 12px;
+  color: #999;
+}
+</style>

+ 78 - 0
src/views/business/supplier/components/seeSupplier.vue

@@ -0,0 +1,78 @@
+<template>
+  <div>
+    <el-dialog
+      title="查看供应商"
+      :visible.sync="dialogShow"
+      width="800px"
+      :before-close="seeClose"
+    >
+      <el-form :model="form" ref="form"  label-width="100px" :inline="true">
+        <el-form-item label="供应商:">
+          <span v-model="form.name" style="width: 240px; display: inline-block"> {{form.name}}</span>
+        </el-form-item>
+        <el-form-item label="联系人:">
+          <span v-model="form.contact" style="width: 240px; display: inline-block"> {{form.contact}}</span>
+        </el-form-item>
+        <el-form-item label="手机号码:">
+          <span v-model="form.phone" style="width: 240px; display: inline-block"> {{form.phone}}</span>
+        </el-form-item>
+        <el-form-item label="备注:">
+          <span v-model="form.remark" style="width: 240px; display: inline-block"> {{form.remark}}</span>
+        </el-form-item>
+      </el-form>
+      <!-- 按钮 -->
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="seeClose">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { getSupplierDetail } from "@/api/business/supplier";
+export default {
+  props: {
+    // 弹框显示
+    dialogShow: {
+      type: Boolean,
+      default: false,
+    },
+    // ID
+    id: {
+      type:[Number, String],
+      default: ''
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      form: {},
+    };
+  },
+  created() {
+    if(this.id){
+      getSupplierDetail(this.id).then(res => {
+        const { name, phone, contact, remark} = res.data
+        this.form = { name, phone, contact, remark}
+      })
+    }
+  },
+  methods: {
+    // 关闭弹框
+    seeClose() {
+      this.$emit("seeClose");
+      this.loading = false;
+    },
+  },
+};
+</script>
+<style scoped>
+.channel {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.tip {
+  font-size: 12px;
+  color: #999;
+}
+</style>

+ 208 - 0
src/views/business/supplier/index.vue

@@ -0,0 +1,208 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      :inline="true"
+      v-show="showSearch"
+      label-width="90px" >
+      <el-form-item label="供应商名称">
+        <el-input v-model="queryParams.name" placeholder="请输入商品名称" clearable @clear="queryParams.pageNum = 1;getList()"  @keyup.enter.native="queryParams.pageNum = 1;getList()"></el-input>
+      </el-form-item>
+      <el-form-item >
+        <el-input v-show="false" />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="getList()"
+        >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+        >重置</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:supplier: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="id" />
+      <el-table-column label="供应商名称" prop="name" />
+      <el-table-column label="联系人" prop="contact" />
+      <el-table-column label="手机号码" prop="phone" />
+      <el-table-column label="操作" align="center">
+        <template slot-scope="{ row }">
+          <div>
+            <el-button
+              v-hasPermi="['business:supplier:query']"
+              type="text"
+              @click="seeEdit(row)"
+            >查看</el-button
+            >
+            <el-button
+              v-hasPermi="['business:supplier:edit']"
+              type="text"
+              @click="edit(row)"
+            >编辑</el-button
+            >
+            <el-button
+              v-hasPermi="['business:supplier: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"
+    />
+
+    <add-supplier
+      v-if="createShow"
+      :dialog-show="createShow"
+      :id="id"
+      @close="close"
+    />
+    <see-supplier
+      v-if="seeShow"
+      :dialog-show="seeShow"
+      :id="id"
+      @seeClose="seeClose"
+    />
+  </div>
+</template>
+<script>
+import { getSupplierList, removeSupplierList } from "@/api/business/supplier";
+import AddSupplier from "./components/addSupplier";
+import SeeSupplier from "./components/seeSupplier"
+export default {
+  name: "ListBanner",
+  components: {
+    AddSupplier,
+    SeeSupplier,
+  },
+  data() {
+    return {
+      loading: false,
+      showSearch: true,
+      queryParams: {
+        name:"",
+      },
+      pageParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 总条数
+      total: 0,
+      list: [],
+      createShow: false,
+      seeShow: false,
+      id: '',
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+
+    getList() {
+      this.loading = true;
+      let data = {
+        name:this.queryParams.name
+      }
+      getSupplierList(data,
+        "pageNum=" +
+        this.pageParams.pageNum +
+        "&pageSize=" +
+        this.pageParams.pageSize
+      )
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 0) {
+            this.total = res.total;
+            this.list = res.rows;
+          }
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+
+    edit(item) {
+      this.id = item.id;
+      this.createShow = true;
+    },
+
+    seeEdit(item) {
+      this.id = item.id;
+      this.seeShow = true;
+    },
+
+
+    del(item) {
+      this.$confirm(`确认删除供应商 “${item.name}” 吗?`, "删除供应商", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        removeSupplierList(item.id).then((res) => {
+          if (res.code === 0) {
+            this.$message.success("操作已完成!");
+            this.getList();
+          }
+        });
+      });
+    },
+
+    // 重置
+    resetQuery() {
+      this.queryParams = {};
+      this.pageParams.pageNum = 1
+      this.getList();
+    },
+
+    handleAdd() {
+      this.createShow = true;
+    },
+
+    // 关闭弹框
+    close() {
+      this.createShow = false;
+      this.id = "";
+      this.getList();
+    },
+
+    seeClose() {
+      this.seeShow = false;
+    }
+  },
+};
+</script>
+<style>
+</style>