Browse Source

金融机构账号设置

reloaded 5 years ago
parent
commit
2b74f6e2a1

+ 50 - 0
src/layout/common/detailTopInfo.vue

@@ -0,0 +1,50 @@
+<template>
+  <div id="detailTopInfo">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="20" class="menu">
+          <el-breadcrumb separator-class="el-icon-arrow-right">
+            <el-breadcrumb-item>所在位置:</el-breadcrumb-item>
+            <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+            <el-breadcrumb-item>{{ topTitle }}</el-breadcrumb-item>
+          </el-breadcrumb>
+        </el-col>
+        <span v-if="display === 'block'">
+          <el-col :span="4" class="btn">
+            <el-button>操作按钮</el-button>
+          </el-col>
+        </span>
+        <span v-else> </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'detailTopInfo',
+  props: {
+    topTitle: null,
+    display: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.menu {
+  padding: 14px 0;
+}
+.btn {
+  padding: 5px 0;
+  text-align: right;
+}
+/deep/.btn .el-button {
+  background: red;
+  color: #fff;
+}
+</style>

+ 285 - 0
src/layout/institutionInfo/detailInfo.vue

@@ -0,0 +1,285 @@
+<template>
+  <div id="mainForm">
+    <el-row>
+      <el-col :span="24" class="mainForm">
+        <el-col :span="24" class="top">
+          <span class="shu"></span><span class="title">{{ formTitle }}</span>
+        </el-col>
+        <el-col :span="24">
+          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="130px" class="demo-ruleForm">
+            <el-col :span="24">
+              <el-form-item label="金融机构名称:" prop="name">
+                <el-input v-model="ruleForm.name" placeholder="请输入金融机构名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构logo:" prop="logo">
+                <upload
+                  :limit="1"
+                  tip="请上传500×500px的图片,大小不超过2M"
+                  :data="ruleForm.logo"
+                  type="logo"
+                  :url="`/files/teacher/upload`"
+                  @upload="uploadSuccess"
+                ></upload>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构类型:" prop="type">
+                <el-select v-model="ruleForm.type" placeholder="请选择机构类型">
+                  <el-option label="能发布债权产品" value="0"></el-option>
+                  <el-option label="能发布股权产品" value="1"></el-option>
+                  <el-option label="既能发布债权产品又能发布股权产品" value="2"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="融资轮次:">
+                <el-select v-model="ruleForm.round" multiple placeholder="请选择融资轮次">
+                  <el-option v-for="item in rzlc" :key="item.value" :label="item.name" :value="item.name"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="组织形式:">
+                <el-input v-model="ruleForm.form" placeholder="请输入组织形式"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="法定代表人:">
+                <el-input v-model="ruleForm.representative" placeholder="请输入法定代表人"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="办公区域:">
+                <el-input v-model="ruleForm.business_addr" placeholder="请输入办公区域"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="注册地址:">
+                <el-input v-model="ruleForm.registered_addr" placeholder="请输入注册地址"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="创立时间:">
+                <el-input v-model="ruleForm.establish_time" placeholder="请输入创立时间"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="所属行业:">
+                <el-select v-model="ruleForm.profession" multiple placeholder="请选择">
+                  <el-option v-for="item in options" :key="item.value" :label="item.name" :value="item.name"> </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="组织机构号码:">
+                <el-input v-model="ruleForm.code" placeholder="请输入组织机构号码"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="所属地区:">
+                <el-input v-model="ruleForm.belong_addr" placeholder="请输入所属地区"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="管理资金规模:">
+                <el-input v-model="ruleForm.size" placeholder="请输入管理资金规模"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="注册资本:">
+                <el-input v-model="ruleForm.registered_capital" placeholder="请输入注册资本"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="实缴资金:">
+                <el-input v-model="ruleForm.contributed_capital" placeholder="请输入实缴资金"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构简介:">
+                <el-input v-model="ruleForm.introduction" type="textarea" placeholder="请输入机构简介"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24"> </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="发布状态:">
+                <el-select v-model="ruleForm.status" placeholder="请选择发布状态">
+                  <el-option label="草稿" value="0"></el-option>
+                  <el-option label="待审核" value="1"></el-option>
+                  <el-option label="已发布" value="2"></el-option>
+                  <el-option label="已下架" value="3"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" class="clickBtn">
+              <el-form-item>
+                <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
+                <el-button @click="resetForm('ruleForm')">取消</el-button>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload.vue';
+export default {
+  name: 'mainForm',
+  props: {
+    formTitle: null,
+    ruleForm: null,
+    options: null,
+    rzlc: null,
+  },
+  components: {
+    upload, //图片上传
+  },
+  data: () => ({
+    rules: {
+      name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
+      type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }],
+      logo: [{ required: true, message: '请上传机构logo', trigger: 'blur' }],
+      status: [{ required: true, message: '请选择发布状态', trigger: 'blur' }],
+    },
+
+    props: { multiple: true },
+
+    value: [],
+    value: [],
+
+    value1: [],
+    value2: [],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleChange(value) {
+      console.log(value);
+    },
+    submitForm(ruleForm) {
+      this.$emit('submitForm', { data: this.ruleForm });
+    },
+    resetForm() {
+      this.$emit('resetForm');
+    },
+
+    uploadSuccess({ type, data }) {
+      if (type !== 'logo') {
+        let arr = _.get(this.ruleForm, type);
+        if (arr !== undefined) {
+          this.ruleForm[type].push({ name: data.name, uri: data.uri });
+        } else {
+          let newArr = [{ name: data.name, uri: data.uri }];
+          this.$set(this.ruleForm, `${type}`, newArr);
+        }
+      } else {
+        this.$set(this.ruleForm, `${type}`, data.uri);
+      }
+    },
+    clickDown() {},
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.top .shu {
+  float: left;
+  width: 4px;
+  height: 20px;
+  background: rgba(233, 2, 29, 1);
+}
+.top .title {
+  float: left;
+  padding: 0 10px;
+  font-size: 16px;
+  font-family: Source Han Sans SC;
+  font-weight: bold;
+  color: rgba(40, 40, 40, 1);
+}
+/deep/.el-textarea__inner {
+  min-height: 100px !important;
+}
+/deep/.select {
+  width: 632px;
+}
+.selects {
+  width: 473px;
+  margin: 0 15px 0 0;
+}
+/deep/.el-radio__input.is-checked + .el-radio__label {
+  color: #e9021d;
+}
+/deep/.el-radio__input.is-checked .el-radio__inner {
+  border-color: #e9021d;
+  background: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked + .el-checkbox__label {
+  color: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
+.el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: #e9021d;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button,
+.el-checkbox-button__inner {
+  margin: 0 15px 0 0;
+}
+/deep/.el-checkbox-button__inner {
+  padding: 7px 5px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button__inner:hover {
+  color: #e9021d;
+}
+/deep/.el-checkbox-button:first-child .el-checkbox-button__inner {
+  border-left: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button:last-child .el-checkbox-button__inner {
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  color: #e9021d;
+  background-color: #ffffff;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  box-shadow: none;
+}
+/deep/.el-switch.is-checked .el-switch__core {
+  border-color: #e9021d;
+  background-color: #e9021d;
+}
+.clickBtn .el-button {
+  width: 100px;
+  height: 40px;
+  padding: 0;
+  color: #ffffff;
+  background: #b9b9b9;
+  border-radius: 4px;
+  margin: 40px;
+}
+.clickBtn {
+  text-align: center;
+  margin: 40px 0;
+  border-top: 1px solid #ccc;
+}
+.clickBtn .el-button:first-child {
+  background-color: #e9021d;
+}
+</style>

+ 18 - 8
src/layout/layout-part/menus.vue

@@ -4,15 +4,25 @@
       <el-menu-item index="/"> <i class="el-icon-s-home"></i>首页 </el-menu-item>
 
       <!--<el-submenu index="1">-->
-        <!--<template v-slot:title>-->
-          <!--<i class="el-icon-s-home"></i>-->
-          <!--<span>测试菜单</span>-->
-        <!--</template>-->
-        <!--<el-menu-item-group>-->
-          <!--<el-menu-item index="/test/index">二级菜单</el-menu-item>-->
-        <!--</el-menu-item-group>-->
+      <!--<template v-slot:title>-->
+      <!--<i class="el-icon-s-home"></i>-->
+      <!--<span>测试菜单</span>-->
+      <!--</template>-->
+      <!--<el-menu-item-group>-->
+      <!--<el-menu-item index="/test/index">二级菜单</el-menu-item>-->
+      <!--</el-menu-item-group>-->
       <!--</el-submenu>-->
-
+      <el-submenu index="1">
+        <template v-slot:title>
+          <i class="el-icon-s-grid"></i>
+          <span>账号设置</span>
+        </template>
+        <el-menu-item-group>
+          <el-menu-item index="/userInfo/index">个人信息管理</el-menu-item>
+          <el-menu-item index="/uppasswd/index">修改密码</el-menu-item>
+          <el-menu-item index="/institutionInfo/index">金融机构信息管理</el-menu-item>
+        </el-menu-item-group>
+      </el-submenu>
       <el-submenu index="2">
         <template v-slot:title>
           <i class="el-icon-s-grid"></i>

+ 146 - 0
src/layout/uppasswd/uppasswdForm.vue

@@ -0,0 +1,146 @@
+<template>
+  <div id="uppasswdForm">
+    <el-row>
+      <el-col :span="24" class="top">
+        <span class="shu"></span><span class="title">{{ formTitle }}</span>
+      </el-col>
+      <el-col :span="24" class="form">
+        <el-form :model="form" :rules="rules" label-width="100px">
+          <el-form-item label="旧密码" prop="oldpasswd">
+            <el-input type="password" v-model="form.oldpasswd" autocomplete="off" placeholder="请输入旧密码"></el-input>
+          </el-form-item>
+          <el-form-item label="新密码" prop="newpasswd">
+            <el-input type="password" v-model="form.newpasswd" autocomplete="off" placeholder="请输入新密码"></el-input>
+          </el-form-item>
+          <el-col :span="24" class="clickBtn">
+            <el-form-item>
+              <el-button type="primary" size="small" @click="submitForm('form')">提交</el-button>
+              <el-button size="small" @click="resetForm()">取消</el-button>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'uppasswdForm',
+  props: {
+    form: null,
+    formTitle: null,
+  },
+  components: {},
+  data: () => ({
+    rules: {
+      oldpasswd: [{ required: true, message: '请输入旧密码', trigger: 'blur' }],
+      newpasswd: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
+    },
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    submitForm() {
+      this.$emit('submitForm', { data: this.form });
+    },
+    resetForm() {
+      this.$emit('resetForm');
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.top .shu {
+  float: left;
+  width: 4px;
+  height: 20px;
+  background: rgba(233, 2, 29, 1);
+}
+.top .title {
+  float: left;
+  padding: 0 10px;
+  font-size: 16px;
+  font-family: Source Han Sans SC;
+  font-weight: bold;
+  color: rgba(40, 40, 40, 1);
+}
+/deep/.el-textarea__inner {
+  min-height: 100px !important;
+}
+/deep/.select {
+  width: 632px;
+}
+.selects {
+  width: 473px;
+  margin: 0 15px 0 0;
+}
+/deep/.el-radio__input.is-checked + .el-radio__label {
+  color: #e9021d;
+}
+/deep/.el-radio__input.is-checked .el-radio__inner {
+  border-color: #e9021d;
+  background: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked + .el-checkbox__label {
+  color: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
+.el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: #e9021d;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button,
+.el-checkbox-button__inner {
+  margin: 0 15px 0 0;
+}
+/deep/.el-checkbox-button__inner {
+  padding: 7px 5px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button__inner:hover {
+  color: #e9021d;
+}
+/deep/.el-checkbox-button:first-child .el-checkbox-button__inner {
+  border-left: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button:last-child .el-checkbox-button__inner {
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  color: #e9021d;
+  background-color: #ffffff;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  box-shadow: none;
+}
+/deep/.el-switch.is-checked .el-switch__core {
+  border-color: #e9021d;
+  background-color: #e9021d;
+}
+.clickBtn .el-button {
+  width: 100px;
+  height: 40px;
+  padding: 0;
+  color: #ffffff;
+  background: #b9b9b9;
+  border-radius: 4px;
+  margin: 40px;
+}
+.clickBtn {
+  text-align: center;
+  margin: 40px 0;
+  border-top: 1px solid #ccc;
+}
+.clickBtn .el-button:first-child {
+  background-color: #e9021d;
+}
+</style>

+ 150 - 0
src/layout/userInfo/userInfoForm.vue

@@ -0,0 +1,150 @@
+<template>
+  <div id="userInfoForm">
+    <el-row>
+      <el-col :span="24" class="top">
+        <span class="shu"></span><span class="title">{{ formTitle }}</span>
+      </el-col>
+      <el-col :span="24" class="form">
+        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+          <el-col :span="24">
+            <el-form-item label="用户名称" prop="name">
+              <el-input v-model="ruleForm.name" placeholder="请输入用户名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="手机号" prop="phone">
+              <el-input disabled v-model="ruleForm.phone" placeholder="请输入手机号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="clickBtn">
+            <el-form-item>
+              <el-button type="primary" size="small" @click="submitForm('ruleForm')">提交</el-button>
+              <el-button size="small" @click="resetForm('ruleForm')">取消</el-button>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'userInfoForm',
+  props: {
+    ruleForm: null,
+    formTitle: null,
+  },
+  components: {},
+  data: () => ({
+    rules: {
+      name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+      phone: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
+    },
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    submitForm() {
+      this.$emit('submitForm', { data: this.ruleForm });
+    },
+    resetForm() {
+      this.$emit('resetForm');
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.top .shu {
+  float: left;
+  width: 4px;
+  height: 20px;
+  background: rgba(233, 2, 29, 1);
+}
+.top .title {
+  float: left;
+  padding: 0 10px;
+  font-size: 16px;
+  font-family: Source Han Sans SC;
+  font-weight: bold;
+  color: rgba(40, 40, 40, 1);
+}
+/deep/.el-textarea__inner {
+  min-height: 100px !important;
+}
+/deep/.select {
+  width: 632px;
+}
+.selects {
+  width: 473px;
+  margin: 0 15px 0 0;
+}
+/deep/.el-radio__input.is-checked + .el-radio__label {
+  color: #e9021d;
+}
+/deep/.el-radio__input.is-checked .el-radio__inner {
+  border-color: #e9021d;
+  background: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked + .el-checkbox__label {
+  color: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
+.el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: #e9021d;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button,
+.el-checkbox-button__inner {
+  margin: 0 15px 0 0;
+}
+/deep/.el-checkbox-button__inner {
+  padding: 7px 5px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button__inner:hover {
+  color: #e9021d;
+}
+/deep/.el-checkbox-button:first-child .el-checkbox-button__inner {
+  border-left: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button:last-child .el-checkbox-button__inner {
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  color: #e9021d;
+  background-color: #ffffff;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  box-shadow: none;
+}
+/deep/.el-switch.is-checked .el-switch__core {
+  border-color: #e9021d;
+  background-color: #e9021d;
+}
+.clickBtn .el-button {
+  width: 100px;
+  height: 40px;
+  padding: 0;
+  color: #ffffff;
+  background: #b9b9b9;
+  border-radius: 4px;
+  margin: 40px;
+}
+.clickBtn {
+  text-align: center;
+  margin: 40px 0;
+  border-top: 1px solid #ccc;
+}
+.clickBtn .el-button:first-child {
+  background-color: #e9021d;
+}
+</style>

+ 15 - 0
src/router/index.js

@@ -24,6 +24,21 @@ const routes = [
     name: 'login',
     component: () => import('../views/login.vue'),
   },
+  // 修改密码
+  {
+    path: '/uppasswd/index',
+    component: () => import('../views/uppasswd/index.vue'),
+  },
+  // 个人信息管理
+  {
+    path: '/userInfo/index',
+    component: () => import('../views/userInfo/index.vue'),
+  },
+  // 个人信息管理
+  {
+    path: '/institutionInfo/index',
+    component: () => import('../views/institutionInfo/index.vue'),
+  },
   // 债权需求
   {
     path: '/businessneed/claim',

+ 34 - 0
src/store/dictionary.js

@@ -0,0 +1,34 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  companyuserInfo: `/api/financial/dictionary`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.companyuserInfo}`, { skip, limit, ...info });
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.companyuserInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.companyuserInfo}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.companyuserInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 6 - 0
src/store/index.js

@@ -7,6 +7,9 @@ import follow from './follow';
 import financeclaim from './financeclaim';
 import * as muta from './user/mutations';
 import * as states from './user/state';
+import otheruser from './otheruser';
+import institution from './institution';
+import dictionary from './dictionary';
 
 Vue.use(Vuex);
 
@@ -17,6 +20,9 @@ export default new Vuex.Store({
     stockneed,
     follow,
     financeclaim,
+    otheruser,
+    institution,
+    dictionary,
   },
   state: { ...states },
   mutations: { ...muta },

+ 38 - 0
src/store/institution.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  otheruserInfo: `/api/financial/institution`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.otheruserInfo}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.otheruserInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.otheruserInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.otheruserInfo}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.otheruserInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 44 - 0
src/store/otheruser.js

@@ -0,0 +1,44 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  otheruserInfo: `/api/financial/otheruser`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.otheruserInfo}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.otheruserInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.otheruserInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.otheruserInfo}/update/${id}`, data);
+    return res;
+  },
+
+  async updates({ commit }, { ...data }) {
+    const res = await this.$axios.$post(`${api.otheruserInfo}/uppasswd`, data);
+    return res;
+  },
+
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.otheruserInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 94 - 0
src/views/institutionInfo/index.vue

@@ -0,0 +1,94 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <detailTopInfo :topTitle="topTitle" :display="display"></detailTopInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <detailInfo :ruleForm="ruleForm" :rzlc="rzlc" :options="options" @submitForm="submitForm" @resetForm="resetForm" :formTitle="formTitle"></detailInfo>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import detailTopInfo from '@/layout/common/detailTopInfo.vue';
+import detailInfo from '@/layout/institutionInfo/detailInfo.vue';
+import { mapState, mapMutations, createNamespacedHelpers, mapGetters } from 'vuex';
+
+const { mapActions } = createNamespacedHelpers('institution');
+const { mapActions: Mapdictionary } = createNamespacedHelpers('dictionary');
+export default {
+  name: 'detail',
+  props: {},
+  components: {
+    detailTopInfo, //表单头部按钮
+    detailInfo, //表单内容
+  },
+  data: () => ({
+    topTitle: '金融机构',
+    display: 'block',
+    formTitle: '信息管理',
+    ruleForm: {},
+    options: [],
+    rzlc: [],
+  }),
+  created() {
+    this.search();
+    this.searchinfo();
+  },
+  computed: {
+    id() {
+      return this.user.userid;
+    },
+    ...mapState(['user']),
+  },
+  methods: {
+    ...mapActions(['query', 'delete', 'fetch', 'update']),
+    ...Mapdictionary({ list: 'query' }),
+    async search() {
+      const res = await this.fetch(this.id);
+      console.log(res.data);
+      this.$set(this, `ruleForm`, res.data);
+    },
+
+    async searchinfo() {
+      const val = await this.list();
+      console.log(val.data);
+      // var options = res.data.filter(item => item.type === '0');
+      // var rzlc = res.data.filter(item => item.type === '1');
+      this.$set(this, `options`, val.data);
+      this.$set(this, `rzlc`, val.data);
+    },
+    // 提交
+    submitForm(ruleForm) {
+      console.log(ruleForm);
+      let res = this.update(this.ruleForm);
+      this.$checkRes(res, '修改成功', '修改失败');
+      this.$router.push({ path: '/institution/index/0' });
+    },
+    // 取消
+    resetForm() {
+      this.$router.push({ path: '/financial/index' });
+    },
+    // 返回
+    goBack() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 50px;
+  margin: 0 0 10px 0;
+}
+.main {
+  min-height: 765px;
+  background: #ffffff;
+  padding: 20px;
+}
+</style>

+ 80 - 0
src/views/uppasswd/index.vue

@@ -0,0 +1,80 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24" class="debt">
+        <el-col :span="24" class="top">
+          <!-- <topInfo :topTitle="topTitle" :display="display"></topInfo> -->
+          <detailTopInfo :topTitle="topTitle" :display="display"></detailTopInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <uppasswdForm :form="form" :formTitle="formTitle" @submitForm="submitForm" @resetForm="resetForm"></uppasswdForm>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/common/topInfo.vue';
+import detailTopInfo from '@/layout/common/detailTopInfo.vue';
+import uppasswdForm from '@/layout/uppasswd/uppasswdForm.vue';
+import { mapState, mapMutations, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: otheruser } = createNamespacedHelpers('otheruser');
+export default {
+  name: 'detail',
+  props: {},
+  components: {
+    detailTopInfo, //头部导航
+    uppasswdForm, //头部返回
+  },
+  data: () => ({
+    topTitle: '账号设置',
+    display: 'block',
+
+    formTitle: '修改密码',
+    form: {},
+  }),
+  created() {},
+  computed: {
+    id() {
+      return this.user.uid;
+    },
+    ...mapState(['user']),
+  },
+  methods: {
+    ...otheruser(['query', 'fetch', 'update', 'create', 'updates']),
+    // 提交
+    async submitForm({ data }) {
+      const uid = this.user.uid;
+      let res = await this.updates({ ...data, uid });
+      if (res.errcode === 0) {
+        this.$router.push({ path: '/login' });
+        this.$message({
+          message: '修改密码成功',
+          type: 'success',
+        });
+      }
+    },
+    // 取消
+    resetForm() {
+      this.$router.push({ path: '/index' });
+    },
+    // 返回
+    goBack() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 50px;
+  margin: 0 0 10px 0;
+}
+.main {
+  min-height: 765px;
+  background: #ffffff;
+  padding: 20px;
+}
+</style>

+ 91 - 0
src/views/userInfo/index.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24" class="debt">
+        <el-col :span="24" class="top">
+          <!-- <topInfo :topTitle="topTitle" :display="display"></topInfo> -->
+          <detailTopInfo :topTitle="topTitle" :display="display"></detailTopInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <userInfoForm :ruleForm="ruleForm" :formTitle="formTitle" @submitForm="submitForm" @resetForm="resetForm"></userInfoForm>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/common/topInfo.vue';
+import detailTopInfo from '@/layout/common/detailTopInfo.vue';
+import userInfoForm from '@/layout/userInfo/userInfoForm.vue';
+import { mapState, mapMutations, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: otheruser } = createNamespacedHelpers('otheruser');
+export default {
+  name: 'detail',
+  props: {},
+  components: {
+    detailTopInfo, //头部导航
+    userInfoForm, //头部返回
+  },
+  data: () => ({
+    topTitle: '账号设置',
+    display: 'block',
+
+    formTitle: '个人信息管理',
+    ruleForm: {},
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    id() {
+      return this.user.uid;
+    },
+    ...mapState(['user']),
+  },
+  methods: {
+    ...otheruser(['query', 'fetch', 'update', 'create']),
+    async searchInfo() {
+      if (this.id) {
+        const res = await this.fetch(this.id);
+        this.$set(this, `ruleForm`, res.data);
+      }
+    },
+    // 提交
+    async submitForm({ data }) {
+      let res;
+      if (this.id) {
+        res = await this.update(data);
+        if (res.errcode === 0) {
+          this.$router.push({ name: 'login' });
+          this.$message({
+            message: '信息修改成功',
+            type: 'success',
+          });
+        }
+      }
+      console.log(res.data);
+    },
+    // 取消
+    resetForm() {
+      this.$router.push({ path: '/index' });
+    },
+    // 返回
+    goBack() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 50px;
+  margin: 0 0 10px 0;
+}
+.main {
+  min-height: 765px;
+  background: #ffffff;
+  padding: 20px;
+}
+</style>