Ver código fonte

Merge remote-tracking branch 'origin/master'

Administrator 4 anos atrás
pai
commit
4dc8eef319

+ 8 - 0
ruoyi-ui/src/api/system/user.js

@@ -26,6 +26,14 @@ export function addUser(data) {
     data: data
   })
 }
+// 发送短息
+export function addPhoen(data) {
+  return request({
+    url: '/system/user/sendSms',
+    method: 'post',
+    data: data
+  })
+}
 
 // 修改用户
 export function updateUser(data) {

+ 7 - 4
ruoyi-ui/src/components/ProjectDec/SignContract.vue

@@ -3,11 +3,12 @@
     <el-form label-position="right" ref="form" :rules="rules" :model="form" label-width="80px">
       <el-row :gutter="10" class="mb8 roiyy">
         <el-col :span="1.5" v-if="setrd % 2 == 1">
-          <el-button type="primary" v-hasPermi="['bmProject:project:examine']" @click="upBtn">提交</el-button>
+          <el-button type="primary" v-hasPermi="['bmProject:project:examine']" @click="submitForm">提交</el-button>
+          <!-- upBtn -->
         </el-col>
-        <el-col :span="1.5" v-if="setrd % 2 == 1">
+       <!-- <el-col :span="1.5" v-if="setrd % 2 == 1">
           <el-button type="primary" v-hasPermi="['bmProject:project:add']" @click="submitForm">暂存</el-button>
-        </el-col>
+        </el-col> -->
         <el-col :span="1.5">
           <el-button type="primary" @click="goBtn">取消</el-button>
         </el-col>
@@ -1143,6 +1144,7 @@
               // 修改
               setOrderinfo(JSON.stringify(data)).then((res) => {
                 this.msgSuccess("修改成功");
+                this.upBtn()
                 this.$router.push({
                   path: "/management/info/index",
                 });
@@ -1150,7 +1152,8 @@
             } else {
               // 新增
               addOrderinfo(JSON.stringify(data)).then((res) => {
-                this.msgSuccess("暂存成功");
+                this.msgSuccess("操作成功");
+                this.upBtn()
                 this.$router.push({
                   path: "/management/info/index",
                 });

+ 20 - 0
ruoyi-ui/src/views/area/index.vue

@@ -135,6 +135,9 @@
           >
           </el-date-picker>
         </el-form-item>
+        <el-form-item label="部门" prop="sysDeptId">
+          <el-cascader :options="typeOptionstwo" :props="{value: 'id'}"   v-model="form.sysDeptId" @change="changeBtn1" :show-all-levels="false"></el-cascader>
+        </el-form-item>
         <el-form-item  label="新签约亿元以上项目数(个数)" prop="projectMillionNum">
           <el-input v-model="form.projectMillionNum" placeholder="请输入新签约亿元以上项目数" />
         </el-form-item>
@@ -275,6 +278,22 @@ export default {
 
   },
   methods: {
+    changeBtn(e){
+      if(e.length == 1){
+        this.queryParams.sysDeptId  = e.join(',')
+      }else{
+         this.queryParams.sysDeptId = e[e.length-1]
+      }
+
+    },
+    changeBtn1(e){
+      if(e.length == 1){
+        this.form.sysDeptId  = e.join(',')
+      }else{
+        this.form.sysDeptId = e[e.length-1]
+      }
+
+    },
     /** 查询两区及乡镇单位部门招商计划列表 */
     getList() {
       this.loading = true;
@@ -359,6 +378,7 @@ export default {
       const id = row.id || this.ids
       getArea(id).then(response => {
         this.form = response.data;
+        this.form.sysDeptId = this.form.sysDeptId - 0
         this.open = true;
         this.title = "修改两区及乡镇单位部门招商计划";
       });

+ 1 - 1
ruoyi-ui/src/views/deptplan/index.vue

@@ -297,7 +297,7 @@ export default {
       const id = row.id || this.ids
       getPlan(id).then(response => {
         this.form = response.data;
-
+        this.form.sysDeptId = this.form.sysDeptId - 0
         // this.form.sysDeptId = response.data.sysDeptId.split(',')
         // console.log( response.data.sysDeptId.length)
         this.open = true;

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

@@ -13,7 +13,7 @@
               <el-table-column label="时间" align="center" prop="createTime" />
               <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
                 <template slot-scope="scope">
-                  <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:query']" @click="dec_btn(scope.row)">查看详情</el-button>
+                  <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:query']" @click="dec_btn(scope.row)">查看和编辑</el-button>
                   <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:pass']"
                     @click="infoBtn(scope.row)">确认审核</el-button>
                   <el-button size="mini" type="text" style="background: #1C84C6;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:reject']" @click="bh_brn(scope.row)">驳回</el-button>

+ 5 - 1
ruoyi-ui/src/views/management/info/index.vue

@@ -64,7 +64,7 @@
       <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:query']"
-            @click="chei(scope.row)">查看详情</el-button>
+            @click="chei(scope.row)">查看和编辑</el-button>
             <el-button size="mini" type="text" style="background: #00B034;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:pass']" v-if="scope.row.projectStatus%2==0"
               @click="getPass(scope.row)">审核</el-button>
           <el-button size="mini" type="text" style="background: #3FBCEF;color: #FFF;padding: 7px;" v-hasPermi="['bmProject:project:examine']"
@@ -418,6 +418,8 @@
               this.msgSuccess("添加成功");
               this.flags = false;
               this.getList();
+              this.chei(res.data)
+
             })
           }
         });
@@ -527,6 +529,8 @@
                 this.msgSuccess("新增成功");
                 this.open = false;
                 this.getList();
+                console.log(345)
+
               });
             }
           }

+ 9 - 5
ruoyi-ui/src/views/management/nstruction/index.vue

@@ -6,13 +6,14 @@
           type="primary"
           @click="handleAudit"
           v-hasPermi="['projectConstruction:construction:add']"
+          v-if="tab == 0 || tab == 3"
           >提交</el-button>
-        <el-button
+        <!-- <el-button
           type="primary"
           @click="submitCtion"
           v-hasPermi="['projectConstruction:construction:add']"
           v-if="tab == 0 || tab == 3"
-          >暂存</el-button>
+          >保存</el-button> -->
       </el-col>
       <el-col :span="1.5">
         <el-button type="primary" @click="handleUpdatex">取消</el-button>
@@ -1396,7 +1397,8 @@ export default {
                 this.msgSuccess("修改成功");
                 this.open = false;
                 this.getListtoi();
-                this.$router.go(-1);
+                this.handleAudit()
+                // this.$router.go(-1);
               });
             } else if (this.modify == 0) {
               if(this.queryParamstwr.isConstruction == "Y"){
@@ -1430,7 +1432,8 @@ export default {
                 this.msgSuccess("新增成功");
                 this.open = false;
                 this.getListtoi();
-                this.$router.go(-1);
+                this.handleAudit()
+                // this.$router.go(-1);
               });
             }
           }
@@ -1468,6 +1471,7 @@ export default {
               addConfigsix(this.queryParamstheyr).then((response) => {
                 this.msgSuccess("新增成功");
                 this.opentwo = false;
+                this.handleAudit()
                 // this.getListther();
                 this.$router.go(-1);
               });
@@ -1597,7 +1601,7 @@ export default {
     //确认审核
     handleAudit() {
       console.log(23)
-      this.msgSuccess("请点击暂存按钮,返回上级页面进行提交");
+      // this.msgSuccess("请点击暂存按钮,返回上级页面进行提交");
       this.queryFormhye.code = 1;
       this.queryFormhye.bmProjectId = this.bmProjectId;
       addConfigbout(this.queryFormhye).then((response) => {

+ 33 - 20
ruoyi-ui/src/views/management/roduction/index.vue

@@ -4,16 +4,16 @@
       <el-col :span="1.5" v-if="setrd % 2 == 1">
         <el-button
           type="primary"
-          @click="submitBtn"
+          @click="submitForm"
           v-hasPermi="['bmProject:project:examine']"
           >提交</el-button
         >
-        <el-button
+        <!-- <el-button
           type="primary"
           @click="submitForm"
           v-hasPermi="['bmProject:project:add']"
-          >存</el-button
-        >
+          >存</el-button
+        > -->
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -360,23 +360,32 @@ export default {
     //提交
     submitBtn() {
       var that = this;
-      this.$confirm("是否确认提交", "提醒", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(function () {
-           that.msgSuccess("请点击暂存按钮,返回上级页面进行提交");
-          return setExamine({
+      setExamine({
             code: 1,
             bmProjectId: that.bmProjectId,
-          });
-        })
-        .then(() => {
+          }).then((res) => {
+        if(res.code == 200){
           this.$router.go(-1);
-          // this.getList();
           this.msgSuccess("提交成功");
-        });
+        }
+      })
+      // this.$confirm("是否确认提交", "提醒", {
+      //   confirmButtonText: "确定",
+      //   cancelButtonText: "取消",
+      //   type: "warning",
+      // })
+      //   .then(function () {
+      //      // that.msgSuccess("请点击暂存按钮,返回上级页面进行提交");
+      //     return setExamine({
+      //       code: 1,
+      //       bmProjectId: that.bmProjectId,
+      //     });
+      //   })
+      //   .then(() => {
+      //     this.$router.go(-1);
+      //     // this.getList();
+      //     this.msgSuccess("提交成功");
+      //   });
     },
 
     /** 暂存按钮 */
@@ -425,12 +434,14 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             updateProduct(this.form).then((response) => {
-              this.msgSuccess("暂存成功");
+              this.msgSuccess("操作成功");
+              this.submitBtn()
               this.$router.go(-1)
             });
           } else {
             addProduct(this.form).then((response) => {
-              this.msgSuccess("暂存成功");
+              this.msgSuccess("操作成功");
+              this.submitBtn()
               this.$router.go(-1)
             });
           }
@@ -441,7 +452,9 @@ export default {
     submitUpload() {
       this.$refs.upload.submit();
     },
-
+    submitCtionte(){
+      this.submitForm()
+    },
     handleOnsuccess(response, file, fileList) {
       this.productPhotoList = fileList;
     },

+ 15 - 0
ruoyi-ui/src/views/management/row/index.vue

@@ -364,6 +364,21 @@ export default {
  .text-color {
     color: white;
   }
+  .el-input.is-disabled .el-input__inner{
+    color: #666 !important;
+  }
+  input::-webkit-input-placeholder{
+    color:#666 !important;
+  }
+  input::-moz-placeholder{
+    color:#666 !important;
+  }
+  input:-moz-placeholder{
+    color:#666  !important;
+  }
+  input:-ms-input-placeholder{
+    color:#666 !important;
+  }
 
   /*步骤条样式修改------------start----------*/
   /*is-finish 圆圈颜色*/

+ 438 - 0
ruoyi-ui/src/views/phone/phons/index.vue

@@ -0,0 +1,438 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--部门数据-->
+      <el-col :span="4" :xs="24" style="margin-top: 40px;">
+        <!-- <div class="head-container">
+          <el-input
+            v-model="deptName"
+            placeholder="请输入部门名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="deptOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            @node-click="handleNodeClick"
+          />
+        </div> -->
+
+        </el-tab-pane>
+      </el-col>
+      <el-col :span="24" :xs="24">
+         <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="选择用户">
+               <!-- <treeselect
+                    v-model="form.deptName"
+                    :options="deptOptions"
+                    :normalizer="normalizerty"
+                    :flat="true"
+                    @select="djieskletwo"
+                    :maxHeight="350"
+                    placeholder="点击选择组"
+                  /> -->
+                  <el-select v-model="deptName" :multiple ="true" clearable placeholder="请选择用户" @visible-change = "visiblechange" @change="changetr" @blur="blurkde" filterable>
+                      <el-option
+                        v-for="item in userList"
+                        :key="item.userId"
+                        :label="item.nickName"
+                        :value="item.userId">
+                      </el-option>
+                    </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+           <el-row>
+             <el-col :span="24">
+               <el-form-item label="编辑内容" class="jeiouq">
+                 <el-input v-model="form.content" type="textarea" placeholder="请输入内容" ></el-input>
+               </el-form-item>
+             </el-col>
+           </el-row>
+         </el-form>
+      </el-col>
+      <el-col :span="24" :xs="24">
+        <div  class="dialog-footer" style="text-align: center; margin-top: 30px;">
+          <el-button type="primary" @click="submitForm">发 送 </el-button>
+        </div>
+      </el-col>
+      <!--用户数据-->
+        </el-row>
+  </div>
+</template>
+
+<script>
+import { listUser, getUser, delUser, addUser, updateUser, exportUser, resetUserPwd, changeUserStatus, importTemplate,addPhoen } from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import { treeselect } from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "User",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      userList: null,
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      // 是否显示弹出层
+      open: false,
+      // 部门名称
+      deptName: undefined,
+      // 默认密码
+      initPassword: undefined,
+      // 日期范围
+      dateRange: [],
+      // 状态数据字典
+      statusOptions: [],
+      // 性别状态字典
+      sexOptions: [],
+      // 岗位选项
+      postOptions: [],
+      // 角色选项
+      roleOptions: [],
+      // 表单参数
+      form: {},
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData"
+      },
+      // 查询参数
+      queryParams: {
+        userName: undefined,
+        phonenumber: undefined,
+        status: undefined,
+        deptId: undefined
+      },
+      // 列信息
+      columns: [
+        { key: 0, label: `用户编号`, visible: true },
+        { key: 1, label: `用户名称`, visible: true },
+        { key: 2, label: `用户昵称`, visible: true },
+        { key: 3, label: `部门`, visible: true },
+        { key: 4, label: `手机号码`, visible: true },
+        { key: 5, label: `状态`, visible: true },
+        { key: 6, label: `创建时间`, visible: true }
+      ],
+      // 表单校验
+      rules: {
+        content: [
+          { required: true, message: "内容不能为空", trigger: "blur" }
+        ],
+
+      }
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("sys_user_sex").then(response => {
+      this.sexOptions = response.data;
+    });
+    this.getConfigKey("sys.user.initPassword").then(response => {
+      this.initPassword = response.msg;
+    });
+  },
+  methods: {
+    /** 查询用户列表 */
+    getList() {
+      this.loading = true;
+      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+          this.userList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        }
+      );
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.id;
+      this.getList();
+    },
+    // 下拉框出现/隐藏时触发
+    visiblechange(val){
+     console.log(val)
+    },
+    changetr(val){
+      let name = []
+      let huej = []
+      name = val
+      // for(var i = 0 ; i <this.userList.length; i++ ){
+      //   if(this.userList[i].userId == name[i]){
+
+      //   }
+      // }
+      var flag;
+      for (var i in name) {
+        flag = true;
+        for (var j in this.userList) {
+          if (this.userList[j].userId == name[i]) {
+            // flag = false;
+            huej.push(this.userList[j])
+            // break;
+          }
+        }
+        // if (flag) {
+        //   this.userList.push(name[i]);
+        // }
+      }
+      this.form.userList = huej
+      if(this.form.userList.length == 0){
+        this.form.userList == undefined
+      }
+      // this.userList
+      console.log(val)
+      console.log(huej)
+    },
+    blurkde(val){
+     // console.log(val)
+    },
+    // 用户状态修改
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "启用" : "停用";
+      this.$confirm('确认要"' + text + '""' + row.userName + '"用户吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return changeUserStatus(row.userId, row.status);
+        }).then(() => {
+          this.msgSuccess(text + "成功");
+        }).catch(function() {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: []
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.page = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.getTreeselect();
+      getUser().then(response => {
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.open = true;
+        this.title = "添加用户";
+        this.form.password = this.initPassword;
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.getTreeselect();
+      const userId = row.userId || this.ids;
+      getUser(userId).then(response => {
+        this.form = response.data;
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.form.postIds = response.postIds;
+        this.form.roleIds = response.roleIds;
+        this.open = true;
+        this.title = "修改用户";
+        this.form.password = "";
+      });
+    },
+    /** 重置密码按钮操作 */
+    handleResetPwd(row) {
+      this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消"
+      }).then(({ value }) => {
+          resetUserPwd(row.userId, value).then(response => {
+            this.msgSuccess("修改成功,新密码是:" + value);
+          });
+        }).catch(() => {});
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      if(this.form.userList == undefined){
+        this.msgSuccess("请选择用户");
+        return  false
+      }
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          // if (this.form.userId != undefined) {
+          //   updateUser(this.form).then(response => {
+          //     this.msgSuccess("修改成功");
+          //     this.open = false;
+          //     this.getList();
+          //   });
+          // } else {
+            addPhoen(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          // }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$confirm('是否确认删除用户编号为"' + userIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delUser(userIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有用户数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportUser(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+  }
+};
+</script>
+<style lang="scss">
+  .jeiouq{
+    .el-textarea__inner{
+      height: 200px ;
+    }
+  }
+  .el-tag.el-tag--info{
+    color: #333;
+  }
+  .el-select{
+    width: 100%;
+  }
+</style>

+ 44 - 46
ruoyi-ui/src/views/statistical/clue/index.vue

@@ -10,7 +10,7 @@
               <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
                 <template slot-scope="scope">
                   <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:query']"
-                    @click="dec_btn(scope.row)">查看详情</el-button>
+                    @click="dec_btn(scope.row)">查看和编辑</el-button>
                 <!--  <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
                     @click="infoBtn(scope.row)" v-if="scope.row.projectStatus%2==1">提交</el-button>
                   <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
@@ -31,52 +31,50 @@
         </div>
       </el-col>
       <el-col :span="6" style="padding: 24px 12px 24px 0 ;">
-        <div class="in_right">
-          <div class="rig_title">
-            "两区"及乡镇
+       <div class="in_right">
+         <div class="rig_title">
+           "两区"及乡镇
+         </div>
+         <div class="rig_tab_top">
+           <div class="rig_tab_item">
+             单位名称
+           </div>
+           <div class="rig_tab_item">
+             目标任务
+           </div>
+           <div class="rig_tab_item">
+             已完成任务
+           </div>
+         </div>
+         <div class="rig_cont">
+          <div class="rig_items" v-for="(item,index) in unitList" :key="index">
+            <span>{{item.deptName}}</span>
+            <span>{{item.plan != '0.0000'?item.plan:0}}个</span>
+            <span>{{item.successMission?item.successMission:0}}个</span>
           </div>
-          <div class="rig_tab_top">
-            <div class="rig_tab_item">
-              单位名称
-            </div>
-            <div class="rig_tab_item">
-              目标任务
-            </div>
-            <div class="rig_tab_item">
-              已完成任务
-            </div>
-          </div>
-          <div class="rig_cont">
-            <div class="rig_items" v-for="(item,index) in unitList" :key="index">
-              <span>{{item.deptName}}</span>
-              <span>{{item.plan != '0.0000'?item.plan:0}}个</span>
-              <span>{{item.successMission?item.successMission:0}}个</span>
-            </div>
-          </div>
-        </div>
-        <div class="rig_tab_top" style="background-color: #1C84C6;">
-          <div class="rig_title">
-            市直榜单
-          </div>
-          <div class="rig_tab_top">
-            <div class="rig_tab_item">
-              单位名称
-            </div>
-            <div class="rig_tab_item">
-              新签约金额目标
-            </div>
-            <div class="rig_tab_item">
-              在谈线索
-            </div>
-          </div>
-          <div class="rig_cont">
-            <div class="rig_items" v-for="(item,index) in szList" :key="index">
-              <span>{{item.deptName}}</span>
-              <span>{{item.targetArrivalAmount?item.targetArrivalAmount:0}}万元</span>
-              <span>{{item.successMission?item.successMission:0}}个</span>
-            </div>
-          </div>
-        </div>
+         </div>
+         <div class="rig_title">
+           市直榜单
+         </div>
+         <div class="rig_tab_top" style="background-color: #1C84C6;">
+           <div class="rig_tab_item">
+             单位名称
+           </div>
+           <div class="rig_tab_item">
+             新签约金额目标
+           </div>
+           <div class="rig_tab_item">
+             在谈线索
+           </div>
+         </div>
+         <div class="rig_cont">
+           <div class="rig_items" v-for="(item,index) in szList" :key="index">
+             <span>{{item.deptName}}</span>
+             <span>{{item.targetArrivalAmount?item.targetArrivalAmount:0}}万元</span>
+             <span>{{item.successMission?item.successMission:0}}个</span>
+           </div>
+         </div>
+       </div>
       </el-col>
     </el-row>
   </div>

+ 238 - 283
ruoyi-ui/src/views/statistical/putProduction/index.vue

@@ -1,283 +1,238 @@
-<template>
-  <div class="in_box">
-    <el-row>
-      <el-col :span="18">
-        <div class="in_left">
-          <div class="toReviewed">
-            <el-table v-loading="loading" style="max-height: 695px;overflow-y: auto;" :data="infoList">
-              <el-table-column label="项目名称" align="center" prop="name" />
-              <el-table-column label="时间" align="center" prop="createTime" />
-              <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
-                <template slot-scope="scope">
-                  <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:query']"
-                    @click="dec_btn(scope.row)">查看详情</el-button>
-                 <!-- <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
-                    @click="infoBtn(scope.row)" v-if="scope.row.projectStatus%2==1">提交</el-button>
-                  <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
-                    @click="bh_brn(scope.row)">销号</el-button> -->
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-          <div class="exl_box">
-            <div class="exl_title">
-              <span></span>
-              <el-date-picker v-model="lb_value" style="width: 100px;" type="year" value-format="yyyy" @change="picher_fn"
-                placeholder="选择年">
-              </el-date-picker>
-            </div>
-            <echarts :ehaersList="ehaersList" :echartData="echartData" v-if="flags"></echarts>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="6" style="padding: 24px 12px 24px 0 ;">
-        <div class="in_right">
-          <div class="rig_title">
-            "两区"及乡镇
-          </div>
-          <div class="rig_tab_top">
-            <div class="rig_tab_item">
-              单位名称
-            </div>
-            <div class="rig_tab_item">
-              入规目标
-            </div>
-            <div class="rig_tab_item">
-              已完成任务
-            </div>
-          </div>
-          <div class="rig_cont">
-            <div class="rig_items" v-for="(item,index) in unitList" :key="index">
-              <span>{{item.deptName}}</span>
-              <span>{{item.targetSigningNum == '0.0000'?item.targetSigningNum:0}}个</span>
-              <span>{{item.successMission?item.successMission:0}}个</span>
-            </div>
-          </div>
-        </div>
-        <div class="rig_tab_top" style="background-color: #1C84C6;">
-          <div class="rig_title">
-          市直榜单
-          </div>
-          <div class="rig_tab_top">
-            <div class="rig_tab_item">
-              单位名称
-            </div>
-            <div class="rig_tab_item">
-              实际到资
-            </div>
-            <div class="rig_tab_item">
-              投产项目
-            </div>
-          </div>
-          <div class="rig_cont">
-            <div class="rig_items" v-for="(item,index) in cityList" :key="index">
-              <span>{{item.deptName}}</span>
-              <span>{{item.payForMoney != '0.0000'?item.payForMoney:0}}万元</span>
-              <span>{{item.successMission?item.successMission:0}}个</span>
-            </div>
-          </div>
-        </div>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-<script>
-  import echarts from '@/components/Echarts/index.vue'
-  import {
-    getStatisticst,
-    delProject,
-    toBeReviewedList,
-    setExamine,
-    setReject,
-    setInvestmentList,
-    getProjectInvestmentEharts, setInvestmentCityList
-  } from '@/api/statistical'
-  export default {
-    data() {
-      return {
-        infoList: [],
-        zjList: [],
-        ehaersList: {},
-        echartData: {
-          name: '投产项目个数柱状图',
-          numName: '投产项目个数',
-          numNameArr: ['投产项目个数']
-        },
-        loading: false,
-        unitList: [],
-        cityList: [],
-        flags: false,
-        lb_value: '2021', // 柱状图类别
-      }
-    },
-    components: {
-      echarts
-    },
-    mounted() {
-      this.getList()
-      this.bd_btn()
-      this.eharts_fn()
-      this.city_btn()
-    },
-    methods: {
-      picher_fn() {
-        this.eharts_fn()
-      },
-      eharts_fn(val) {
-        getProjectInvestmentEharts({
-          year: this.lb_value
-        }).then(res => {
-          this.ehaersList = res.data
-          this.flags = true
-        })
-      },
-      bd_btn() {
-        setInvestmentList().then(res => {
-          this.unitList = res.rows
-        })
-      },
-      city_btn() {
-        setInvestmentCityList().then(res => {
-          this.cityList = res.rows
-        })
-      },
-      dec_btn(row) {
-        this.$router.push({
-          path: '/management/row/index',
-          query: {
-            setid: row.id,
-            setrd: row.projectStatus,
-            tabIndex: 4,
-          },
-        })
-      },
-      bh_brn(scope) {
-        const _this =  this
-        this.$confirm('是否确认销号', "提醒", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          delProject(scope.id).then(() => {
-            _this.getList();
-            _this.msgSuccess("提交成功");
-          })
-        })
-      },
-      infoBtn(scope) {
-        const _this = this
-        this.$confirm('是否确认提交申请', "提醒", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          setExamine({
-            code: 1,
-            bmProjectId: scope.id
-          });
-        }).then(() => {
-          _this.getList();
-          _this.msgSuccess("提交成功");
-        })
-      },
-      getList() {
-        getStatisticst('8,9').then(res => {
-          this.infoList = res.rows
-        })
-      },
-    }
-  }
-</script>
-<style lang="scss" scoped>
-  .rig_tab_top {
-    display: flex;
-    background: #6DCEF6;
-    line-height: 36px;
-    color: #fff;
-
-    .rig_tab_item {
-      font-size: 14px;
-      flex: 1;
-      text-align: center;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-    }
-  }
-
-  .rig_cont {
-    border: 1px solid #CDCDCD;
-    box-sizing: border-box;
-    margin-bottom: 31px;
-    max-height: 270px;
-    overflow-y: auto;
-    scrollbar-width: none;
-    /* firefox */
-    -ms-overflow-style: none;
-
-    /* IE 10+ */
-    &::-webkit-scrollbar {
-      display: none;
-      /* Chrome Safari */
-    }
-
-    .rig_items {
-      line-height: 36px;
-      color: #343434;
-      font-size: 12px;
-      display: flex;
-
-      span {
-        flex: 1;
-        text-align: center;
-      }
-    }
-  }
-
-  .in_right {
-    padding: 15px 15px 0;
-    border: 1px solid #DADADA;
-    box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
-
-    .rig_title {
-      color: #1C84C6;
-      font-size: 18px;
-      line-height: 36px;
-      margin-bottom: 15px;
-    }
-  }
-
-  .in_left {
-    padding: 24px 20px 40px;
-
-    .toReviewed {
-      padding: 19px 16px;
-      border: 1px solid #DADADA;
-      box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
-      margin-bottom: 38px;
-
-      .rev_title {
-        margin-bottom: 23px;
-      }
-    }
-
-    .exl_box {
-      border: 1px solid #DADADA;
-      box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
-      padding: 20px;
-      box-sizing: border-box;
-
-      .exl_title {
-        display: flex;
-        justify-content: space-between;
-
-        span {
-          color: #1C84C6;
-          font-size: 18px;
-          line-height: 36px;
-        }
-
-      }
-    }
-  }
-</style>
+<template>
+  <div class="in_box">
+    <el-row>
+      <el-col :span="18">
+        <div class="in_left">
+          <div class="toReviewed">
+            <el-table v-loading="loading" style="max-height: 695px;overflow-y: auto;" :data="infoList">
+              <el-table-column label="项目名称" align="center" prop="name" />
+              <el-table-column label="时间" align="center" prop="createTime" />
+              <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
+                <template slot-scope="scope">
+                  <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:query']"
+                    @click="dec_btn(scope.row)">查看详情</el-button>
+                 <!-- <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
+                    @click="infoBtn(scope.row)" v-if="scope.row.projectStatus%2==1">提交</el-button>
+                  <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
+                    @click="bh_brn(scope.row)">销号</el-button> -->
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <div class="exl_box">
+            <div class="exl_title">
+              <span></span>
+              <el-date-picker v-model="lb_value" style="width: 100px;" type="year" value-format="yyyy" @change="picher_fn"
+                placeholder="选择年">
+              </el-date-picker>
+            </div>
+            <echarts :ehaersList="ehaersList" :echartData="echartData" v-if="flags"></echarts>
+          </div>
+        </div>
+      </el-col>
+      <el-col :span="6" style="padding: 24px 12px 24px 0 ;">
+        <div class="in_right">
          <div class="rig_title">
            "两区"及乡镇
          </div>
          <div class="rig_tab_top">
            <div class="rig_tab_item">
              单位名称
            </div>
            <div class="rig_tab_item">
              入规目标
            </div>
            <div class="rig_tab_item">
              已完成任务
            </div>
          </div>
          <div class="rig_cont">
            <div class="rig_items" v-for="(item,index) in unitList" :key="index">
              <span>{{item.deptName}}</span>
              <span>{{item.targetSigningNum != '0.0000'?item.targetSigningNum:0}}个</span>
              <span>{{item.successMission?item.successMission:0}}个</span>
            </div>
          </div>
          <div class="rig_title">
            市直榜单
          </div>
          <div class="rig_tab_top" style="background-color: #1C84C6;">
            <div class="rig_tab_item">
              单位名称
            </div>
            <div class="rig_tab_item">
              实际到资
            </div>
            <div class="rig_tab_item">
              投产项目
            </div>
          </div>
          <div class="rig_cont">
            <div class="rig_items" v-for="(item,index) in cityList" :key="index">
              <span>{{item.deptName}}</span>
              <span>{{item.payForMoney != '0.0000'?item.payForMoney:0}}万元</span>
              <span>{{item.successMission?item.successMission:0}}个</span>
            </div>
          </div>
        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+  import echarts from '@/components/Echarts/index.vue'
+  import {
+    getStatisticst,
+    delProject,
+    toBeReviewedList,
+    setExamine,
+    setReject,
+    setInvestmentList,
+    getProjectInvestmentEharts, setInvestmentCityList
+  } from '@/api/statistical'
+  export default {
+    data() {
+      return {
+        infoList: [],
+        zjList: [],
+        ehaersList: {},
+        echartData: {
+          name: '投产项目个数柱状图',
+          numName: '投产项目个数',
+          numNameArr: ['投产项目个数']
+        },
+        loading: false,
+        unitList: [],
+        cityList: [],
+        flags: false,
+        lb_value: '2021', // 柱状图类别
+      }
+    },
+    components: {
+      echarts
+    },
+    mounted() {
+      this.getList()
+      this.bd_btn()
+      this.eharts_fn()
+      this.city_btn()
+    },
+    methods: {
+      picher_fn() {
+        this.eharts_fn()
+      },
+      eharts_fn(val) {
+        getProjectInvestmentEharts({
+          year: this.lb_value
+        }).then(res => {
+          this.ehaersList = res.data
+          this.flags = true
+        })
+      },
+      bd_btn() {
+        setInvestmentList().then(res => {
+          this.unitList = res.rows
+        })
+      },
+      city_btn() {
+        setInvestmentCityList().then(res => {
+          this.cityList = res.rows
+        })
+      },
+      dec_btn(row) {
+        this.$router.push({
+          path: '/management/row/index',
+          query: {
+            setid: row.id,
+            setrd: row.projectStatus,
+            tabIndex: 4,
+          },
+        })
+      },
+      bh_brn(scope) {
+        const _this =  this
+        this.$confirm('是否确认销号', "提醒", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          delProject(scope.id).then(() => {
+            _this.getList();
+            _this.msgSuccess("提交成功");
+          })
+        })
+      },
+      infoBtn(scope) {
+        const _this = this
+        this.$confirm('是否确认提交申请', "提醒", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          setExamine({
+            code: 1,
+            bmProjectId: scope.id
+          });
+        }).then(() => {
+          _this.getList();
+          _this.msgSuccess("提交成功");
+        })
+      },
+      getList() {
+        getStatisticst('8,9').then(res => {
+          this.infoList = res.rows
+        })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .rig_tab_top {
+    display: flex;
+    background: #6DCEF6;
+    line-height: 36px;
+    color: #fff;
+
+    .rig_tab_item {
+      font-size: 14px;
+      flex: 1;
+      text-align: center;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+  }
+
+  .rig_cont {
+    border: 1px solid #CDCDCD;
+    box-sizing: border-box;
+    margin-bottom: 31px;
+    max-height: 270px;
+    overflow-y: auto;
+    scrollbar-width: none;
+    /* firefox */
+    -ms-overflow-style: none;
+
+    /* IE 10+ */
+    &::-webkit-scrollbar {
+      display: none;
+      /* Chrome Safari */
+    }
+
+    .rig_items {
+      line-height: 36px;
+      color: #343434;
+      font-size: 12px;
+      display: flex;
+
+      span {
+        flex: 1;
+        text-align: center;
+      }
+    }
+  }
+
+  .in_right {
+    padding: 15px 15px 0;
+    border: 1px solid #DADADA;
+    box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
+
+    .rig_title {
+      color: #1C84C6;
+      font-size: 18px;
+      line-height: 36px;
+      margin-bottom: 15px;
+    }
+  }
+
+  .in_left {
+    padding: 24px 20px 40px;
+
+    .toReviewed {
+      padding: 19px 16px;
+      border: 1px solid #DADADA;
+      box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
+      margin-bottom: 38px;
+
+      .rev_title {
+        margin-bottom: 23px;
+      }
+    }
+
+    .exl_box {
+      border: 1px solid #DADADA;
+      box-shadow: 0px 7px 9px 2px rgba(201, 201, 201, 0.36);
+      padding: 20px;
+      box-sizing: border-box;
+
+      .exl_title {
+        display: flex;
+        justify-content: space-between;
+
+        span {
+          color: #1C84C6;
+          font-size: 18px;
+          line-height: 36px;
+        }
+
+      }
+    }
+  }
+</style>

+ 1 - 1
ruoyi-ui/src/views/statistical/sign/index.vue

@@ -10,7 +10,7 @@
               <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
                 <template slot-scope="scope">
                   <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:query']"
-                    @click="dec_btn(scope.row)">查看详情</el-button>
+                    @click="dec_btn(scope.row)">查看和编辑</el-button>
                  <!-- <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
                     @click="infoBtn(scope.row)">{{scope.row.projectStatus%2==1?'提交':'驳回'}}</el-button>
                   <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"

+ 56 - 2
ruoyi-ui/src/views/statistical/underConstruction/index.vue

@@ -10,7 +10,7 @@
               <el-table-column label="操作" width="280" align="center" class-name="small-padding fixed-width">
                 <template slot-scope="scope">
                   <el-button size="mini" type="text" style="background: #F5A40C;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:query']"
-                    @click="dec_btn(scope.row)">查看详情</el-button>
+                    @click="dec_btn(scope.row)">查看和编辑</el-button>
                   <!-- <el-button size="mini" type="text" style="background: #0669B2;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
                     @click="infoBtn(scope.row)" v-if="scope.row.projectStatus%2==1">提交</el-button>
                   <el-button size="mini" type="text" style="background: #DE1939;color: #FFF;padding: 7px;" v-hasPermi="['projectInfo:info:edit']"
@@ -31,7 +31,10 @@
         </div>
       </el-col>
       <el-col :span="6" style="padding: 24px 12px 24px 0 ;">
-        <div class="in_right">
+
+
+
+ <!--       <div class="in_right">
           <div class="rig_title">
            两区及乡镇
           </div>
@@ -76,7 +79,58 @@
               <span>{{item.payForMoney?item.payForMoney:0}}万</span>
             </div>
           </div>
+        </div> -->
+
+
+
+
+        <div class="in_right">
+          <div class="rig_title">
+            "两区"及乡镇
+          </div>
+          <div class="rig_tab_top">
+            <div class="rig_tab_item">
+              单位名称
+            </div>
+            <div class="rig_tab_item">
+              目标任务
+            </div>
+            <div class="rig_tab_item">
+              在建个数
+            </div>
+          </div>
+          <div class="rig_cont">
+            <div class="rig_items" v-for="(item,index) in areaList" :key="index">
+              <span>{{item.deptName}}</span>
+              <span>{{item.successMission?item.successMission:0}}个</span>
+              <span>{{item.targetSigningNum?item.targetSigningNum:0}}个</span>
+            </div>
+          </div>
+          <div class="rig_title">
+            市直单位
+          </div>
+          <div class="rig_tab_top" style="background-color: #1C84C6;">
+            <div class="rig_tab_item">
+              单位名称
+            </div>
+            <div class="rig_tab_item">
+              目标到资
+            </div>
+            <div class="rig_tab_item">
+              实际到资
+            </div>
+          </div>
+          <div class="rig_cont">
+            <div class="rig_items" v-for="(item,index) in unitList" :key="index">
+              <span>{{item.deptName}}</span>
+              <span>{{item.targetContractAmount?item.targetContractAmount:0}}万</span>
+              <span>{{item.payForMoney?item.payForMoney:0}}万</span>
+            </div>
+          </div>
         </div>
+
+
+
       </el-col>
     </el-row>
   </div>

+ 675 - 0
ruoyi-ui/src/views/system/phone/index.vue

@@ -0,0 +1,675 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--部门数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="deptName"
+            placeholder="请输入部门名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="deptOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            @node-click="handleNodeClick"
+          />
+        </div>
+      </el-col>
+      <!--用户数据-->
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="用户名称" prop="userName">
+            <el-input
+              v-model="queryParams.userName"
+              placeholder="请输入用户名称"
+              clearable
+              size="small"
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="手机号码" prop="phonenumber">
+            <el-input
+              v-model="queryParams.phonenumber"
+              placeholder="请输入手机号码"
+              clearable
+              size="small"
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="状态" prop="status">
+            <el-select
+              v-model="queryParams.status"
+              placeholder="用户状态"
+              clearable
+              size="small"
+              style="width: 240px"
+            >
+              <el-option
+                v-for="dict in statusOptions"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="dict.dictValue"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="创建时间">
+            <el-date-picker
+              v-model="dateRange"
+              size="small"
+              style="width: 240px"
+              value-format="yyyy-MM-dd"
+              type="daterange"
+              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:user: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:user: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:user:remove']"
+            >删除</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="info"
+              plain
+              icon="el-icon-upload2"
+              size="mini"
+              @click="handleImport"
+              v-hasPermi="['system:user:import']"
+            >导入</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:user:export']"
+            >导出</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
+        </el-row>
+
+        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="50" align="center" />
+          <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">
+            <template slot-scope="scope">
+              <el-switch
+                v-model="scope.row.status"
+                active-value="0"
+                inactive-value="1"
+                @change="handleStatusChange(scope.row)"
+              ></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createTime) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            align="center"
+            width="160"
+            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:user:edit']"
+              >修改</el-button>
+              <el-button
+                v-if="scope.row.userId !== 1"
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['system:user:remove']"
+              >删除</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-key"
+                @click="handleResetPwd(scope.row)"
+                v-hasPermi="['system:user:resetPwd']"
+              >重置</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
+
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="用户昵称" prop="nickName">
+              <el-input v-model="form.nickName" placeholder="请输入用户昵称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="归属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="手机号码" prop="phonenumber">
+              <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="邮箱" prop="email">
+              <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
+              <el-input v-model="form.userName" placeholder="请输入用户名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
+              <el-input v-model="form.password" placeholder="请输入用户密码" type="password" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="用户性别">
+              <el-select v-model="form.sex" placeholder="请选择">
+                <el-option
+                  v-for="dict in sexOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictLabel"
+                  :value="dict.dictValue"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态">
+              <el-radio-group v-model="form.status">
+                <el-radio
+                  v-for="dict in statusOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue"
+                >{{dict.dictLabel}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="岗位">
+              <el-select v-model="form.postIds" multiple placeholder="请选择">
+                <el-option
+                  v-for="item in postOptions"
+                  :key="item.postId"
+                  :label="item.postName"
+                  :value="item.postId"
+                  :disabled="item.status == 1"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="角色">
+              <el-select v-model="form.roleIds" multiple placeholder="请选择">
+                <el-option
+                  v-for="item in roleOptions"
+                  :key="item.roleId"
+                  :label="item.roleName"
+                  :value="item.roleId"
+                  :disabled="item.status == 1"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="备注">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </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 :close-on-click-modal="false" :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listUser, getUser, delUser, addUser, updateUser, exportUser, resetUserPwd, changeUserStatus, importTemplate } from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import { treeselect } from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "User",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      userList: null,
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      // 是否显示弹出层
+      open: false,
+      // 部门名称
+      deptName: undefined,
+      // 默认密码
+      initPassword: undefined,
+      // 日期范围
+      dateRange: [],
+      // 状态数据字典
+      statusOptions: [],
+      // 性别状态字典
+      sexOptions: [],
+      // 岗位选项
+      postOptions: [],
+      // 角色选项
+      roleOptions: [],
+      // 表单参数
+      form: {},
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/system/user/importData"
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        userName: undefined,
+        phonenumber: undefined,
+        status: undefined,
+        deptId: undefined
+      },
+      // 列信息
+      columns: [
+        { key: 0, label: `用户编号`, visible: true },
+        { key: 1, label: `用户名称`, visible: true },
+        { key: 2, label: `用户昵称`, visible: true },
+        { key: 3, label: `部门`, visible: true },
+        { key: 4, label: `手机号码`, visible: true },
+        { key: 5, label: `状态`, visible: true },
+        { key: 6, label: `创建时间`, visible: true }
+      ],
+      // 表单校验
+      rules: {
+        userName: [
+          { required: true, message: "用户名称不能为空", trigger: "blur" }
+        ],
+        nickName: [
+          { required: true, message: "用户昵称不能为空", trigger: "blur" }
+        ],
+        password: [
+          { required: true, message: "用户密码不能为空", trigger: "blur" }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "'请输入正确的邮箱地址",
+            trigger: ["blur", "change"]
+          }
+        ],
+        phonenumber: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
+        ]
+      }
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    this.getList();
+    this.getTreeselect();
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+    this.getDicts("sys_user_sex").then(response => {
+      this.sexOptions = response.data;
+    });
+    this.getConfigKey("sys.user.initPassword").then(response => {
+      this.initPassword = response.msg;
+    });
+  },
+  methods: {
+    /** 查询用户列表 */
+    getList() {
+      this.loading = true;
+      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+          this.userList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        }
+      );
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.id;
+      this.getList();
+    },
+    // 用户状态修改
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "启用" : "停用";
+      this.$confirm('确认要"' + text + '""' + row.userName + '"用户吗?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return changeUserStatus(row.userId, row.status);
+        }).then(() => {
+          this.msgSuccess(text + "成功");
+        }).catch(function() {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: []
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.page = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.getTreeselect();
+      getUser().then(response => {
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.open = true;
+        this.title = "添加用户";
+        this.form.password = this.initPassword;
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.getTreeselect();
+      const userId = row.userId || this.ids;
+      getUser(userId).then(response => {
+        this.form = response.data;
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.form.postIds = response.postIds;
+        this.form.roleIds = response.roleIds;
+        this.open = true;
+        this.title = "修改用户";
+        this.form.password = "";
+      });
+    },
+    /** 重置密码按钮操作 */
+    handleResetPwd(row) {
+      this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消"
+      }).then(({ value }) => {
+          resetUserPwd(row.userId, value).then(response => {
+            this.msgSuccess("修改成功,新密码是:" + value);
+          });
+        }).catch(() => {});
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.userId != undefined) {
+            updateUser(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$confirm('是否确认删除用户编号为"' + userIds + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delUser(userIds);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有用户数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportUser(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+  }
+};
+</script>

+ 11 - 7
ruoyi-ui/src/views/under/index.vue

@@ -4,19 +4,19 @@
       <el-col :span="1.5" v-if="setrd % 2 == 1">
         <el-button
           type="primary"
-          @click="submitCtion"
+          @click="submitCtionte"
           v-hasPermi="['bmProject:project:examine']"
           >提交</el-button
         >
       </el-col>
-      <el-col :span="1.5" v-if="setrd % 2 == 1">
+     <!-- <el-col :span="1.5" v-if="setrd % 2 == 1">
         <el-button
           type="primary"
           @click="emporary"
           v-hasPermi="['bmProject:project:add']"
           >暂存</el-button
         >
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -1328,7 +1328,8 @@ export default {
               this.msgSuccess("修改成功");
               this.open = false;
               this.getListtwo();
-              this.$router.go(-1);
+              this.submitCtion()
+              // this.$router.go(-1);
             });
           } else {
               // if(this.queryParams.referralList[0].sysDeptId !== ''){
@@ -1343,9 +1344,7 @@ export default {
             addConfigalking(this.queryParams).then((response) => {
               console.log(response);
               this.msgSuccess("新增成功");
-              this.open = false;
-              this.getListtwo();
-              this.$router.go(-1);
+              this.submitCtion()
             });
           }
         }
@@ -1358,6 +1357,8 @@ export default {
       addConfigbout(this.queryFormhye).then((response) => {
         console.log(response);
         this.msgSuccess("提交成功");
+        this.open = false;
+        this.getListtwo();
         this.$router.go(-1);
         // 就可以回到上一页。
         // this.open = false;
@@ -1365,6 +1366,9 @@ export default {
       });
       console.log(this.queryParams);
     },
+    submitCtionte(){
+      this.emporary()
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const configIds = row.id;