yangxd 6 bulan lalu
induk
melakukan
cb10a919ce

+ 2 - 2
ruoyi-ui/.env.development

@@ -1,10 +1,10 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 智慧政工系统
 
 # 开发环境配置
 ENV = 'development'
 
-# 若依管理系统/开发环境
+# 智慧政工系统/开发环境
 VUE_APP_BASE_API = '/dev-api'
 
 # 路由懒加载

+ 2 - 2
ruoyi-ui/.env.production

@@ -1,8 +1,8 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 智慧政工系统
 
 # 生产环境配置
 ENV = 'production'
 
-# 若依管理系统/生产环境
+# 智慧政工系统/生产环境
 VUE_APP_BASE_API = '/prod-api'

+ 2 - 2
ruoyi-ui/.env.staging

@@ -1,10 +1,10 @@
 # 页面标题
-VUE_APP_TITLE = 若依管理系统
+VUE_APP_TITLE = 智慧政工系统
 
 NODE_ENV = production
 
 # 测试环境配置
 ENV = 'staging'
 
-# 若依管理系统/测试环境
+# 智慧政工系统/测试环境
 VUE_APP_BASE_API = '/stage-api'

+ 2 - 2
ruoyi-ui/package.json

@@ -1,8 +1,8 @@
 {
   "name": "ruoyi",
   "version": "3.8.8",
-  "description": "若依管理系统",
-  "author": "若依",
+  "description": "智慧政工系统",
+  "author": "",
   "license": "MIT",
   "scripts": {
     "dev": "vue-cli-service serve",

+ 84 - 0
ruoyi-ui/src/api/business/inhospital.js

@@ -0,0 +1,84 @@
+import request from '@/utils/request'
+
+// 查询
+export function list(data) {
+  return request({
+    url: '/api/study/findAllInfo',
+    method: 'post',
+    data: data
+  })
+}
+export function listByTitle(data) {
+  return request({
+    url: '/api/study/findInfoByTitle',
+    method: 'post',
+    data: data
+  })
+}
+
+
+// 查询
+export function getDetail(configId) {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'get'
+  })
+}
+
+// 查询
+export function getConfigKey(configKey) {
+  return request({
+    url: '/system/config/configKey/' + configKey,
+    method: 'get'
+  })
+}
+
+// 新增
+export function add(data) {
+  return request({
+    url: '/api/study/saveDoc',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改
+export function update(data) {
+  return request({
+    url: '/api/study/saveDoc',
+    method: 'post',
+    data: data
+  })
+}
+
+export function updateViewNum(data) {
+  return request({
+    url: '/api/study/updatePageViewNumById',
+    method: 'post',
+    data: data
+  })
+}
+export function addViewNum(data) {
+  return request({
+    url: '/api/study/saveViewLog',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除
+export function del(data) {
+  return request({
+    url: '/api/study/deleteById',
+    method: 'post',
+    data: data
+  })
+}
+
+// 刷新
+export function refreshCache() {
+  return request({
+    url: '/system/config/refreshCache',
+    method: 'delete'
+  })
+}

+ 60 - 0
ruoyi-ui/src/api/business/regulations.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询
+export function list(data) {
+  return request({
+    url: '/api/zdcx/query',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询
+export function getConfig(configId) {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'get'
+  })
+}
+
+// 查询
+export function getConfigKey(configKey) {
+  return request({
+    url: '/system/config/configKey/' + configKey,
+    method: 'get'
+  })
+}
+
+// 新增
+export function add(data) {
+  return request({
+    url: '/api/zdcx/save',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改
+export function update(data) {
+  return request({
+    url: '/api/zdcx/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除
+export function delConfig(configId) {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'delete'
+  })
+}
+
+// 刷新
+export function refreshCache() {
+  return request({
+    url: '/system/config/refreshCache',
+    method: 'delete'
+  })
+}

+ 90 - 0
ruoyi-ui/src/api/business/studyhelper.js

@@ -0,0 +1,90 @@
+import request from '@/utils/request'
+
+// 查询
+export function list(data) {
+  return request({
+    url: '/api/study/findAllInfo',
+    method: 'post',
+    data: data
+  })
+}
+export function listByTitle(data) {
+  return request({
+    url: '/api/study/findInfoByTitle',
+    method: 'post',
+    data: data
+  })
+}
+
+
+// 查询
+export function getDetail(configId) {
+  return request({
+    url: '/system/config/' + configId,
+    method: 'get'
+  })
+}
+
+// 查询
+export function getConfigKey(configKey) {
+  return request({
+    url: '/system/config/configKey/' + configKey,
+    method: 'get'
+  })
+}
+
+// 新增
+export function add(data) {
+  return request({
+    url: '/api/study/saveDoc',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改
+export function update(data) {
+  return request({
+    url: '/api/study/saveDoc',
+    method: 'post',
+    data: data
+  })
+}
+
+export function updateViewNum(data) {
+  return request({
+    url: '/api/study/updatePageViewNumById',
+    method: 'post',
+    data: data
+  })
+}
+export function addViewNum(data) {
+  return request({
+    url: '/api/study/saveViewLog',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除
+export function del(data) {
+  return request({
+    url: '/api/study/deleteById',
+    method: 'post',
+    data: data
+  })
+}
+
+// 刷新
+export function refreshCache() {
+  return request({
+    url: '/system/config/refreshCache',
+    method: 'delete'
+  })
+}
+export function listByDictType(study_datasource_type) {
+  return request({
+    url: '/system/dict/data/listByDictType?dictType='+study_datasource_type+'&status=0',
+    method: 'get'
+  })
+}

+ 22 - 0
ruoyi-ui/src/store/modules/user.js

@@ -47,6 +47,11 @@ const user = {
         }).catch(error => {
           reject(error)
         })
+        // var res = {}
+        // res['token'] = '123456'
+        // setToken(res.token)
+        // commit('SET_TOKEN', res.token)
+        // resolve()
       })
     },
 
@@ -69,6 +74,18 @@ const user = {
         }).catch(error => {
           reject(error)
         })
+        // var res = {}
+        // res['roles'] = 'ROLE_DEFAULT';
+        // res['permissions'] = '';
+        // res['userId'] = '1';
+        // res['userName'] = 'admin';
+        // var avatar = require("@/assets/images/profile.jpg");
+        // commit('SET_ROLES', res.roles)
+        // commit('SET_PERMISSIONS', res.permissions)
+        // commit('SET_ID', user.userId)
+        // commit('SET_NAME', user.userName)
+        // commit('SET_AVATAR', avatar)
+        // resolve(res)
       })
     },
 
@@ -84,6 +101,11 @@ const user = {
         }).catch(error => {
           reject(error)
         })
+        // commit('SET_TOKEN', '')
+        //   commit('SET_ROLES', [])
+        //   commit('SET_PERMISSIONS', [])
+        //   removeToken()
+        //   resolve()
       })
     },
 

+ 480 - 0
ruoyi-ui/src/views/business/assistance/inhospital/index.vue

@@ -0,0 +1,480 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="标题" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入标题"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      
+      <!-- <el-form-item label="来源" prop="datasourceName">
+        <el-select v-model="queryParams.datasourceName" placeholder="来源" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item> -->
+      <!-- <el-form-item label="时间" prop="docSrcTime">
+        
+        <el-date-picker
+          v-model="dateRange"
+          style="width: 340px"
+          value-format="yyyy-MM-dd"
+          type="datetimerange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+       
+      </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="resetQuery">重置</el-button>
+        <el-button type="primary" icon="el-icon-s-claim" size="mini" @click="handleGetApplyTpl">获取申请模板</el-button>
+        <el-button type="primary" icon="el-icon-s-claim" size="mini" @click="handleSubmitApply">提交申请</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:config:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:config:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:config:remove']"
+        >删除</el-button>
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:config:export']"
+        >导出</el-button>
+      </el-col> -->
+      
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="姓名" align="center" prop="title" >
+        <template slot-scope="scope">
+         <!-- <i class="el-icon el-icon-sort-up" v-if="scope.row.isTop==1"></i> -->
+         {{scope.row.title}}
+        </template>
+      </el-table-column>
+      <el-table-column label="申请时间" align="center" prop="docSrcTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.docSrcTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="手机号码" align="center" prop="datasourceName" :show-overflow-tooltip="true" ></el-table-column>
+      <el-table-column label="单位名称" align="center" prop="content" :show-overflow-tooltip="true" />
+      
+      <el-table-column label="简述" align="center" prop="url" :show-overflow-tooltip="true" />
+      
+      <el-table-column label="申请时间" align="center" prop="docSrcTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.docSrcTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="审核状态" align="center" prop="pageViewNum" :show-overflow-tooltip="true" />
+      <el-table-column label="处理时间" align="center" prop="pageViewNum" :show-overflow-tooltip="true" />
+      <el-table-column label="审核备注" align="center" prop="pageViewNum" :show-overflow-tooltip="true" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleLook(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:config:remove']"
+          >删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdateViewNum(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >编辑浏览量</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :fullscreen="true">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="是否住院" prop="status">
+          <el-select v-model="form.status" placeholder="是否住院" clearable @change="changeShifouInhospital">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="标题" prop="title" v-if="form.status=='Y'">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <!-- <el-form-item label="来源" prop="datasourceName">
+         
+          <el-input v-model="form.datasourceName" placeholder="请输入来源" />
+        </el-form-item> -->
+        <el-form-item label="文章时间" prop="docSrcTime" v-if="form.status=='Y'">
+          <el-date-picker
+          type="datetime"
+            v-model="form.docSrcTime"
+            style="width: 240px"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择发布时间"
+          ></el-date-picker>
+        
+        </el-form-item>
+        <el-form-item label="地址" prop="url" v-if="form.status=='Y'">
+          <el-input v-model="form.url" placeholder="请输入地址" />
+        </el-form-item>
+        
+        
+        <el-form-item label="内容" prop="content" v-if="form.status=='Y'">
+          
+          <editor v-model="form.content" :min-height="292"/>
+        </el-form-item>
+        <el-form-item label="排序" v-if="form.status=='Y'">
+          
+           <el-input-number v-model="form.orderNum" controls-position="right" :min="1" :max="10000"></el-input-number>
+        </el-form-item>
+        
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="获取申请模板" :visible.sync="openApplyTpl" width="800px" append-to-body >
+      <el-form ref="formViewNum" :model="formApplyTpl" :rules="rules" label-width="120px">
+        <el-form-item label="所患疾病" prop="status">
+          <el-select v-model="formApplyTpl.status" placeholder="所患疾病" clearable>
+            <el-option
+              v-for="dict in dict.type.sys_normal_disable"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="个人外网邮箱" prop="title">
+          <el-input v-model="formApplyTpl.pageViewNum" placeholder="请输入个人外网邮箱" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormViewNum">确 定</el-button>
+        <el-button @click="cancelApplyTpl">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-drawer
+      title="查看"
+      :visible.sync="drawer"
+      direction="rtl" size='50%'>
+      <div style="margin:20px;">
+        <div><h2>{{form.title}}</h2></div>
+        <div style="color:#666;margin-top: 20px;font-size:12px;">来源地址:{{form.url}}</div>
+        <div style="margin-top: 20px;" v-html="form.content"></div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import { list, getConfig, del, add, update, refreshCache, updateViewNum, addViewNum } from "@/api/business/inhospital";
+
+export default {
+  name: "Config",
+  dicts: ['sys_yes_no','sys_normal_disable'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 参数表格数据
+      configList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openApplyTpl:false, 
+      drawer: false, 
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageIndex: 1,
+        pageSize: 10,
+        title: undefined,
+        datasourceName: undefined
+      },
+      // 表单参数
+      form: {
+        // isTop: '0', 
+        // orderNum: '0',
+        docId: null,
+        url: '',
+        content: ''
+      },
+      // 表单校验
+      rules: {
+        title: [
+          { required: true, message: "标题不能为空", trigger: "blur" }
+        ],
+        // url: [
+        //   { required: true, message: "来源地址不能为空", trigger: "blur" }
+        // ],
+        docSrcTime: [
+          { required: true, message: "时间不能为空", trigger: "blur" }
+        ]
+        ,
+        content: [
+          { required: true, message: "内容不能为空", trigger: "blur" }
+        ]
+      },
+      formApplyTpl:{
+        pageViewNum: null,
+        docId: null
+      }
+    };
+  },
+  created() {
+    this.getList();
+    // this.form = {
+    //     title: '测试',
+    //     url: 'www.baidu.com',
+    //     content: '<p><b>aaaaa</b></p>'
+    //   }
+  },
+  methods: {
+    changeShifouInhospital(val){
+      if(val == 'Y'){
+
+      }else{
+        this.$alert('对符合慰问条件,患本办法规定范围内的38种指定重大疾病且每年首次住院的工会会员,给予一次性2000元慰问金,对每年首次因其他疾病住院的工会会员给予500元慰问金。', '说明', {
+          confirmButtonText: '确定',
+          callback: action => {
+            
+          }
+        });
+      }
+    },
+    handleSubmitApply(){
+      this.open = true;
+    },
+    /** 查询参数列表 */
+    getList() {
+      this.loading = true;
+      list(this.queryParams).then(response => {
+          this.configList = response.rows;
+          this.total = response.count;
+          this.loading = false;
+        }
+        );
+      
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        docId: undefined,
+        title: undefined,
+        
+        url: undefined,
+        content: undefined,
+        // isTop: '0', 
+        // orderNum: '0'
+      };
+      this.resetForm("form");
+    },
+    handleGetApplyTpl(){
+      this.openApplyTpl = true;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加文章";
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.configId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const configId = row.docId
+      // getDetail(configId).then(response => {
+        // this.form = response.data;
+        this.form  = row;
+        this.open = true;
+        this.title = "修改文章";
+      // });
+    },
+    
+    handleLook(row){
+      this.drawer = true;
+      this.form =row;
+      addViewNum({
+        docId: row.docId
+      }).then(res=>{
+        console.log('增加文章阅读量:', res)
+      })
+    },
+    submitFormViewNum(){
+      this.$refs["formViewNum"].validate(valid => {
+        if (valid) {
+          if (this.form.docId != undefined) {
+            updateViewNum(this.formViewNum).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.openViewNum = false;
+              this.getList();
+            });
+      
+            
+          }
+        }
+      });
+    },
+    cancelApplyTpl(){
+      this.openApplyTpl = false;
+      this.formApplyTpl.docId = null;
+      this.formApplyTpl.pageViewNum = null;
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.docId != undefined) {
+            update(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            add(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      // const configIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除该条记录?').then(function() {
+          return del({
+            docId: row.docId
+          });
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/config/export', {
+        ...this.queryParams
+      }, `config_${new Date().getTime()}.xlsx`)
+    },
+    /** 刷新缓存按钮操作 */
+    handleRefreshCache() {
+      refreshCache().then(() => {
+        this.$modal.msgSuccess("刷新成功");
+      });
+    }
+  }
+};
+</script>

+ 355 - 0
ruoyi-ui/src/views/business/regulations/index.vue

@@ -0,0 +1,355 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="题目" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入题目"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      
+      <el-form-item label="制定单位" prop="publishDept">
+        <!-- <el-select v-model="queryParams.publishDept" placeholder="制定单位" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select> -->
+        <el-input
+          v-model="queryParams.publishDept"
+          placeholder="请输入制定单位"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="发布时间" prop="configKey">
+        
+        <el-date-picker
+          v-model="dateRange"
+          style="width: 340px"
+          value-format="yyyy-MM-dd"
+          type="datetimerange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+       
+      </el-form-item>
+      <el-form-item label="文号">
+        <el-input
+          v-model="queryParams.docId"
+          placeholder="请输入文号"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </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="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:config:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:config:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:config:remove']"
+        >删除</el-button>
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:config:export']"
+        >导出</el-button>
+      </el-col> -->
+      
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="题目" align="center" prop="title" />
+      <el-table-column label="制定单位" align="center" prop="publishDept" :show-overflow-tooltip="true" />
+      <el-table-column label="文号" align="center" prop="docId" :show-overflow-tooltip="true" />
+      
+      <el-table-column label="内容" align="center" prop="content" :show-overflow-tooltip="true" />
+      <el-table-column label="发布时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:config:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="题目" prop="title">
+          <el-input v-model="form.title" placeholder="请输入题目" />
+        </el-form-item>
+        <el-form-item label="制定单位" prop="publishDept">
+          <!-- <el-select v-model="form.publishDept" placeholder="制定单位" clearable>
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select> -->
+          <el-input v-model="form.publishDept" placeholder="请输入制定单位" />
+        </el-form-item>
+        <el-form-item label="发布时间" prop="createTime">
+          <el-date-picker
+          type="datetime"
+            v-model="form.createTime"
+            style="width: 240px"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择发布时间"
+          ></el-date-picker>
+        
+        </el-form-item>
+        <el-form-item label="文号" prop="docId">
+          <el-input v-model="form.docId" placeholder="请输入文号" />
+        </el-form-item>
+        
+        
+        <el-form-item label="内容" prop="content">
+          
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { list, getConfig, delConfig, add, update, refreshCache } from "@/api/business/regulations";
+
+export default {
+  name: "Config",
+  dicts: ['sys_yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 参数表格数据
+      configList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        title: undefined,
+        publishDept: undefined,
+        docId: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        title: [
+          { required: true, message: "题目不能为空", trigger: "blur" }
+        ],
+        docId: [
+          { required: true, message: "文号不能为空", trigger: "blur" }
+        ],
+        publishDept: [
+          { required: true, message: "制定单位不能为空", trigger: "blur" }
+        ]
+        ,
+        content: [
+          { required: true, message: "内容不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询参数列表 */
+    getList() {
+      this.loading = true;
+      this.queryParams.queryFlag = 0
+      list(this.queryParams).then(response => {
+          this.configList = response.records;
+          this.total = response.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        docId: undefined,
+        title: undefined,
+        publishDept: undefined,
+        createTime: undefined,
+        content: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加制度";
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.configId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      // const configId = row.configId || this.ids
+      // getConfig(configId).then(response => {
+        this.form = row;
+        this.open = true;
+        this.title = "修改制度";
+      // });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.configId != undefined) {
+            update(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            add(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const configIds = row.configId || this.ids;
+      this.$modal.confirm('是否确认删除该条记录?').then(function() {
+          return delConfig(configIds);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/config/export', {
+        ...this.queryParams
+      }, `config_${new Date().getTime()}.xlsx`)
+    },
+    /** 刷新缓存按钮操作 */
+    handleRefreshCache() {
+      refreshCache().then(() => {
+        this.$modal.msgSuccess("刷新成功");
+      });
+    }
+  }
+};
+</script>

+ 481 - 0
ruoyi-ui/src/views/business/studyhelper/index.vue

@@ -0,0 +1,481 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="标题" prop="title">
+        <el-input
+          v-model="queryParams.title"
+          placeholder="请输入标题"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      
+      <!-- <el-form-item label="来源" prop="datasourceName">
+        <el-select v-model="queryParams.datasourceName" placeholder="来源" clearable>
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item> -->
+      <!-- <el-form-item label="时间" prop="docSrcTime">
+        
+        <el-date-picker
+          v-model="dateRange"
+          style="width: 340px"
+          value-format="yyyy-MM-dd"
+          type="datetimerange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+       
+      </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="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:config:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:config:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:config:remove']"
+        >删除</el-button>
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:config:export']"
+        >导出</el-button>
+      </el-col> -->
+      
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="标题" align="center" prop="title" >
+        <template slot-scope="scope">
+         <!-- <i class="el-icon el-icon-sort-up" v-if="scope.row.isTop==1"></i> -->
+         {{scope.row.title}}
+        </template>
+      </el-table-column>
+      <el-table-column label="数据来源" align="center" prop="datasourceName" :show-overflow-tooltip="true" >
+        <template slot-scope="scope">
+         <div v-if="scope.row.datasourceCode=='-1'">管理员手动录入</div>
+         <div v-if="scope.row.datasourceCode=='1'">理论前沿</div>
+         <div v-if="scope.row.datasourceCode=='2'">学习园地</div>
+         <div v-if="scope.row.datasourceCode=='3'">学习强国</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="内容" align="center" prop="content" :show-overflow-tooltip="true" />
+      
+      <el-table-column label="来源地址" align="center" prop="url" :show-overflow-tooltip="true" />
+      <el-table-column label="所属网络" align="center" prop="urlType" :show-overflow-tooltip="true" >
+        <template slot-scope="scope">
+         <div v-if="scope.row.datasourceCode=='0'">GAW </div>
+         <div v-if="scope.row.datasourceCode=='1'">互联网</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="排序" align="center" prop="orderNum" :show-overflow-tooltip="true" />
+      <el-table-column label="发布时间" align="center" prop="docSrcTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.docSrcTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="浏览量" align="center" prop="pageViewNum" :show-overflow-tooltip="true" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleLook(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:config:remove']"
+          >删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdateViewNum(scope.row)"
+            v-hasPermi="['system:config:edit']"
+          >编辑浏览量</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNo"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :fullscreen="true">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <!-- <el-form-item label="来源" prop="datasourceName">
+         
+          <el-input v-model="form.datasourceName" placeholder="请输入来源" />
+        </el-form-item> -->
+        <el-form-item label="文章时间" prop="docSrcTime">
+          <el-date-picker
+          type="datetime"
+            v-model="form.docSrcTime"
+            style="width: 240px"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择发布时间"
+          ></el-date-picker>
+        
+        </el-form-item>
+        <el-form-item label="地址" prop="url">
+          <el-input v-model="form.url" placeholder="请输入地址" />
+        </el-form-item>
+        <el-form-item label="所属网络" prop="urlType">
+          
+          <el-select v-model="form.urlType" placeholder="请选择所属网络">
+            <el-option
+              v-for="item in urlTypes"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+           
+        <el-form-item label="内容" prop="content">
+          
+          <editor v-model="form.content" :min-height="292"/>
+        </el-form-item>
+        <!-- <el-form-item label="排序" >
+          
+           <el-input-number v-model="form.orderNum" controls-position="right" :min="1" :max="10000"></el-input-number>
+        </el-form-item>
+        <el-form-item label="是否置顶" >
+     
+           <el-radio v-model="form.isTop" label="1">置顶</el-radio>
+          <el-radio v-model="form.isTop" label="0">不置顶</el-radio>
+        </el-form-item> -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="修改浏览量" :visible.sync="openViewNum" width="800px" append-to-body >
+      <el-form ref="formViewNum" :model="formViewNum" :rules="rulesViewNum" label-width="80px">
+        <el-form-item label="浏览量" prop="pageViewNum">
+          <el-input v-model="formViewNum.pageViewNum" placeholder="请输入浏览量" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormViewNum">确 定</el-button>
+        <el-button @click="cancelViewNum">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-drawer
+      title="查看"
+      :visible.sync="drawer"
+      direction="rtl" size='50%'>
+      <div style="margin:20px;">
+        <div><h2>{{form.title}}</h2></div>
+        <div style="color:#666;margin-top: 20px;font-size:12px;">来源地址:{{form.url}}</div>
+        <div style="margin-top: 20px;" v-html="form.content"></div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import { list, getConfig, del, add, update, refreshCache, updateViewNum, addViewNum, listByDictType } from "@/api/business/studyhelper";
+
+export default {
+  name: "Config",
+  dicts: ['sys_yes_no'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 参数表格数据
+      configList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openViewNum:false, 
+      drawer: false, 
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageIndex: 1,
+        pageSize: 10,
+        title: undefined,
+        datasourceName: undefined
+      },
+      // 表单参数
+      form: {
+        // isTop: '0', 
+        // orderNum: '0',
+        docId: null,
+        url: '',
+        content: ''
+      },
+      // 表单校验
+      rules: {
+        title: [
+          { required: true, message: "标题不能为空", trigger: "blur" }
+        ],
+        // url: [
+        //   { required: true, message: "来源地址不能为空", trigger: "blur" }
+        // ],
+        docSrcTime: [
+          { required: true, message: "时间不能为空", trigger: "blur" }
+        ]
+        ,
+        content: [
+          { required: true, message: "内容不能为空", trigger: "blur" }
+        ]
+      },
+      formViewNum:{
+        pageViewNum: null,
+        docId: null
+      },
+      rulesViewNum
+      :{
+        pageViewNum: [
+          { required: true, message: "浏览量不能为空", trigger: "blur" }
+        ]
+      },
+      urlTypes:[]
+    };
+  },
+  created() {
+    let that = this;
+    this.getList();
+    this.getDicts('study_url_type',function(datas){
+      that.urlTypes = datas;
+    });
+    // this.form = {
+    //     title: '测试',
+    //     url: 'www.baidu.com',
+    //     content: '<p><b>aaaaa</b></p>'
+    //   }
+  },
+  methods: {
+    getDicts(study_datasource_type, callback){
+      listByDictType(study_datasource_type).then(response => {
+          callback(response.data);
+        }
+        );
+    },
+    /** 查询参数列表 */
+    getList() {
+      this.loading = true;
+      list(this.queryParams).then(response => {
+          this.configList = response.rows;
+          this.total = response.count;
+          this.loading = false;
+        }
+        );
+      
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        docId: undefined,
+        title: undefined,
+        
+        url: undefined,
+        content: undefined,
+        // isTop: '0', 
+        // orderNum: '0'
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加文章";
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.configId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const configId = row.docId
+      // getDetail(configId).then(response => {
+        // this.form = response.data;
+        this.form  = row;
+        this.open = true;
+        this.title = "修改文章";
+      // });
+    },
+    handleUpdateViewNum(row){
+      this.openViewNum = true;
+      this.formViewNum.docId = row.docId;
+      this.formViewNum.pageViewNum = row.pageViewNum;
+    },
+    handleLook(row){
+      this.drawer = true;
+      this.form =row;
+      addViewNum({
+        docId: row.docId
+      }).then(res=>{
+        console.log('增加文章阅读量:', res)
+      })
+    },
+    submitFormViewNum(){
+      this.$refs["formViewNum"].validate(valid => {
+        if (valid) {
+          if (this.form.docId != undefined) {
+            updateViewNum(this.formViewNum).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.openViewNum = false;
+              this.getList();
+            });
+      
+            
+          }
+        }
+      });
+    },
+    cancelViewNum(){
+      this.openViewNum = false;
+      this.formViewNum.docId = null;
+      this.formViewNum.pageViewNum = null;
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.docId != undefined) {
+            update(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            add(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      // const configIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除该条记录?').then(function() {
+          return del({
+            docId: row.docId
+          });
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/config/export', {
+        ...this.queryParams
+      }, `config_${new Date().getTime()}.xlsx`)
+    },
+    /** 刷新缓存按钮操作 */
+    handleRefreshCache() {
+      refreshCache().then(() => {
+        this.$modal.msgSuccess("刷新成功");
+      });
+    }
+  }
+};
+</script>

+ 2 - 2
ruoyi-ui/src/views/index.vue

@@ -39,9 +39,9 @@
     </el-row>
     <el-row :gutter="20">
       <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>若依后台管理框架</h2>
+        <h2>智慧政工系统框架</h2>
         <p>
-          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
+          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了智慧政工系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
         </p>
         <p>
           <b>当前版本:</b> <span>v{{ version }}</span>

+ 12 - 0
ruoyi-ui/src/views/login.vue

@@ -128,7 +128,19 @@ export default {
       };
     },
     handleLogin() {
+      
+      // this.$store.dispatch("Login", this.loginForm).then(() => {
+      //     this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
+      //   }).catch(() => {
+      //     this.loading = false;
+      //     if (this.captchaEnabled) {
+      //       this.getCode();
+      //     }
+      //   });
+
+
       this.$refs.loginForm.validate(valid => {
+        valid= true;
         if (valid) {
           this.loading = true;
           if (this.loginForm.rememberMe) {

+ 26 - 4
ruoyi-ui/src/views/system/user/index.vue

@@ -141,9 +141,11 @@
           <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
           <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
           <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
-          <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
+          <el-table-column label="警号" align="center" key="policeNo" prop="policeNo" v-if="columns[3].visible" :show-overflow-tooltip="true" />
+          <el-table-column label="身份证号" align="center" key="idCard" prop="idCard" v-if="columns[4].visible" :show-overflow-tooltip="true" />
+          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[5].visible" :show-overflow-tooltip="true" />
+          <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[6].visible" width="120" />
+          <el-table-column label="状态" align="center" key="status" v-if="columns[7].visible">
             <template slot-scope="scope">
               <el-switch
                 v-model="scope.row.status"
@@ -153,7 +155,7 @@
               ></el-switch>
             </template>
           </el-table-column>
-          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
+          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[8].visible" width="160">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.createTime) }}</span>
             </template>
@@ -217,6 +219,18 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="警号" prop="policeNo">
+              <el-input v-model="form.policeNo" placeholder="请输入警号" maxlength="30" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号" prop="idCard">
+              <el-input v-model="form.idCard" placeholder="请输入身份证号" maxlength="30" />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="手机号码" prop="phonenumber">
@@ -417,6 +431,8 @@ export default {
         { key: 0, label: `用户编号`, visible: true },
         { key: 1, label: `用户名称`, visible: true },
         { key: 2, label: `用户昵称`, visible: true },
+        { key: 7, label: `警号`, visible: true },
+        { key: 8, label: `身份证号`, visible: true },
         { key: 3, label: `部门`, visible: true },
         { key: 4, label: `手机号码`, visible: true },
         { key: 5, label: `状态`, visible: true },
@@ -431,6 +447,12 @@ export default {
         nickName: [
           { required: true, message: "用户昵称不能为空", trigger: "blur" }
         ],
+        policeNo: [
+          { required: true, message: "警号不能为空", trigger: "blur" }
+        ],
+        idCard: [
+          { required: true, message: "身份证号不能为空", trigger: "blur" }
+        ],
         password: [
           { required: true, message: "用户密码不能为空", trigger: "blur" },
           { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },

+ 1 - 1
ruoyi-ui/vue.config.js

@@ -7,7 +7,7 @@ function resolve(dir) {
 
 const CompressionPlugin = require('compression-webpack-plugin')
 
-const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
+const name = process.env.VUE_APP_TITLE || '智慧政工系统' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口