jiangping
2024-05-09 b62578f8b43f15be89b3d14f463f11aed03e6fb9
admin/src/views/business/visitorSources.vue
@@ -1,55 +1,168 @@
<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="doorsVisitRequired">
                <el-switch
                    v-model="form.doorIds"
                    v-model="form.doorsVisitRequired"
                    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="isAnswer">
                <el-switch
                    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%;" type="textarea" 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="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,
        doorsVisitRequired: '',
        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.doorsVisitRequired = res.doorsVisitRequired
          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,
        doorsVisitRequired: this.form.doorsVisitRequired
      }).then(res => {
        this.$message.success('保存成功')
        this.getData()
      })
    }
  }
}
@@ -58,7 +171,6 @@
<style lang="scss" scoped>
    .box {
        width: 100%;
        height: 100%;
        padding: 30px;
        box-sizing: border-box;
        background: #ffffff;