Browse Source

产品信息前端页面

wangxingcheng 3 years ago
parent
commit
ded7ef2e42
4 changed files with 340 additions and 1 deletions
  1. 2 1
      .env
  2. 24 0
      src/api/product.js
  3. 104 0
      src/views/system/product/components/UserEdit.vue
  4. 210 0
      src/views/system/product/index.vue

+ 2 - 1
.env

@@ -4,7 +4,8 @@ VUE_APP_SECRET_KEY=preview
 # 租户码
 VUE_APP_TENANT=default
 # 登录验证微服务名称
-VUE_APP_AdminPath=dashoo.opms.admin-0.0.1
+VUE_APP_AdminPath  = dashoo.opms.admin-0.0.1
+VUE_APP_ParentPath = dashoo.opms.parent-0.0.1
 VUE_APP_MicroSrvProxy_API=http://127.0.0.1:9981/
 
 SSO_LOGIN=''

+ 24 - 0
src/api/product.js

@@ -0,0 +1,24 @@
+import micro_request from '@/utils/micro_request'
+const basePath = process.env.VUE_APP_ParentPath
+console.log(basePath)
+export default {
+  login(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'Login', query)
+  },
+  logout(query) {
+    return micro_request.postRequest(basePath, 'Auth', 'LogOut', query)
+  },
+  // 获取列表
+  getList(query) {
+    return micro_request.postRequest(basePath, 'Product', 'GetList', query)
+  },
+  doAdd(query) {
+    return micro_request.postRequest(basePath, 'Product', 'Create', query)
+  },
+  doEdit(query) {
+    return micro_request.postRequest(basePath, 'Product', 'UpdateById', query)
+  },
+  doDelete(query) {
+    return micro_request.postRequest(basePath, 'Product', 'DeleteByIds', query)
+  },
+}

+ 104 - 0
src/views/system/product/components/UserEdit.vue

@@ -0,0 +1,104 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="500px"
+    @close="close">
+    <el-form ref="form" label-width="80px" :model="form" :rules="rules">
+      <el-form-item label="产品编码" prop="prodCode">
+        <el-input v-model.trim="form.prodCode" />
+      </el-form-item>
+      <el-form-item label="产品名称" prop="prodName">
+        <el-input v-model.trim="form.prodName" />
+      </el-form-item>
+      <el-form-item label="产品分类" prop="prodClass">
+        <el-input v-model.trim="form.prodClass" />
+      </el-form-item>
+      <el-form-item label="建议成交价" prop="guidPrice">
+        <el-input v-model.trim="form.guidPrice" />
+      </el-form-item>
+      <el-form-item label="经销商价" prop="distPrice">
+        <el-input v-model.trim="form.distPrice" />
+      </el-form-item>
+      <el-form-item label="签约代理价" prop="agentPrice">
+        <el-input v-model.trim="form.agentPrice" />
+      </el-form-item>
+      <el-form-item label="市场报价" prop="marketPrice">
+        <el-input v-model.trim="form.marketPrice" />
+      </el-form-item>
+      <el-form-item label="备注" prop="remark">
+        <el-input v-model.trim="form.remark" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import productApi from '@/api/product'
+  export default {
+    name: 'UserEdit',
+    data() {
+      return {
+        form: {
+          roles: [],
+        },
+        rules: {
+          userName: [
+            { required: true, trigger: 'blur', message: '请输入用户名' },
+          ],
+          password: [
+            { required: true, trigger: 'blur', message: '请输入密码' },
+          ],
+          email: [{ required: true, trigger: 'blur', message: '请输入邮箱' }],
+          roles: [{ required: true, trigger: 'blur', message: '请选择角色' }],
+        },
+        title: '',
+        dialogFormVisible: false,
+      }
+    },
+    methods: {
+      showEdit(row) {
+        if (!row) {
+          this.title = '添加'
+        } else {
+          this.title = '编辑'
+          this.form = Object.assign({}, row)
+        }
+        this.dialogFormVisible = true
+      },
+      close() {
+        this.$refs['form'].resetFields()
+        this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            if (this.form.id) {
+              this.form.guidPrice = parseFloat(this.form.guidPrice).toFixed(2)
+              this.form.distPrice = parseFloat(this.form.distPrice).toFixed(2)
+              this.form.agentPrice = parseFloat(this.form.agentPrice).toFixed(2)
+              this.form.marketPrice = parseFloat(this.form.marketPrice).toFixed(
+                2
+              )
+              console.log(this.form)
+              const { msg } = await productApi.doEdit(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            } else {
+              this.form.guidPrice = parseFloat(this.form.guidPrice).toFixed(2)
+              console.log(this.form)
+              const { msg } = await productApi.doAdd(this.form)
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            }
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>

+ 210 - 0
src/views/system/product/index.vue

@@ -0,0 +1,210 @@
+<template>
+  <div class="user-management-container">
+    <vab-query-form>
+      <vab-query-form-left-panel :span="12">
+        <el-button
+          icon="el-icon-plus"
+          type="primary"
+          @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          批量删除
+        </el-button>
+      </vab-query-form-left-panel>
+      <vab-query-form-right-panel :span="12">
+        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+          <el-form-item>
+            <el-input
+              v-model.trim="queryForm.prodCode"
+              clearable
+              placeholder="请输入用户名" />
+          </el-form-item>
+          <el-form-item>
+            <el-button icon="el-icon-search" type="primary" @click="queryData">
+              查询
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </vab-query-form-right-panel>
+    </vab-query-form>
+
+    <el-table
+      v-loading="listLoading"
+      border
+      :data="list"
+      :height="height"
+      @selection-change="setSelectRows">
+      <el-table-column align="center" show-overflow-tooltip type="selection" />
+      <!--      <el-table-column align="center" label="序号" width="55">
+        <template #default="{ $index }">
+          {{ $index + 1 }}
+        </template>
+      </el-table-column>-->
+      <el-table-column
+        align="center"
+        label="产品类别"
+        prop="prodClass"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="产品名称"
+        prop="prodName"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="产品型号"
+        prop="prodCode"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="签约代理价"
+        prop="agentPrice"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="经销商价"
+        prop="distPrice"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="建议成交价"
+        prop="guidPrice"
+        show-overflow-tooltip />
+
+      <el-table-column
+        align="center"
+        label="市场报价"
+        prop="marketPrice"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="备注信息"
+        prop="remark"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="创建人"
+        prop="createdName"
+        show-overflow-tooltip />
+      <el-table-column
+        align="center"
+        label="更改人"
+        prop="updatedName"
+        show-overflow-tooltip />
+
+      <el-table-column
+        align="center"
+        label="操作"
+        show-overflow-tooltip
+        width="85">
+        <template #default="{ row }">
+          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+        </template>
+      </el-table-column>
+      <template #empty>
+        <el-image
+          class="vab-data-empty"
+          :src="require('@/assets/empty_images/data_empty.png')" />
+      </template>
+    </el-table>
+    <el-pagination
+      background
+      :current-page="queryForm.pageNum"
+      :layout="layout"
+      :page-size="queryForm.pageSize"
+      :total="total"
+      @current-change="handleCurrentChange"
+      @size-change="handleSizeChange" />
+    <edit ref="edit" @fetch-data="fetchData" />
+  </div>
+</template>
+
+<script>
+  import Edit from './components/UserEdit'
+  import productApi from '@/api/product'
+  export default {
+    name: 'User',
+    components: { Edit },
+    data() {
+      return {
+        list: [],
+        listLoading: true,
+        layout: 'total, sizes, prev, pager, next, jumper',
+        total: 0,
+        selectRows: '',
+        queryForm: {
+          pageNum: 1,
+          pageSize: 10,
+          userName: '',
+        },
+      }
+    },
+    computed: {
+      height() {
+        return this.$baseTableHeight(1)
+      },
+    },
+    created() {
+      this.fetchData()
+    },
+    methods: {
+      setSelectRows(val) {
+        this.selectRows = val
+      },
+      handleEdit(row) {
+        if (row.id) {
+          this.$refs['edit'].showEdit(row)
+        } else {
+          this.$refs['edit'].showEdit()
+        }
+      },
+      handleDelete(row) {
+        if (row.id) {
+          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
+            const { msg } = await productApi.doDelete({ ids: [row.id] })
+            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            await this.fetchData()
+          })
+        } else {
+          if (this.selectRows.length > 0) {
+            const ids = this.selectRows.map((item) => parseInt(item.id))
+            console.log(ids)
+            this.$baseConfirm('你确定要删除选中项吗', null, async () => {
+              const { msg } = await productApi.doDelete({ ids })
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              await this.fetchData()
+            })
+          } else {
+            this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
+          }
+        }
+      },
+      handleSizeChange(val) {
+        this.queryForm.pageSize = val
+        this.fetchData()
+      },
+      handleCurrentChange(val) {
+        this.queryForm.pageNum = val
+        this.fetchData()
+      },
+      queryData() {
+        this.queryForm.pageNum = 1
+        this.fetchData()
+      },
+      async fetchData() {
+        this.listLoading = true
+        const {
+          data: { list, total },
+        } = await productApi.getList(this.queryForm)
+        this.list = list
+        this.total = total
+        this.listLoading = false
+      },
+    },
+  }
+</script>