ming 1 год назад
Родитель
Сommit
da3f7ebb50
5 измененных файлов с 183 добавлено и 78 удалено
  1. 1 1
      src/components/officialAccount/index.vue
  2. 83 46
      src/utils/regex.js
  3. 12 1
      src/utils/request.js
  4. 3 3
      src/utils/signatureUtil.js
  5. 84 27
      src/views/fillIn.vue

+ 1 - 1
src/components/officialAccount/index.vue

@@ -5,7 +5,7 @@
                 <img src="@/assets/images/gzh.png" style="width:30rem"/>
             </div>
             <div class="officialAccount-contain-middle" @click="returnPage">
-                <span>为访客预约成功后能成功接收通知,请首次访客预约用户关注“XXXX”公众号,进行手机号授权,已关注用户可直接点击“下一步”。</span>
+                <span>为访客预约成功后能成功接收通知,请首次访客预约用户关注“XXXX”小程序,进行手机号授权,已关注用户可直接点击“下一步”。</span>
             </div>
             <div class="officialAccount-contain-bottom" @click="next">
                 <el-button type="primary" style="width: 100%" size="large">

+ 83 - 46
src/utils/regex.js

@@ -1,53 +1,90 @@
-
 /**
  * 默认字典数据
  */
 export default {
-    Password(e, equalToPassword) {
-        return [
-            { required: e.required, message: e.message, transform: (value) => value, trigger: "blur" },
-            {
-                type: "string",
-                message: "请输入不包含空格的字符",
-                trigger: "blur",
-                transform(value) {
-                    if (value && value.indexOf(" ") === -1) {
-                        return value;
-                    } else {
-                        return false;
-                    }
-                },
-            },
-            {
-                trigger: "blur",
-                validator: (rule, value, callback) => {
-                    var passwordreg = /(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,16}/;
-                    if (!passwordreg.test(value)) {
-                        callback(new Error("密码必须由数字、字母、特殊字符组合,请输入6-16位"));
-                    } else {
-                        callback();
-                    }
-                },
-            },
-            equalToPassword ? equalToPassword : {}
-        ]
-    },
-    equalToPassword(rule, value, callback, newPassword) {
-        if (newPassword !== value) {
-            callback(new Error("两次输入的密码不一致"));
-        } else {
+  Password(e, equalToPassword) {
+    return [
+      {
+        required: e.required,
+        message: e.message,
+        transform: (value) => value,
+        trigger: "blur",
+      },
+      {
+        type: "string",
+        message: "请输入不包含空格的字符",
+        trigger: "blur",
+        transform(value) {
+          if (value && value.indexOf(" ") === -1) {
+            return value;
+          } else {
+            return false;
+          }
+        },
+      },
+      {
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          var passwordreg = /(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,16}/;
+          if (!passwordreg.test(value)) {
+            callback(
+              new Error("密码必须由数字、字母、特殊字符组合,请输入6-16位")
+            );
+          } else {
             callback();
-        }
-    },
-    Email: [
-        { required: true, message: "邮箱地址不能为空", trigger: "blur" },
-        { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] },
-    ],
-    Phone(required, message_one, message_two) {
-        return [
-            { required: required, message: message_one ? message_one : "请输入手机号码", trigger: "blur" },
-            { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: message_two ? message_two : "请输入正确的手机号码", trigger: "blur" },
-        ]
+          }
+        },
+      },
+      equalToPassword ? equalToPassword : {},
+    ];
+  },
+  equalToPassword(rule, value, callback, newPassword) {
+    if (newPassword !== value) {
+      callback(new Error("两次输入的密码不一致"));
+    } else {
+      callback();
     }
+  },
+  Email: [
+    { required: true, message: "邮箱地址不能为空", trigger: "blur" },
+    {
+      type: "email",
+      message: "请输入正确的邮箱地址",
+      trigger: ["blur", "change"],
+    },
+  ],
+  Phone(required, message_one, message_two) {
+    return [
+      {
+        required: required,
+        message: message_one ? message_one : "请输入手机号码",
+        trigger: "blur",
+      },
+      {
+        pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+        message: message_two ? message_two : "请输入正确的手机号码",
+        trigger: "blur",
+      },
+    ];
+  },
+
 
-}
+  CheckMobile(e, equalToMobile) {
+    return [
+      {
+        required: e.required,
+        message: e.message,
+        transform: (value) => value,
+        trigger: "blur",
+      },
+      equalToMobile ? equalToMobile : {},
+    ];
+  },
+  equalToMobile(rule, array, callback, element) {
+    if (array.indexOf(element) == -1) {
+      callback(new Error("请输入和访客部门相匹配的手机号码"));
+    } else {
+      callback();
+    }
+  },
+};

+ 12 - 1
src/utils/request.js

@@ -40,11 +40,19 @@ service.interceptors.request.use(config => {
         // 将数据转换为JSON字符串
         const data = JSON.stringify(config.data);
         // 对数据进行Base64编码
-        const base64EncodedData = btoa(data);
+        const base64EncodedData = base64Encode(data);
         // 替换请求体
         config.data = base64EncodedData;
       }
 
+      
+function base64Encode(str) {
+    // 先将字符串转换为Latin1编码
+    var latin1Str = unescape(encodeURIComponent(str));
+    // 然后使用btoa进行Base64编码
+    return btoa(latin1Str);
+}
+
 
 
 
@@ -107,6 +115,7 @@ service.interceptors.request.use(config => {
 
 // 响应拦截器
 service.interceptors.response.use(res => {
+    console.log('success')
         if (res.data.chk) { //安博展撒点 c++   还
             return res.data
         } else if (res.data.action == "updateHj" ||
@@ -152,6 +161,8 @@ service.interceptors.response.use(res => {
         }
     },
     error => {
+        console.log('error')
+        console.log(error)
         let message = error.response.data.msg;
         if (message == "Network Error") {
             message = "后端接口连接异常";

+ 3 - 3
src/utils/signatureUtil.js

@@ -12,8 +12,8 @@ export function signatureGenerate({ data, url, headers }) {
 
   // post参数
   let dataStr = dataSerialize(dataSort(data));
-  console.log("签名部分,排序后的请求参数");
-  console.log(dataStr);
+  // console.log("签名部分,排序后的请求参数");
+  // console.log(dataStr);
 
   let str = (url + dataStr + "timestamp=" + timestamp).toUpperCase() + secret;
 
@@ -56,7 +56,7 @@ function dataSerialize(sortObj) {
    
   }
 
-console.log(strJoin)
+// console.log(strJoin)
   return strJoin;
 }
 

+ 84 - 27
src/views/fillIn.vue

@@ -26,10 +26,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="性别" prop="set">
+            <el-form-item label="性别" prop="sex">
               <el-input
                 placeholder="请输入访客名称"
-                v-model="form.set"
+                v-model="form.sex"
                 disabled
               ></el-input>
             </el-form-item>
@@ -72,7 +72,6 @@
               <el-input
                 placeholder="请输入随行人数"
                 v-model="form.accompanyNum"
-                type="number"
                 min="0"
               ></el-input>
             </el-form-item>
@@ -83,7 +82,15 @@
               label="访客部门"
               prop="intervieweeDepartId"
             >
-              <el-select
+              <el-tree-select
+                v-model="form.intervieweeDepartId"
+                :data="departData"
+                :render-after-expand="false"
+                style="width: 240px"
+                @change="departChange"
+              />
+
+              <!-- <el-select
                 v-model="form.intervieweeDepartId"
                 placeholder="请选择"
                 style="width: 100%"
@@ -91,11 +98,11 @@
               >
                 <el-option
                   v-for="item in departData"
-                  :key="item.code"
+                  :key="item.id"
                   :label="item.name"
-                  :value="item.code"
+                  :value="item.id"
                 />
-              </el-select>
+              </el-select> -->
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -137,6 +144,7 @@
 <script setup name="Index">
 //大屏自适应
 import "@/assets/js/flexible.js";
+import { ElMessage } from "element-plus";
 
 /*----------------------------------依赖引入-----------------------------------*/
 
@@ -153,16 +161,8 @@ const { proxy } = getCurrentInstance();
 
 /*----------------------------------变量声明-----------------------------------*/
 const formRef = ref(null); //refs
-const departData = ref([
-  {
-    departCode: 1,
-    departName: "部门1",
-  },
-  {
-    departCode: 2,
-    departName: "部门2",
-  },
-]);
+const departData = ref(); //组织列表
+const phoneArray = ref([]); //人员电话号码合集
 const data = reactive({
   form: {
     idType: 0,
@@ -170,18 +170,32 @@ const data = reactive({
     reservedField1: 1,
     visitorStartTime: "",
     vistorEndTime: "",
+    mobilePhone: "",
   },
   rules: {
-    // set: [{ required: true, message: "请选择性别", trigger: "blur" }],
+    // sex: [{ required: true, message: "请选择性别", trigger: "blur" }],
     visitorName: [
       { required: true, message: "请输入访客名称", trigger: "blur" },
     ],
     identityCardNo: [
       { required: true, message: "请输入访客身份证号码", trigger: "blur" },
     ],
-    // mobilePhone: [{ required: true, message: "请输入访客手机号码", trigger: "blur" }],
     mobilePhone: proxy.regex.Phone(true, "请输入手机号码"),
-    intervieweeMobile: proxy.regex.Phone(true, "请输入被访人手机号码"),
+
+    intervieweeMobile: proxy.regex.CheckMobile(
+      { required: true, message: "被访人手机号码不能为空" },
+      {
+        trigger: "blur",
+        validator: (rule, value, callback) =>
+          proxy.regex.equalToMobile(
+            rule,
+            phoneArray.value,
+            callback,
+            form.value.intervieweeMobile
+          ),
+      }
+    ),
+
     intervieweeDepartId: [
       { required: true, message: "请选择被访部门", trigger: "change" },
     ],
@@ -201,7 +215,7 @@ function getData() {
       )
       .then((response) => {
         form.value.visitorName = response.data.Certificate.Name;
-        form.value.set = response.data.Certificate.Sex;
+        form.value.sex = response.data.Certificate.Sex;
         form.value.identityCardNo = response.data.Certificate.IDNumber;
 
         // certificateData.value=response.data.Certificate
@@ -211,10 +225,40 @@ function getData() {
 }
 
 function submitForm() {
-  console.log(form.value);
+  if (dateRange.value == null) {
+    dateRange.value = [];
+    form.value.visitorStartTime = "";
+    form.value.vistorEndTime = "";
+  }
+  if (JSON.stringify(dateRange.value) != "[]") {
+    form.value.visitorStartTime = dateRange.value[0].replace("T", " ");
+    form.value.vistorEndTime = dateRange.value[1].replace("T", " ");
+  }
+
+  form.value.visitorName = "袁明明";
+  form.value.sex = form.value.sex = "女" ;
+  form.value.identityCardNo = "411122199112078083";
   proxy.$refs["formRef"].validate((valid) => {
     if (valid) {
-      console.log(form.value);
+
+      form.value.sex = form.value.sex == "女" ? 1 : 2;
+      form.value.accompanyNum = Number(form.value.accompanyNum);
+      addVisitor(form.value).then((requset) => {
+        if (requset.success == true) {
+          ElMessage({
+            message: "添加成功",
+            type: "success",
+          });
+
+          setTimeout(function () {
+            formRef.value.resetFields(); //重置from校验
+            dateRange.value = [];
+          }, 5000);
+        } else {
+          alert("失败");
+          ElMessage.error(requset.msg);
+        }
+      });
     }
   });
 }
@@ -226,7 +270,13 @@ function getDepartData() {
   }).then((request) => {
     console.log(request);
     if (request.success == true) {
-      departData.value = request.result.item;
+      // departData.value =request.result.item;
+      departData.value = JSON.parse(
+        JSON.stringify(request.result.item)
+          .replace(/name/g, "label")
+          .replace(/id/g, "value")
+      );
+      console.log(departData.value);
     } else {
       ElMessage.error(request.msg);
     }
@@ -237,7 +287,6 @@ function getDepartData() {
  * @部门下拉chage事件
  */
 function departChange(val) {
-  console.log(val);
   getCustomer({
     pageIndex: 1,
     maxResultCount: 10,
@@ -245,7 +294,10 @@ function departChange(val) {
       orgIds: [val],
     },
   }).then((request) => {
-    console.log(request);
+    var dataArray = request.result.item;
+    dataArray.forEach(function (item, index) {
+      phoneArray.value.push(item.mobile1);
+    });
     if (request.success == true) {
     } else {
       ElMessage.error(request.msg);
@@ -254,7 +306,7 @@ function departChange(val) {
 }
 
 onMounted(() => {
-  getData();
+  //getData();
   getDepartData();
 });
 
@@ -284,6 +336,11 @@ onUnmounted(() => {
 </style>
 
 <style scoped lang="scss">
+:deep(.el-tag) {
+  font-size: 1.4rem;
+  line-height: 1.2rem;
+  height: 2.2rem;
+}
 .el-button--large {
   padding: 1.2rem 1.9rem;
   --el-button-size: 4rem;