|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div class="box"> | 
|---|
|  |  |  | <el-form :model="form" ref="form" label-width="140px"> | 
|---|
|  |  |  | <el-form-item label="来访预约方式:" prop="doorIds"> | 
|---|
|  |  |  | <el-radio-group v-model="form.doorIds"> | 
|---|
|  |  |  | <el-radio :label="3">预约免登记</el-radio> | 
|---|
|  |  |  | <el-radio :label="6">预约后登记(需要配备访客机)</el-radio> | 
|---|
|  |  |  | <el-form-item label="来访预约方式:" prop="reservationWay"> | 
|---|
|  |  |  | <el-radio-group v-model="form.reservationWay"> | 
|---|
|  |  |  | <el-radio :label="0">预约免登记</el-radio> | 
|---|
|  |  |  | <el-radio :label="1">预约后登记(需要配备访客机)</el-radio> | 
|---|
|  |  |  | </el-radio-group> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="被访人校验方式:" prop="doorIds"> | 
|---|
|  |  |  | <el-radio-group v-model="form.doorIds"> | 
|---|
|  |  |  | <el-radio :label="3">仅手机号</el-radio> | 
|---|
|  |  |  | <el-radio :label="6">手机号&姓名</el-radio> | 
|---|
|  |  |  | <el-form-item label="被访人校验方式:" prop="checkVisit"> | 
|---|
|  |  |  | <el-radio-group v-model="form.checkVisit"> | 
|---|
|  |  |  | <el-radio :label="0">仅手机号</el-radio> | 
|---|
|  |  |  | <el-radio :label="1">手机号&姓名</el-radio> | 
|---|
|  |  |  | </el-radio-group> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="健康证是否必填:" prop="doorIds"> | 
|---|
|  |  |  | <el-radio-group v-model="form.doorIds"> | 
|---|
|  |  |  | <el-radio :label="3">否</el-radio> | 
|---|
|  |  |  | <el-radio :label="6">是</el-radio> | 
|---|
|  |  |  | <el-form-item label="健康证是否必填:" prop="healthCard"> | 
|---|
|  |  |  | <el-radio-group v-model="form.healthCard"> | 
|---|
|  |  |  | <el-radio :label="0">否</el-radio> | 
|---|
|  |  |  | <el-radio :label="1">是</el-radio> | 
|---|
|  |  |  | </el-radio-group> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="访客是否答题:" prop="doorIds"> | 
|---|
|  |  |  | <el-form-item label="访客是否答题:" prop="isAnswer"> | 
|---|
|  |  |  | <el-switch | 
|---|
|  |  |  | v-model="form.doorIds" | 
|---|
|  |  |  | v-model="form.isAnswer" | 
|---|
|  |  |  | active-color="#13ce66" | 
|---|
|  |  |  | inactive-color="#ff4949" | 
|---|
|  |  |  | :active-value="1" | 
|---|
|  |  |  | :inactive-value="0"> | 
|---|
|  |  |  | </el-switch> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="访客答题主题:" prop="doorIds"> | 
|---|
|  |  |  | <el-input style="width: 50%;" v-model="form.doorIds" placeholder="请输入答题标题" v-trim/> | 
|---|
|  |  |  | <el-form-item label="访客答题主题:" prop="theme"> | 
|---|
|  |  |  | <el-input style="width: 50%;" type="textarea" v-model="form.theme" placeholder="请输入答题标题" v-trim/> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="访客答题说明:" prop="doorIds"> | 
|---|
|  |  |  | <el-input style="width: 50%;" type="textarea" v-model="form.doorIds" placeholder="请输入" v-trim/> | 
|---|
|  |  |  | <el-form-item label="访客答题说明:" prop="description"> | 
|---|
|  |  |  | <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="请输入" v-trim/> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="入厂须知:" prop="visitNotice"> | 
|---|
|  |  |  | <el-tiptap style="width: 50%;" v-model="form.visitNotice" :extensions="extensions" /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item> | 
|---|
|  |  |  | <el-button type="primary">保存配置项</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="submit">保存配置项</el-button> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common' | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | // necessary extensions | 
|---|
|  |  |  | Doc, | 
|---|
|  |  |  | Text, | 
|---|
|  |  |  | Paragraph, | 
|---|
|  |  |  | Heading, | 
|---|
|  |  |  | Bold, | 
|---|
|  |  |  | Underline, | 
|---|
|  |  |  | Italic, | 
|---|
|  |  |  | Strike, | 
|---|
|  |  |  | ListItem, | 
|---|
|  |  |  | BulletList, | 
|---|
|  |  |  | OrderedList, | 
|---|
|  |  |  | Image, | 
|---|
|  |  |  | Blockquote, | 
|---|
|  |  |  | TextAlign, | 
|---|
|  |  |  | Indent, | 
|---|
|  |  |  | Table, | 
|---|
|  |  |  | TableHeader, | 
|---|
|  |  |  | TableCell, | 
|---|
|  |  |  | TableRow, | 
|---|
|  |  |  | TextColor, | 
|---|
|  |  |  | HorizontalRule | 
|---|
|  |  |  | } from 'element-tiptap' | 
|---|
|  |  |  | import { upload } from '@/api/system/common' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'visitorSources', | 
|---|
|  |  |  |  | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | form: { | 
|---|
|  |  |  | doorIds: '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | id: null, | 
|---|
|  |  |  | checkVisit: 0, | 
|---|
|  |  |  | reservationWay: 0, | 
|---|
|  |  |  | healthCard: 0, | 
|---|
|  |  |  | isAnswer: 0, | 
|---|
|  |  |  | theme: '', | 
|---|
|  |  |  | description: '', | 
|---|
|  |  |  | visitNotice: '' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extensions: [ | 
|---|
|  |  |  | new Doc(), | 
|---|
|  |  |  | new Text(), | 
|---|
|  |  |  | new Paragraph(), | 
|---|
|  |  |  | new Heading({ level: 5 }), | 
|---|
|  |  |  | new Bold({ bubble: true }), | 
|---|
|  |  |  | new Underline({ bubble: true, menubar: false }), | 
|---|
|  |  |  | new Italic(), | 
|---|
|  |  |  | new Strike(), | 
|---|
|  |  |  | new ListItem(), | 
|---|
|  |  |  | new BulletList(), | 
|---|
|  |  |  | new OrderedList(), | 
|---|
|  |  |  | new Image({ | 
|---|
|  |  |  | uploadRequest (file) { | 
|---|
|  |  |  | const fd = new FormData() | 
|---|
|  |  |  | fd.append('folder', 'visit/') | 
|---|
|  |  |  | fd.append('file', file) | 
|---|
|  |  |  | return upload(fd).then(res => { | 
|---|
|  |  |  | return res.prefixPath + res.folder + res.halfPath | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | new Blockquote(), | 
|---|
|  |  |  | new TextAlign(), | 
|---|
|  |  |  | new Indent(), | 
|---|
|  |  |  | new Table(), | 
|---|
|  |  |  | new TableHeader(), | 
|---|
|  |  |  | new TableCell(), | 
|---|
|  |  |  | new TableRow(), | 
|---|
|  |  |  | new HorizontalRule(), | 
|---|
|  |  |  | new TextColor() | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | created () { | 
|---|
|  |  |  | this.getData() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | getData () { | 
|---|
|  |  |  | getVisitConfigDTO({}) | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | this.form.checkVisit = res.checkVisit | 
|---|
|  |  |  | this.form.description = res.description | 
|---|
|  |  |  | this.form.healthCard = res.healthCard | 
|---|
|  |  |  | this.form.isAnswer = res.isAnswer | 
|---|
|  |  |  | this.form.reservationWay = res.reservationWay | 
|---|
|  |  |  | this.form.theme = res.theme | 
|---|
|  |  |  | this.form.visitNotice = res.visitNotice | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | submit () { | 
|---|
|  |  |  | updateVisitConfig({ | 
|---|
|  |  |  | isAnswer: this.form.isAnswer, | 
|---|
|  |  |  | healthCard: this.form.healthCard, | 
|---|
|  |  |  | checkVisit: this.form.checkVisit, | 
|---|
|  |  |  | reservationWay: this.form.reservationWay, | 
|---|
|  |  |  | description: this.form.description, | 
|---|
|  |  |  | theme: this.form.theme, | 
|---|
|  |  |  | visitNotice: this.form.visitNotice | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | this.$message.success('保存成功') | 
|---|
|  |  |  | this.getData() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .box { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | padding: 30px; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | background: #ffffff; | 
|---|