Commit f5eafea0 authored by 何小勇's avatar 何小勇

组织管理-组织用户

parent 54d50bca
......@@ -71,7 +71,7 @@ const clearForm = () => {
}
const setForm = (data) => {
contactForm.value = Object.assign(contactForm, data);
Object.assign(contactForm, data);
}
onMounted(() => {
......
......@@ -118,7 +118,7 @@ const nextStep = () => {
//业务系统表单检验触发事件 data为null 校验失败
const getSystemFormData = (data) => {
if(data) {
formData.value = Object.assign(formData,data);
Object.assign(formData,data);
step.value = 2;
}else {
......@@ -128,22 +128,23 @@ const getSystemFormData = (data) => {
const getContactFormData = (data) => {
if(data) {
formData.value = Object.assign(formData,data);
Object.assign(formData,data);
if(route.query.id) {
console.log(formData)
let params = {
...formData,
id: parseInt(route.query.id),
business_name: formData.value.business_name,
system_account: formData.value.system_account,
contact_email: formData.value.contact_email,
contact_phone: formData.value.contact_phone,
contact_name: formData.value.contact_name,
logo: formData.value.logo && formData.value.logo.length > 0 ? formData.value.logo[0].url : '',
state: formData.value.state,
business_desc: formData.value.business_desc,
develop_id: formData.value.develop_id,
access_address: formData.value.access_address,
remark: formData.value.remark
// business_name: formData.value.business_name,
// system_account: formData.value.system_account,
// contact_email: formData.value.contact_email,
// contact_phone: formData.value.contact_phone,
// contact_name: formData.value.contact_name,
logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '',
// state: formData.value.state,
// business_desc: formData.value.business_desc,
// develop_id: formData.value.develop_id,
// access_address: formData.value.access_address,
// remark: formData.value.remark
}
$axios.post(`/apaas/system/v5/user/update`,params)
.then((res) => {
......@@ -156,21 +157,21 @@ const getContactFormData = (data) => {
})
}else {
let params = {
organization_id: formData.value.organization_id,
// system_role_id: "ab98a936-9046-455b-aba3-4c73671024d0",
logo: formData.value.logo && formData.value.logo.length > 0 ? formData.value.logo[0].url : '',
password: CryptoJS.AES.encrypt(formData.value.password,"swuE9cmCZQwrkYRV").toString(),
business_code: formData.value.business_code,
business_name: formData.value.business_name,
business_desc: formData.value.business_desc,
system_account: formData.value.system_account,
access_address: formData.value.access_address,
develop_id: formData.value.develop_id,
state: formData.value.state,
contact_name: formData.value.contact_name,
contact_phone: formData.value.contact_phone,
contact_email: formData.value.contact_email,
remark: formData.value.remark,
...formData,
// organization_id: formData.value.organization_id,
logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '',
password: CryptoJS.AES.encrypt(formData.password,"swuE9cmCZQwrkYRV").toString(),
// business_code: formData.value.business_code,
// business_name: formData.value.business_name,
// business_desc: formData.value.business_desc,
// system_account: formData.value.system_account,
// access_address: formData.value.access_address,
// develop_id: formData.value.develop_id,
// state: formData.value.state,
// contact_name: formData.value.contact_name,
// contact_phone: formData.value.contact_phone,
// contact_email: formData.value.contact_email,
// remark: formData.value.remark,
}
$axios.put(`/apaas/system/v5/user/create`,params)
.then((res) => {
......
......@@ -32,7 +32,14 @@
<el-input type="textarea" :rows="3" v-model="systemForm.business_desc" />
</el-form-item>
<el-form-item label="角色" prop="system_role_id" v-if="!formType">
<el-input v-model="systemForm.system_role_id" />
<el-select v-model="systemForm.system_role_id" placeholder="请选择角色" :disabled="true" style="width: 100%">
<el-option
v-for="item in roleList"
:key="item.role_id"
:label="item.role_name"
:value="item.role_id"
/>
</el-select>
</el-form-item>
<el-form-item label="账号" prop="system_account">
<el-input v-model="systemForm.system_account" />
......@@ -164,10 +171,9 @@ const formRules = reactive({
],
})
const systemRef = ref(null)
const emit = defineEmits(['action'])
const roleList = ref([])
const submitForm = async () => {
if (!systemRef) return
......@@ -182,11 +188,12 @@ const submitForm = async () => {
const clearForm = () => {
if (!systemRef) return
systemRef.value.resetFields()
systemRef.value.resetFields();
systemForm.system_role_id = roleList.value[0].role_id;
}
const setForm = (data) => {
systemForm.value = Object.assign(systemForm, data);
Object.assign(systemForm, data);
}
const orgData = ref([])
......@@ -216,9 +223,21 @@ const copyText = (data) => {
}
);
}
const getRoleList = () => {
$axios.get(`/apaas/system/v5/org/select/role?is_admin=1`)
.then((res) => {
if (res.data.code == 200) {
roleList.value = res.data.data;
systemForm.system_role_id = roleList.value[0].role_id;
}else {
}
})
}
onBeforeMount(() =>{
getOrgTree()
getRoleList()
})
onMounted(() => {
......
......@@ -52,13 +52,16 @@
</bg-filter-group>
<div class="table_container apaas_scroll">
<bg-table ref="bgTable" :headers="headers" :rows="tableRows" :isIndex="true" :stripe="true">
<template v-slot:account="{ row }">
<template v-slot:system_account="{ row }">
<span @click="goDetail(row)" class="name_btn">
{{ row.account }}
{{ row.system_account }}
</span>
</template>
<template v-slot:state="{ row }">
<bg-switch @click="stateChange(row)" :labels="['否','是']" :values="[0,1]" v-model="row.state"></bg-switch>
</template>
<template v-slot:action="{ row }">
<bg-table-btn class="btn">
<bg-table-btn @click="editAccount(row)" class="btn">
编辑
</bg-table-btn>
<bg-table-btn class="btn">
......@@ -204,12 +207,12 @@ import orgForm from './org-form.vue';
{
label: "账号",
prop: "system_account",
width: 180
minWidth: 150
},
{
label: "手机号",
prop: "contact_phone",
minWidth: 120
width: 150
},
{
label: "角色",
......@@ -219,7 +222,7 @@ import orgForm from './org-form.vue';
{
label: "创建时间",
prop: "created_time",
width: 150
width: 200
},
{
label: "是否启用",
......@@ -254,17 +257,13 @@ import orgForm from './org-form.vue';
const addAccount = (params) => {
if(selectTreeDataType.value === 1) {
router.push({
path: "/system/organization/system-user",
query: {
type: params
}
path: "/system/organization/org-user",
})
}else {
router.push({
path: "/system/organization/platform-user",
query: {
type: params
}
})
}
......@@ -508,6 +507,10 @@ import orgForm from './org-form.vue';
})
}
const searchChange = (val) => {
orgTree.value.filterTree(val);
}
const goDetail = (params) => {
router.push({
path: "/system/organization/user-detail",
......@@ -517,8 +520,22 @@ import orgForm from './org-form.vue';
})
}
const searchChange = (val) => {
orgTree.value.filterTree(val);
const editAccount = (data) => {
if(selectTreeDataType === 1) {
router.push({
path: "/system/organization/platform-user",
query: {
id: data.id
}
})
} else {
router.push({
path: "/system/organization/org-user",
query: {
id: data.id
}
})
}
}
onBeforeMount(() => {
......
......@@ -44,14 +44,17 @@
</div>
<div class="content_main">
<systemAccountForm v-show="step === 1" ref="systemAccountRef" @action="getSystemAccountFormData"></systemAccountForm>
<systemPersonForm v-show="step === 2" ref="systemPersonRef" @action="getSystemPersonFormData"></systemPersonForm>
<orgAccountForm v-show="step === 1" :form-type="route.query.id ? true : false" ref="orgAccountRef" @action="getOrgAccountFormData"></orgAccountForm>
<orgPersonForm v-show="step === 2" ref="orgPersonRef" @action="getOrgPersonFormData"></orgPersonForm>
<div class="process_end" v-show="step === 3">
<div>
<div><img src="@/assets/imgs/img_data-complete.png" alt=""></div>
<div class="font_bold">平台用户新增成功</div>
<div>
<img v-if="successFlag" src="@/assets/imgs/img_data-complete.png" alt="">
<img v-else src="@/assets/imgs/img_data-fail.png" alt="">
</div>
<div class="font_bold">{{route.query.id ? (successFlag ? '组织用户编辑成功' : '组织用户编辑失败') : (successFlag ? '组织用户新增成功' : '组织用户新增失败')}}</div>
<el-button @click="cancel">返回列表</el-button>
<el-button type="primary" @click="continueCreate">继续创建</el-button>
<el-button v-if="!route.query.id" type="primary" @click="continueCreate">继续创建</el-button>
</div>
</div>
......@@ -76,51 +79,87 @@
<script setup>
import { useRoute, useRouter } from 'vue-router';
import systemAccountForm from './system-account-form.vue';
import systemPersonForm from './system-person-form.vue';
import { reactive, ref,onBeforeMount,toRefs,computed, onBeforeUnmount, onMounted } from 'vue';
import orgAccountForm from './org-account-form.vue';
import orgPersonForm from './org-person-form.vue';
import { reactive, ref,onBeforeMount,toRefs,computed, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue';
import CryptoJS from "crypto-js";
const { proxy } = getCurrentInstance()
const { $axios,$message } = proxy
const route = useRoute();
const router = useRouter();
const step = ref(1);
const systemAccountRef = ref(null);
const systemPersonRef = ref(null);
const orgAccountRef = ref(null);
const orgPersonRef = ref(null);
const formData = reactive({
org: '',
role: '',
logo: '',
account: '',
phone: '',
organization_id: '',
select_role: '',
logo: [],
system_account: '',
contact_phone: '',
password: '',
confirm_password: '',
is_use: 1,
state: 1,
name: '',
certificate_type: '',
certificate_account: '',
email: '',
contact_name: '',
document_type: '',
document_number: '',
contact_email: '',
remark: '',
}); //账号信息表单+个人信息表单
const successFlag = ref(false)
// 下一步
const nextStep = () => {
systemAccountRef.value.submitForm();
orgAccountRef.value.submitForm();
}
//账号信息表单检验触发事件 data为null 校验失败
const getSystemAccountFormData = (data) => {
const getOrgAccountFormData = (data) => {
if(data) {
formData.value = Object.assign(formData,data);
Object.assign(formData,data);
step.value = 2;
}else {
}
}
//个人信息表单检验触发事件 data为null 校验失败
const getSystemPersonFormData = (data) => {
const getOrgPersonFormData = (data) => {
if(data) {
formData.value = Object.assign(formData,data);
console.log(formData);
step.value = 3;
if(data) {
Object.assign(formData,data);
if(route.query.id) {
let params = {
...formData,
logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '',
}
$axios.put(`/apaas/system/v5/org/update/user/${route.query.id}`,params)
.then((res) => {
if (res.data.code == 200) {
successFlag.value = true;
step.value = 3;
}else {
$message.error(res.data.msg)
}
})
}else {
const params = {...formData,
// organization_id: orgId.value,
logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '',
is_admin: 2,
password: CryptoJS.AES.encrypt(formData.password,"swuE9cmCZQwrkYRV").toString()
};
$axios.post(`/apaas/system/v5/org/add/user`,params)
.then((res) => {
if (res.data.code == 200) {
successFlag.value = true;
step.value = 3;
}else {
$message.error(res.data.msg)
}
})
}
}
}
}
//上一步
......@@ -129,50 +168,57 @@ const previousStep = () => {
}
//提交表单
const submit = () => {
systemPersonRef.value.submitForm();
orgPersonRef.value.submitForm();
}
//继续创建 清空表单
const continueCreate = () => {
systemAccountRef.value.clearForm();
systemPersonRef.value.clearForm();
orgAccountRef.value.clearForm();
orgPersonRef.value.clearForm();
step.value = 1;
successFlag.value = false;
}
//取消
const cancel = () => {
router.go(-1);
}
const getDetail = () => {
$axios.get(`/apaas/system/v5/org/user/${route.query.id}`)
.then((res) => {
if (res.data.code == 200) {
const form = res.data.data;
orgAccountRef.value.setForm({
organization_id: form.organization_id,
select_role: form.select_role,
logo: [{url:form.logo}],
system_account: form.system_account,
contact_phone: form.contact_phone,
state: form.state,
})
onBeforeUnmount(()=>{
})
onMounted(() => {
if(route.query.type === "1") {
setTimeout(()=> {
systemAccountRef.value.setForm({
org: 'a',
code: 'b',
name: 'b',
desc: 'b',
logo: ['b'],
role: 'b',
account: 'b',
password: 'b',
confirm_password: 'b',
url: 'b',
firm_name: 'b',
is_use: 'b',
})
systemPersonRef.value.setForm({
contact_user: 'c',
phone: 'c',
email: 'c',
remark: 'c',
orgPersonRef.value.setForm({
contact_name: form.contact_name,
document_type: form.document_type,
document_number: form.document_number,
contact_email: form.contact_email,
remark: form.remark,
})
}else {
$message.error(res.data.msg)
}
})
},500)
}
onBeforeMount(() => {
if(route.query.id) {
getDetail()
}
})
onMounted(() => {
})
</script>
<style scoped>
......
<template>
<el-form
:label-position="'right'"
label-width="120px"
:model="orgAccountForm"
:rules="orgAccountFormRules"
ref="orgformAccountRef"
style="max-width: 66%"
>
<el-form-item label="所属组织机构" prop="organization_id">
<el-tree-select v-model="orgAccountForm.organization_id" :data="orgData" :props="treeProps" :render-after-expand="false" :disabled="formType" style="width: 100%;"/>
<!-- <el-input v-model="orgAccountForm.organization_id" /> -->
</el-form-item>
<el-form-item label="角色" prop="select_role" v-if="!formType">
<el-select v-model="orgAccountForm.select_role" multiple placeholder="请选择角色" :disabled="true" style="width: 100%">
<el-option
v-for="item in roleList"
:key="item.role_id"
:label="item.role_name"
:value="item.role_id"
/>
</el-select>
</el-form-item>
<el-form-item label="头像" prop="logo">
<bg-upload-image v-model="orgAccountForm.logo" :showTips="true" :limit="1" :fileSize="500" :fileSizeUnit="'KB'" listType="picture-card" :accept="['.jpg','.jpeg','.png']" customTips="请选择图片上传:大小120 * 120像素支持jpg、png等格式,图片需小于500KB"></bg-upload-image>
</el-form-item>
<el-form-item label="账号" prop="system_account">
<el-input v-model="orgAccountForm.system_account" />
</el-form-item>
<el-form-item label="手机号" prop="contact_phone">
<el-input v-model="orgAccountForm.contact_phone" />
</el-form-item>
<el-form-item label="密码" prop="password" v-if="!formType">
<el-input type="password" v-model="orgAccountForm.password" />
</el-form-item>
<el-form-item label="确认密码" prop="confirm_password" v-if="!formType">
<el-input type="password" v-model="orgAccountForm.confirm_password" />
</el-form-item>
<el-form-item label="是否启用" prop="state">
<bg-switch :labels="['否','是']" :values="[0,1]" v-model="orgAccountForm.state"></bg-switch>
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref, onMounted, onBeforeMount, getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
const { $axios,$message } = proxy
const props = defineProps({
formType: {
type: Boolean,
default: false, //false 新建 true 编辑
},
// id: {
// type: String,
// default: '',
// }
});
const orgAccountForm = reactive({
organization_id: '',
select_role: '',
logo: [],
system_account: '',
contact_phone: '',
password: '',
confirm_password: '',
state: 1,
})
const validatePass = (rule, value, callback) => {
if (value !== orgAccountForm.password) {
callback(new Error("密码输入不一致"))
} else {
callback()
}
}
const orgAccountFormRules = reactive({
organization_id: [
{ required: true, message: '请选择组织', trigger: 'blur' },
],
select_role: [
{ required: true, message: '请选择角色', trigger: 'blur' },
],
system_account: [
{ required: true, message: '请输入账号', trigger: 'blur' },
],
contact_phone: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
],
confirm_password: [
{ required: true, message: '请确认密码', trigger: 'blur' },
{ validator: validatePass, trigger: 'blur' }
],
})
const orgformAccountRef = ref(null)
const emit = defineEmits(['action'])
const roleList = ref([])
const submitForm = async () => {
if (!orgformAccountRef) return
await orgformAccountRef.value.validate((valid, fields) => {
if (valid) {
emit('action', orgAccountForm)
} else {
emit('action',null)
}
})
}
const clearForm = () => {
if (!orgformAccountRef) return
orgformAccountRef.value.resetFields()
orgAccountForm.select_role = [roleList.value[0].role_id];
}
const setForm = (data) => {
Object.assign(orgAccountForm, data);
}
const orgData = ref([])
const treeProps = {
label: 'name',
children: 'Child',
value: 'organization_id'
}
const getOrgTree = () => {
$axios.get(`/apaas/system/v5/org/tree`)
.then((res) => {
if (res.data.code == 200) {
orgData.value = res.data.data || [];
}else {
$message.error(res.data.msg)
}
})
}
const getRoleList = () => {
$axios.get(`/apaas/system/v5/org/select/role?is_admin=2`)
.then((res) => {
if (res.data.code == 200) {
roleList.value = res.data.data;
orgAccountForm.select_role = [roleList.value[0].role_id];
}else {
}
})
}
onBeforeMount(() =>{
getOrgTree()
getRoleList()
})
onMounted(() => {
})
defineExpose({ submitForm, clearForm, setForm })
</script>
\ No newline at end of file
<template>
<el-form
:label-position="'right'"
label-width="120px"
:model="orgPersonForm"
:rules="orgPersonFormRules"
ref="orgPersonFormRef"
style="max-width: 66%"
>
<el-form-item label="联系人姓名" prop="contact_name">
<el-input v-model="orgPersonForm.contact_name" />
</el-form-item>
<el-form-item label="证件类型" prop="document_type">
<el-select v-model="orgPersonForm.document_type" placeholder="请选择证件类型" style="width: 100%">
<el-option
v-for="item in documentTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="证件号" prop="document_number">
<el-input v-model="orgPersonForm.document_number" />
</el-form-item>
<el-form-item label="联系人邮箱" prop="contact_email">
<el-input v-model="orgPersonForm.contact_email"/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" :rows="3" v-model="orgPersonForm.remark" />
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref, onMounted } from 'vue'
const orgPersonForm = reactive({
contact_name: '',
document_type: '',
document_number: '',
contact_email: '',
remark: '',
})
const documentTypeList = ref([{
label: '身份证',
value: 1
}])
const orgPersonFormRules = reactive({
})
const orgPersonFormRef = ref(null)
const emit = defineEmits(['action'])
const submitForm = async () => {
if (!orgPersonFormRef) return
await orgPersonFormRef.value.validate((valid, fields) => {
if (valid) {
emit('action', orgPersonForm)
} else {
emit('action',null)
}
})
}
const clearForm = () => {
if (!orgPersonFormRef) return
orgPersonFormRef.value.resetFields()
}
const setForm = (data) => {
Object.assign(orgPersonForm, data);
}
onMounted(() => {
})
defineExpose({ submitForm, clearForm, setForm })
</script>
\ No newline at end of file
......@@ -54,7 +54,7 @@
</div>
<div class="font_bold">{{route.query.id ? (successFlag ? '平台用户编辑成功' : '平台用户编辑失败') : (successFlag ? '平台用户新增成功' : '平台用户新增失败')}}</div>
<el-button @click="cancel">返回列表</el-button>
<el-button type="primary" @click="continueCreate">继续创建</el-button>
<el-button v-if="!route.query.id" type="primary" @click="continueCreate">继续创建</el-button>
</div>
</div>
......@@ -130,7 +130,7 @@ const getPlatformPersonFormData = (data) => {
let params = {
}
$axios.post(`/apaas/system/v5/user/update`,params)
$axios.post(`/apaas/system/v5/org/update/user/:id`,params)
.then((res) => {
if (res.data.code == 200) {
successFlag.value = true;
......@@ -192,11 +192,12 @@ const getOrgTree = () => {
onBeforeMount(() => {
getOrgTree()
if(route.query.id) {
console.log(route.query.id)
}
})
onMounted(() => {
if(route.query.type === "1") {
}
})
</script>
......
......@@ -116,7 +116,7 @@ const clearForm = () => {
}
const setForm = (data) => {
platformAccountForm.value = Object.assign(platformAccountForm, data);
Object.assign(platformAccountForm, data);
}
const getRoleList = () => {
......
......@@ -50,7 +50,7 @@ const clearForm = () => {
}
const setForm = (data) => {
platformPersonForm.value = Object.assign(platformPersonForm, data);
Object.assign(platformPersonForm, data);
}
onMounted(() => {
......
<template>
<el-form
:label-position="'right'"
label-width="120px"
:model="systemAccountFormRef"
:rules="systemAccountFormRules"
ref="platformAccountRef"
style="max-width: 66%"
>
<el-form-item label="所属组织机构" prop="org">
<el-input v-model="systemAccountFormRef.org" />
</el-form-item>
<el-form-item label="角色" prop="role">
<el-input v-model="systemAccountFormRef.role" />
</el-form-item>
<el-form-item label="头像" prop="logo">
<bg-upload-image v-model="systemAccountFormRef.logo" :showTips="true" :limit="1" :fileSize="500" :fileSizeUnit="'KB'" listType="picture-card" :accept="['.jpg','.jpeg','.png']" customTips="请选择图片上传:大小120 * 120像素支持jpg、png等格式,图片需小于500KB"></bg-upload-image>
</el-form-item>
<el-form-item label="账号" prop="account">
<el-input v-model="systemAccountFormRef.account" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input v-model="systemAccountFormRef.phone" />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" v-model="systemAccountFormRef.password" />
</el-form-item>
<el-form-item label="确认密码" prop="confirm_password">
<el-input type="password" v-model="systemAccountFormRef.confirm_password" />
</el-form-item>
<el-form-item label="是否启用" prop="is_use">
<bg-switch :labels="['否','是']" :values="[0,1]" v-model="systemAccountFormRef.is_use"></bg-switch>
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref, onMounted } from 'vue'
const systemAccountFormRef = reactive({
org: '',
role: '',
logo: '',
account: '',
phone: '',
password: '',
confirm_password: '',
is_use: 1,
})
const validatePass = (rule, value, callback) => {
if (value !== systemAccountFormRef.password) {
callback(new Error("密码输入不一致"))
} else {
callback()
}
}
const systemAccountFormRules = reactive({
org: [
{ required: true, message: '请选择组织', trigger: 'blur' },
],
role: [
{ required: true, message: '请选择角色', trigger: 'blur' },
],
account: [
{ required: true, message: '请输入账号', trigger: 'blur' },
],
phone: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
],
confirm_password: [
{ required: true, message: '请确认密码', trigger: 'blur' },
{ validator: validatePass, trigger: 'blur' }
],
})
const platformAccountRef = ref(null)
const emit = defineEmits(['action'])
const submitForm = async () => {
if (!platformAccountRef) return
await platformAccountRef.value.validate((valid, fields) => {
if (valid) {
emit('action', systemAccountFormRef)
} else {
emit('action',null)
}
})
}
const clearForm = () => {
if (!platformAccountRef) return
platformAccountRef.value.resetFields()
}
const setForm = (data) => {
systemAccountFormRef.value = Object.assign(systemAccountFormRef, data);
}
onMounted(() => {
})
defineExpose({ submitForm, clearForm, setForm })
</script>
\ No newline at end of file
<template>
<el-form
:label-position="'right'"
label-width="120px"
:model="contactForm"
:rules="contactFormRules"
ref="contactRef"
style="max-width: 66%"
>
<el-form-item label="联系人姓名" prop="name">
<el-input v-model="contactForm.name" />
</el-form-item>
<el-form-item label="证件类型" prop="certificate_type">
<el-input v-model="contactForm.certificate_type" />
</el-form-item>
<el-form-item label="证件号" prop="certificate_account">
<el-input v-model="contactForm.certificate_account" />
</el-form-item>
<el-form-item label="联系人邮箱">
<el-input v-model="contactForm.email"/>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" :rows="3" v-model="contactForm.remark" />
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref, onMounted } from 'vue'
const contactForm = reactive({
name: '',
certificate_type: '',
certificate_account: '',
email: '',
remark: '',
})
const contactFormRules = reactive({
})
const contactRef = ref(null)
const emit = defineEmits(['action'])
const submitForm = async () => {
if (!contactRef) return
await contactRef.value.validate((valid, fields) => {
if (valid) {
emit('action', contactForm)
} else {
emit('action',null)
}
})
}
const clearForm = () => {
if (!contactRef) return
contactRef.value.resetFields()
}
const setForm = (data) => {
contactForm.value = Object.assign(contactForm, data);
}
onMounted(() => {
})
defineExpose({ submitForm, clearForm, setForm })
</script>
\ No newline at end of file
......@@ -180,7 +180,7 @@ var adminMenu = [
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/system-user",
path: "/system/organization/org-user",
},
{
menuName: "用户详情",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment