Quellcode durchsuchen

Merge branch 'master' of http://10.12.10.70:3000/zhangliang/simulation-front

zhangliang2 vor 3 Jahren
Ursprung
Commit
e1f9f5dde9

+ 5 - 1
src/api/algorithmsLibrary.js

@@ -14,6 +14,8 @@ const getProgress = basePart + '/file/getProgress'; // 获取上传进度接口
 
 const selectAlgoPlatformList = basePart + '/algorithm/selectAlgoPlatformList'   //算法平台列表
 
+const testConnection = basePart + '/algorithm/testConnection'
+
 export default {
     selectSharedAlgorithmList,
     selectAlgorithmList,
@@ -25,5 +27,7 @@ export default {
     selectDetailsById,
     getProgress,
 
-    selectAlgoPlatformList
+    selectAlgoPlatformList,
+
+    testConnection
 }

+ 3 - 1
src/api/index.js

@@ -6,6 +6,7 @@ import workManagement from './workManagement.js' // 工作管理
 import modelLibrary from './modelLibrary.js' // 模型库
 import algorithmsLibrary from './algorithmsLibrary.js' // 算法库
 import mainPage from './mainPage.js' // 首页
+import systemManagement from "./systemManagement.js"; //系统管理
 
 const api = {
     common,
@@ -13,7 +14,8 @@ const api = {
     workManagement,
     modelLibrary,
     algorithmsLibrary,
-    mainPage
+    mainPage,
+    systemManagement
 }
 
 export default api;

+ 30 - 0
src/api/systemManagement.js

@@ -0,0 +1,30 @@
+const basePart = '/simulation/resource/server'
+//账户管理
+const getUserPageList = basePart + '/user/getUserPageList'
+const saveUser = basePart + '/user/saveUser'
+const saveDefaultPassword = basePart +  '/user/saveDefaultPassword'
+const saveVisible = basePart + '/user/saveVisible'
+//参数管理
+const getParameterList = basePart + '/parameter/getParameterList'
+const saveParameter = basePart + '/parameter/saveParameter'
+const getParamHistory = basePart + '/parameter/getParamHistory'
+//集群管理
+const getClusterList = basePart + '/cluster/getClusterList'
+const saveCluster = basePart + '/cluster/saveCluster'
+const getClusterHistory = basePart + '/cluster/getClusterHistory'
+const getClusterNum = basePart + '/cluster/getClusterNum'
+
+
+export default{
+    getUserPageList,
+    saveUser,
+    saveDefaultPassword,
+    saveVisible,
+    getParameterList,
+    saveParameter,
+    getParamHistory,
+    getClusterList,
+    saveCluster,
+    getClusterHistory,
+    getClusterNum
+}

+ 88 - 79
src/router/systemManagement.js

@@ -1,90 +1,99 @@
 export default [{
-        path: "/accountManagement",
-        name: "accountManagement",
-        meta: {
-            tabname: "账户管理",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/accountManagement")
+    path: "/accountManagement",
+    name: "accountManagement",
+    meta: {
+        tabname: "账户管理",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/addAccount",
-        name: "addAccount",
-        meta: {
-            tabname: "创建账户",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/addAccount")
+    component: () => import("@/views/systemManagement/accountManagement")
+},
+{
+    path: "/addAccount",
+    name: "addAccount",
+    meta: {
+        tabname: "创建账户",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/parameterManagement",
-        name: "paramenterManagement",
-        meta: {
-            tabname: "参数管理",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/parameterManagement")    
+    component: () => import("@/views/systemManagement/addAccount")
+},
+{
+    path: "/editAccount",
+    name: "editAccount",
+    meta: {
+        tabname: "编辑账户",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/parameterDetail",
-        name: "parameterDetail",
-        meta: {
-            tabname: "新增参数配置",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/parameterDetail")
+    component: () => import("@/views/systemManagement/editAccount")
+},
+{
+    path: "/parameterManagement",
+    name: "paramenterManagement",
+    meta: {
+        tabname: "参数管理",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/sceneLibraryManagement",
-        name: "sceneLibraryManagement",
-        meta: {
-            tabname: "场景库管理",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/sceneLibraryManagement/sceneLibraryManagement")
+    component: () => import("@/views/systemManagement/parameterManagement")    
+},
+{
+    path: "/parameterDetail",
+    name: "parameterDetail",
+    meta: {
+        tabname: "新增参数配置",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/reportTemplateManagement",
-        name: "reportTemplateManagement",
-        meta: {
-            tabname: "报告模板管理",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/reportTemplateManagement")
+    component: () => import("@/views/systemManagement/parameterDetail")
+},
+{
+    path: "/clusteringManagement",
+    name: "clusteringManagement",
+    meta: {
+        tabname: "集群管理",
+        menuKind: "sysyemManagement"
     },
-    {
-        path: "/reportTemplateDetail",
-        name: "reportTemplateDetail",
-        meta: {
-
-        },
-        component: () => import("@/views/systemManagement/reportTemplateDetail") 
+    component: () => import("@/views/systemManagement/clusteringManagement")
+},
+{
+    path: "/clusteringDetail",
+    name: "clusteringDetail",
+    meta: {
+        tabname: "新增集群配置",
+        menuKind: "systemManagement"
+    },
+    component: () => import("@/views/systemManagement/clusteringDetail")
+},
+{
+    path: "/sceneLibraryManagement",
+    name: "sceneLibraryManagement",
+    meta: {
+        tabname: "场景库管理",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/clusteringManagement",
-        name: "clusteringManagement",
-        meta: {
-            tabname: "集群管理",
-            menuKind: "sysyemManagement"
-        },
-        component: () => import("@/views/systemManagement/clusteringManagement")
+    component: () => import("@/views/systemManagement/sceneLibraryManagement/sceneLibraryManagement")
+},
+{
+    path: "/reportTemplateManagement",
+    name: "reportTemplateManagement",
+    meta: {
+        tabname: "报告模板管理",
+        menuKind: "systemManagement"
+    },
+    component: () => import("@/views/systemManagement/reportTemplateManagement")
+},
+{
+    path: "/reportTemplateDetail",
+    name: "reportTemplateDetail",
+    meta: {
+
     },
-    {
-        path: "/clusteringDetail",
-        name: "clusteringDetail",
-        meta: {
-            tabname: "新增集群配置",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/clusteringDetail")
+    component: () => import("@/views/systemManagement/reportTemplateDetail") 
+},
+{
+    path: "/logManagement",
+    name:"logManagement",
+    meta: {
+        tabname: "日志管理",
+        menuKind: "systemManagement"
     },
-    {
-        path: "/logManagement",
-        name:"logManagement",
-        meta: {
-            tabname: "日志管理",
-            menuKind: "systemManagement"
-        },
-        component: () => import("@/views/systemManagement/logManagement")
-    }
+    component: () => import("@/views/systemManagement/logManagement")
+}
 ]

+ 1 - 1
src/views/algorithmsLibrary/algorithmsLibraryList.vue

@@ -60,7 +60,7 @@
             <el-tabs v-model="activeName" type="card" @tab-click="pageControl">
                 <el-tab-pane label="公有" name="1"></el-tab-pane>
                 <el-tab-pane label="私有导入" name="2"></el-tab-pane>
-                <el-tab-pane label="私有仓库" name="3" disabled></el-tab-pane>
+                <el-tab-pane label="私有仓库" name="3"></el-tab-pane>
             </el-tabs>
             <el-button
                 v-bind:class="{ addBtn: true, disabled: activeName === '1' }"

+ 118 - 18
src/views/algorithmsLibrary/gitAlgorithms.vue

@@ -36,33 +36,43 @@
                         >
                         </el-input>
                     </el-form-item>
-                    <el-form-item label="用户名:" prop="add1">
+                    <el-form-item label="用户名:" prop="gitUserName">
                         <el-input
                             placeholder="请输入"
                             maxlength="30"
-                            v-autoTrim="{ obj: form, key: 'add1' }"
-                            v-model="form.add1"
+                            v-autoTrim="{ obj: form, key: 'gitUserName' }"
+                            v-model="form.gitUserName"
                         >
                         </el-input>
                     </el-form-item>
-                    <el-form-item label="密码:" prop="add2">
+                    <el-form-item label="密码:" prop="gitPassword">
                         <el-input
                             placeholder="请输入"
                             maxlength="30"
                             type="password"
-                            v-autoTrim="{ obj: form, key: 'add2' }"
-                            v-model="form.add2"
+                            v-autoTrim="{ obj: form, key: 'gitPassword' }"
+                            v-model="form.gitPassword"
                         >
+                        <el-button slot="suffix" type="primary" @click="testConnection">测试链接</el-button>
                         </el-input>
                     </el-form-item>
-                    <div class="testLinkPanel">
-                        <el-button type="primary">测试链接</el-button>
-                    </div>
                 </el-form>
 
                 <div class="btns">
-                    <el-button type="primary">保存</el-button>
-                    <el-button type="primary">取消</el-button>
+                    <el-button
+                        type="primary"
+                        @click="save"
+                        >保存</el-button
+                    >
+                    <el-button
+                        v-if="form.share === '0' || form.share === '1'"
+                        type="primary"
+                        @click="saveOther"
+                        >另存为</el-button
+                    >
+                    <el-button type="primary" plain @click="cancel"
+                        >取消</el-button
+                    >
                 </div>
             </el-col>
         </el-row>
@@ -82,8 +92,8 @@ export default {
                 algorithmName: "", // 算法名称
                 description: "", // 算法描述
                 gitUrl: "", // 地址
-                gitToken: "", // 算法名称
-                sf: "", // 算法名称
+                gitUserName: "",  //仓库用户名
+                gitPassword: "",  //仓库密码
                 uploadMode: "2", // 方式
             },
             type: "1",
@@ -91,13 +101,102 @@ export default {
                 algorithmName: [{ required: true, message: "请输入", trigger: "blur" }],
                 description: [{ required: true, message: "请输入", trigger: "blur" }],
                 gitUrl: [{ required: true, message: "请输入", trigger: "blur" }],
-                name: [{ required: true, message: "请输入", trigger: "blur" }],
-                name: [{ required: true, message: "请输入", trigger: "blur" }],
+                gitUserName: [{ required: true, message: "请输入", trigger: "blur" }],
+                gitPassword: [{ required: true, message: "请输入", trigger: "blur" }],
             },
         };
     },
-
+    mounted(){
+        let id = this.$route.query.id;
+        if (id) {
+            this.form.share = this.$route.query.share;
+            this.$axios({
+                method: "post",
+                url: this.$api.algorithmsLibrary.selectDetailsById,
+                data: {
+                    id,
+                },
+            }).then((res) => {
+                if (res.code == 200 && res.info) {
+                    this.form = res.info;
+                } else {
+                    this.$message.error(res.message || "获取信息失败");
+                }
+            });
+        }
+    },
     methods: {
+        testConnection(){
+            let validateFieldList = []
+            this.$refs.form.validateField(['gitUserName','gitPassword','gitUrl'],async errorMsg=>{
+                if(!errorMsg){
+                    validateFieldList.push(errorMsg)
+                    if(validateFieldList.length == 3 && validateFieldList.every(item=>item ==='')){
+                        this.$axios({
+                            method: "POST",
+                            url: this.$api.algorithmsLibrary.testConnection,
+                            data:{
+                                gitUrl: this.form.gitUrl,
+                                gitUserName: this.form.gitUserName,
+                                gitPassword: this.form.gitPassword,
+                            }
+                        }).then(res=>{
+                            if(res.code == 200) {
+                                this.$message.success("测试成功");
+                            } else {
+                                this.$message.error(res.message || "测试失败");
+                            }
+                        })    
+                    }
+                }else{
+                    return false
+                } 
+            })
+            return
+        },
+        save(){
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.$axios({
+                        method: "post",
+                        url: this.$api.algorithmsLibrary.addOrUpdate,
+                        data: {
+                            ...this.form,
+                        },
+                    }).then((res) => {
+                        if (res.code == 200) {
+                            this.$message.success("保存成功");
+                            this.cancel();
+                        } else {
+                            this.$message.error(res.message || "保存失败");
+                        }
+                    });
+                }
+            });
+        },
+        saveOther(){
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    let data = {...this.form}
+                    data.id = ''
+                    this.$axios({
+                        method: "post",
+                        url: this.$api.algorithmsLibrary.addOrUpdate,
+                        data: data,
+                    }).then((res) => {
+                        if (res.code == 200) {
+                            this.$message.success("保存成功");
+                            this.cancel();
+                        } else {
+                            this.$message.error(res.message || "保存失败");
+                        }
+                    });
+                }
+            });
+        },
+        cancel(){
+            this.$router.replace({ path: "/algorithmsLibraryList" });
+        }
         /* typeChange(val) {
             if (val === "1") {
                 this.rules = {
@@ -148,8 +247,6 @@ export default {
             this.type = val;
         }, */
     },
-
-    // mounted: {},
 };
 </script>
 
@@ -163,6 +260,9 @@ export default {
         .el-select {
             width: 100%;
         }
+        /deep/ .el-input__suffix{
+            right: 0;
+        }
     }
 
     .testLinkPanel {

+ 4 - 2
src/views/page/pageMenu.vue

@@ -126,7 +126,7 @@
                             >手动运行项目</el-menu-item
                         >
                     </el-submenu>
-                    <!-- <el-submenu index="systemManagement">
+                    <el-submenu index="systemManagement">
                         <template slot="title">
                             <i class="my-icon-menuF"></i>
                             <span>系统管理</span>
@@ -137,7 +137,9 @@
                         <el-menu-item index="/parameterManagement"
                             >参数管理</el-menu-item
                         >    
-                    </el-submenu> -->
+                        <el-menu-item index="clusteringManagement"
+                        >集群管理</el-menu-item>
+                    </el-submenu>
                 </el-menu>
             </div>
         </div>

+ 146 - 57
src/views/systemManagement/accountManagement.vue

@@ -4,17 +4,7 @@
             <template slot="searchItem1">
                 <span class="label">账户名称</span>
                 <el-input
-                    v-model="searchParams.id"
-                    size="small"
-                    clearable
-                    placeholder="请输入"
-                >
-                </el-input>
-            </template>
-            <template slot="searchItem2">
-                <span class="label">所属公司</span>
-                <el-input
-                    v-model="searchParams.clientOrgName"
+                    v-model="searchParams.username"
                     size="small"
                     clearable
                     placeholder="请输入"
@@ -23,18 +13,28 @@
             </template>
             <template slot="searchItem3">
                 <span class="label">账户类型</span>
-                <el-select v-model="searchParams.status">
+                <el-select v-model="searchParams.roleCode">
                     <el-option
-                        v-for="item in list"
+                        v-for="item in roleCodeList"
                         :label="item.caption"
                         :value="item.code"
                         :key="item.code"
                     ></el-option>
                 </el-select>
             </template>
+            <template slot="searchItem2">
+                <span class="label">所属公司</span>
+                <el-input
+                    v-model="searchParams.company"
+                    size="small"
+                    clearable
+                    placeholder="请输入"
+                >
+                </el-input>
+            </template>
             <template slot="searchItem4">
                 <span class="label">状态</span>
-                <el-select v-model="searchParams.status">
+                <el-select v-model="searchParams.visible">
                     <el-option
                         v-for="item in list"
                         :label="item.caption"
@@ -44,25 +44,25 @@
                 </el-select>
             </template>
             <template slot="searchBtn1">
-                <el-button type="primary">查询</el-button>
+                <el-button type="primary" @click="search">查询</el-button>
             </template>
             <template slot="searchBtn2">
-                <el-button type="primary">重置</el-button>
+                <el-button type="primary" @click="reset">重置</el-button>
             </template>
         </search-layout>
 
         <div class="btnsPanel">
-            <el-button type="primary" plain icon="el-icon-video-pause"
+            <!--<el-button type="primary" plain icon="el-icon-video-pause"
                 >批量停用</el-button
             >
             <el-button type="primary" plain icon="el-icon-video-play"
                 >批量启用</el-button
-            >
+            >-->
             <el-button
                 type="primary"
                 icon="el-icon-circle-plus-outline"
-                @click="addConfig"
-                >创建</el-button
+                @click="addAccount"
+                >创建账户</el-button
             >
         </div>
 
@@ -75,15 +75,24 @@
             index
             selection
         >
+            <el-table-column label="停/启用" slot="visible" align="center">
+                <template v-slot="scope">
+                    <el-switch
+                        v-model="scope.row.visible"
+                        active-value="1"
+                        inactive-value="0"
+                        active-color="#13ce66"
+                        inactive-color="#ff4949"
+                        @change="$event=>{switchVisible($event, scope.row)}"
+                    ></el-switch>
+                </template>
+            </el-table-column>
             <el-table-column label="操作" slot="cgInfos" align="center">
                 <template v-slot="scope">
                     <i
-                        @click="addMarkDia(scope.row)"
+                        @click="editAccount(scope.row)"
                         class="el-icon-edit-outline elIcon"
-                    ></i>
-                    <i
-                        @click="addMarkDia(scope.row)"
-                        class="el-icon-video-pause elIcon"
+                        title="编辑"
                     ></i>
                 </template>
             </el-table-column>
@@ -102,46 +111,56 @@ export default {
         return {
             searchParams: {
                 //搜索参数
-                id: "", //ID
-                clientOrgName: "", //车辆名称
-                clientOrgName1: "", //配置名称
-                clientOrgName2: "", //配置描述
-                status: "",
+                username: "", //账户名
+                company:"",  //所属公司
+                roleCode:"",  //账户类型
+                visible:""  //启用状态
             },
-            list: [],
+            roleCodeList:[],
+            list: [
+                {
+                    code:'1',
+                    caption:'启用'
+                },
+                {
+                    code:'0',
+                    caption:'停用'
+                }
+            ],
             columns: [
                 //表格列
                 {
                     label: "账户名称",
-                    prop: "id",
+                    prop: "username",
                 },
                 {
                     label: "账户类型",
-                    prop: "aid",
+                    prop: "roleCode",
                 },
                 {
                     label: "所属公司",
-                    prop: "ktName",
+                    prop: "company",
                 },
                 {
                     label: "联系人",
-                    prop: "jbSource",
+                    prop: "nickname",
                 },
                 {
                     label: "联系方式",
-                    prop: "aid",
+                    prop: "phone",
                 },
                 {
-                    label: "状态",
-                    prop: "ktName",
+                    label: "停/启用",
+                    prop: "visible",
+                    template: true
                 },
                 {
                     label: "创建人",
-                    prop: "jbSource",
+                    prop: "createUserName",
                 },
                 {
                     label: "创建时间",
-                    prop: "jbSource",
+                    prop: "createTime",
                 },
                 {
                     label: "操作",
@@ -159,31 +178,100 @@ export default {
             },
             getDataWay: {
                 //加载表格数据
-                dataType: "data",
+                dataType: "url",
                 type: "post",
-                firstRequest: false,
-                data: [
-                    {
-                        id: 1,
-                        ktName: "kjdhfkjsdhfkjsjhdfksdjhfkhwoieyrhfisdhfksjhdf",
-                        jbSource: "收到就好付款时间的回复可见收到货覅无痕",
-                    },
-                    { id: 2 },
-                    { id: 3 },
-                    { id: 4 },
-                    { id: 51 },
-                    { id: 6 },
-                ],
-                // data: this.$api.scientificStatistics.typeProjectStatistics,
+                // firstRequest: false,
+                data: this.$api.systemManagement.getUserPageList,
                 param: {},
             },
         };
     },
+    async mounted() {
+        await this.$dicsListsInit({
+            roleCodeList: "roleCode",
+        });
+    },
     methods: {
-        addConfig() {
+        addAccount() {
             this.$router.push({ path: "/addAccount" });
         },
-        addMarkDia() {},
+        editAccount(row) {
+            let query = {...row}
+            this.$router.push({
+                path: "/editAccount",
+                query
+            })
+        },
+        search(){
+            let searchParam = {
+                    username: this.searchParams.username,
+                    company: this.searchParams.company,
+                    roleCode: this.searchParams.roleCode,
+                    visible: this.searchParams.visible
+            }
+            this.refreshList(searchParam)
+        },
+        reset(){
+            this.searchParams={
+                username: '',
+                company: '',
+                roleCode: '',
+                visible: ''
+            }
+            this.search()
+        },
+        refreshList(param) {
+            param
+                ? this.$refs["table"].loadData(param)
+                : this.$refs["table"].loadData();
+        },
+        switchVisible(value, row){  //停用启用账户
+            if(value == '0'){
+                row.visible = '1'
+                this.$confirm("确认停用该账户?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                }).then(()=>{
+                    this.$axios({
+                        method:'POST',
+                        url: this.$api.systemManagement.saveVisible,
+                        data:{
+                            id: row.id,
+                            visible: '0'
+                        }
+                    }).then(res=>{
+                        if(res.code == '200'){
+                            row.visible = '0'
+                        }else{
+                            this.$message.error(res.message || "停用失败");
+                        }
+                    })
+                }).catch(()=>{})
+            }else{
+                row.visible = '0'
+                this.$confirm("确认启用该账户?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                }).then(()=>{this.$axios({
+                        method:'POST',
+                        url: this.$api.systemManagement.saveVisible,
+                        data:{
+                            id: row.id,
+                            visible: '1'
+                        }
+                    }).then(res=>{
+                        if(res.code == '200'){
+                            row.visible = '1'
+                        }else{
+                            this.$message.error(res.message || "启用失败");
+                        }
+                    })
+                }).catch(()=>{})
+            }
+            
+        }
     },
 };
 </script>
@@ -191,5 +279,6 @@ export default {
 <style scoped lang="less">
 .btnsPanel {
     margin: 45px 40px 15px;
+    text-align: right;
 }
 </style>

+ 78 - 126
src/views/systemManagement/addAccount.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
         <div class="flexBox box">
-            <div class="fileBox">
+            <!--<div class="fileBox">
                 <div class="til">头像</div>
                 <div class="photo">
                     <img :src="imgSrc" width="100%" height="100%" />
@@ -11,165 +11,97 @@
                         >上传文件</el-button
                     >
                 </div>
-            </div>
+            </div>-->
             <el-form
                 ref="form"
                 :model="form"
                 :rules="rules"
                 label-width="108px"
             >
-                <el-form-item label="账户名称:" prop="name" v-show="isEdited">
+                <el-form-item label="账户名称:" prop="username">
                     <el-input
                         placeholder="请输入"
                         maxlength="30"
-                        v-autoTrim="{ obj: form, key: 'name' }"
-                        v-model="form.name"
+                        v-autoTrim="{ obj: form, key: 'username' }"
+                        v-model="form.username"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="账户名称:" prop="name" v-show="!isEdited">
-                    {{ form.name }}
-                </el-form-item>
-
-                <el-form-item label="账户类型:" prop="des" v-show="isEdited">
-                    <el-select v-model="form.des">
+                <el-form-item label="账户类型:" prop="roleCode">
+                    <el-select v-model="form.roleCode">
                         <el-option
-                            v-for="item in list"
+                            v-for="item in roleCodeList"
                             :label="item.caption"
                             :value="item.code"
                             :key="item.code"
                         ></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="账户类型:" prop="des" v-show="!isEdited">
-                    {{ form.name }}
-                </el-form-item>
 
-                <el-form-item label="所属公司:" prop="x" v-show="isEdited">
+                <el-form-item label="所属公司:" prop="company">
                     <el-input
                         placeholder="请输入"
                         maxlength="15"
-                        v-autoTrim="{ obj: form, key: 'x' }"
-                        v-model="form.x"
+                        v-autoTrim="{ obj: form.company, key: 'company' }"
+                        v-model="form.company"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="所属公司:" prop="x" v-show="!isEdited">
-                    {{ form.name }}
-                </el-form-item>
 
-                <el-form-item label="联系人:" prop="x" v-show="isEdited">
+                <el-form-item label="联系人:" prop="nickname">
                     <el-input
                         placeholder="请输入"
                         maxlength="15"
-                        v-autoTrim="{ obj: form, key: 'x' }"
-                        v-model="form.x"
+                        v-autoTrim="{ obj: form.nickname, key: 'nickname' }"
+                        v-model="form.nickname"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="联系人:" prop="x" v-show="!isEdited">
-                    {{ form.name }}
-                </el-form-item>
-
-                <el-form-item label="联系方式:" prop="x" v-show="isEdited">
+                
+                <el-form-item label="联系方式:" prop="phone">
                     <el-input
                         placeholder="请输入"
                         maxlength="15"
-                        v-autoTrim="{ obj: form, key: 'x' }"
-                        v-model="form.x"
+                        v-autoTrim="{ obj: form.phone, key: 'phone' }"
+                        v-model="form.phone"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="联系方式:" prop="x" v-show="!isEdited">
-                    {{ form.name }}
-                </el-form-item>
-
-                <el-form-item label="密码:" prop="x" v-show="isEdited">
+                <!--
+                <el-form-item label="密码:" prop="password">
                     <el-input
                         placeholder="请输入"
                         type="password"
                         maxlength="15"
-                        v-autoTrim="{ obj: form, key: 'x' }"
-                        v-model="form.x"
+                        v-autoTrim="{ obj: form.password, key: 'password' }"
+                        v-model="form.password"
                     >
                     </el-input>
                 </el-form-item>
 
-                <el-form-item label="确认密码:" prop="x" v-show="isEdited">
+                <el-form-item label="确认密码:" prop="password">
                     <el-input
                         placeholder="请输入"
                         type="password"
                         maxlength="15"
-                        v-autoTrim="{ obj: form, key: 'x' }"
-                        v-model="form.x"
+                        v-autoTrim="{ obj: form.password, key: 'password' }"
+                        v-model="form.password"
                     >
                     </el-input>
                 </el-form-item>
-
-                <el-form-item label="状态:" prop="y" v-show="isEdited">
-                    <el-radio v-model="form.z" label="1">启用</el-radio>
-                    <el-radio v-model="form.z" label="2">停用</el-radio>
-                </el-form-item>
-                <el-form-item label="状态:" prop="y" v-show="!isEdited">
-                    {{ form.name }}
+                -->
+                <el-form-item label="独占类型:" prop="useType">
+                    <el-radio v-for="item in useTypeList" :key="item.code" :label="item.code" v-model="form.useType">{{item.caption}}</el-radio>
                 </el-form-item>
 
-                <div class="btns" v-show="isEdited">
-                    <el-button type="primary">保存</el-button>
-                    <el-button type="primary" plain @click="cancelForm"
-                        >取消</el-button
-                    >
+                <div class="btns">
+                    <el-button type="primary" @click="saveForm">保存</el-button>
+                    <el-button type="primary" plain @click="cancel"
+                    >取消</el-button>
                 </div>
             </el-form>
-            <div class="editBox">
-                <el-button
-                 v-show="isEdited"
-                    type="primary"
-                    icon="el-icon-edit-outline"
-                    @click="editForm"
-                    >编辑</el-button
-                >
-            </div>
         </div>
 
-        <el-dialog
-            title="编辑"
-            :visible.sync="dialogVisible"
-            width="690px"
-            :close-on-click-modal="false"
-            :close-on-press-escape="false"
-        >
-            <el-form
-                ref="formA"
-                :model="formA"
-                :rules="rulesA"
-                label-width="108px"
-            >
-                <el-form-item
-                    label="手机验证码:"
-                    prop="name"
-                    class="getCodeBox"
-                >
-                    <el-input
-                        placeholder="请输入"
-                        maxlength="30"
-                        class="name"
-                        v-autoTrim="{ obj: form, key: 'name' }"
-                        v-model="formA.name"
-                    >
-                        <el-button slot="append" type="primary"
-                            >获取验证码</el-button
-                        >
-                    </el-input>
-                </el-form-item>
-            </el-form>
-            <span slot="footer">
-                <el-button type="primary" @click="dialogVisible = false"
-                    >确 定</el-button
-                >
-                <el-button @click="dialogVisible = false">取 消</el-button>
-            </span>
-        </el-dialog>
     </div>
 </template>
 
@@ -182,45 +114,65 @@ export default {
     data() {
         return {
             list: [],
-            isEdited: true,
+            roleCodeList: [],
+            useTypeList:[],  //占用类型
             imgSrc: require("@/assets/common/image/photoF.png"),
             form: {
-                name: "创建账户",
-                des: "",
-                x: "",
-                y: "1",
-                z: "2",
+                id: "",
+                username: "",
+                roleCode: "",
+                company: "",
+                nickname: "",
+                phone: "",
+                //password: "",
+                useType: ""
             },
             rules: {
-                name: [{ required: true, message: "请输入", trigger: "blur" }],
-                des: [{ required: true, message: "请输入", trigger: "blur" }],
-                x: [{ required: true, message: "请输入", trigger: "blur" }],
-                y: [{ required: true, message: "请选择", trigger: "change" }],
-                z: [{ required: true, message: "请选择", trigger: "change" }],
+                username: [{ required: true, message: "请输入", trigger: "blur" }],
+                roleCode: [{ required: true, message: "请选择", trigger: "change" }],
+                company: [{ required: true, message: "请输入", trigger: "blur" }],
+                nickname: [{ required: true, message: "请输入", trigger: "blur" }],
+                phone: [{ required: true, message: "请输入", trigger: "blur" }],
+                //password: [{ required: true, message: "请输入", trigger: "blur" }],
+                useType: [{ required: true, message: "请选择", trigger: "change" }],
             },
-            formA: {
-                name: "",
-            },
-            rulesA: {
-                name: [{ required: true, message: "请输入", trigger: "blur" }],
-            },
-            dialogVisible: false,
         };
     },
+    async created(){
 
-    computed: {},
+    },
+    async mounted() {
+        await this.$dicsListsInit({
+            roleCodeList: "roleCode",
+            useTypeList: "useType"
+        });
+    },
+    computed: {
 
+    },
     methods: {
-        editForm() {
-            this.isEdited = true;
-            this.dialogVisible = true;
+        saveForm(){
+            this.$axios({
+                method:'POST',
+                url:this.$api.systemManagement.saveUser,
+                data:{
+                    ...this.form
+                }
+            }).then(res => {
+                if(res.code == 200){
+                    this.$message.success("保存成功");
+                    this.cancel()
+                }else{
+                    this.$message.error(res.message || "保存失败");
+                }
+            })
         },
-        cancelForm() {
-            this.isEdited = false;
-            this.dialogVisible = false;
+        cancel() {
+            this.$router.replace({
+                path: '/accountManagement'
+            })
         },
     },
-
     // mounted: {},
 };
 </script>

+ 109 - 50
src/views/systemManagement/clusteringDetail.vue

@@ -9,53 +9,68 @@
             class="flexBox"
         >
             <div class="formItemBox">
-                <el-form-item label="节点名称:" prop="a1">
+                <el-form-item label="账户名称:" prop="userName">
                     <el-input
                         placeholder="请输入"
-                        maxlength="30"
-                        v-autoTrim="{ obj: form, key: 'a1' }"
-                        v-model="form.a1"
+                        readOnly
+                        v-autoTrim="{ obj: form, key: 'userName' }"
+                        v-model="form.userName"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="节点地址:" prop="a2">
-                    <el-input
-                        placeholder="请输入"
-                        maxlength="100"
-                        v-autoTrim="{ obj: form, key: 'a2' }"
-                        v-model="form.a2"
-                    >
-                    </el-input>
+                <el-form-item label="独占类型:" prop="userType">
+                    <el-select v-model="form.userType" disabled>
+                        <el-option
+                            v-for="item in userTypeList"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
                 </el-form-item>
-                <el-form-item label="节点类型:" prop="a3">
+                <el-form-item label="仿真软件license数量:" prop="numSimulationLicense">
                     <el-input
                         placeholder="请输入"
-                        maxlength="100"
-                        v-autoTrim="{ obj: form, key: 'a3' }"
-                        v-model="form.a3"
+                        maxlength="20"
+                        v-autoTrim="{ obj: form, key: 'numSimulationLicense' }"
+                        v-model="form.numSimulationLicense"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="适用类型:" prop="a4">
+                <el-form-item label="到期时间:" prop="dateSimulationLicense">
+                    <el-date-picker
+                        v-model="form.dateSimulationLicense"
+                        type="date"
+                        placeholder="选择日期"
+                        value-format="yyyy-MM-dd"
+                    ></el-date-picker>
+                </el-form-item>
+                <el-form-item label="动力学软件license数量:" prop="numDynamicLicense">
                     <el-input
                         placeholder="请输入"
-                        maxlength="100"
-                        v-autoTrim="{ obj: form, key: 'a4' }"
-                        v-model="form.a4"
+                        maxlength="20"
+                        v-autoTrim="{ obj: form, key: 'numDynamicLicense' }"
+                        v-model="form.numDynamicLicense"
                     >
                     </el-input>
                 </el-form-item>
+                <el-form-item label="到期时间:" prop="dateDynamicLicense">
+                    <el-date-picker
+                        v-model="form.dateDynamicLicense"
+                        type="date"
+                        placeholder="选择日期"
+                        value-format="yyyy-MM-dd"
+                    ></el-date-picker>
+                </el-form-item>
             </div>
         </el-form>
-        <div class="title">公有</div>
+        <div class="title">历史记录</div>
         <tableList
             ref="table"
             style="width:60%;min-width: 900px;margin: auto;"
             :columns="columns"
             :getDataWay="getDataWay"
-            :checkedData="checkedData"
             index
-            selection
         >   
         </tableList>
         <div class="btns">
@@ -73,60 +88,104 @@ export default {
     components: {tableList},
     data() {
         return {
+            userTypeList: [],
             getDataWay:{
-                //dataType: "url",
-                dataType: "data",
+                dataType: "url",
                 type: "post",
-                // firstRequest: false,
-                // data: this.$api.algorithmsLibrary.selectSharedAlgorithmList,
-                data:[{a1:'1',a2:'2',a3:'3',a4:'4'}],
-                param: {},
+                firstRequest: false,
+                data: this.$api.systemManagement.getClusterHistory,
+                param: {
+                    //userId: this.$route.query.userId
+                },
             },
             columns: [
                 //表格列
                 {
-                    label: "账户名",
-                    prop: "a1",
+                    label: "仿真软件license",
+                    prop: "numSimulationLicense",
                 },
                 {
-                    label: "账户类型",
-                    prop: "a2",
+                    label: "到期时间",
+                    prop: "dateSimulationLicense",
+                    formatter:(data)=>{
+                        return data.dateSimulationLicense.slice(0,10)
+                    }
                 },
                 {
-                    label: "联系人",
-                    prop: "a3",
+                    label: "动力学软件license",
+                    prop: "numDynamicLicnese",
                 },
                 {
-                    label: "联系方式",
-                    prop: "a4",
+                    label: "到期时间",
+                    prop: "dateDynamicLicense",
+                    formatter:(data)=>{
+                        return data.dateDynamicLicense.slice(0,10)
+                    }
                 },
+                {
+                    label: "操作时间",
+                    prop: "modifyTime",
+                    formatter:(data)=>{
+                        return data.modifyTime.slice(0,10)
+                    }
+                }
             ],
             form: {
-                a1:'',
-                a2:'',
-                a3:'',
-                a4:''
+                userName:"",
+                id: "",
+                userId: "",
+                numSimulationLicense: "",
+                dateSimulationLicense: "",
+                numDynamicLicense: "",
+                dateDynamicLicense: ""
             },
-            
             rules: {
+                numSimulationLicense: [{ required: true, message: "请输入", trigger: "blur" }],
+                dateSimulationLicense: [{ required: true, message: "请选择", trigger: "blur" }],
+                numDynamicLicense: [{ required: true, message: "请输入", trigger: "blur" }],
+                dateDynamicLicense: [{ required: true, message: "请选择", trigger: "blur" }]
             }
         };
     },
-
+    created(){
+        if(this.$route.query.userId){
+            this.form = {...this.$route.query}
+            delete this.form.modifyTime
+        }
+    },
+    async mounted() {
+        if(this.$route.query.userId){
+            this.getDataWay.param = {
+                userId: this.$route.query.userId
+            }
+            this.$refs.table.loadData()
+        }
+        await this.$dicsListsInit({
+            userTypeList: "useType"
+        });
+    },
     computed: {},
-
     methods: {
         save(){
-
+            this.$axios({
+                method:"POST",
+                url:this.$api.systemManagement.saveCluster,
+                data:{
+                    ...this.form
+                }
+            }).then(res=>{
+                if(res.code == 200){
+                    this.$message.success("保存成功");
+                    this.cancel()
+                }else{
+                    this.$message.error(res.message || "保存失败");
+                }
+            })
         },
         cancel(){
-
+            this.$router.replace({path: '/clusteringManagement'})
         },
     },
-
-    mounted() {
-        
-    },
 };
 </script>
 

+ 127 - 35
src/views/systemManagement/clusteringManagement.vue

@@ -5,41 +5,60 @@
             <template slot="searchItem1">
                 <span class="label">分配账户</span>
                 <el-input
-                    v-model="searchParams.a1"
+                    v-model="searchParams.userName"
                     size="small"
                     clearable
                     placeholder="请输入"
                 >
                 </el-input>
             </template>
+            <template slot="searchItem2">
+                <span class="label">操作时间</span>
+                <el-date-picker
+                    v-model="modifyTimeRange"
+                    type="daterange"
+                    format="yyyy-MM-dd"
+                    value-format="yyyy-MM-dd"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                >
+                </el-date-picker>
+            </template>
             <template slot="searchItem3">
-                <span class="label">节点类型</span>
-                <el-select v-model="searchParams.a2">
-                    <el-option
-                        v-for="item in list"
-                        :label="item.caption"
-                        :value="item.code"
-                        :key="item.code"
-                    ></el-option>
-                </el-select>
+                <span class="label">到期时间</span>
+                <el-date-picker
+                    v-model="dueTimeRange"
+                    type="daterange"
+                    format="yyyy-MM-dd"
+                    value-format="yyyy-MM-dd"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                >
+                </el-date-picker>
             </template>
             <template slot="searchBtn1">
-                <el-button type="primary">查询</el-button>
+                <el-button type="primary" @click="doSearch">查询</el-button>
             </template>
             <template slot="searchBtn2">
-                <el-button type="primary">重置</el-button>
+                <el-button type="primary" @click="reset">重置</el-button>
             </template>
         </search-layout>
 
-        <div class="btnsPanel">
+        <!--<div class="btnsPanel">
             <el-button
                 type="primary"
                 icon="el-icon-circle-plus-outline"
                 @click="addConfig"
                 >新建配置</el-button
             >
-        </div>
+        </div>-->
 
+        <div style="border-top: none; margin: 30px 40px 10px 40px">
+            <span>仿真软件已分配未到期节点数量:{{totalSimulation}}</span>
+            <span style="margin-left: 20%">动力学软件已分配未到期节点数量:{{totalDynamic}}</span>
+        </div>
         <tableList
             ref="table"
             style="border-top: none; margin: 0 30px"
@@ -47,18 +66,20 @@
             :getDataWay="getDataWay"
             :pagination="pagination"
             index
-            selection
         >
+            <el-table-column label="独占类型" slot="userType" align="center">
+                <template v-slot="scope">
+                    <span>
+                        {{(userTypeList.find(item=>item.code==scope.row.userType)||{}).caption||''}}
+                    </span>
+                </template>
+            </el-table-column>
             <el-table-column label="操作" slot="cgInfos" align="center">
                 <template v-slot="scope">
                     <i
                         @click="addMarkDia(scope.row)"
                         class="el-icon-edit-outline elIcon"
                     ></i>
-                    <i
-                        @click="addMarkDia(scope.row)"
-                        class="el-icon-video-pause elIcon"
-                    ></i>
                 </template>
             </el-table-column>
         </tableList>
@@ -76,26 +97,50 @@ export default {
         return {
             searchParams: {
                 //搜索参数
-
+                userName: "",
+                dueTimeStart: "",
+                dueTimeEnd: "",
+                modifyTimeStart: "",
+                modifyTimeEnd: ""
             },
+            modifyTimeRange:[],
+            dueTimeRange:[],
             list: [],
+            totalSimulation:0,
+            totalDynamic:0,
+            userTypeList:[],
             columns: [
                 //表格列
                 {
-                    label: "节点ID",
-                    prop: "a1",
+                    label: "账户名称",
+                    prop: "userName",
+                },
+                {
+                    label: "独占类型",
+                    prop: "userType",
+                    template:true
                 },
                 {
-                    label: "节点类型",
-                    prop: "a2",
+                    label: "仿真软件license",
+                    prop: "numSimulationLicense",
                 },
                 {
-                    label: "适用类型",
-                    prop: "a3",
+                    label: "到期时间",
+                    prop: "dateSimulationLicense",
+                    formatter:(data)=>{
+                        return data.dateSimulationLicense.slice(0,10)
+                    }
                 },
                 {
-                    label: "分配账户",
-                    prop: "a4",
+                    label: "动力学软件license",
+                    prop: "numDynamicLicense",
+                },
+                {
+                    label: "到期时间",
+                    prop: "dateDynamicLicense",
+                    formatter:(data)=>{
+                        return data.dateDynamicLicense.slice(0,10)
+                    }
                 },
                 {
                     label: "操作",
@@ -112,21 +157,68 @@ export default {
                 layout: "sizes, total, prev, pager, next, jumper",
             },
             getDataWay: {
-                //dataType: "url",
-                dataType: "data",
+                dataType: "url",
                 type: "post",
-                // firstRequest: false,
-                // data: this.$api.algorithmsLibrary.selectSharedAlgorithmList,
-                data:[{a1:'1',a2:'2',a3:'3',a4:'4',a5:'5',a6:'6'}],
+                data: this.$api.systemManagement.getClusterList,
                 param: {},
             },
         };
     },
+    created(){
+        //获取未到期已分配节点数量
+        this.$axios({
+            method:'POST',
+            url:this.$api.systemManagement.getClusterNum,
+            data:{}
+        }).then(res=>{
+            if(res.code=='200'){
+                this.totalSimulation=res.info.totalSimulation
+                this.totalDynamic=res.info.totalDynamic
+            }
+        })
+    },
+    async mounted(){
+        await this.$dicsListsInit({
+            userTypeList: "useType"
+        });
+    },
     methods: {
+        doSearch(){
+            this.searchParams.modifyTimeStart=this.modifyTimeRange[0]||''
+            this.searchParams.modifyTimeEnd=this.modifyTimeRange[1]||''
+            this.searchParams.dueTimeStart=this.modifyTimeRange[0]||''
+            this.searchParams.dueTimeEnd=this.modifyTimeRange[1]||''
+            this.refreshList(this.searchParams)
+        },
+        reset(){
+            this.searchParams = {
+                userName: "",
+                dueTimeStart: "",
+                dueTimeEnd: "",
+                modifyTimeStart: "",
+                modifyTimeEnd: ""
+            }
+            this.modifyTimeRange=[]
+            this.dueTimeRange=[]
+            this.refreshList(this.searchParams)
+        },
+        refreshList(param) {
+            param
+                ? this.$refs["table"].loadData(param)
+                : this.$refs["table"].loadData();
+        },
         addConfig() {
-            this.$router.push({ path: "/clusteringDetail" });
+            this.$router.push({
+                path:'/clusteringDetail'
+            })
+        },
+        addMarkDia(row) {
+            let query = {...row}
+            this.$router.push({
+                path:'/clusteringDetail',
+                query
+            })
         },
-        addMarkDia() {},
     },
 };
 </script>

+ 292 - 0
src/views/systemManagement/editAccount.vue

@@ -0,0 +1,292 @@
+<template>
+    <div>
+        <div class="flexBox box">
+            <el-form
+                ref="form"
+                :model="form"
+                :rules="rules"
+                label-width="108px"
+            >
+                <el-form-item label="账户名称:" prop="username">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        v-autoTrim="{ obj: form, key: 'username' }"
+                        v-model="form.username"
+                    >
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="账户类型:" prop="roleCode">
+                    <el-select v-model="form.roleCode" disabled>
+                        <el-option
+                            v-for="item in roleCodeList"
+                            :label="item.caption"
+                            :value="item.code"
+                            :key="item.code"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+
+                <el-form-item label="所属公司:" prop="company">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form.company, key: 'company' }"
+                        v-model="form.company"
+                    >
+                    </el-input>
+                </el-form-item>
+
+                <el-form-item label="联系人:" prop="nickname">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form.nickname, key: 'nickname' }"
+                        v-model="form.nickname"
+                    >
+                    </el-input>
+                </el-form-item>
+                
+                <el-form-item label="联系方式:" prop="phone">
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form.phone, key: 'password' }"
+                        v-model="form.phone"
+                    >
+                    </el-input>
+                </el-form-item>
+                
+                <el-form-item label="密码:" prop="password">
+                    <el-input
+                        placeholder="请输入"
+                        type="password"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form.password, key: 'password' }"
+                        v-model="form.password"
+                    >
+                    </el-input>
+                </el-form-item>
+
+                <el-form-item label="确认密码:" prop="password">
+                    <el-input
+                        placeholder="请输入"
+                        type="password"
+                        maxlength="15"
+                        v-autoTrim="{ obj: form.password, key: 'password' }"
+                        v-model="form.password"
+                    >
+                    </el-input>
+                </el-form-item>
+
+                <el-form-item label="独占类型:" prop="useType">
+                    <el-radio v-for="item in useTypeList" :key="item.code" :label="item.code" v-model="form.useType">{{item.caption}}</el-radio>
+                </el-form-item>
+
+                <div class="btns">
+                    <el-button type="primary" @click="saveForm">保存</el-button>
+                    <el-button type="primary" plain @click="cancel"
+                    >取消</el-button>
+                </div>
+            </el-form>
+            <div class="fileBox">
+                <div class="photo">
+                    <img :src="imgSrc" width="100%" height="100%" />
+                </div>
+                <!--<div class="uploadBox">
+                    <el-button type="primary" plain icon="el-icon-upload2"
+                        >上传头像</el-button
+                    >
+                </div>-->
+            </div>
+        </div>
+
+        <el-dialog
+            title="编辑账户"
+            :visible.sync="dialogVisible"
+            width="690px"
+            :close-on-click-modal="false"
+            :close-on-press-escape="false"
+        >
+            <el-form
+                ref="formA"
+                :model="formA"
+                :rules="rulesA"
+                label-width="108px"
+            >
+                <el-form-item
+                    label="手机验证码:"
+                    prop="name"
+                    class="getCodeBox"
+                >
+                    <el-input
+                        placeholder="请输入"
+                        maxlength="30"
+                        class="name"
+                        v-autoTrim="{ obj: form, key: 'name' }"
+                        v-model="formA.name"
+                    >
+                        <el-button slot="append" type="primary"
+                            >获取验证码</el-button
+                        >
+                    </el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer">
+                <el-button type="primary" @click="dialogVisible = false"
+                    >确 定</el-button
+                >
+                <el-button @click="dialogVisible = false">取 消</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+//import  from '';
+
+export default {
+    name: "editAccount", // 创建账户
+    components: {},
+    data() {
+        return {
+            list: [],
+            roleCodeList: [],
+            useTypeList:[],  //占用类型
+            imgSrc: require("@/assets/common/image/photoF.png"),
+            form: {
+                id: "",
+                username: "",
+                roleCode: "",
+                company: "",
+                nickname: "",
+                phone: "",
+                password: "",
+                useType: ""
+            },
+            rules: {
+                username: [{ required: true, message: "请输入", trigger: "blur" }],
+                roleCode: [{ required: true, message: "请选择", trigger: "change" }],
+                company: [{ required: true, message: "请输入", trigger: "blur" }],
+                nickname: [{ required: true, message: "请输入", trigger: "blur" }],
+                phone: [{ required: true, message: "请输入", trigger: "blur" }],
+                password: [{ required: true, message: "请输入", trigger: "blur" }],
+                useType: [{ required: true, message: "请选择", trigger: "change" }],
+            },
+            formA: {
+                name: "",
+            },
+            rulesA: {
+                name: [{ required: true, message: "请输入", trigger: "blur" }],
+            },
+            dialogVisible: false,
+        };
+    },
+    async created(){
+        if(this.$route.query){
+            this.form = {...this.$route.query}
+        }
+    },
+    async mounted() {
+        await this.$dicsListsInit({
+            roleCodeList: "roleCode",
+            useTypeList: "useType"
+        });
+    },
+    computed: {
+
+    },
+    methods: {
+        saveForm(){
+            this.$axios({
+                method:'POST',
+                url:this.$api.systemManagement.saveUser,
+                data:{
+                    ...this.form
+                }
+            }).then(res => {
+                if(res.code == 200){
+                    this.$message.success("保存成功");
+                    this.cancel()      
+                }else{
+                    this.$message.error(res.message || "保存失败");
+                }
+            })
+        },
+        cancel() {
+            this.$router.replace({
+                path: '/accountManagement'
+            })
+        },
+    },
+    // mounted: {},
+};
+</script>
+
+<style lang='less' scoped>
+.flexBox.box {
+    padding-top: 45px;
+}
+
+.el-form {
+    flex: 1;
+    padding-bottom: 45px;
+
+    /deep/ .el-input,
+    .el-select {
+        width: 100%;
+    }
+}
+
+.fileBox {
+    text-align: right;
+    padding: 0 5% 0 10%;
+
+    .til {
+        width: 210px;
+        padding-bottom: 10px;
+        margin: 0 auto;
+        text-align: left;
+    }
+
+    .photo {
+        display: inline-block;
+        width: 210px;
+        height: 210px;
+        line-height: 210px;
+        // border-radius: 50%;
+        overflow: hidden;
+
+        // img {
+        //     vertical-align: middle;
+        // }
+    }
+}
+
+.uploadBox {
+    padding-top: 30px;
+    text-align: center;
+}
+
+.editBox {
+    width: 15%;
+    padding-left: 4%;
+    text-align: left;
+}
+
+.btns {
+    padding-top: 30px;
+    text-align: center;
+}
+
+.getCodeBox {
+    .el-button {
+        background-color: @themeColor;
+        color: #ffffff;
+    }
+
+    /deep/ .el-input-group__append {
+        border: 1px solid transparent;
+    }
+}
+</style>

+ 69 - 53
src/views/systemManagement/parameterDetail.vue

@@ -1,7 +1,7 @@
 <!--新增、编辑、查看参数详情-->
 <template>
     <div>
-        <div class="title">选择普通账户</div>
+        <!--<div class="title">选择普通账户</div>
         <tableList
             ref="table"
             style="width:60%;min-width: 900px;margin: auto;"
@@ -12,39 +12,45 @@
             selection
         >
             
-        </tableList>
+        </tableList>-->
         <el-form
             ref="form"
             :model="form"
             :rules="rules"
-            label-width="200px"
+            label-width="220px"
             class="flexBox"
         >
             <div class="formItemBox">
-                <el-form-item label="可创建子账户数量:" prop="projectName">
+                <el-form-item label="账户名称:" prop="userName">
+                    {{form.userName}}
+                </el-form-item>
+                <el-form-item label="可创建子账户数量:" prop="numCreateUser">
                     <el-input
+                        type="number"
                         placeholder="请输入"
-                        maxlength="30"
-                        v-autoTrim="{ obj: form, key: 'projectName' }"
-                        v-model="form.projectName"
+                        maxlength="10"
+                        v-autoTrim="{ obj: form, key: 'numCreateUser' }"
+                        v-model="form.numCreateUser"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="最多可创建场景测试包数量:" prop="parallelism">
+                <el-form-item label="最多可创建场景测试包数量:" prop="numCreateScenePackage">
                     <el-input
+                        type="number"
                         placeholder="请输入"
-                        maxlength="100"
-                        v-autoTrim="{ obj: form, key: 'parallelism' }"
-                        v-model="form.parallelism"
+                        maxlength="10"
+                        v-autoTrim="{ obj: form, key: 'numCreateScenePackage' }"
+                        v-model="form.numCreateScenePackage"
                     >
                     </el-input>
                 </el-form-item>
-                <el-form-item label="场景数据包的最大场景数量:" prop="maxSimulationTime">
+                <el-form-item label="场景数据包的最大场景数量:" prop="numScenePerPackage">
                     <el-input
+                        type="number"
                         placeholder="请输入"
-                        maxlength="100"
-                        v-autoTrim="{ obj: form, key: 'maxSimulationTime' }"
-                        v-model="form.maxSimulationTime"
+                        maxlength="10"
+                        v-autoTrim="{ obj: form, key: 'numScenePerPackage' }"
+                        v-model="form.numScenePerPackage"
                     >
                     </el-input>
                 </el-form-item>
@@ -67,57 +73,60 @@ export default {
     components: {tableList},
     data() {
         return {
-            getDataWay:{
-                //dataType: "url",
-                dataType: "data",
-                type: "post",
-                // firstRequest: false,
-                // data: this.$api.algorithmsLibrary.selectSharedAlgorithmList,
-                data:[{a1:'1',a2:'2',a3:'3',a4:'4'}],
-                param: {},
-            },
-            columns: [
-                //表格列
-                {
-                    label: "账户名",
-                    prop: "a1",
-                },
-                {
-                    label: "账户类型",
-                    prop: "a2",
-                },
-                {
-                    label: "联系人",
-                    prop: "a3",
-                },
-                {
-                    label: "联系方式",
-                    prop: "a4",
-                },
-            ],
             form: {
-                
+                id:'',
+                userId:'',
+                userName:'111',
+                numCreateUser: '',
+                numCreateScenePackage: '',
+                numScenePerPackage: '',
             },
-            
             rules: {
+                numCreateUser:  [{ required: true, message: "请输入", trigger: "blur" }],
+                numCreateScenePackage:  [{ required: true, message: "请输入", trigger: "blur" }],
+                numScenePerPackage:  [{ required: true, message: "请输入", trigger: "blur" }],
             }
         };
     },
-
     computed: {},
-
+    async created(){
+        if(this.$route.query){
+            this.form = {...this.$route.query}
+            delete this.form.modifyTime
+        }
+        /*获取修改历史
+        this.$axios({
+            method:'POST',
+            url:this.$api.systemManagement.getParamHistory,
+            data:{
+                userId: this.$route.query.userId
+            }
+        })
+        */
+    },
     methods: {
         save(){
-
+            this.$axios({
+                method:'POST',
+                url:this.$api.systemManagement.saveParameter,
+                data:{
+                    ...this.form
+                }
+            }).then(res => {
+                if(res.code == 200){
+                    this.$message.success("保存成功");
+                    this.cancel()    
+                }else{
+                    this.$message.error(res.message || "保存失败");
+                }
+            })
         },
         cancel(){
-
+            this.$router.replace({
+                path: '/parameterManagement'
+            })
         },
     },
-
-    mounted() {
-        
-    },
 };
 </script>
 
@@ -156,4 +165,11 @@ export default {
     font-size: 16px;
     font-weight: bold;
 }
+/deep/ input::-webkit-outer-spin-button,
+/deep/ input::-webkit-inner-spin-button {
+  -webkit-appearance: none !important;
+}
+/deep/ input[type='number'] {
+  -moz-appearance: textfield !important;
+}
 </style>

+ 24 - 20
src/views/systemManagement/parameterManagement.vue

@@ -5,7 +5,7 @@
             <template slot="searchItem1">
                 <span class="label">账户名</span>
                 <el-input
-                    v-model="searchParams.algorithmCode"
+                    v-model="searchParams.userName"
                     size="small"
                     clearable
                     placeholder="请输入"
@@ -23,13 +23,13 @@
         </search-layout>
 
         <div class="myTabsBox myTabsBoxThreeTabs">
-            <el-button
+            <!--<el-button
                 v-bind:class="{ addBtn: true}"
                 icon="el-icon-circle-plus-outline"
                 @click="addOne"
                 type="primary"
                 >新增参数配置</el-button
-            >
+            >-->
         </div>
 
         <tableList
@@ -47,11 +47,11 @@
                         class="el-icon-edit-outline elIcon"
                         title="编辑"
                     ></i>
-                    <i
+                    <!--<i
                         @click="delOne(scope.row)"
                         class="el-icon-delete elIcon"
                         title="删除"
-                    ></i>
+                    ></i>-->
                 </template>
             </el-table-column>
         </tableList>
@@ -69,35 +69,35 @@ export default{
         return {
             searchParams: {
                 //搜索参数
-                
+                userName:''
             },
-            validationStatusList: [],
             getDataWay:{
-                //dataType: "url",
-                dataType: "data",
+                dataType: "url",
                 type: "post",
-                // firstRequest: false,
-                // data: this.$api.algorithmsLibrary.selectSharedAlgorithmList,
-                data:[{a1:'1',a2:'2',a3:'3',a4:'4'}],
+                data: this.$api.systemManagement.getParameterList,
                 param: {},
             },
             columns: [
                 //表格列
                 {
-                    label: "账户名",
-                    prop: "a1",
+                    label: "账户名",
+                    prop: "userName",
                 },
                 {
                     label: "可创建子账户数量",
-                    prop: "a2",
+                    prop: "numCreateUser",
                 },
                 {
                     label: "最多可创建场景测试包数量",
-                    prop: "a3",
+                    prop: "numCreateScenePackage",
                 },
                 {
                     label: "场景数量包的最大场景数",
-                    prop: "a4",
+                    prop: "numScenePerPackage",
+                },
+                {
+                    label: "创建时间",
+                    prop: "modifyTime"
                 },
                 {
                     label: "操作",
@@ -128,7 +128,7 @@ export default{
         },
         doReset() {
             this.searchParams = {
-                
+                userName:''
             };
             this.doSearch();
         },
@@ -136,7 +136,11 @@ export default{
             this.$router.push("/parameterDetail")
         },
         editRow(row) {
-            
+            let query = {...row}
+            this.$router.push({
+                path: 'parameterDetail',
+                query
+            })
         },
         delOne(row) {
             this.$confirm("确认是否删除?", "提示", {
@@ -163,6 +167,6 @@ export default{
     }
 }
 .myTabsBox{
-    min-height:99px;
+    min-height:29px;
 }
 </style>