From 79d9fc857559982b00b68b2d709807bdc4cd286f Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 11 Apr 2022 10:58:17 +0800
Subject: [PATCH] minio 地址修改

---
 src/page/login/codelogin.vue |  678 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 538 insertions(+), 140 deletions(-)

diff --git a/src/page/login/codelogin.vue b/src/page/login/codelogin.vue
index b5129c0..0aaef8f 100644
--- a/src/page/login/codelogin.vue
+++ b/src/page/login/codelogin.vue
@@ -1,146 +1,412 @@
 <template>
-  <el-form class="login-form"
-           status-icon
-           :rules="loginRules"
-           ref="loginForm"
-           :model="loginForm"
-           label-width="0">
-    <el-form-item prop="username">
-      <el-input size="small"
-                @keyup.enter.native="handleLogin"
-                v-model="loginForm.username"
-                auto-complete="off"
-                :placeholder="$t('login.username')">
-        <i slot="prefix" class="icon-yonghu"/>
-      </el-input>
-    </el-form-item>
-    <el-form-item prop="password">
-      <el-input size="small"
-                @keyup.enter.native="handleLogin"
-                v-model="loginForm.password"
-                auto-complete="off"
-                show-password
-                :placeholder="$t('login.password')">
-        <i slot="prefix" class="icon-mima"/>
-      </el-input>
-    </el-form-item>
-    <el-form-item prop="password2">
-      <el-input size="small"
-                @keyup.enter.native="handleLogin"
-                v-model="loginForm.password2"
-                auto-complete="off"
-                show-password
-                :placeholder="$t('login.password2')">
-        <i slot="prefix" class="icon-mima"/>
-      </el-input>
-    </el-form-item>
-    <el-form-item prop="sname">
-      <el-input size="small"
-                @keyup.enter.native="handleLogin"
-                v-model="loginForm.sname"
-                auto-complete="off"
-                :placeholder="$t('login.name')">
-        <i slot="prefix" class="icon-yonghu"/>
-      </el-input>
-    </el-form-item>
-    <el-form-item prop="cardid">
-      <el-input size="small"
-                v-model="loginForm.cardid"
-                auto-complete="off"
-                :placeholder="$t('login.cardid')">
-        <i slot="prefix" class="icon-shouji"/>
-      </el-input>
-    </el-form-item>
-    <avue-input-tree style="width:580px !important" :defaultExpandAll="false" v-model="loginForm.deptid" placeholder="请选择部门"
-                     type="tree"
-                     :dic="dic"></avue-input-tree>
-    <el-form-item class="z-login-submit-prv">
-      <el-button size="small"
-                 type="primary"
-                 @click.native.prevent="handleLogin"
-                 class="z-login-submit">{{ $t('login.zc') }}
-      </el-button>
-      <el-button size="small"
-                 @click.native.prevent="gbs"
-                 class="z-login-submit">{{ $t('login.gb') }}
-      </el-button>
-    </el-form-item>
-  </el-form>
+  <div>
+    <avue-tabs :option="option" @change="handleChange"></avue-tabs>
+    <span v-if="type.prop === 'tab1'">
+      <el-form
+        class="login-form"
+        status-icon
+        :rules="loginRules"
+        ref="loginForm"
+        :model="loginForm"
+        label-width="0"
+      >
+        <el-form-item prop="username">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleLogin"
+            v-model="loginForm.username"
+            auto-complete="off"
+            :placeholder="$t('login.username')"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-yonghu" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="password">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleLogin"
+            v-model="loginForm.password"
+            auto-complete="off"
+            show-password
+            :placeholder="$t('login.password')"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-mima" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="password2">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleLogin"
+            v-model="loginForm.password2"
+            auto-complete="off"
+            show-password
+            :placeholder="$t('login.password2')"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-mima" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="sname">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleLogin"
+            v-model="loginForm.sname"
+            auto-complete="off"
+            :placeholder="$t('login.name')"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-yonghu" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="cardid">
+          <el-input
+            size="small"
+            v-model="loginForm.cardid"
+            auto-complete="off"
+            :placeholder="$t('login.cardid')"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-shouji" />
+          </el-input>
+        </el-form-item>
+        <avue-input-tree
+          style="width: 580px !important"
+          :defaultExpandAll="loginForm.defaultFlag"
+          v-model="loginForm.deptid"
+          placeholder="请选择部门"
+          type="tree"
+          :dic="dic"
+        ></avue-input-tree>
+        <el-form-item class="z-login-submit-prv">
+          <el-button
+            size="small"
+            type="primary"
+            @click.native.prevent="handleLogin"
+            class="z-login-submit"
+            >{{ $t("login.zc") }}
+          </el-button>
+          <el-button
+            size="small"
+            @click.native.prevent="gbs"
+            class="z-login-submit"
+            >{{ $t("login.gb") }}
+          </el-button>
+        </el-form-item>
+      </el-form>
+    </span>
+    <!-- 企业注册 -->
+    <span v-else-if="type.prop === 'tab2'">
+      <el-form
+        class="login-form"
+        status-icon
+        :rules="unitRules"
+        ref="unitForm"
+        :model="unitForm"
+        label-width="0"
+      >
+        <el-form-item prop="deptName">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleUnitRegister"
+            v-model="unitForm.deptName"
+            auto-complete="off"
+            placeholder="企业名称"
+            clearable="true"
+          >
+            <i slot="prefix" class="el-icon-house" />
+          </el-input>
+        </el-form-item>
+        <div style="margin-top: -1.5rem">
+          <i
+            slot="prefix"
+            style="position: relative; top: 1.9rem; left: 0.5rem"
+            class="el-icon-position"
+          />
+          <div style="position: relative">
+            <el-form-item prop="jurisdiction">
+              <avue-input-tree
+                :props="props"
+                :parent="false"
+                :defaultExpandedKeys="defaultExpandedKeys"
+                v-model="unitForm.jurisdiction"
+                style="width: 35rem !important; padding-left: 0.9rem !important"
+                placeholder="请选择辖区"
+                type="tree"
+                :dic="jurisdictionDic"
+              >
+              </avue-input-tree>
+            </el-form-item>
+          </div>
+        </div>
+        <div style="margin-top: -1.5rem">
+          <i
+            slot="prefix"
+            style="position: relative; top: 1.9rem; left: 0.5rem"
+            class="el-icon-wallet"
+          />
+          <div style="position: relative">
+            <el-form-item prop="stats">
+              <avue-select
+                default-expand-all
+                :props="statsProps"
+                v-model="unitForm.stats"
+                style="width: 35rem !important; padding-left: 0.9rem !important"
+                placeholder="请选择企业属性"
+                type="tree"
+                :dic="statsDic"
+              >
+              </avue-select>
+            </el-form-item>
+          </div>
+        </div>
+        <el-form-item prop="linkman">
+          <el-input
+            size="small"
+            @keyup.enter.native="handleUnitRegister"
+            v-model="unitForm.linkman"
+            auto-complete="off"
+            placeholder="联系人"
+            clearable="true"
+          >
+            <i slot="prefix" class="el-icon-user" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="phone">
+          <el-input
+            size="small"
+            v-model="unitForm.phone"
+            auto-complete="off"
+            placeholder="联系人电话"
+            clearable="true"
+          >
+            <i slot="prefix" class="icon-shouji" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="address">
+          <el-input
+            size="small"
+            v-model="unitForm.address"
+            auto-complete="off"
+            placeholder="企业注册地址"
+            clearable="true"
+          >
+            <i slot="prefix" class="el-icon-map-location" />
+          </el-input>
+        </el-form-item>
+        <el-form-item prop="unit">
+          <el-input
+            size="small"
+            v-model="unitForm.unit"
+            auto-complete="off"
+            placeholder="登记机关"
+            clearable="true"
+          >
+            <i slot="prefix" class="el-icon-office-building" />
+          </el-input>
+        </el-form-item>
+        <div style="margin-top: -1.5rem">
+          <i
+            slot="prefix"
+            style="position: relative; top: 1.9rem; left: 0.5rem"
+            class="el-icon-picture-outline"
+          />
+          <div style="position: relative; left: 3rem; top: 1rem">
+            <el-form-item prop="businessLicense">
+              <i slot="prefix" class="el-icon-picture-outline" />
+              <el-upload
+                class="avatar-uploader"
+                action=""
+                :show-file-list="false"
+                :on-success="handleAvatarSuccess"
+                :before-upload="beforeAvatarUpload"
+                :http-request="httpRequest"
+                placeholder="营业执照"
+              >
+                <img v-if="imageUrl" :src="imageUrl" class="avatar" />
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <div class="el-upload__tip" slot="tip">
+                  请上传营业执照,只能上传jpg/png文件,且不超过2MB
+                </div>
+              </el-upload>
+            </el-form-item>
+          </div>
+        </div>
+        <el-form-item class="z-login-submit-prv">
+          <el-button
+            size="small"
+            type="primary"
+            @click.native.prevent="handleUnitRegister"
+            class="z-login-submit"
+            >{{ $t("login.zc") }}
+          </el-button>
+          <el-button
+            size="small"
+            @click.native.prevent="gbs"
+            class="z-login-submit"
+            >{{ $t("login.gb") }}
+          </el-button>
+        </el-form-item>
+      </el-form>
+    </span>
+  </div>
 </template>
 
 <script>
-import {isvalidatemobile} from "@/util/validate";
-import {inster} from "@/api/zc/zc";
-import {ss, rs} from "@/api/system/dept";
-import {mapGetters} from "vuex";
+import { inster } from "@/api/zc/zc";
+import { add } from "@/api/registerUnit/registerUnit";
+import { ss } from "@/api/system/dept";
+import { getDictionary } from "@/api/system/dictbiz";
+import { getJurisdictionTree } from "@/api/jurisdiction/jurisdiction";
+import { putFile } from "@/api/resource/oss";
+import { mapGetters } from "vuex";
 
 export default {
   name: "codelogin",
   data() {
     const validatePass = (rule, value, callback) => {
-      if (value === '') {
-        callback(new Error('请输入密码'));
+      if (value === "") {
+        callback(new Error("请输入密码"));
       } else {
         callback();
       }
     };
     const validatePass2 = (rule, value, callback) => {
-      if (value === '') {
-        callback(new Error('请再次输入密码'));
+      if (value === "") {
+        callback(new Error("请再次输入密码"));
       } else if (value !== this.loginForm.password) {
-        callback(new Error('两次输入密码不一致!'));
+        callback(new Error("两次输入密码不一致!"));
       } else {
         callback();
       }
     };
     const validateIdNo = (rule, value, callback) => {
-      let id18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
-      let id15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/;
-      if (!id18.test(this.loginForm.cardid) && !id15.test(this.loginForm.cardid)) {
+      let id18 =
+        /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
+      let id15 =
+        /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/;
+      if (
+        !id18.test(this.loginForm.cardid) &&
+        !id15.test(this.loginForm.cardid)
+      ) {
         callback(new Error("请输入正确的身份证号格式"));
       } else {
         callback();
       }
     };
     return {
-
+      defaultExpandedKeys: [],
+      imageUrl: "",
+      props: {
+        label: "title",
+      },
+      // statsProps: {
+      //   label: "dictValue",
+      //   value: "dictKey",
+      // },
       msgText: "",
       msgTime: "",
       dic: [],
+      jurisdictionDic: [],
+      statsDic: [
+        {
+          label:"本市保安公司",
+          value:"2"
+        },
+        {
+          label:"自招保安单位",
+          value:"0"
+        },
+        {
+          label:"跨区域保安公司",
+          value:"4"
+        },
+        {
+          label:"保安培训学校",
+          value:"1"
+        }
+      ],
       dicr: [],
       msgKey: false,
+      type: {},
+      option: {
+        column: [
+          {
+            label: "个人注册",
+            prop: "tab1",
+          },
+          {
+            label: "企业注册",
+            prop: "tab2",
+          },
+        ],
+      },
       loginForm: {
         cardid: "",
         username: "",
         sname: "",
         password: "",
-        deptid: '',
-        roleid: '',
-        password2: ""
+        deptid: "",
+        roleid: "",
+        password2: "",
       },
-      value: '',
+      unitForm: {
+        deptName: "",
+        stats: "",
+        jurisdiction: "",
+        linkman: "",
+        phone: "",
+        address: "",
+        unit: "",
+        businessLicense: "",
+      },
+      value: "",
       options: [],
       loginRules: {
-        cardid: [{required: true, trigger: "blur", validator: validateIdNo}],
-        password: [{required: true, validator: validatePass, trigger: 'blur'}],
-        password2: [{required: true, validator: validatePass2, trigger: 'blur'}],
+        cardid: [{ required: true, trigger: "blur", validator: validateIdNo }],
+        password: [
+          { required: true, validator: validatePass, trigger: "blur" },
+        ],
+        password2: [
+          { required: true, validator: validatePass2, trigger: "blur" },
+        ],
         username: [
-          {required: true, message: "请输入用户名", trigger: "blur"}
+          { required: true, message: "请输入用户名", trigger: "blur" },
+        ],
+      },
+      unitRules: {
+        deptName: [
+          { required: true, message: "请输入企业名称", trigger: "blur" },
+        ],
+        linkman: [{ required: true, message: "请输入联系人", trigger: "blur" }],
+        phone: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
+        address: [
+          { required: true, message: "请输入企业注册地址", trigger: "blur" },
+        ],
+        unit: [{ required: true, message: "请输入登记机关", trigger: "blur" }],
+        jurisdiction: [
+          { required: true, message: "请选择辖区", trigger: "blur" },
+        ],
+        stats: [
+          { required: true, message: "请选择企业属性", trigger: "blur" },
         ],
       },
       passwordType: "password",
-      passwordTypes: "password2"
+      passwordTypes: "password2",
     };
   },
   created() {
+    this.type = this.option.column[0];
     this.msgText = this.config.MSGINIT;
     this.msgTime = this.config.MSGTIME;
+    this.getJurisdictionTree();
+    // this.getDictionary();
   },
   mounted() {
     var that = this;
-    ss().then(res => {
-      console.log(that.processingData(res.data.data), 898989)
-      that.dic = that.processingData(res.data.data)
+    ss().then((res) => {
+      that.dic = that.ergodicData(res.data.data);
     });
   },
   computed: {
@@ -149,73 +415,163 @@
       return {
         MSGINIT: this.$t("login.msgText"),
         MSGSCUCCESS: this.$t("login.msgSuccess"),
-        MSGTIME: 60
+        MSGTIME: 60,
       };
-    }
+    },
   },
-  props: [],
   methods: {
+    //图片上传
+    beforeAvatarUpload(file) {
+      var isJPG = true;
+      const picType = file.type;
+      const isLt2M = file.size / 1024 / 1024 < 2;
 
-    processingData(val) {
+      if (
+        picType != "image/jpeg" &&
+        picType != "image/jpg" &&
+        picType != "image/png"
+      ) {
+        isJPG = true;
+        this.$message.error("必须时图片格式!");
+      }
+      if (!isLt2M) {
+        this.$message.error("头像图片不能大于 2MB!");
+      }
+      return picType && isLt2M;
+    },
+    //自定义上传
+    httpRequest(opt) {
+      var that = this;
+      const file = opt.file;
+      // 根据后台需求数据格式
+      const form = new FormData();
+      // 文件对象
+      form.append("file", file);
+      putFile(form).then((res) => {
+        that.imageUrl = res.data.data.url;
+      });
+    },
+    //注册 tag 切换
+    handleChange(column) {
+      this.type = column;
+      var height = "500px";
+      if (column.prop == "tab2") {
+        height = "800px";
+      }
+      this.$emit("height", height);
+    },
+    //获取辖区数据
+    getJurisdictionTree() {
+      var that = this;
+      getJurisdictionTree().then((res) => {
+        that.jurisdictionDic = res.data.data;
+        that.defaultExpandedKeys = [];
+        res.data.data.forEach((item) => {
+          that.defaultExpandedKeys.push(item.id);
+        });
+      });
+    },
+    //获取企业属性数据
+    getDictionary() {
+      var that = this;
+      var data = {
+        code: "stats",
+      };
+      getDictionary(data).then((res) => {
+        // console.log(res.data.data, 111111);
+        that.statsDic = res.data.data;
+      });
+    },
+    ergodicData(val) {
+      var arr = [];
+      val.forEach((item, index) => {
+        arr.push({
+          label: item.title,
+          value: item.value,
+          id: item.id,
+          parent_id: item.parent_id,
+        });
 
-        for (var i = 0; i < val.length; i++) {
+        if (item.hasChildren == true) {
+          var arrOne = [];
 
-          val[i].label = val[i].title
+          if (item.children && item.children.length > 0) {
+            item.children.forEach((childItem, childIndex) => {
+              arrOne.push({
+                label: childItem.title,
+                value: childItem.value,
+                id: childItem.id,
+                parent_id: childItem.parent_id,
+              });
 
-          if (val[i].hasChildren == true) {
+              if (childItem.hasChildren == true) {
+                var arrTwo = [];
 
-            if (val[i].children && val[i].children.length > 0) {
+                if (childItem.children && childItem.children.length > 0) {
+                  childItem.children.forEach((findItem, findIndex) => {
+                    arrTwo.push({
+                      label: findItem.title,
+                      value: findItem.value,
+                      id: findItem.id,
+                      parent_id: findItem.parent_id,
+                    });
+                  });
+                }
 
-              this.processingData(val[i].children)
-
-            }
-
+                arrOne[childIndex].children = arrTwo;
+              }
+            });
           }
 
+          arr[index].children = arrOne;
         }
+      });
 
-        return val
+      return arr;
     },
 
     clearValidate(formName) {
       this.$refs[formName].clearValidate();
     },
     async allmedia() {
-      ss().then(res => {
-        console.log(res, 1323)
-        res.data.data.forEach(element => {
-          this.options.push({deptname: element.dept_name, deptid: element.deptid});
-        })
+      ss().then((res) => {
+        res.data.data.forEach((element) => {
+          this.options.push({
+            deptname: element.dept_name,
+            deptid: element.deptid,
+          });
+        });
       });
     },
     refreshCode(row) {
-      inster(row).then(res => {
-        this.loginForm.cardid = ""
-        this.loginForm.username = ""
-        this.loginForm.sname = ""
-        this.loginForm.password = ""
-        this.loginForm.password2 = ""
-        this.loginForm.deptid = ""
+      inster(row).then((res) => {
+        this.loginForm.cardid = "";
+        this.loginForm.username = "";
+        this.loginForm.sname = "";
+        this.loginForm.password = "";
+        this.loginForm.password2 = "";
+        this.loginForm.deptid = "";
+        this.loginForm.defaultFlag = false;
         this.$notify({
-          title: '注册成功,待审核',
-          type: 'warning'
+          title: "注册成功,待审核",
+          type: "warning",
         });
-      })
-      var z = document.querySelector('.z');
-      z.style.display = 'none';
-      this.clearValidate('loginForm')
-      this.clearValidate('loginForm')
+      });
+      var z = document.querySelector(".z");
+      z.style.display = "none";
+      this.clearValidate("loginForm");
     },
     gb() {
-      this.loginForm.cardid = ""
-      this.loginForm.username = ""
-      this.loginForm.sname = ""
-      this.loginForm.password = ""
-      this.loginForm.password2 = ""
-      this.loginForm.deptid = ""
-      var zs = document.querySelector('.z');
-      zs.style.display = 'none';
-      this.clearValidate('loginForm')
+      this.loginForm.cardid = "";
+      this.loginForm.username = "";
+      this.loginForm.sname = "";
+      this.loginForm.password = "";
+      this.loginForm.password2 = "";
+      this.loginForm.deptid = "";
+      this.loginForm.defaultFlag = false;
+      var zs = document.querySelector(".z");
+      zs.style.display = "none";
+      this.clearValidate("loginForm");
     },
     handleSend() {
       if (this.msgKey) return;
@@ -242,20 +598,38 @@
         ? (this.passwordType = "password2")
         : (this.passwordType = "");
     },
+    //个人注册提交
     handleLogin() {
-      this.$refs.loginForm.validate(valid => {
+      this.$refs.loginForm.validate((valid) => {
         if (valid) {
           this.refreshCode(this.loginForm);
-          this.message('dahsiofhiusa');
           return Promise.reject(new Error("注册成功,待审核"));
+        }
+      });
+    },
+    //公司注册提交
+    handleUnitRegister() {
+      var that = this;
+      this.$refs.unitForm.validate((valid) => {
+        if (valid) {
+          this.unitForm.businessLicense = this.imageUrl;
+          //提交
+          add(this.unitForm).then((res) => {
+            //恢复表单默认值
+            that.$refs["unitForm"].resetFields();
+            that.imageUrl = "";
+            this.$message({
+              type: "success",
+              message: "注冊成功,待审核!",
+            });
+          });
         }
       });
     },
     gbs() {
       this.gb();
-    }
-  }
-
+    },
+  },
 };
 </script>
 
@@ -286,15 +660,39 @@
 .z-login-submit {
   flex: 1;
   height: 45px;
-  border: 1px solid #409EFF;
+  border: 1px solid #409eff;
   background: none;
   font-size: 18px;
   letter-spacing: 2px;
   font-weight: 300;
-  color: #409EFF;
+  color: #409eff;
   cursor: pointer;
   font-family: "neo";
   -webkit-transition: 0.25s;
   transition: 0.25s;
 }
+
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 178px;
+  height: 178px;
+  line-height: 178px;
+  text-align: center;
+}
+.avatar {
+  width: 178px;
+  height: 178px;
+  display: block;
+}
 </style>

--
Gitblit v1.9.3