|
|
@@ -1,35 +1,359 @@
|
|
|
<template>
|
|
|
<div class="edit-view">
|
|
|
- <el-tabs v-model="active">
|
|
|
- <el-tab-pane label="基本信息" name="first"><OrganizationEdit ref="page1" @next="goNext"/></el-tab-pane>
|
|
|
- <el-tab-pane label="申请信息" name="second"><RateEdit ref="page2"/></el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
+ <el-form
|
|
|
+ :model="formData"
|
|
|
+ :rules="rules"
|
|
|
+ ref="form"
|
|
|
+ label-width="50px"
|
|
|
+ label-position="right"
|
|
|
+ size="small"
|
|
|
+ style="max-width: 600px;"
|
|
|
+ >
|
|
|
+ <div class="info-content">
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="name">机构名称</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-input v-model="formData.name" placeholder="请输入机构名称"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="name">负责人</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-input v-model="formData.owner" placeholder="请输入负责人"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="name">负责人邮箱</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-input v-model="formData.ownerEmail" placeholder="请输入负责人邮箱"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="name">负责人电话</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-input v-model="formData.ownerPhone" placeholder="请输入负责人电话"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item">
|
|
|
+ <div class="name">地址</div>
|
|
|
+ <div class="val">
|
|
|
+ <district-choose v-model="formData.district1"></district-choose>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">单位概况</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 4, maxRows: 6 }"
|
|
|
+ placeholder="请输入单位概况"
|
|
|
+ v-model="formData.introduction"
|
|
|
+ ></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">考级活动</div>
|
|
|
+ <div class="val">
|
|
|
+ <el-radio-group v-model="formData.undertakeExamination" size="small">
|
|
|
+ <el-radio class="name" :label="true">承办过</el-radio>
|
|
|
+ <el-radio class="name" :label="false">未承办过</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address" v-if="formData.undertakeExamination">
|
|
|
+ <div class="name"></div>
|
|
|
+ <div class="val">
|
|
|
+ <el-tag
|
|
|
+ :key="tag"
|
|
|
+ v-for="tag in formData.examination"
|
|
|
+ closable
|
|
|
+ :disable-transitions="false"
|
|
|
+ @close="handleClose(tag)"
|
|
|
+ size="medium"
|
|
|
+ class="el-tag-height"
|
|
|
+ >
|
|
|
+ {{ tag }}
|
|
|
+ </el-tag>
|
|
|
+ <div>
|
|
|
+ <el-input
|
|
|
+ class="input-new-tag"
|
|
|
+ v-if="inputVisible"
|
|
|
+ v-model="inputValue"
|
|
|
+ ref="saveTagInput"
|
|
|
+ size="small"
|
|
|
+ @keyup.enter.native="handleInputConfirm"
|
|
|
+ @blur="handleInputConfirm"
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
+ <el-button v-else class="button-new-tag" size="small" @click="showInput"
|
|
|
+ >添加考级活动名称</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-content">
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">法人资格</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.privacyPolicy"></file-upload>
|
|
|
+ <!-- <single-upload v-model="formData.privacyPolicy"></single-upload> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">业务内容</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.business"></file-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">社会信誉</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.credits"></file-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-content">
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">消防卫生</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.fire"></file-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">财务报表</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.finance"></file-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-item address">
|
|
|
+ <div class="name">房产证明</div>
|
|
|
+ <div class="val">
|
|
|
+ <file-upload v-model="formData.property"></file-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-form-item>
|
|
|
+ <div style="margin-top: 10px">
|
|
|
+ <el-button @click="readonly = false" :loading="saving" type="success">提交</el-button>
|
|
|
+ <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
|
|
|
+ <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id"
|
|
|
+ >取消申请
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="$router.go(-1)">返回</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import OrganizationEdit from './OrganizationEdit.vue';
|
|
|
-import RateEdit from './RateEdit.vue';
|
|
|
+import { mapState } from 'vuex';
|
|
|
export default {
|
|
|
name: 'Organization',
|
|
|
- created() {},
|
|
|
+ computed: {
|
|
|
+ ...mapState(['organization'])
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ if (this.$route.query.rateId) {
|
|
|
+ this.$http
|
|
|
+ .get('rate/get/' + this.$route.query.rateId)
|
|
|
+ .then(res => {
|
|
|
+ this.formData = res;
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ console.log(e);
|
|
|
+ this.$message.error(e.error);
|
|
|
+ });
|
|
|
+ } else if (this.organization != null) {
|
|
|
+ this.formData.name = this.organization.name;
|
|
|
+ this.formData.owner = this.organization.owner;
|
|
|
+ this.formData.ownerEmail = this.organization.ownerEmail;
|
|
|
+ this.formData.ownerPhone = this.organization.ownerPhone;
|
|
|
+ this.formData.district1 = this.organization.district1;
|
|
|
+ this.formData.privacyPolicy.push(this.organization.businessLicense);
|
|
|
+ this.formData.organizationId = this.organization.id;
|
|
|
+ }
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
- active: 'first'
|
|
|
+ formData: {
|
|
|
+ examination: []
|
|
|
+ },
|
|
|
+ inputVisible: false,
|
|
|
+ inputValue: '',
|
|
|
+ saving: false,
|
|
|
+ rules: {
|
|
|
+ name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
|
|
|
+ owner: [{ required: true, message: '请输入负责人', trigger: 'blur' }],
|
|
|
+ ownerEmail: [{ required: true, message: '请输入邮箱', trigger: 'blur' }],
|
|
|
+ ownerPhone: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ pattern: /^1[3-9]\d{9}$/,
|
|
|
+ message: '请输入手机号',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ introduction: [{ required: true, message: '请输入单位概况', trigger: 'blur' }],
|
|
|
+ undertakeExamination: [{ required: true, message: '请选择是否承办过考级活动', trigger: 'blur' }],
|
|
|
+ privacyPolicy: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传法人资格',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ business: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传业务内容',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ credits: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传社会信誉',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ fire: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传消防卫生',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ finance: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传财务报表',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ property: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ regexp: /^[_.@A-Za-z0-9-]*$/,
|
|
|
+ message: '请上传房产证明',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
- goNext(page) {
|
|
|
- // this.active = page;
|
|
|
- // this.$refs.page2.init();
|
|
|
- this.$nextTick(() => {
|
|
|
- this.activeName = 'second';
|
|
|
+ handleClose(tag) {
|
|
|
+ this.formData.examination.splice(this.formData.examination.indexOf(tag), 1);
|
|
|
+ },
|
|
|
+ showInput() {
|
|
|
+ this.inputVisible = true;
|
|
|
+ this.$nextTick(_ => {
|
|
|
+ this.$refs.saveTagInput.$refs.input.focus();
|
|
|
});
|
|
|
+ },
|
|
|
+ handleInputConfirm() {
|
|
|
+ let inputValue = this.inputValue;
|
|
|
+ if (inputValue) {
|
|
|
+ this.formData.examination.push(inputValue);
|
|
|
+ }
|
|
|
+ this.inputVisible = false;
|
|
|
+ this.inputValue = '';
|
|
|
+ },
|
|
|
+ onSave(status) {
|
|
|
+ this.$refs.form.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.submit(status);
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ submit(status) {
|
|
|
+ let data = { ...this.formData };
|
|
|
+ data.status = status;
|
|
|
+ data.organizationId = this.organizationId;
|
|
|
+ this.saving = true;
|
|
|
+ this.$http
|
|
|
+ .post('/rate/save', data, { body: 'json' })
|
|
|
+ .then(res => {
|
|
|
+ this.saving = false;
|
|
|
+ this.$message.success('成功');
|
|
|
+ // this.$router.go(-1);
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ console.log(e);
|
|
|
+ this.saving = false;
|
|
|
+ this.$message.error(e.error);
|
|
|
+ });
|
|
|
}
|
|
|
- },
|
|
|
- components: {
|
|
|
- OrganizationEdit,
|
|
|
- RateEdit
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
-<style lang="less" scoped></style>
|
|
|
+<style lang="less" scoped>
|
|
|
+.info-content {
|
|
|
+ background: #f5f7fa;
|
|
|
+ padding: 30px 25px 25px;
|
|
|
+ margin: 2px auto;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .info-item {
|
|
|
+ width: 50%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+
|
|
|
+ &.address {
|
|
|
+ width: 100%;
|
|
|
+ align-items: flex-start;
|
|
|
+ .val {
|
|
|
+ width: 465px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .name {
|
|
|
+ font-size: 13px;
|
|
|
+ font-family: PingFangSC-Regular, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #565b66;
|
|
|
+ line-height: 22px;
|
|
|
+ min-width: 65px;
|
|
|
+ margin-right: 10px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+
|
|
|
+ .val {
|
|
|
+ width: 190px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.el-tag + .el-tag {
|
|
|
+ margin-left: 10px;
|
|
|
+ // margin-bottom: 10px;
|
|
|
+}
|
|
|
+.el-tag-height {
|
|
|
+ line-height: 30px;
|
|
|
+ height: 32px !important;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.button-new-tag {
|
|
|
+ // margin-left: 10px;
|
|
|
+ height: 32px;
|
|
|
+ line-height: 30px;
|
|
|
+ padding-top: 0;
|
|
|
+ padding-bottom: 0;
|
|
|
+}
|
|
|
+.input-new-tag {
|
|
|
+ width: 200px;
|
|
|
+ // margin-left: 10px;
|
|
|
+ vertical-align: bottom;
|
|
|
+}
|
|
|
+</style>
|