youyawu před 5 roky
rodič
revize
cbd4c9af7e

+ 19 - 2
src/lang/zh.ts

@@ -23,7 +23,24 @@ export default {
     news: "新闻内容"
   },
   errCode: {
-    "-1": "网络请求失败",
-    "500": "系统错误"
+    "-100": "网络请求失败",
+    "-1": "发生未知错误",
+    "301": "账号已存在",
+    "302": "手机号已存在",
+    "303": "账号或密码错误",
+    "304": "验证码错误",
+    "305": "注册失败",
+
+    "402": "接口请求失败",
+    "404": "查询结果不存在",
+
+    "500": "系统错误",
+    "501": "不能重复提交,请稍后再试",
+    "502": "接口请求失败", //缺少验签参数
+    "503": "接口请求超时",
+    "504": "接口请求失败", //验签错误
+    "505": "接口请求失败", //暂不支持此种请求方式
+    "506": "用户未登陆", //未登录(缺少Token)
+    "507": "用户登陆超时" //token超时
   }
 };

+ 1 - 1
src/utils/index.ts

@@ -33,4 +33,4 @@ export const getErrMsg = (errCode: number) => {
     ? `${i18n.t(`errCode.${errCode}`)}`
     : "system error".toUpperCase();
 };
-export const RegAccount = /^[a-zA-Z0-9]{8,12}$/;
+export const RegAccount = /^[a-zA-Z0-9]{9,16}$/;

+ 1 - 1
src/utils/request.ts

@@ -34,7 +34,7 @@ instance.interceptors.response.use(
   x => x,
   err => ({
     data: {
-      code: -1,
+      code: -100,
       data: err
     }
   })

+ 2 - 2
src/views/account/register.vue

@@ -79,9 +79,9 @@ export default class extends Vue {
 
   async submit() {
     if (!RegAccount.test(this.form.loginAccount))
-      return this.$message.error("请输入8到12位由数字字母组合的账号");
+      return this.$message.error("请输入9到16位由数字字母组合的账号");
     if (!RegAccount.test(this.form.loginPassword))
-      return this.$message.error("请输入8到12位由数字字母组合的密码");
+      return this.$message.error("请输入9到16位由数字字母组合的密码");
     if (!/^1[3456789]\d{9}$/.test(this.form.phone))
       return this.$message.error("请正确输入手机号");
     if (!this.flag) return this.$message.error("请同意服务条款");

+ 113 - 66
src/views/account/user/editPassword.vue

@@ -9,72 +9,135 @@
       <div class="editPanel">
         <div class="partTitle"><span class="orangeLine"></span>修改密码</div>
         <div class="editDiv">
-          <div class="editD">
-            <div class="editItem">
-              <img src="@assets/user.png" alt="" />
-              <span>用户名:</span>
+          <el-form
+            class="editD"
+            ref="form"
+            :model="form"
+            :rules="rules"
+            label-width="180px"
+          >
+            <el-form-item prop="loginName">
+              <span slot="label">
+                <img src="@assets/user.png" alt="" />
+                用户名:
+              </span>
               <el-input
-                v-model="username"
+                v-model="form.loginName"
                 placeholder="请输入用户名/登录账号"
-              ></el-input>
-            </div>
-            <div class="editItem">
-              <img src="@assets/lock.png" alt="" />
-              <span>旧密码:</span>
+              />
+            </el-form-item>
+            <el-form-item prop="oldPassword">
+              <span slot="label">
+                <img src="@assets/lock.png" alt="" />
+                旧密码:
+              </span>
               <el-input
-                v-model="oldPassword"
+                v-model="form.oldPassword"
                 type="password"
                 placeholder="请输入旧密码"
-              ></el-input>
-            </div>
-            <div class="editItem">
-              <img src="@assets/lock.png" alt="" />
-              <span>新密码:</span>
+              />
+            </el-form-item>
+            <el-form-item prop="newPassword">
+              <span slot="label">
+                <img src="@assets/lock.png" alt="" />
+                新密码:
+              </span>
+              <el-input v-model="form.newPassword" placeholder="请输入新密码" />
+            </el-form-item>
+            <el-form-item prop="surePassword">
+              <span slot="label">
+                <img src="@assets/lock.png" alt="" />
+                确认密码:
+              </span>
               <el-input
-                v-model="newPassword"
-                placeholder="请输入新密码"
-              ></el-input>
-            </div>
-            <div class="editItem">
-              <img src="@assets/lock.png" alt="" />
-              <span>确认密码:</span>
-              <el-input
-                v-model="surePassword"
+                v-model="form.surePassword"
                 placeholder="请再次输入新密码"
-              ></el-input>
-            </div>
-          </div>
+              />
+            </el-form-item>
+          </el-form>
         </div>
         <div class="btnDiv">
-          <el-button class="submitBtn" type="text" size="small">提交</el-button>
+          <el-button
+            class="submitBtn"
+            type="text"
+            size="small"
+            @click="validate"
+            >提交</el-button
+          >
         </div>
       </div>
     </div>
   </div>
 </template>
-<script>
+<script lang="ts">
 import { Component, Vue, Watch } from "vue-property-decorator";
-export default {
-  name: "app",
-  components: {},
-  data() {
-    return {
-      username: "",
-      oldPassword: "",
-      newPassword: "",
-      surePassword: ""
-    };
-  },
-  methods: {
-    handleClick(tab, event) {
-      console.log(tab, event);
-    },
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.requestData();
-    }
+import { RegAccount } from "@/utils";
+import { ElForm } from "element-ui/types/form";
+@Component
+export default class extends Vue {
+  private form = {
+    loginName: "",
+    oldPassword: "",
+    newPassword: "",
+    surePassword: ""
+  };
+  private rules = {
+    loginName: [
+      { required: true, message: "请输入用户名", trigger: "blur" },
+      {
+        validator: (rule: any, value: string, callback: any) =>
+          callback(
+            RegAccount.test(value)
+              ? undefined
+              : new Error("用户名必须为9到16位由数字字母组合")
+          ),
+        trigger: "blur"
+      }
+    ],
+    oldPassword: [{ required: true, message: "请输入旧密码", trigger: "blur" }],
+    newPassword: [
+      { required: true, message: "请输入新密码", trigger: "blur" },
+      {
+        validator: (rule: any, value: string, callback: any) =>
+          callback(
+            RegAccount.test(value)
+              ? undefined
+              : new Error("密码必须为9到16位由数字字母组合")
+          ),
+        trigger: "blur"
+      }
+    ],
+    surePassword: [
+      { required: true, message: "请再次输入密码", trigger: "blur" },
+      {
+        validator: (rule: any, value: string, callback: any) => {
+          if (value === "") {
+            callback(new Error("请再次输入密码"));
+          } else if (value !== this.form.newPassword) {
+            callback(new Error("两次输入密码不一致!"));
+          } else {
+            callback();
+          }
+        },
+        trigger: "blur"
+      }
+    ]
+  };
+  get DomForm() {
+    console.log(this.$refs);
+    return this.$refs.form as ElForm;
   }
-};
+  validate() {
+    this.DomForm.validate(x => x && this.submit());
+  }
+  async submit() {
+    const [err] = await this.$post("/", this.form);
+    if (err) return;
+    this.DomForm.resetFields();
+    this.$message.success("密码修改成功");
+    // this.$router.push("/");
+  }
+}
 </script>
 <style lang="scss" scoped>
 .breadcrumb {
@@ -106,22 +169,6 @@ export default {
       background: #fff5f2;
       padding: 2rem;
       box-sizing: border-box;
-      .editItem {
-        height: 6rem;
-        line-height: 6rem;
-        border-bottom: 0.1rem solid #e5e5e5;
-        padding: 0 0.6rem;
-        box-sizing: border-box;
-        img {
-          height: 1.4rem;
-          vertical-align: middle;
-          margin-right: 1rem;
-        }
-        span {
-          font-size: 1.4rem;
-          color: #333;
-        }
-      }
     }
   }
   .btnDiv {

+ 1 - 6
src/views/account/user/index.vue

@@ -13,12 +13,7 @@
           <img class="rightImg" src="@assets/userbg.png" alt="" />
         </el-col>
       </el-row>
-      <tab
-        class="tab"
-        titles="我的关注,我的需求"
-        v-if="currIndex !== null"
-        :currIndex.sync="currIndex"
-      />
+      <tab class="tab" titles="我的关注,我的需求" :currIndex.sync="currIndex" />
 
       <el-table
         empty-text="数据加载中..."

+ 30 - 10
src/views/shops/enter/add.vue

@@ -138,7 +138,11 @@
             <i class="el-icon-plus"></i>
           </el-upload>
         </el-form-item>
-        <el-form-item class="formItem" label="企业宣传图片" prop="imgs">
+        <el-form-item
+          class="formItem"
+          label="企业宣传图片"
+          prop="propagandaImgUrl"
+        >
           <el-upload
             list-type="picture-card"
             :action="`${$basePath}/common/upload`"
@@ -180,7 +184,8 @@ import { ElForm } from "element-ui/types/form";
 export default class extends Vue {
   private form: IAny = {
     longitude: "",
-    latitude: ""
+    latitude: "",
+    detailAddress: ""
   };
   private province = "";
   private city = "";
@@ -200,7 +205,7 @@ export default class extends Vue {
           callback(
             RegAccount.test(value)
               ? undefined
-              : new Error("用户名必须为8到12位由数字字母组合")
+              : new Error("用户名必须为9到16位由数字字母组合")
           ),
         trigger: "blur"
       }
@@ -212,7 +217,7 @@ export default class extends Vue {
           callback(
             RegAccount.test(value)
               ? undefined
-              : new Error("密码必须为8到12位由数字字母组合")
+              : new Error("密码必须为9到16位由数字字母组合")
           ),
         trigger: "blur"
       }
@@ -270,16 +275,29 @@ export default class extends Vue {
     companyIntroduce: [
       { required: true, message: "请输入企业介绍", trigger: "blur" }
     ],
-
-    imgs: [
+    businessLicenseUrl: [
       {
         validator: (rule: string, value: any, callback: any) => {
-          // businessLicenseUrl defaultImgUrl propagandaImgUrl
-          console.log(rule);
           if (!this.form.businessLicenseUrl)
             return callback(new Error("请上传营业执照"));
+
+          callback();
+        }
+      }
+    ],
+    defaultImgUrl: [
+      {
+        validator: (rule: string, value: any, callback: any) => {
           if (!this.form.defaultImgUrl)
             return callback(new Error("请上传企业默认图片"));
+
+          callback();
+        }
+      }
+    ],
+    propagandaImgUrl: [
+      {
+        validator: (rule: string, value: any, callback: any) => {
           if (!this.form.propagandaImgUrl)
             return callback(new Error("请上传企业宣传图片"));
           callback();
@@ -320,7 +338,9 @@ export default class extends Vue {
       obj[type] = `${obj[type] ? `${obj[type]},` : ""}${url}`;
     });
     Object.assign(this.form, obj);
-    this.DomForm.validateField("imgs");
+    "businessLicenseUrl,defaultImgUrl,propagandaImgUrl"
+      .split(",")
+      .forEach(x => this.DomForm.validateField(x));
   }
 
   @Watch("form.longitude")
@@ -373,7 +393,7 @@ export default class extends Vue {
     if (err) return;
     this.DomForm.resetFields();
     this.$message.success("信息提交成功");
-    this.$router.push("/");
+    // this.$router.push("/");
   }
   success(type: string, url: string, uid: number) {
     this.fileList.push({ type, url, uid });