Z 1 سال پیش
والد
کامیت
6ebee70348

+ 56 - 0
src/api/system/parmasManage/index.js

@@ -0,0 +1,56 @@
+import request from '@/utils/request';
+
+/**
+ * 分页查询
+ * @param params 查询条件
+ */
+export async function parameterPageList(params) {
+  const res = await request.get('/sys/parameter/page', {
+    params
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 获取详情
+ * @param id
+ */
+export async function parameterGetByIdAPI(id) {
+  const res = await request.get(`/sys/parameter/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 删除
+ * @param data
+ */
+export async function removeParameterAPI(data) {
+  const res = await request.delete('/sys/parameter/delete', {data});
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 添加
+ * @param data
+ */
+export async function parameterSaveAPI(data) {
+  const res = await request.post('/sys/parameter/save', data);
+  if (res.data.code == 0) {
+    return res.data.message;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+export async function updateParameterAPI(params) {
+  const res = await request.put('/sys/parameter/update', params);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+

+ 2 - 1
src/enum/dict.js

@@ -63,7 +63,8 @@ export default {
   编码间隔符: 'codeSpaceMark',
   条码分类: 'strip_type',
   链接分类: 'link_type',
-  架构分类: 'archit_type'
+  架构分类: 'archit_type',
+  业务模块: 'business_module'
 };
 
 export const numberList = [

+ 1 - 0
src/store/getters.js

@@ -4,6 +4,7 @@
 import dictEnum from '@/enum/dict';
 export default {
   user: (state) => state.user,
+  paramsSetData: (state) => state.paramsSetData,
   theme: (state) => state.theme,
   dict: (state) => state.dict,
   // 根据字典enumName  和 dictCode 获取字典项

+ 3 - 1
src/store/index.js

@@ -9,6 +9,7 @@ import user from './modules/user';
 import theme from './modules/theme';
 import selectCache from './modules/selectCache';
 import team from './modules/team';
+import paramsSetData from '@/store/modules/paramsSetData';
 import createPersistedState from 'vuex-persistedstate';
 
 import { SYSTEM_NAME } from '@/config/setting';
@@ -23,6 +24,7 @@ export default new Vuex.Store({
     user,
     theme,
     selectCache,
+    paramsSetData,
     team
   },
   getters,
@@ -32,7 +34,7 @@ export default new Vuex.Store({
         ? `vuex-${SYSTEM_NAME}`
         : `private-vuex-${SYSTEM_NAME}`,
       storage: window.sessionStorage,
-      paths: ['user']
+      paths: ['user', 'paramsSetData']
     })
   ] //会自动保存创建的状态。刷新还在
 });

+ 36 - 0
src/store/modules/paramsSetData.js

@@ -0,0 +1,36 @@
+// 数据缓存
+import Vue from 'vue';
+import {parameterPageList} from "@/api/system/parmasManage";
+const state = {
+  paramsData: []
+};
+
+const mutations = {
+  // 获取当前登录参数配置数据
+  setParamsData(state, info) {
+    state.paramsData = info;
+  }
+};
+
+const actions = {
+  setParamsDataInfo({ commit }) {
+    parameterPageList({
+      pageNum: 1,
+      size: 999
+    })
+      .then((res) => {
+        console.log(res.list);
+        commit('setParamsData', res.list);
+      })
+      .catch((e) => {
+        commit('setParamsData', []);
+      });
+  }
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+};

+ 117 - 0
src/views/system/parmasManage/addOrEditDialog.vue

@@ -0,0 +1,117 @@
+<template>
+  <ele-modal
+    width="500px"
+    :visible="addOrEditDialogFlag"
+    append-to-body
+    :title="title"
+    :centered="true"
+    :close-on-click-modal="false"
+    custom-class="ele-dialog-form"
+    :before-close="cancel">
+    <el-form ref="form" class="el-form-box" :model="dialogForm" :rules="rules" label-width="100px">
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="模块名称:" prop="moduleCode">
+            <dictSelection :isProhibit="type=='view'" v-model="dialogForm.moduleCode" clearable dict-name="业务模块" @itemChange="(val)=>getDictName(val,'moduleName') "></dictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="编码:"  prop="code">
+            <el-input :disabled="type=='view'" v-model="dialogForm.code" clearable></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="名称:" prop="name">
+            <el-input :disabled="type=='view'" v-model="dialogForm.name" clearable></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="参数值:" prop="value">
+            <el-input :disabled="type=='view'" v-model="dialogForm.value" clearable></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="是否启用:" prop="enable">
+            <el-switch
+              :disabled="type=='view'"
+              v-model="dialogForm.enable"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div slot="footer">
+      <el-button v-if="type!='view'" type="primary" @click="handelConfirm"> 确定</el-button>
+      <el-button @click="cancel"> 取消</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+import {parameterGetByIdAPI, parameterSaveAPI, updateParameterAPI} from "@/api/system/parmasManage";
+
+export default {
+  name: "addOrEditDialog",
+  props: {
+    addOrEditDialogFlag: false
+  },
+  data() {
+    return {
+      title: '',
+      type: '',
+      dialogForm: {
+        code: '',
+        enable: 0,
+        id: '',
+        moduleCode: '',
+        moduleName: '',
+        name: '',
+        value: '',
+      },
+      rules: {
+        moduleCode:{required:true,message:'请选择模块名称',trigger:'change'},
+        code:{required:true,message:'请输入编码',trigger:'blur'},
+        name:{required:true,message:'请输入名称',trigger:'blur'},
+        value:{required:true,message:'请输入参数值',trigger:'blur'},
+        enable:{required:true,message:'请选择是否启用',trigger:'blur'},
+      }
+    }
+  },
+  methods: {
+    init(type, id = '') {
+      this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情'
+      this.type = type
+      if (id) {
+        this.getInfo(id)
+      }
+    },
+    async getInfo(id) {
+      this.dialogForm = await parameterGetByIdAPI(id)
+    },
+    getDictName(val,name){
+      this.dialogForm[name] = val.dictValue;
+    },
+    handelConfirm() {
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return;
+        let API = this.type == 'add' ? parameterSaveAPI : updateParameterAPI
+        await API(this.dialogForm)
+        await this.$store.dispatch('paramsSetData/setParamsDataInfo');
+        this.$message.success('操作成功')
+        this.cancel();
+        this.$emit('reload')
+      });
+    },
+    cancel() {
+      this.$emit('update:addOrEditDialogFlag', false)
+    }
+  }
+}
+</script>
+<style scoped lang="scss">
+
+</style>

+ 278 - 0
src/views/system/parmasManage/index.vue

@@ -0,0 +1,278 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never">
+      <!-- 搜索表单 -->
+      <search @search="reload"/>
+      <!-- 数据表格 -->
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        :selection.sync="selection"
+        height="calc(100vh - 385px)"
+        row-key="id"
+        cache-key="systemUserTable"
+      >
+        <!-- 表头工具栏 -->
+        <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="openEdit('add')"
+            v-if="$hasPermission('sys:parameter:save')"
+          >
+            新建
+          </el-button>
+          <el-button
+            size="small"
+            type="danger"
+            icon="el-icon-delete"
+            class="ele-btn-icon"
+            @click="removeBatch"
+            v-if="$hasPermission('sys:parameter:delete')"
+          >
+            删除
+          </el-button>
+          <!--          <el-button
+            size="small"
+            icon="el-icon-upload2"
+            class="ele-btn-icon"
+            @click="openImport"
+          >
+            导入
+          </el-button> -->
+        </template>
+        <!-- 用户名列 -->
+        <!--        <template v-slot:nickname="{ row }">
+          <router-link :to="'/system/user/details?id=' + row.userId">
+            {{ row.nickname }}
+          </router-link>
+        </template> -->
+        <!-- 角色列 -->
+        <template v-slot:roleList="{ row }">
+          <el-tag
+            v-for="item in row.roleList"
+            :key="item.id"
+            size="mini"
+            type="primary"
+            :disable-transitions="true"
+          >
+            {{ item.name }}
+          </el-tag>
+        </template>
+        <!-- 状态列 -->
+        <template v-slot:enable="{ row }">
+          <el-switch
+            v-if="$hasPermission('sys:parameter:update')"
+            v-model="row.enable"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            :active-value="0"
+            :inactive-value="1"
+            @change="changeEnable(row)"
+          >
+          </el-switch>
+          <span v-else>{{ row.enable ? '开启' : '停用' }}</span>
+        </template>
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="openEdit('edit',row.id)"
+          >
+            修改
+          </el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="openEdit('view',row.id)"
+          >
+            详情
+          </el-link>
+          <el-popconfirm
+            class="ele-action"
+            title="确定要删除吗?"
+            @confirm="remove(row)"
+          >
+            <template v-slot:reference>
+              <el-link
+                type="danger"
+                :underline="false"
+                icon="el-icon-delete">
+                删除
+              </el-link>
+            </template>
+          </el-popconfirm>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <add-or-edit-dialog v-if="addOrEditDialogFlag" :add-or-edit-dialog-flag.sync="addOrEditDialogFlag"
+                        ref="addOrEditDialogRef" @reload="reload"></add-or-edit-dialog>
+  </div>
+</template>
+
+<script>
+
+
+import {parameterPageList, removeParameterAPI, updateParameterAPI} from "@/api/system/parmasManage";
+import addOrEditDialog from './addOrEditDialog.vue'
+import search from './search.vue'
+
+export default {
+  name: 'index',
+  components: {
+    addOrEditDialog,
+    search
+  },
+  data() {
+    return {
+      // 表格列配置
+      columns: [
+        {
+          columnKey: 'selection',
+          type: 'selection',
+          width: 45,
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          columnKey: 'index',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left',
+          label: '序号'
+        },
+
+        {
+          prop: 'code',
+          label: '编码',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'moduleName',
+          label: '模块名称',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'name',
+          label: '名称',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'value',
+          label: '参数值',
+          // sortable: 'custom',
+          showOverflowTooltip: true,
+          align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'enable',
+          label: '状态',
+          align: 'center',
+          // sortable: 'custom',
+          width: 80,
+          resizable: false,
+          slot: 'enable',
+          showOverflowTooltip: true
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 280,
+          align: 'center',
+          resizable: false,
+          slot: 'action',
+          showOverflowTooltip: true
+        }
+      ],
+      // 表格选中数据
+      selection: [],
+      addOrEditDialogFlag: null,
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    /* 表格数据源 */
+    datasource({page, limit, where, order}) {
+      return parameterPageList({...where, ...order, pageNum: page, size: limit});
+    },
+
+    async changeEnable(row) {
+      let params = {...row};
+      const res = await updateParameterAPI(params);
+      if (res.code == 0) {
+        this.$message({
+          type: 'success',
+          message: '修改成功',
+          customClass: 'ele-message-border'
+        });
+        //this.reload();
+      }
+    },
+    /* 刷新表格 */
+    reload(where) {
+      this.$refs.table.reload({page: 1, where: where});
+    },
+    /* 打开编辑弹窗 */
+    openEdit(type, id) {
+      this.addOrEditDialogFlag = true;
+      this.$nextTick(() => {
+        this.$refs.addOrEditDialogRef.init(type, id)
+      })
+    },
+
+
+    /* 删除 */
+    async remove(row) {
+      await removeParameterAPI([row.id])
+      this.$message.success('操作成功');
+      this.reload();
+    },
+    /* 批量删除 */
+    removeBatch() {
+      if (!this.selection.length) {
+        this.$message.error('请至少选择一条数据');
+        return;
+      }
+      this.$confirm('确定要删除选中的数据吗?', '提示', {
+        type: 'warning'
+      })
+        .then(() => {
+          const loading = this.$loading({lock: true});
+          removeParameterAPI(this.selection.map((d) => d.id))
+            .then((msg) => {
+              loading.close();
+              this.$message.success(msg);
+              this.reload();
+            })
+            .catch((e) => {
+              loading.close();
+              // this.$message.error(e.message);
+            });
+        })
+        .catch(() => {
+        });
+    },
+
+  }
+};
+</script>

+ 83 - 0
src/views/system/parmasManage/search.vue

@@ -0,0 +1,83 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="77px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+    :autoComplete="false"
+  >
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="编码:">
+          <el-input
+            clearable
+            v-model.trim="where.code"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="模块名称:">
+          <dictSelection v-model="where.moduleCode" clearable dict-name="业务模块"></dictSelection>
+        </el-form-item>
+      </el-col>
+
+      <el-col style="display: flex;justify-content: flex-end" v-bind="styleResponsive ? { lg: 12, md: 24 } : { span: 12 }">
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+import { getRolesListAPI } from '@/api/system/role';
+
+export default {
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      moduleCode: '',
+      code:''
+    };
+    return {
+      // 表单数据
+      where: { ...defaultWhere },
+      roleList: []
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  created() {
+    this.getRolesList();
+  },
+  methods: {
+    async getRolesList() {
+      this.roleList = await getRolesListAPI();
+    },
+    /* 搜索 */
+    search() {
+      this.$emit('search', this.where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = { ...this.defaultWhere };
+      this.search();
+    }
+  }
+};
+</script>

+ 1 - 1
vue.config.js

@@ -33,8 +33,8 @@ module.exports = {
       '/api': {
         // target: 'http://192.168.1.124:50001',
         // target: 'http://192.168.1.147:18086',
-        target: 'http://192.168.1.104:18086',
         // target: 'http://192.168.1.176:18086',
+        target: 'http://192.168.1.105:18086',
 
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         pathRewrite: {