|
|
@@ -0,0 +1,174 @@
|
|
|
+<template>
|
|
|
+ <div class="org-form">
|
|
|
+ <el-card>
|
|
|
+ <PageHeader slot="header" :title="isEdit ? '编辑组织' : '新建组织'">
|
|
|
+ <el-button size="mini" @click="$router.push('/org')">返回</el-button>
|
|
|
+ </PageHeader>
|
|
|
+
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
|
|
+ <el-form-item label="组织名称" prop="name">
|
|
|
+ <el-input v-model="form.name" placeholder="请输入组织名称" maxlength="128"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="组织类型" prop="type">
|
|
|
+ <el-select v-model="form.type" placeholder="请选择组织类型" style="width: 100%">
|
|
|
+ <el-option label="企业" value="enterprise"></el-option>
|
|
|
+ <el-option label="机构" value="institution"></el-option>
|
|
|
+ <el-option label="其他" value="other"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="组织编号" prop="code">
|
|
|
+ <el-input v-model="form.code" placeholder="留空自动生成" maxlength="64"></el-input>
|
|
|
+ <span slot="append" class="el-form-item__error" style="font-size:12px;color:#909399">为空时服务端自动生成(ORG+6位随机)</span>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="联系人姓名" prop="contactName">
|
|
|
+ <el-input v-model="form.contactName" placeholder="请输入联系人姓名" maxlength="64"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="联系人电话" prop="contactPhone">
|
|
|
+ <el-input v-model="form.contactPhone" placeholder="请输入联系人电话" maxlength="32"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="组织简介" prop="description">
|
|
|
+ <el-input v-model="form.description" placeholder="请输入组织简介" type="textarea" :rows="4"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <!-- 仅新建时显示管理员账号创建区域 -->
|
|
|
+ <el-divider v-if="!isEdit" content-position="left">管理员账号创建</el-divider>
|
|
|
+ <el-form-item v-if="!isEdit" label="管理员手机号" prop="adminPhone">
|
|
|
+ <el-input v-model="form.adminPhone" placeholder="请输入管理员手机号" maxlength="20"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="!isEdit" label="管理员真实姓名" prop="adminRealName">
|
|
|
+ <el-input v-model="form.adminRealName" placeholder="请输入管理员真实姓名" maxlength="64"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" :loading="saving" @click="handleSubmit">{{ isEdit ? '保存修改' : '创建' }}</el-button>
|
|
|
+ <el-button @click="$router.push('/org')">取消</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-dialog title="操作成功" :visible.sync="successDialogVisible" width="400px" :close-on-click-modal="false">
|
|
|
+ <div style="text-align:center;padding:10px 0">
|
|
|
+ <i class="el-icon-success" style="color: var(--adm-success);font-size:32px"></i>
|
|
|
+ <p style="margin:12px 0 0;font-size:16px;color: var(--adm-text-88)">{{ isEdit ? '保存成功' : '创建成功' }}</p>
|
|
|
+ </div>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button v-if="!isEdit" type="primary" @click="handleContinue">继续添加</el-button>
|
|
|
+ <el-button @click="handleClose">返回列表</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { orgCreate, orgUpdate, orgDetail } from '@/api/org'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'OrgForm',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ form: {
|
|
|
+ id: null,
|
|
|
+ name: '',
|
|
|
+ type: 'enterprise',
|
|
|
+ code: '',
|
|
|
+ contactName: '',
|
|
|
+ contactPhone: '',
|
|
|
+ description: '',
|
|
|
+ adminPhone: '',
|
|
|
+ adminRealName: ''
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ name: [
|
|
|
+ { required: true, message: '请输入组织名称', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ type: [
|
|
|
+ { required: true, message: '请选择组织类型', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ adminPhone: [
|
|
|
+ { required: true, message: '请输入管理员手机号', trigger: 'blur' },
|
|
|
+ { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ adminRealName: [
|
|
|
+ { required: true, message: '请输入管理员真实姓名', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ saving: false,
|
|
|
+ successDialogVisible: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ isEdit() {
|
|
|
+ return !!this.$route.params.id
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ if (this.isEdit) {
|
|
|
+ this.loadDetail(this.$route.params.id)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async loadDetail(id) {
|
|
|
+ try {
|
|
|
+ const res = await orgDetail({ id })
|
|
|
+ if (res.data) {
|
|
|
+ this.form = {
|
|
|
+ id: res.data.id,
|
|
|
+ name: res.data.name || '',
|
|
|
+ type: res.data.type || 'enterprise',
|
|
|
+ code: res.data.code || '',
|
|
|
+ contactName: res.data.contactName || '',
|
|
|
+ contactPhone: res.data.contactPhone || '',
|
|
|
+ description: res.data.description || '',
|
|
|
+ adminPhone: '',
|
|
|
+ adminRealName: ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ this.$message.error('加载失败')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async handleSubmit() {
|
|
|
+ this.$refs.form.validate(async (valid) => {
|
|
|
+ if (!valid) return
|
|
|
+ this.saving = true
|
|
|
+ try {
|
|
|
+ if (this.isEdit) {
|
|
|
+ await orgUpdate(this.form)
|
|
|
+ } else {
|
|
|
+ const res = await orgCreate(this.form)
|
|
|
+ if (res.data && res.data.adminUser) {
|
|
|
+ this.$message.success('创建成功,管理员账号已同步创建')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.$message.success(this.isEdit ? '保存成功' : '创建成功')
|
|
|
+ this.successDialogVisible = true
|
|
|
+ } catch (e) {
|
|
|
+ this.$message.error('操作失败')
|
|
|
+ } finally {
|
|
|
+ this.saving = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleContinue() {
|
|
|
+ this.successDialogVisible = false
|
|
|
+ this.form = { id: null, name: '', type: 'enterprise', code: '', contactName: '', contactPhone: '', description: '', adminPhone: '', adminRealName: '' }
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.successDialogVisible = false
|
|
|
+ this.$router.push('/org')
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.org-form {
|
|
|
+ padding: 20px;
|
|
|
+ max-width: 700px;
|
|
|
+}
|
|
|
+</style>
|