linwenxin 5 mesiacov pred
rodič
commit
fe6b6d251f

+ 17 - 0
src/api/assessmentIncludesTime.js

@@ -0,0 +1,17 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function letterManagerAddConfig(data) {
+  return request({
+    url: '/letterManager/addConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerConfigDeatil(params) {
+  return request({
+    url: '/letterManager/configDeatil',
+    method: 'post',
+    params: params
+  })
+}

+ 54 - 0
src/api/assessmentItemSetting.js

@@ -0,0 +1,54 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取师傅列表
+export function letterManagerListProject(data) {
+  return request({
+    url: `/letterManager/listProject?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function letterManagerListProjectExport(data, name) {
+  return postBlob({
+    url: '/letterManager/listProject/export',
+    data,
+    name
+  })
+}
+
+export function letterManagerImportProject(data) {
+  return handleImport('/letterManager/importProject', data.formdata, data.id || '')
+}
+
+export function letterManagerAddProject(data) {
+  return request({
+    url: '/letterManager/addProject',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerUpdateProject(data) {
+  return request({
+    url: '/letterManager/updateProject',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerDetailProject(params) {
+  return request({
+    url: '/letterManager/detailProject',
+    method: 'post',
+    params: params
+  })
+}
+
+export function letterManagerDelProject(params) {
+  return request({
+    url: '/letterManager/delProject',
+    method: 'post',
+    params: params
+  })
+}

+ 54 - 0
src/api/department.js

@@ -0,0 +1,54 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取师傅列表
+export function letterManagerListUser(data) {
+  return request({
+    url: `/letterManager/listUser?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function letterManagerListUserExport(data, name) {
+  return postBlob({
+    url: '/letterManager/listUser/export',
+    data,
+    name
+  })
+}
+
+export function letterManagerImport(data) {
+  return handleImport('/letterManager/import', data.formdata, data.id || '')
+}
+
+export function letterManagerAddUser(data) {
+  return request({
+    url: '/letterManager/addUser',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerUpdateUser(data) {
+  return request({
+    url: '/letterManager/updateUser',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerDetailUser(params) {
+  return request({
+    url: '/letterManager/detailUser',
+    method: 'post',
+    params: params
+  })
+}
+
+export function letterManagerDelUser(params) {
+  return request({
+    url: '/letterManager/delUser',
+    method: 'post',
+    params: params
+  })
+}

+ 50 - 0
src/api/departmentSetting.js

@@ -0,0 +1,50 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取师傅列表
+export function letterManagerList(data) {
+  return request({
+    url: `/letterManager/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function letterManagerListExport(data, name) {
+  return postBlob({
+    url: '/letterManager/list/export',
+    data,
+    name
+  })
+}
+
+export function letterManagerAdd(data) {
+  return request({
+    url: '/letterManager/add',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerUpdate(data) {
+  return request({
+    url: '/letterManager/update',
+    method: 'post',
+    data: data
+  })
+}
+
+export function letterManagerDetail(params) {
+  return request({
+    url: '/letterManager/detail',
+    method: 'post',
+    params: params
+  })
+}
+
+export function letterManagerDel(params) {
+  return request({
+    url: '/letterManager/del',
+    method: 'post',
+    params: params
+  })
+}

+ 133 - 0
src/views/setting/workContactLetter/assessmentIncludesTime/index.vue

@@ -0,0 +1,133 @@
+<template>
+  <div style="box-sizing: border-box; padding: 20px" class="aaacccvvv">
+    <zj-form-container
+      ref="formRef"
+      :formData="formData"
+      :formRules="formRules"
+      :formAttributes="{ 'label-position': 'top' }"
+    >
+      <zj-form-module title="考核含时间设置" :formData="formData" :formItems="formItems" :column="1"> </zj-form-module>
+    </zj-form-container>
+    <div>
+      <el-button size="mini" type="primary" @click="submit">提交</el-button>
+      <el-button size="mini" type="success" @click="reset">重置</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { letterManagerAddConfig, letterManagerConfigDeatil } from '@/api/assessmentIncludesTime.js'
+import editTable from '@/components/template/editTable.js'
+import { required } from '@/components/template/rules_verify.js'
+export default {
+  mixins: [editTable],
+  data() {
+    return {
+      formData: {
+        coreNum: '',
+        dayNum: '',
+        isDay: '',
+        leConfigId: ''
+      },
+      formRules: {},
+      INSURE_STEAD_UNIT: []
+    }
+  },
+  computed: {
+    formItems() {
+      return [
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {},
+          formItemAttributes: { label: '网点申诉时间', prop: 'dayNum' },
+          slots: {
+            prepend: (h, { props, onInput }) => {
+              return <div>网点处理考核函申诉截止时间</div>
+            },
+            append: (h, { props, onInput }) => {
+              return <div>天,即自考核函发送时间开始计算,达到截止时间则表示网点接收考核函,状态变更为【已执行】</div>
+            }
+          }
+        },
+        {
+          name: 'el-radio',
+          options: [
+            { label: '限制处理天数', value: 'YES' },
+            { label: '不限制处理天数', value: 'NO' }
+          ],
+          md: 24,
+          attributes: {
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '中心处理时间',
+            prop: 'isDay',
+            rules: [...required]
+          }
+        },
+        {
+          isShow: this.formData.isDay === 'YES',
+          name: 'el-input',
+          md: 24,
+          attributes: {},
+          formItemAttributes: { label: '', prop: 'coreNum', rules: [...required] },
+          slots: {
+            prepend: (h, { props, onInput }) => {
+              return <div>中心处理考核函审批截止时间</div>
+            },
+            append: (h, { props, onInput }) => {
+              return (
+                <div>
+                  天,即自网点发起申诉时间开始计算,达到截止时间则表示中心审批通过网点申诉,状态变更为【已撤销】
+                </div>
+              )
+            }
+          }
+        }
+      ]
+    }
+  },
+  created() {
+    // 获取详情
+    letterManagerConfigDeatil().then(res => {
+      this.formData = { ...res.data }
+    })
+  },
+  methods: {
+    submit() {
+      this.$refs['formRef'].validate(valid => {
+        if (valid) {
+          letterManagerAddConfig({
+            ...this.formData
+          }).then(res => {
+            this.$message({
+              type: 'success',
+              message: `保存成功!`
+            })
+          })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    reset() {
+      Object.assign(this.$data, this.$options.data())
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.aaacccvvv {
+  .el-input__inner {
+    width: 140px;
+    max-width: 140px !important;
+    min-width: 140px !important;
+  }
+  .el-input-group__append {
+    width: 100% !important;
+  }
+}
+</style>

+ 277 - 0
src/views/setting/workContactLetter/assessmentItemSetting/index.vue

@@ -0,0 +1,277 @@
+<template>
+  <template-page
+    v-if="pageShow"
+    ref="pageRef"
+    :get-list="getList"
+    :exportList="exportList"
+    :table-attributes="tableAttributes"
+    :table-events="tableEvents"
+    :options-evens-group="optionsEvensGroup"
+    :moreParameters="moreParameters"
+    :column-parsing="columnParsing"
+    :operation="operation()"
+    key="pageType"
+  >
+    <div class="cartographer_big">
+      <el-dialog title="考核项目" width="100%" :modal="false" :visible.sync="formDialog" :before-close="handleClose">
+        <zj-page-container>
+          <zj-page-fill>
+            <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
+              <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
+                <zj-form-module title="设置" label-width="100px" :form-data="formData" :form-items="formItems">
+                </zj-form-module>
+              </zj-form-container>
+            </div>
+          </zj-page-fill>
+          <div style="text-align: right; box-sizing: border-box; padding: 16px 20px">
+            <el-button size="mini" @click="handleClose">取消</el-button>
+            <el-button size="mini" type="primary" @click="save">保存</el-button>
+          </div>
+        </zj-page-container>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import {
+  letterManagerListProject,
+  letterManagerListProjectExport,
+  letterManagerImportProject,
+  letterManagerAddProject,
+  letterManagerUpdateProject,
+  letterManagerDetailProject,
+  letterManagerDelProject
+} from '@/api/assessmentItemSetting.js'
+import { required } from '@/components/template/rules_verify.js'
+import { commonTemplateDownload } from '@/api/common.js'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin],
+  data() {
+    return {
+      pageType: 'list',
+      pageShow: true,
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: false
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中行
+      recordSelected: [],
+      /** 表单变量 */
+      formDialog: false,
+      formData: {
+        fraction: '',
+        price: '',
+        projectId: '',
+        projectName: '',
+        projectReg: '',
+        projectText: '',
+        status: ''
+      }
+    }
+  },
+  computed: {
+    // 事件组合
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth('add', {
+              click: this.openForm
+            })
+          ]
+        ],
+        [
+          [
+            this.optionsEvensAuth('import', ({ moduleName }) => {
+              return {
+                name: moduleName,
+                render: () => {
+                  return this.importButton(letterManagerImportProject, moduleName)
+                }
+              }
+            })
+          ],
+          [
+            this.optionsEvensAuth('downloadTemplate', {
+              click: () => {
+                commonTemplateDownload({ name: '违规项目导入模板.xlsx' }, `违规项目导入模板`)
+                  .then(res => {
+                    this.$message({
+                      message: '下载成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(err => {
+                    this.$message.error('下载失败')
+                  })
+              }
+            })
+          ]
+        ]
+      ]
+    },
+    // 更多参数
+    moreParameters() {
+      return []
+    },
+    formItems() {
+      return [
+        {
+          md: 12,
+          name: 'el-input',
+          attributes: {},
+          formItemAttributes: {
+            label: '考核项目',
+            prop: 'projectName',
+            rules: [...required]
+          }
+        },
+        {
+          md: 12,
+          name: 'el-input',
+          attributes: {},
+          formItemAttributes: {
+            label: '考核条例',
+            prop: 'projectReg',
+            rules: [...required]
+          }
+        },
+        {
+          md: 24,
+          name: 'el-input',
+          attributes: { type: 'textarea', rows: 3 },
+          formItemAttributes: {
+            label: '考核规定',
+            prop: 'projectText',
+            rules: [...required]
+          }
+        },
+        {
+          md: 8,
+          name: 'el-input',
+          attributes: {},
+          formItemAttributes: {
+            label: '考核金额',
+            prop: 'price',
+            rules: [...required]
+          }
+        },
+        {
+          md: 8,
+          name: 'el-input',
+          attributes: {},
+          formItemAttributes: {
+            label: '考核分数',
+            prop: 'fraction',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-radio',
+          options: [
+            { label: '启用', value: 'ON' },
+            { label: '禁用', value: 'OFF' }
+          ],
+          md: 6,
+          attributes: {
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '状态',
+            prop: 'status',
+            rules: [...required]
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList: letterManagerListProject,
+    // 列表导出函数
+    exportList: letterManagerListProjectExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 打开创建弹窗
+    openForm() {
+      this.formDialog = true
+    },
+    // 打开详情弹窗
+    openDetailForm(row) {
+      Promise.all([letterManagerDetailProject({ id: row.id })]).then(([res1, res2]) => {
+        this.formData = { ...res1.data }
+        this.formDialog = true
+      })
+    },
+    handleClose() {
+      this.$refs?.formRef?.resetFields()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    // 操作按钮
+    operation() {
+      return this.operationBtn({
+        edit: {
+          click: ({ row, index, column }) => {
+            this.openDetailForm(row)
+          }
+        },
+        del: {
+          conditions: ({ row, index, column }) => {
+            return true
+          },
+          prompt: '确定删除?',
+          click: ({ row, index, column }) => {
+            letterManagerDelProject({
+              id: row.id
+            })
+              .then(res => {
+                this.$refs.pageRef.refreshList()
+                this.$message({
+                  type: 'success',
+                  message: `删除成功!`
+                })
+              })
+              .catch(err => {
+                console.log(err)
+              })
+          }
+        }
+      })
+    },
+    // 保存
+    save() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ;(this.formData?.id ? letterManagerUpdateProject : letterManagerAddProject)(this.formData).then(res => {
+            this.$message({
+              type: 'success',
+              message: '保存成功'
+            })
+            this.handleClose()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 202 - 0
src/views/setting/workContactLetter/department/index.vue

@@ -0,0 +1,202 @@
+<template>
+  <template-page
+    v-if="pageShow"
+    ref="pageRef"
+    :get-list="getList"
+    :exportList="exportList"
+    :table-attributes="tableAttributes"
+    :table-events="tableEvents"
+    :options-evens-group="optionsEvensGroup"
+    :moreParameters="moreParameters"
+    :column-parsing="columnParsing"
+    :operation="operation()"
+    key="pageType"
+  >
+    <div class="cartographer_big">
+      <el-dialog title="所属科室" width="100%" :modal="false" :visible.sync="formDialog" :before-close="handleClose">
+        <zj-page-container>
+          <zj-page-fill>
+            <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
+              <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
+                <zj-form-module title="设置" label-width="100px" :form-data="formData" :form-items="formItems">
+                </zj-form-module>
+              </zj-form-container>
+            </div>
+          </zj-page-fill>
+          <div style="text-align: right; box-sizing: border-box; padding: 16px 20px">
+            <el-button size="mini" @click="handleClose">取消</el-button>
+            <el-button size="mini" type="primary" @click="save">保存</el-button>
+          </div>
+        </zj-page-container>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import {
+  letterManagerListUser,
+  letterManagerListUserExport,
+  letterManagerImport,
+  letterManagerAddUser,
+  letterManagerUpdateUser,
+  letterManagerDetailUser,
+  letterManagerDelUser
+} from '@/api/department.js'
+import { required } from '@/components/template/rules_verify.js'
+import { commonTemplateDownload } from '@/api/common.js'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin],
+  data() {
+    return {
+      pageType: 'list',
+      pageShow: true,
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: false
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中行
+      recordSelected: [],
+      /** 表单变量 */
+      formDialog: false,
+      formData: {}
+    }
+  },
+  computed: {
+    // 事件组合
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth('add', {
+              click: this.openForm
+            })
+          ]
+        ],
+        [
+          [
+            this.optionsEvensAuth('import', ({ moduleName }) => {
+              return {
+                name: moduleName,
+                render: () => {
+                  return this.importButton(letterManagerImport, moduleName)
+                }
+              }
+            })
+          ],
+          [
+            this.optionsEvensAuth('downloadTemplate', {
+              click: () => {
+                commonTemplateDownload({ name: '科室人员导入模版.xlsx' }, `科室人员导入模版`)
+                  .then(res => {
+                    this.$message({
+                      message: '下载成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(err => {
+                    this.$message.error('下载失败')
+                  })
+              }
+            })
+          ]
+        ]
+      ]
+    },
+    // 更多参数
+    moreParameters() {
+      return []
+    },
+    formItems() {
+      return []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList: letterManagerListUser,
+    // 列表导出函数
+    exportList: letterManagerListUserExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 打开创建弹窗
+    openForm() {
+      this.formDialog = true
+    },
+    // 打开详情弹窗
+    openDetailForm(row) {
+      Promise.all([letterManagerDetailUser({ id: row.id })]).then(([res1, res2]) => {
+        this.formData = { ...res1.data }
+        this.formDialog = true
+      })
+    },
+    handleClose() {
+      this.$refs?.formRef?.resetFields()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    // 操作按钮
+    operation() {
+      return this.operationBtn({
+        edit: {
+          click: ({ row, index, column }) => {
+            this.openDetailForm(row)
+          }
+        },
+        del: {
+          conditions: ({ row, index, column }) => {
+            return true
+          },
+          prompt: '确定删除?',
+          click: ({ row, index, column }) => {
+            letterManagerDelUser({
+              id: row.id
+            })
+              .then(res => {
+                this.$refs.pageRef.refreshList()
+                this.$message({
+                  type: 'success',
+                  message: `删除成功!`
+                })
+              })
+              .catch(err => {
+                console.log(err)
+              })
+          }
+        }
+      })
+    },
+    // 保存
+    save() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ;(this.formData?.id ? letterManagerUpdateUser : letterManagerAddUser)(this.formData).then(res => {
+            this.$message({
+              type: 'success',
+              message: '保存成功'
+            })
+            this.handleClose()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 185 - 0
src/views/setting/workContactLetter/departmentSetting/index.vue

@@ -0,0 +1,185 @@
+<template>
+  <template-page
+    v-if="pageShow"
+    ref="pageRef"
+    :get-list="getList"
+    :exportList="exportList"
+    :table-attributes="tableAttributes"
+    :table-events="tableEvents"
+    :options-evens-group="optionsEvensGroup"
+    :moreParameters="moreParameters"
+    :column-parsing="columnParsing"
+    :operation="operation()"
+    key="pageType"
+  >
+    <div class="cartographer_big">
+      <el-dialog title="科室设置" width="100%" :modal="false" :visible.sync="formDialog" :before-close="handleClose">
+        <zj-page-container>
+          <zj-page-fill>
+            <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
+              <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
+                <zj-form-module title="科室设置" label-width="100px" :form-data="formData" :form-items="formItems">
+                </zj-form-module>
+              </zj-form-container>
+            </div>
+          </zj-page-fill>
+          <div style="text-align: right; box-sizing: border-box; padding: 16px 20px">
+            <el-button size="mini" @click="handleClose">取消</el-button>
+            <el-button size="mini" type="primary" @click="save">保存</el-button>
+          </div>
+        </zj-page-container>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import {
+  letterManagerList,
+  letterManagerListExport,
+  letterManagerAdd,
+  letterManagerUpdate,
+  letterManagerDetail,
+  letterManagerDel
+} from '@/api/departmentSetting.js'
+import { required } from '@/components/template/rules_verify.js'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin],
+  data() {
+    return {
+      pageType: 'list',
+      pageShow: true,
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: false
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中行
+      recordSelected: [],
+      /** 表单变量 */
+      formDialog: false,
+      formData: {
+        dapartment: ''
+      }
+    }
+  },
+  computed: {
+    // 事件组合
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth('add', {
+              click: this.openForm
+            })
+          ]
+        ]
+      ]
+    },
+    // 更多参数
+    moreParameters() {
+      return []
+    },
+    formItems() {
+      return [
+        {
+          md: 12,
+          name: 'el-input',
+          attributes: {},
+          formItemAttributes: {
+            label: '科室名称',
+            prop: 'dapartment',
+            rules: [...required]
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList: letterManagerList,
+    // 列表导出函数
+    exportList: letterManagerListExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 打开创建弹窗
+    openForm() {
+      this.formDialog = true
+    },
+    // 打开详情弹窗
+    openDetailForm(row) {
+      Promise.all([letterManagerDetail({ id: row.id })]).then(([res1, res2]) => {
+        this.formData = { ...res1.data }
+        this.formDialog = true
+      })
+    },
+    handleClose() {
+      this.$refs?.formRef?.resetFields()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    // 操作按钮
+    operation() {
+      return this.operationBtn({
+        edit: {
+          click: ({ row, index, column }) => {
+            this.openDetailForm(row)
+          }
+        },
+        del: {
+          conditions: ({ row, index, column }) => {
+            return true
+          },
+          prompt: '确定删除?',
+          click: ({ row, index, column }) => {
+            letterManagerDel({
+              id: row.id
+            })
+              .then(res => {
+                this.$refs.pageRef.refreshList()
+                this.$message({
+                  type: 'success',
+                  message: `删除成功!`
+                })
+              })
+              .catch(err => {
+                console.log(err)
+              })
+          }
+        }
+      })
+    },
+    // 保存
+    save() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ;(this.formData?.id ? letterManagerUpdate : letterManagerAdd)(this.formData).then(res => {
+            this.$message({
+              type: 'success',
+              message: '保存成功'
+            })
+            this.handleClose()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>