Explorar el Código

新增用户,日志筛选

tianyabing hace 2 años
padre
commit
e2cb74efc7

+ 1 - 1
public/config.js

@@ -1,6 +1,6 @@
 var systemConfig = {
     // 天地图tk
-    tdt_tk: 'b57488e37657af2abde80438a911a635',
+    tdt_tk: '51a3c33c0ec351619c33a24461c0ba95',
     // dtbServer 服务地址
     base_url: 'http://121.43.55.7:10091/dtbservice',
     // oauth 服务地址

+ 7 - 0
src/api/data/AuthInfo.js

@@ -28,10 +28,17 @@ const updateUserRole = (params) => {
     return request.postForm(constant.oauthProxy + '/user/updateUserRoles', params);
 }
 
+// 新增用户
+const addUser = (params) => {
+    params['serviceId'] = constant.serviceId;
+    return request.postForm(constant.oauthProxy + '/user/addUser', params);
+}
+
 export default {
     getUserList,
     getRoleList,
     getAuthList,
     updateRoleAuth,
     updateUserRole,
+    addUser,
 }

+ 15 - 4
src/components/dataManage/ImportData.vue

@@ -95,6 +95,18 @@ export default {
           {required: true, message: '字段不能为空', trigger: 'blur'},
           {required: true, message: '字段不能为空', trigger: 'change'},
         ],
+        lonStr: [
+          {required: true, message: '字段不能为空', trigger: 'blur'},
+          {required: true, message: '字段不能为空', trigger: 'change'},
+        ],
+        latStr: [
+          {required: true, message: '字段不能为空', trigger: 'blur'},
+          {required: true, message: '字段不能为空', trigger: 'change'},
+        ],
+        elevation: [
+          {required: true, message: '字段不能为空', trigger: 'blur'},
+          {required: true, message: '字段不能为空', trigger: 'change'},
+        ],
       },
       dataTypes: {
         1: {label: '二维数据', value: 1, importTypes: [1, 2, 3], importId: 1},
@@ -123,14 +135,13 @@ export default {
         {title: 'url地址', fieldName: 'url', newFieldName: 'url', dataType: [4,6], importType: [1,2,3]},
         {title: '纬度', fieldName: 'latStr', newFieldName: '', dataType: [1,2,3,4,6], importType: [1]},
         {title: '经度', fieldName: 'lonStr', newFieldName: '', dataType: [1,2,3,4,6], importType: [1]},
-        {title: '高程', fieldName: 'height', newFieldName: '', dataType: [2,4], importType: [1]},
+        {title: '高程', fieldName: 'elevation', newFieldName: '', dataType: [2,4], importType: [1]},
         {title: '地名地址库', fieldName: 'address', newFieldName: 'address', dataType: [1,2,3,4,6], importType: [1,2,3]},
         {title: '地名地址库ID', fieldName: 'addId', newFieldName: 'addId', dataType: [1,2,3,4,6], importType: [1,2,3]},
         {title: '第三方id', fieldName: 'thirdId', newFieldName: 'thirdId', dataType: [1,2,3,4,6], importType: [1,2,3]},
-        {title: '海拔', fieldName: 'elevation', newFieldName: '', dataType: [4], importType: [1,2,3]},
         {title: '是否移动', fieldName: 'isMove', newFieldName: '', dataType: [4], importType: [1,2,3]},
       ],
-      category: []
+      category: [],
     }
   },
   props: {},
@@ -225,7 +236,7 @@ export default {
           delete params.importType;
           params['userName'] = app.$store.state.userInfo.username;
           params['file'] = app.importForm.file;
-          params['menuNameOne'] = '二维数据'
+          params['menuNameOne'] = app.dataTypes[app.importForm.dataType].label;
           params['importType'] = app.currDataType.importId;
           app.$util.loading.handleLoading(true);
           api.importData(params, app.importForm.importType).then(res => {

+ 1 - 0
src/components/dataManage/dataDetail/ModelDataDetail.vue

@@ -172,6 +172,7 @@ export default {
     handleMapShow(flag) {
       if (flag) {
         if (this.formData.url && this.formData.url !== '') {
+          this.formData.modelUrl = this.formData.url+'?servertype='+this.formData.title+'&token='+this.$store.state.token;
           this.isMapShow = true
         } else {
           this.$message({message: '请输入模型地址', type: 'warning'})

+ 6 - 1
src/components/dataPublish/PublishDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="PublishDetail">
+  <div id="PublishDetail" v-loading="loading">
     <h2>{{ data.serviceName }}</h2>
     <el-divider/>
     <div class="itemList">
@@ -97,6 +97,7 @@ export default {
       tableData: [],
       isDetailShow: false,
       item: {},
+      loading: false,
     }
   },
   props: {
@@ -111,7 +112,11 @@ export default {
   },
   mounted() {
     let app = this;
+    // this.loading = true;
     this.renderTable();
+    // setTimeout(function () {
+    //   app.loading=false;
+    // }, 1000)
   },
   methods: {
     renderTable() {

+ 9 - 3
src/components/home/DataPublish.vue

@@ -16,7 +16,7 @@
 
     </div>
     <div class="content">
-      <PublishDetail :data="currService" v-if="currService.serviceName"/>
+      <PublishDetail :data="currService" v-if="isDetailShow"/>
     </div>
   </div>
 </template>
@@ -32,6 +32,7 @@ export default {
       serviceList: [],
       currService: {},
       pageShow: {},
+      isDetailShow: true,
     }
   },
   props: {
@@ -54,8 +55,13 @@ export default {
   },
   methods: {
     handleServiceSelect(val) {
-      this.currService = this.serviceList[Number(val)]
-    }
+      let app = this;
+      // app.isDetailShow = false;
+      // setTimeout(function () {
+      //   app.isDetailShow = true;
+      // }, 200)
+      app.currService = app.serviceList[Number(val)]
+    },
   }
 }
 

+ 2 - 2
src/components/map/CesiumMap.vue

@@ -140,8 +140,8 @@ export default {
           })
         } else {
           // 加载模型
-          if (app.item.url && app.item.url!=='') {
-            app.add3DTiles(app.viewer, app.item.url)
+          if (app.item.modelUrl && app.item.modelUrl!=='') {
+            app.add3DTiles(app.viewer, app.item.modelUrl)
           } else {
             app.$util.loading.handleLoading(false)
           }

+ 27 - 3
src/components/systemManage/SystemLogs.vue

@@ -11,11 +11,28 @@
         <el-icon ><IconPark-refresh/></el-icon>
       </el-tooltip>
     </div>
+    <el-form :model="filterForm" :inline="true" style="display: inline-block;float: right">
+      <el-form-item label="日期范围:" style="width: 350px">
+        <el-date-picker v-model="filterForm.dateRange" type="daterange"
+                        range-separator="至"
+                        start-placeholder="起始日期"
+                        end-placeholder="终止日期"
+                        value-format="x"
+                        @change="handleDateRangeChange"
+        />
+      </el-form-item>
+      <el-form-item label="用户名:" style="width: 200px">
+        <el-input v-model="filterForm.username" placeholder="请输入用户名" />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="getData">搜索</el-button>
+      </el-form-item>
+    </el-form>
     <el-divider/>
     <el-table :data="tableData" v-loading="loading" element-loading-text="正在加载,请稍后..."
               :border="true" :stripe="true" :height="$store.state.windowsHeight*0.67" style="width: 100%;margin-bottom: 15px;">
       <el-table-column prop="userName" label="用户名" width="140"/>
-      <el-table-column prop="loginIp" label="访问ip" width="100"/>
+      <el-table-column prop="loginIp" label="访问ip" width="120"/>
       <el-table-column prop="createTime" label="访问时间" width="170">
         <template #default="scope">
           {{ $util.datetime.format(scope.row.createTime) }}
@@ -42,7 +59,8 @@ export default {
         page: 1,
         pageSize: 10,
         total: 0
-      }
+      },
+      filterForm: {},
     }
   },
   created() {
@@ -82,6 +100,7 @@ export default {
       let params = {
         page: app.pageInfo.page-1,
         pageSize: app.pageInfo.pageSize,
+        username: app.filterForm.username,
         startDate: start,
         endDate: end,
         serviceId: this.$constant.serviceId
@@ -100,10 +119,15 @@ export default {
     refresh() {
       let app = this;
       app.pageInfo.pageSize=-1;
+      app.filterForm = {};
       setTimeout(function () {
         app.pageInfo.pageSize=10;
       })
-    }
+    },
+    handleDateRangeChange(val) {
+      this.filterForm.startDate = val[0]
+      this.filterForm.endDate = val[1]
+    },
   }
 }
 </script>

+ 101 - 3
src/components/systemManage/UserManage.vue

@@ -1,6 +1,9 @@
 <template>
   <div id="systemUserMgr">
-    <h3>用户信息列表</h3>
+    <h3 style="display: inline-block">用户信息列表</h3>
+    <el-button type="primary" @click="addUserShow=true" style="display: inline-block;float: right" >
+      新增用户
+    </el-button>
     <el-divider></el-divider>
     <el-table ref="dataTable" v-loading="loading" element-loading-text="正在加载,请稍后..." :data="tableData"
               :border="true" :stripe="true" :height="$store.state.windowsHeight*0.67" style="width: 100%;margin-bottom: 15px;">
@@ -59,6 +62,36 @@
       <el-button type="primary" @click="updateUserRole">保存</el-button>
     </template>
   </el-dialog>
+
+  <el-dialog v-if="addUserShow"
+             :model-value="addUserShow"
+             title="添加用户"
+             width="650px"
+             :close-on-click-modal="false"
+             :before-close="handleAddUserClose"
+  >
+    <el-form :model="addUserForm" ref="addUserForm" :rules="addUserFormRules" :label-width="100" style="width: 80%;margin: 0 auto">
+      <el-form-item label="用户名:" prop="username">
+        <el-input v-model="addUserForm.username" :input-style="inputStyle" placeholder="请输入用户名" />
+      </el-form-item>
+      <el-form-item label="邮箱:" prop="email">
+        <el-input v-model="addUserForm.email" :input-style="inputStyle" placeholder="请输入邮箱" />
+      </el-form-item>
+      <el-form-item label="手机号:" prop="phone">
+        <el-input v-model="addUserForm.phone" :input-style="inputStyle" placeholder="请输入手机号" />
+      </el-form-item>
+      <el-form-item label="密码:" prop="password">
+        <el-input type="password" v-model="addUserForm.password" :input-style="inputStyle" placeholder="请输入密码" :show-password="true" />
+      </el-form-item>
+      <el-form-item label="确认密码:" prop="confirmPwd">
+        <el-input type="password" v-model="addUserForm.confirmPwd" :input-style="inputStyle" placeholder="请再次输入密码" :show-password="true" />
+      </el-form-item>
+    </el-form>
+
+    <template #footer>
+      <el-button type="primary" @click="addUser" style="margin-right: 5%">确认添加</el-button>
+    </template>
+  </el-dialog>
 </template>
 
 <script>
@@ -67,9 +100,29 @@ import loading from "@/utils/loading";
 
 export default {
   data() {
+    let app = this;
+    let validatorPhone = function (rule, value, callback) {
+      if (!value || value === '') {
+        callback(new Error('手机号不能为空'))
+      } else if (!/^1\d{10}$/.test(value)) {
+        callback(new Error('手机号格式错误'))
+      } else {
+        callback()
+      }
+    };
+    let validatorConfirmPwd = function (rule, value, callback) {
+      if (!value ||value === '') {
+        callback(new Error('请再次输入密码'))
+      } else if(app.addUserForm.password!=value) {
+        callback(new Error('密码不一致'))
+      } else {
+        callback()
+      }
+    };
     return {
       loading: false,
       tableData: [],
+      inputStyle: {'letter-spacing': '2px'},
       roleList: [],
       userRolesShow: false,
       roleListLoading: false,
@@ -78,7 +131,31 @@ export default {
         page: 1,
         pageSize: 10,
         total: 0,
-      }
+      },
+      addUserShow: false,
+      addUserForm: {},
+      addUserFormRules: {
+        "username": [
+          {required: true, message: '用户名不能为空', trigger: 'blur'},
+          {required: true, message: '用户名不能为空', trigger: 'change'},
+        ],
+        "email": [
+          {required: true, message: '邮箱不能为空', trigger: 'blur'},
+          { type: 'email', message: '请输入正确的邮箱', trigger: 'change' }
+        ],
+        "phone": [
+          {required: true, validator: validatorPhone, trigger: 'blur' },
+          {required: true, validator: validatorPhone, trigger: 'change' }
+        ],
+        "password": [
+          {required: true, message: '密码不能为空', trigger: 'blur'},
+          {required: true, message: '密码不能为空', trigger: 'change'},
+        ],
+        "confirmPwd": [
+          {required: true, validator: validatorConfirmPwd, trigger: 'blur'},
+          {required: true, validator: validatorConfirmPwd, trigger: 'change'},
+        ]
+      },
     }
   },
   watch: {
@@ -94,6 +171,11 @@ export default {
         app.pageInfo.page = 1;
       }, 50)
     },
+    "addUserForm.password": function () {
+      if (this.addUserForm.confirmPwd) {
+        this.$refs.addUserForm.validateField('confirmPwd');
+      }
+    }
   },
   created() {
     this.getData()
@@ -135,6 +217,9 @@ export default {
         }
       })
     },
+    handleAddUserClose() {
+      this.addUserShow = false;
+    },
     handleManageRole(row) {
       let app = this;
       this.userRolesShow = true;
@@ -170,7 +255,20 @@ export default {
           app.handleManageRoleClose();
         }
       })
-    }
+    },
+    addUser() {
+      let app = this;
+      this.$refs.addUserForm.validate(valid => {
+        if (valid) {
+          api.addUser(app.addUserForm).then(res=>{
+            if (res.code===200) {
+              app.$message({message: '添加成功', type: 'success'});
+              app.getData();
+            }
+          })
+        }
+      })
+    },
   }
 }
 </script>