|
@@ -0,0 +1,135 @@
|
|
|
+<template>
|
|
|
+ <!-- "ancestors": "",
|
|
|
+ "contact": "",
|
|
|
+ "orderNum": 0,
|
|
|
+ "orgId": 0,
|
|
|
+ "orgName": "",
|
|
|
+ "parentId": 0,
|
|
|
+ "password": "",
|
|
|
+ "type": 0,
|
|
|
+ "userName": "" -->
|
|
|
+ <el-form label-width="100px" :model="data" :rules="rules" ref="baseFormRef">
|
|
|
+ <el-form-item label="单位名称" prop="orgName" required>
|
|
|
+ <el-input v-model="data.orgName" style="width: 300px" :maxlength="500" placeholder="请输入" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="类型" prop="type" required>
|
|
|
+ <!-- <el-input v-model="data.type" style="width: 300px" :maxlength="500" placeholder="请输入" /> -->
|
|
|
+ <el-select style="width: 300px" v-model="data.type">
|
|
|
+ <el-option :value="Number(key)" :label="type" v-for="(type, key) in OrganizationTypeDesc" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="联系人" prop="contact" required>
|
|
|
+ <el-input v-model="data.contact" style="width: 300px" :maxlength="500" placeholder="请输入" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="账号" prop="userName" required>
|
|
|
+ <el-input v-model="data.userName" style="width: 300px" :maxlength="500" placeholder="请输入手机号" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密码" prop="password" required>
|
|
|
+ <el-input autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" v-model="data.password"
|
|
|
+ :type="addPassFlag ? 'text' : 'password'" style="width: 300px" :maxlength="500"
|
|
|
+ placeholder="请输入8-16位数字、字母大小写组合">
|
|
|
+ <template #suffix>
|
|
|
+ <span @click="addPassFlag = !addPassFlag" style="cursor: pointer;">
|
|
|
+ <el-icon v-if="addPassFlag">
|
|
|
+ <View />
|
|
|
+ </el-icon>
|
|
|
+ <el-icon v-else>
|
|
|
+ <Hide />
|
|
|
+ </el-icon>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import { QuiskExpose } from "@/helper/mount";
|
|
|
+import type { FormInstance, FormRules } from "element-plus";
|
|
|
+// import { ElMessage } from "element-plus";
|
|
|
+import { AddOrgParamType } from '@/request/organization'
|
|
|
+import { OrganizationTypeDesc } from '@/store/organization'
|
|
|
+import { ref, reactive, unref } from "vue";
|
|
|
+import { View, Hide } from '@element-plus/icons-vue';
|
|
|
+import { user } from '@/store/user'
|
|
|
+
|
|
|
+const addPassFlag = ref(false)//图标显示标识
|
|
|
+
|
|
|
+const baseFormRef = ref<FormInstance>();
|
|
|
+
|
|
|
+const rules = reactive<FormRules>({
|
|
|
+ orgName: [
|
|
|
+ { required: true, message: "请输入单位名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ type: [
|
|
|
+ { required: true, message: "请选择类型", trigger: "change" },
|
|
|
+ ],
|
|
|
+ contact: [
|
|
|
+ { required: true, message: "请输入联系人", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ userName: [
|
|
|
+ { required: true,pattern: /^1[3456789]\d{9}$/,message: "请输入正确手机号", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ password: [
|
|
|
+ { required: true, pattern: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,16}$/, message: "请输入8-16位数字、字母大小写组合", trigger: "blur" },
|
|
|
+ { required: true, min: 8, message: '密码太短!', trigger: "blur" },
|
|
|
+ ],
|
|
|
+},)
|
|
|
+
|
|
|
+const props = defineProps<{
|
|
|
+ submit: (data: AddOrgParamType) => Promise<any>;
|
|
|
+}>();
|
|
|
+const data = ref<AddOrgParamType & {}>({
|
|
|
+ ancestors: "",
|
|
|
+ contact: "",
|
|
|
+ orderNum: 0,
|
|
|
+ orgId: 0,
|
|
|
+ orgName: "",
|
|
|
+ parentId: 0,
|
|
|
+ password: "",
|
|
|
+ type: null,
|
|
|
+ userName: ""
|
|
|
+});
|
|
|
+
|
|
|
+const setParentId = () => {
|
|
|
+ if (user.value) {
|
|
|
+ const isSuper = user.value.roles.filter(item => item.roleKey === "super_admin").length > 0;
|
|
|
+ data.value.parentId = isSuper ? 0 : Number(user.value.orgId)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+defineExpose<QuiskExpose>({
|
|
|
+ async submit() {
|
|
|
+
|
|
|
+ if (unref(baseFormRef)) {
|
|
|
+ setParentId();
|
|
|
+ const res = await unref(baseFormRef)?.validate();
|
|
|
+ if (res) {
|
|
|
+ await props.submit(data.value as any as AddOrgParamType);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw "";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // await baseForm.value.validate((valid: any, fields: any) => {
|
|
|
+ // if (valid) {
|
|
|
+ // throw "1111";
|
|
|
+ // } else {
|
|
|
+ // console.log('error submit!', fields)
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+
|
|
|
+ // try {
|
|
|
+ // const res = await baseForm.value.validate();
|
|
|
+ // console.log('res', res)
|
|
|
+
|
|
|
+
|
|
|
+ // } catch (error) {
|
|
|
+ // throw error;
|
|
|
+ // }
|
|
|
+
|
|
|
+ },
|
|
|
+});
|
|
|
+</script>
|