123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- <template>
- <el-dialog
- :title="title"
- :visible.sync="modal"
- width="80%"
- :close-on-click-modal="false"
- @close="
- res => {
- $emit('cancel');
- }
- "
- >
- <el-form ref="form" :model="form" :rules="rules" label-width="100px">
- <el-form-item label="机构名称" prop="name"
- ><el-input v-model="form.name" placeholder="请输入机构名称" />
- </el-form-item>
- <el-form-item label="机构类型" prop="type">
- <el-radio-group v-model="form.type">
- <el-radio
- v-for="(item, index) in TypeOptions"
- :key="index"
- :label="item.value"
- >
- {{ item.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="所在地区">
- <!-- TODO 联动select -->
- <AddressSelect v-model="form.addressArr" />
- </el-form-item>
- <el-form-item label="详细地址" prop="type">
- <el-input v-model="form.address" placeholder="请输入详细地址" />
- </el-form-item>
- <el-form-item label="机构logo">
- <upload v-model="form.logo" params="prefix=/kindergarten" />
- </el-form-item>
- <el-form-item label="机构预览logo">
- <upload v-model="form.previewLogo" params="prefix=/kindergarten" />
- </el-form-item>
- <el-form-item label="门店图片">
- <upload v-model="form.frontDoor" params="prefix=/kindergarten" />
- </el-form-item>
- <el-form-item label="营业执照">
- <upload v-model="form.businessLicense" params="prefix=/kindergarten" />
- </el-form-item>
- <el-form-item label="证照号码" prop="idCardNumber">
- <el-input v-model="form.idCardNumber" placeholder="请输入证照号码" />
- </el-form-item>
- <el-form-item label="办公电话" prop="phonenumber">
- <el-input v-model="form.phonenumber" placeholder="请输入办公电话" />
- </el-form-item>
- <el-form-item label="场景介绍" prop="brief">
- <el-input
- v-model="form.brief"
- type="textarea"
- :rows="2"
- placeholder="请输入场景介绍"
- />
- </el-form-item>
- <el-form-item label="申请人姓名" prop="realName">
- <el-input v-model="form.realName" placeholder="请输入申请人姓名" />
- </el-form-item>
- <el-form-item label="手机号" prop="personPhonenumber">
- <el-input v-model="form.personPhonenumber" placeholder="请输入手机号" />
- </el-form-item>
- <el-form-item label="半身照">
- <upload
- v-model="form.bodyPhoto"
- :uploadUrl="$upload('/yxl-back-end/framework/oss/minio/upload')"
- />
- </el-form-item>
- <el-form-item label="证件正面">
- <upload
- v-model="form.idCardFront"
- :uploadUrl="$upload('/yxl-back-end/framework/oss/minio/upload')"
- />
- </el-form-item>
- <el-form-item label="证件背面">
- <upload
- v-model="form.idCardBack"
- :uploadUrl="$upload('/yxl-back-end/framework/oss/minio/upload')"
- />
- </el-form-item>
- <el-form-item label="状态" prop="isShow">
- <el-radio-group v-model="form.isShow">
- <el-radio :label="true">显示</el-radio>
- <el-radio :label="false">隐藏</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-form>
- <span slot="footer" class="dialog-footer">
- <el-button @click="modal = false">取消</el-button>
- <el-button type="primary" @click="handleConfirm">确定</el-button>
- </span>
- </el-dialog>
- </template>
- <script>
- import SCENETYPE from '@/const/sceneType';
- import { getItem, saveItem } from '@/api/scene';
- export default {
- name: 'SceneItemModal',
- props: {
- id: {
- type: String,
- default: ''
- }
- },
- data() {
- return {
- title: '场景详情',
- modal: true,
- TypeOptions: SCENETYPE,
- form: {
- name: '',
- address: '',
- idCardNumber: '',
- phonenumber: '',
- brief: '',
- realName: '',
- personPhonenumber: '',
- type: '',
- // TODO 未对接接口字段
- province: '广东',
- city: '中山',
- area: '大涌',
- logo: [],
- previewLogo: [],
- frontDoor: [],
- businessLicense: [],
- bodyPhoto: [],
- idCardFront: [],
- idCardBack: [],
- addressArr: [],
- isShow: false
- },
- rules: {
- name: [
- { required: true, message: '请输入机构名称', trigger: 'change' }
- ],
- address: [
- { required: true, message: '请输入详细地址', trigger: 'change' }
- ],
- idCardNumber: [
- { required: true, message: '请输入证照号码', trigger: 'change' }
- ],
- phonenumber: [
- { required: true, message: '请输入办公电话', trigger: 'change' }
- ],
- brief: [
- { required: true, message: '请输入场景介绍', trigger: 'change' }
- ],
- realName: [
- { required: true, message: '请输入申请人姓名', trigger: 'change' }
- ],
- personPhonenumber: [
- { required: true, message: '请输入手机号', trigger: 'change' }
- ],
- type: [
- { required: true, message: '请输入机构类型', trigger: 'change' }
- ],
- logo: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- previewLogo: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- frontDoor: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- businessLicense: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- bodyPhoto: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- idCardFront: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- idCardBack: [
- {
- type: 'array',
- required: true,
- message: '请上传图片',
- trigger: 'change'
- }
- ],
- addressArr: [
- {
- type: 'array',
- required: true,
- message: '请选择地址',
- trigger: 'change'
- }
- ]
- }
- };
- },
- watch: {
- id: {
- handler(id) {
- id && this.loadData();
- },
- immediate: true
- }
- },
- mounted() {},
- methods: {
- async loadData() {
- const { success, data, msg } = await getItem({
- id: this.id
- });
- if (success) {
- let result = data;
- result.logo = [
- {
- url: data.logo
- }
- ];
- result.previewLogo = [
- {
- url: data.previewLogo
- }
- ];
- result.frontDoor = [
- {
- url: data.frontDoor
- }
- ];
- result.businessLicense = [
- {
- url: data.businessLicense
- }
- ];
- result.bodyPhoto = [
- {
- url: data.bodyPhoto
- }
- ];
- result.idCardFront = [
- {
- url: data.idCardFront
- }
- ];
- result.idCardBack = [
- {
- url: data.idCardBack
- }
- ];
- result.addressArr = [data.province, data.city, data.area];
- this.form = result;
- }
- },
- handleConfirm() {
- this.$refs.form.validate(async valid => {
- if (valid) {
- let params = Object.assign({}, this.form);
- params.logo = this.form.logo[0].url;
- params.previewLogo = this.form.previewLogo[0].url;
- params.frontDoor = this.form.frontDoor[0].url;
- params.businessLicense = this.form.businessLicense[0].url;
- params.bodyPhoto = this.form.bodyPhoto[0].url;
- params.idCardFront = this.form.idCardFront[0].url;
- params.idCardBack = this.form.idCardBack[0].url;
- params.province = this.form.addressArr[0];
- params.city = this.form.addressArr[1];
- params.area = this.form.addressArr[2];
- if (this.id) params.id = this.id;
- const { success, msg } = await saveItem(params);
- if (success) {
- this.$success('保存成功!');
- this.modal = false;
- this.$g_emit('scene_reload');
- }
- }
- });
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .pre-img {
- height: 80px;
- }
- </style>
|