zhouwx
7 天以前 346ffdf4c528ecfa8471a13cdb6f3740a29262e8
修改
已添加9个文件
已修改1个文件
1850 ■■■■■ 文件已修改
src/api/decree/index.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/appointmentBook/components/editDialog.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/appointmentBook/index.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityManuals/components/editDialog.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityManuals/index.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityObjects/components/editDialog.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityObjects/index.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityPolicys/components/editDialog.vue 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/build/conpanyFunctionConsult/Decree/qualityPolicys/index.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/clauseManage/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/decree/index.js
对比新文件
@@ -0,0 +1,32 @@
import request from "@/utils/request";
export function getDecree(params) {
    return request({
        url: '/proclaim/list',
        method: 'get',
        params: params
    })
}
export function addDecree(data) {
    return request({
        url: '/proclaim/policy/insert',
        method: 'post',
        data: data
    })
}
export function editDecree(params) {
    return request({
        url: `/proclaim/policy/update`,
        method: 'post',
        data: params
    })
}
export function delDecree(data) {
    return request({
        url: `/proclaim/policy/deleted?proclaimId=${data}`,
        method: 'get'
    })
}
src/views/build/conpanyFunctionConsult/Decree/appointmentBook/components/editDialog.vue
对比新文件
@@ -0,0 +1,241 @@
<template>
  <div class="notice">
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="800px"
        :before-close="handleClose"
    >
      <el-form :model="state.noticeForm" size="default" ref="noticeRef" :rules="title === '新增' || title === '编辑' ? state.formRules : {}" label-width="150px" >
        <el-form-item label="单位名称:" prop="companyId" v-if="state.isAdmin">
          <el-select v-model="state.noticeForm.companyId" placeholder="请选择" @change="changeCom" filterable clearable style="width: 100%" :disabled="title == '查看' || title == '编辑' || !state.isAdmin">
            <el-option
                v-for="item in state.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="管理者代表授权书:" v-if="showEditor"  required>
          <t-editor style="width: 800px" ref="myEditor" :toolbar="toolbar" :value="state.noticeForm.content" ></t-editor>
        </el-form-item>
        <el-form-item label="管理者代表授权书:" v-else>
          <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" >
            <div class="ql-editor">
              <div class="reviewTable" v-html="state.noticeForm.content" ></div>
            </div>
          </div>
        </el-form-item>
        <el-form-item label="批准人:" prop="checkId">
          <el-select clearable v-model="state.noticeForm.checkId" :disabled="title =='查看'" filterable placeholder="批准人" style="width: 100%">
            <el-option
                v-for="item in state.userList"
                :key="item.userId"
                :label="item.name"
                :value="item.userId"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer v-if="!isReview">
        <span class="dialog-footer">
            <el-button @click="handleClose" size="default">取 消</el-button>
            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {nextTick, onMounted, reactive, ref, toRefs, watch} from 'vue'
import WeEditor from "@/components/WeEditor/index.vue";
import TEditor from "@/components/Tinymce/Tinymce.vue"
import {ElMessage} from "element-plus";
import Cookies from "js-cookie";
import {getEmployeeRecords} from "@/api/onlineEducation/user";
import {addDecree, editDecree} from "@/api/decree";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false);
const toolbar = ref('fontsizeselect | undo redo')
const title = ref("");
const noticeRef = ref();
const fileList = ref([]);
const myEditor = ref();
const isReview = ref(false);
const showEditor = ref(true);
const state = reactive({
  noticeForm: {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:4,
    companyName: ''
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    content: [{ required: true, message: '请输入管理者代表授权书', trigger: 'blur' }],
    checkId: [{ required: true, message: '请选择批准人', trigger: 'blur' }],
  },
  isAdmin: false,
  companyList: [],
  userList:[]
})
onMounted(() => {
});
const openDialog = async (type, value,companyList) => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  state.isAdmin = userInfo.userType === 0;
  if(state.isAdmin){
    state.companyList = companyList
    state.noticeForm.companyId = null
  }else  {
    state.noticeForm.companyId = userInfo.companyId
  }
  isReview.value = false;
  showEditor.value = false
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  if(type === 'edit' || type === 'review') {
    Object.keys(state.noticeForm).forEach(key => {
      if (key in value) {
        state.noticeForm[key] = value[key]
      }
    })
  }
  if(type === 'review') {
    showEditor.value = false
    isReview.value = true;
  }
  if(type === 'edit' || type === 'add') {
    showEditor.value = true;
    isReview.value = false;
  }
  await getUserList()
  dialogVisible.value = true;
}
const onSubmit = async () => {
  state.noticeForm.content = tinyMCE.activeEditor.getContent();
  if(!state.isAdmin){
    const userInfo = JSON.parse(Cookies.get('userInfo'))
    state.noticeForm.companyId = userInfo.companyId
  }
  const valid = await noticeRef.value.validate();
  if(valid){
    if(title.value === '新增'){
      const {id,...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await addDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }else if(title.value === '编辑') {
      const {...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await editDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '编辑成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }
  }
}
const getUserList = async ()=> {
  if(state.isAdmin && (state.noticeForm.companyId == 0 || state.noticeForm.companyId == null)){
    return
  }
  const res = await getEmployeeRecords({companyId: state.noticeForm.companyId})
  if(res.code == 200){
    state.userList = res.data ? res.data :[]
  }else{
    ElMessage.warning(res.message)
  }
}
const handleClose = () => {
  if(title.value ==="新增"|| title.value ==='编辑'){
    myEditor.value.clear();
    showEditor.value=false
  }
  reset()
  noticeRef.value.clearValidate();
  dialogVisible.value = false;
}
const reset = () => {
  state.noticeForm = {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:4,
    companyName: ''
  }
  state.companyList = []
  state.userList = []
}
const changeCom = () => {
  state.noticeForm.checkId = ''
  getUserList()
}
defineExpose({
  openDialog
});
</script>
<style scoped lang="scss">
.notice{
  :deep(.el-form .el-form-item__label) {
    font-size: 15px;
  }
  .file {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
}
.reviewTable {
  :deep(table){
    border: 1px solid #ccc;
    text-align: center;
  }
  :deep(table td){
    border: 1px solid #ccc;
    text-align: center;
    padding: 0 5px;
  }
  :deep(table th){
    border: 1px solid #ccc;
  }
}
</style>
src/views/build/conpanyFunctionConsult/Decree/appointmentBook/index.vue
对比新文件
@@ -0,0 +1,213 @@
<template>
  <div class="app-container">
    <div style="margin-bottom: 10px">
      <el-form style="display: flex;flex-wrap: wrap">
        <el-form-item>
          <el-button
              type="primary"
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['qualityManual:add']"
          >新增</el-button>
        </el-form-item>
        <el-form-item label="单位名称:" v-if="data.isAdmin" style="margin-left: 20px">
          <el-select v-model="data.queryParams.companyId" placeholder="请选择" filterable clearable>
            <el-option
                v-for="item in data.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item v-if="data.isAdmin">
          <el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
          <el-button plain @click="reset">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
      <el-table-column label="管理者代表授权书" prop="content" align="left" header-align="center" width="500">
        <template #default="scope">
          <div v-html="scope.row.content"></div>
        </template>
      </el-table-column>
      <el-table-column label="批准人" prop="checkName" align="center" />
      <el-table-column label="签名" prop="policy" align="center" >
        <template #default="scope">
          <div v-if="scope.row.sign ">
            <el-image
                style="width: 100px; height: 100%"
                :src= "scope.row.sign ? scope.row.sign[0] : '' "
                :zoom-rate="1.2"
                :max-scale="7"
                :min-scale="0.2"
                :preview-src-list="scope.row.sign ? scope.row.sign : '' "
                :initial-index="0"
                fit="cover"
                :preview-teleported=true
            />
          </div>
          <div v-else></div>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
        <template #default="scope">
          <el-button link type="primary"  @click="openDialog('review',scope.row)" >查看</el-button>
          <el-button link type="primary"  @click="openDialog('edit',scope.row)" v-hasPermi="['qualityManual:edit']">编辑</el-button>
          <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['qualityManual:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div class="pag-container">
      <el-pagination
          v-model:current-page="data.queryParams.pageNum"
          v-model:page-size="data.queryParams.pageSize"
          :page-sizes="[10,15,20,25]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>
    <policyDialog ref="noticeRef" @getList = "getList"></policyDialog>
  </div>
</template>
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import policyDialog from "./components/editDialog.vue"
import {ElMessage, ElMessageBox} from "element-plus";
import {getCompany} from "@/api/onlineEducation/company";
import Cookies from "js-cookie";
import {delCom, getCom} from "@/api/companyInfo/overview";
import {delPolicy, getPolicy} from "@/api/companyInfo/policy";
import {delDecree, getDecree} from "@/api/decree";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const noticeRef = ref();
const loadingCompany = ref(false)
const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    type:4,
    companyId: null,
  },
  companyList: [],
  isAdmin: false,
  companyName: ''
});
const dataList = ref([]);
const total = ref(0);
const { queryParams } = toRefs(data);
onMounted(() => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  console.log("userInfo",userInfo)
  data.isAdmin = userInfo.userType === 0;
  if(data.isAdmin){
    data.queryParams.companyId = null
  }else {
    data.queryParams.companyId = userInfo.companyId
  }
  getList();
  if(data.isAdmin){
    getCompanyList()
  }
});
const getList = async () => {
  loading.value = true;
  const res = await getDecree(data.queryParams);
  if(res.code === 200){
    dataList.value = res.data.list.map(item => {
      return {
        ...item,
        sign: item.sign ? [import.meta.env.VITE_APP_BASE_API + '/' + item.sign] :[]
      }
    })
    total.value = res.data.total
  }else{
    ElMessage.warning(res.message)
  }
  loading.value = false;
}
const searchClick = () => {
  getList();
}
const openDialog = (type, value) => {
  noticeRef.value.openDialog(type, value,data.companyList);
}
const getCompanyList = async ()=>{
  const queryParams = {
    pageNum: 1,
    pageSize: 999
  }
  const res = await getCompany(queryParams)
  if (res.code == 200) {
    data.companyList = res.data.list?res.data.list:[]
    // data.queryParams.companyId = data.companyList[0].id
  } else {
    ElMessage.warning(res.message)
  }
}
const handleSizeChange = (val) => {
  data.queryParams.pageSize = val
  getList()
}
const handleCurrentChange = (val) => {
  data.queryParams.pageNum = val
  getList()
}
/** 重置新增的表单以及其他数据  */
function reset() {
  data.queryParams = {
    companyId: null,
    pageNum: 1,
    pageSize: 10,
    type:4,
  }
  data.companyName = ''
  data.companyList = [];
  getList();
  getCompanyList()
}
const handleDelete = (val) => {
  ElMessageBox.confirm(
      '确定删除此条数据?',
      '提示',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
      .then( async() => {
        const res = await delDecree(val.id);
        if(res.code === 200){
          ElMessage({
            type: 'success',
            message: '删除成功'
          });
          getList();
        }else{
          ElMessage.warning(res.message)
        }
      })
}
</script>
<style lang="scss">
.pag-container{
  float: right;
  margin-top: 10px;
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityManuals/components/editDialog.vue
对比新文件
@@ -0,0 +1,241 @@
<template>
  <div class="notice">
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="800px"
        :before-close="handleClose"
    >
      <el-form :model="state.noticeForm" size="default" ref="noticeRef" :rules="title === '新增' || title === '编辑' ? state.formRules : {}" label-width="140px" >
        <el-form-item label="单位名称:" prop="companyId" v-if="state.isAdmin">
          <el-select v-model="state.noticeForm.companyId" placeholder="请选择" @change="changeCom" filterable clearable style="width: 100%" :disabled="title == '查看' || title == '编辑' || !state.isAdmin">
            <el-option
                v-for="item in state.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="质量手册颁布令:" v-if="showEditor"  required>
          <t-editor style="width: 800px" ref="myEditor" :toolbar="toolbar" :value="state.noticeForm.content" ></t-editor>
        </el-form-item>
        <el-form-item label="质量手册颁布令:" v-else>
          <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" >
            <div class="ql-editor">
              <div class="reviewTable" v-html="state.noticeForm.content" ></div>
            </div>
          </div>
        </el-form-item>
        <el-form-item label="批准人:" prop="checkId">
          <el-select clearable v-model="state.noticeForm.checkId" :disabled="title =='查看'" filterable placeholder="批准人" style="width: 100%">
            <el-option
                v-for="item in state.userList"
                :key="item.userId"
                :label="item.name"
                :value="item.userId"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer v-if="!isReview">
        <span class="dialog-footer">
            <el-button @click="handleClose" size="default">取 消</el-button>
            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {nextTick, onMounted, reactive, ref, toRefs, watch} from 'vue'
import WeEditor from "@/components/WeEditor/index.vue";
import TEditor from "@/components/Tinymce/Tinymce.vue"
import {ElMessage} from "element-plus";
import Cookies from "js-cookie";
import {getEmployeeRecords} from "@/api/onlineEducation/user";
import {addDecree, editDecree} from "@/api/decree";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false);
const toolbar = ref('fontsizeselect | undo redo')
const title = ref("");
const noticeRef = ref();
const fileList = ref([]);
const myEditor = ref();
const isReview = ref(false);
const showEditor = ref(true);
const state = reactive({
  noticeForm: {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:1,
    companyName: ''
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    content: [{ required: true, message: '请输入质量手册颁布令', trigger: 'blur' }],
    checkId: [{ required: true, message: '请选择批准人', trigger: 'blur' }],
  },
  isAdmin: false,
  companyList: [],
  userList:[]
})
onMounted(() => {
});
const openDialog = async (type, value,companyList) => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  state.isAdmin = userInfo.userType === 0;
  if(state.isAdmin){
    state.companyList = companyList
    state.noticeForm.companyId = null
  }else  {
    state.noticeForm.companyId = userInfo.companyId
  }
  isReview.value = false;
  showEditor.value = false
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  if(type === 'edit' || type === 'review') {
    Object.keys(state.noticeForm).forEach(key => {
      if (key in value) {
        state.noticeForm[key] = value[key]
      }
    })
  }
  if(type === 'review') {
    showEditor.value = false
    isReview.value = true;
  }
  if(type === 'edit' || type === 'add') {
    showEditor.value = true;
    isReview.value = false;
  }
  await getUserList()
  dialogVisible.value = true;
}
const onSubmit = async () => {
  state.noticeForm.content = tinyMCE.activeEditor.getContent();
  if(!state.isAdmin){
    const userInfo = JSON.parse(Cookies.get('userInfo'))
    state.noticeForm.companyId = userInfo.companyId
  }
  const valid = await noticeRef.value.validate();
  if(valid){
    if(title.value === '新增'){
      const {id,...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await addDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }else if(title.value === '编辑') {
      const {...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await editDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '编辑成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }
  }
}
const getUserList = async ()=> {
  if(state.isAdmin && (state.noticeForm.companyId == 0 || state.noticeForm.companyId == null)){
    return
  }
  const res = await getEmployeeRecords({companyId: state.noticeForm.companyId})
  if(res.code == 200){
    state.userList = res.data ? res.data :[]
  }else{
    ElMessage.warning(res.message)
  }
}
const handleClose = () => {
  if(title.value ==="新增"|| title.value ==='编辑'){
    myEditor.value.clear();
    showEditor.value=false
  }
  reset()
  noticeRef.value.clearValidate();
  dialogVisible.value = false;
}
const reset = () => {
  state.noticeForm = {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:1,
    companyName: ''
  }
  state.companyList = []
  state.userList = []
}
const changeCom = () => {
  state.noticeForm.checkId = ''
  getUserList()
}
defineExpose({
  openDialog
});
</script>
<style scoped lang="scss">
.notice{
  :deep(.el-form .el-form-item__label) {
    font-size: 15px;
  }
  .file {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
}
.reviewTable {
  :deep(table){
    border: 1px solid #ccc;
    text-align: center;
  }
  :deep(table td){
    border: 1px solid #ccc;
    text-align: center;
    padding: 0 5px;
  }
  :deep(table th){
    border: 1px solid #ccc;
  }
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityManuals/index.vue
对比新文件
@@ -0,0 +1,213 @@
<template>
  <div class="app-container">
    <div style="margin-bottom: 10px">
      <el-form style="display: flex;flex-wrap: wrap">
        <el-form-item>
          <el-button
              type="primary"
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['qualityManual:add']"
          >新增</el-button>
        </el-form-item>
        <el-form-item label="单位名称:" v-if="data.isAdmin" style="margin-left: 20px">
          <el-select v-model="data.queryParams.companyId" placeholder="请选择" filterable clearable>
            <el-option
                v-for="item in data.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item v-if="data.isAdmin">
          <el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
          <el-button plain @click="reset">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
      <el-table-column label="质量手册颁布令" prop="content" align="left" header-align="center" width="500">
        <template #default="scope">
          <div v-html="scope.row.content"></div>
        </template>
      </el-table-column>
      <el-table-column label="批准人" prop="checkName" align="center" />
      <el-table-column label="签名" prop="policy" align="center" >
        <template #default="scope">
          <div v-if="scope.row.sign ">
            <el-image
                style="width: 100px; height: 100%"
                :src= "scope.row.sign ? scope.row.sign[0] : '' "
                :zoom-rate="1.2"
                :max-scale="7"
                :min-scale="0.2"
                :preview-src-list="scope.row.sign ? scope.row.sign : '' "
                :initial-index="0"
                fit="cover"
                :preview-teleported=true
            />
          </div>
          <div v-else></div>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
        <template #default="scope">
          <el-button link type="primary"  @click="openDialog('review',scope.row)" >查看</el-button>
          <el-button link type="primary"  @click="openDialog('edit',scope.row)" v-hasPermi="['qualityManual:edit']">编辑</el-button>
          <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['qualityManual:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div class="pag-container">
      <el-pagination
          v-model:current-page="data.queryParams.pageNum"
          v-model:page-size="data.queryParams.pageSize"
          :page-sizes="[10,15,20,25]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>
    <policyDialog ref="noticeRef" @getList = "getList"></policyDialog>
  </div>
</template>
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import policyDialog from "./components/editDialog.vue"
import {ElMessage, ElMessageBox} from "element-plus";
import {getCompany} from "@/api/onlineEducation/company";
import Cookies from "js-cookie";
import {delCom, getCom} from "@/api/companyInfo/overview";
import {delPolicy, getPolicy} from "@/api/companyInfo/policy";
import {delDecree, getDecree} from "@/api/decree";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const noticeRef = ref();
const loadingCompany = ref(false)
const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    type:1,
    companyId: null,
  },
  companyList: [],
  isAdmin: false,
  companyName: ''
});
const dataList = ref([]);
const total = ref(0);
const { queryParams } = toRefs(data);
onMounted(() => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  console.log("userInfo",userInfo)
  data.isAdmin = userInfo.userType === 0;
  if(data.isAdmin){
    data.queryParams.companyId = null
  }else {
    data.queryParams.companyId = userInfo.companyId
  }
  getList();
  if(data.isAdmin){
    getCompanyList()
  }
});
const getList = async () => {
  loading.value = true;
  const res = await getDecree(data.queryParams);
  if(res.code === 200){
    dataList.value = res.data.list.map(item => {
      return {
        ...item,
        sign: item.sign ? [import.meta.env.VITE_APP_BASE_API + '/' + item.sign] :[]
      }
    })
    total.value = res.data.total
  }else{
    ElMessage.warning(res.message)
  }
  loading.value = false;
}
const searchClick = () => {
  getList();
}
const openDialog = (type, value) => {
  noticeRef.value.openDialog(type, value,data.companyList);
}
const getCompanyList = async ()=>{
  const queryParams = {
    pageNum: 1,
    pageSize: 999
  }
  const res = await getCompany(queryParams)
  if (res.code == 200) {
    data.companyList = res.data.list?res.data.list:[]
    // data.queryParams.companyId = data.companyList[0].id
  } else {
    ElMessage.warning(res.message)
  }
}
const handleSizeChange = (val) => {
  data.queryParams.pageSize = val
  getList()
}
const handleCurrentChange = (val) => {
  data.queryParams.pageNum = val
  getList()
}
/** 重置新增的表单以及其他数据  */
function reset() {
  data.queryParams = {
    companyId: null,
    pageNum: 1,
    pageSize: 10,
    type:1,
  }
  data.companyName = ''
  data.companyList = [];
  getList();
  getCompanyList()
}
const handleDelete = (val) => {
  ElMessageBox.confirm(
      '确定删除此条数据?',
      '提示',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
      .then( async() => {
        const res = await delDecree(val.id);
        if(res.code === 200){
          ElMessage({
            type: 'success',
            message: '删除成功'
          });
          getList();
        }else{
          ElMessage.warning(res.message)
        }
      })
}
</script>
<style lang="scss">
.pag-container{
  float: right;
  margin-top: 10px;
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityObjects/components/editDialog.vue
对比新文件
@@ -0,0 +1,241 @@
<template>
  <div class="notice">
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="800px"
        :before-close="handleClose"
    >
      <el-form :model="state.noticeForm" size="default" ref="noticeRef" :rules="title === '新增' || title === '编辑' ? state.formRules : {}" label-width="140px" >
        <el-form-item label="单位名称:" prop="companyId" v-if="state.isAdmin">
          <el-select v-model="state.noticeForm.companyId" placeholder="请选择" @change="changeCom" filterable clearable style="width: 100%" :disabled="title == '查看' || title == '编辑' || !state.isAdmin">
            <el-option
                v-for="item in state.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="质量目标颁布令:" v-if="showEditor"  required>
          <t-editor style="width: 800px" ref="myEditor" :toolbar="toolbar" :value="state.noticeForm.content" ></t-editor>
        </el-form-item>
        <el-form-item label="质量目标颁布令:" v-else>
          <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" >
            <div class="ql-editor">
              <div class="reviewTable" v-html="state.noticeForm.content" ></div>
            </div>
          </div>
        </el-form-item>
        <el-form-item label="批准人:" prop="checkId">
          <el-select clearable v-model="state.noticeForm.checkId" :disabled="title =='查看'" filterable placeholder="批准人" style="width: 100%">
            <el-option
                v-for="item in state.userList"
                :key="item.userId"
                :label="item.name"
                :value="item.userId"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer v-if="!isReview">
        <span class="dialog-footer">
            <el-button @click="handleClose" size="default">取 消</el-button>
            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {nextTick, onMounted, reactive, ref, toRefs, watch} from 'vue'
import WeEditor from "@/components/WeEditor/index.vue";
import TEditor from "@/components/Tinymce/Tinymce.vue"
import {ElMessage} from "element-plus";
import Cookies from "js-cookie";
import {getEmployeeRecords} from "@/api/onlineEducation/user";
import {addDecree, editDecree} from "@/api/decree";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false);
const toolbar = ref('fontsizeselect | undo redo')
const title = ref("");
const noticeRef = ref();
const fileList = ref([]);
const myEditor = ref();
const isReview = ref(false);
const showEditor = ref(true);
const state = reactive({
  noticeForm: {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:3,
    companyName: ''
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    content: [{ required: true, message: '请输入质量目标颁布令', trigger: 'blur' }],
    checkId: [{ required: true, message: '请选择批准人', trigger: 'blur' }],
  },
  isAdmin: false,
  companyList: [],
  userList:[]
})
onMounted(() => {
});
const openDialog = async (type, value,companyList) => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  state.isAdmin = userInfo.userType === 0;
  if(state.isAdmin){
    state.companyList = companyList
    state.noticeForm.companyId = null
  }else  {
    state.noticeForm.companyId = userInfo.companyId
  }
  isReview.value = false;
  showEditor.value = false
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  if(type === 'edit' || type === 'review') {
    Object.keys(state.noticeForm).forEach(key => {
      if (key in value) {
        state.noticeForm[key] = value[key]
      }
    })
  }
  if(type === 'review') {
    showEditor.value = false
    isReview.value = true;
  }
  if(type === 'edit' || type === 'add') {
    showEditor.value = true;
    isReview.value = false;
  }
  await getUserList()
  dialogVisible.value = true;
}
const onSubmit = async () => {
  state.noticeForm.content = tinyMCE.activeEditor.getContent();
  if(!state.isAdmin){
    const userInfo = JSON.parse(Cookies.get('userInfo'))
    state.noticeForm.companyId = userInfo.companyId
  }
  const valid = await noticeRef.value.validate();
  if(valid){
    if(title.value === '新增'){
      const {id,...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await addDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }else if(title.value === '编辑') {
      const {...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await editDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '编辑成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }
  }
}
const getUserList = async ()=> {
  if(state.isAdmin && (state.noticeForm.companyId == 0 || state.noticeForm.companyId == null)){
    return
  }
  const res = await getEmployeeRecords({companyId: state.noticeForm.companyId})
  if(res.code == 200){
    state.userList = res.data ? res.data :[]
  }else{
    ElMessage.warning(res.message)
  }
}
const handleClose = () => {
  if(title.value ==="新增"|| title.value ==='编辑'){
    myEditor.value.clear();
    showEditor.value=false
  }
  reset()
  noticeRef.value.clearValidate();
  dialogVisible.value = false;
}
const reset = () => {
  state.noticeForm = {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:3,
    companyName: ''
  }
  state.companyList = []
  state.userList = []
}
const changeCom = () => {
  state.noticeForm.checkId = ''
  getUserList()
}
defineExpose({
  openDialog
});
</script>
<style scoped lang="scss">
.notice{
  :deep(.el-form .el-form-item__label) {
    font-size: 15px;
  }
  .file {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
}
.reviewTable {
  :deep(table){
    border: 1px solid #ccc;
    text-align: center;
  }
  :deep(table td){
    border: 1px solid #ccc;
    text-align: center;
    padding: 0 5px;
  }
  :deep(table th){
    border: 1px solid #ccc;
  }
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityObjects/index.vue
对比新文件
@@ -0,0 +1,213 @@
<template>
  <div class="app-container">
    <div style="margin-bottom: 10px">
      <el-form style="display: flex;flex-wrap: wrap">
        <el-form-item>
          <el-button
              type="primary"
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['qualityManual:add']"
          >新增</el-button>
        </el-form-item>
        <el-form-item label="单位名称:" v-if="data.isAdmin" style="margin-left: 20px">
          <el-select v-model="data.queryParams.companyId" placeholder="请选择" filterable clearable>
            <el-option
                v-for="item in data.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item v-if="data.isAdmin">
          <el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
          <el-button plain @click="reset">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
      <el-table-column label="质量目标颁布令" prop="content" align="left" header-align="center" width="500">
        <template #default="scope">
          <div v-html="scope.row.content"></div>
        </template>
      </el-table-column>
      <el-table-column label="批准人" prop="checkName" align="center" />
      <el-table-column label="签名" prop="policy" align="center" >
        <template #default="scope">
          <div v-if="scope.row.sign ">
            <el-image
                style="width: 100px; height: 100%"
                :src= "scope.row.sign ? scope.row.sign[0] : '' "
                :zoom-rate="1.2"
                :max-scale="7"
                :min-scale="0.2"
                :preview-src-list="scope.row.sign ? scope.row.sign : '' "
                :initial-index="0"
                fit="cover"
                :preview-teleported=true
            />
          </div>
          <div v-else></div>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
        <template #default="scope">
          <el-button link type="primary"  @click="openDialog('review',scope.row)" >查看</el-button>
          <el-button link type="primary"  @click="openDialog('edit',scope.row)" v-hasPermi="['qualityManual:edit']">编辑</el-button>
          <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['qualityManual:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div class="pag-container">
      <el-pagination
          v-model:current-page="data.queryParams.pageNum"
          v-model:page-size="data.queryParams.pageSize"
          :page-sizes="[10,15,20,25]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>
    <policyDialog ref="noticeRef" @getList = "getList"></policyDialog>
  </div>
</template>
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import policyDialog from "./components/editDialog.vue"
import {ElMessage, ElMessageBox} from "element-plus";
import {getCompany} from "@/api/onlineEducation/company";
import Cookies from "js-cookie";
import {delCom, getCom} from "@/api/companyInfo/overview";
import {delPolicy, getPolicy} from "@/api/companyInfo/policy";
import {delDecree, getDecree} from "@/api/decree";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const noticeRef = ref();
const loadingCompany = ref(false)
const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    type:3,
    companyId: null,
  },
  companyList: [],
  isAdmin: false,
  companyName: ''
});
const dataList = ref([]);
const total = ref(0);
const { queryParams } = toRefs(data);
onMounted(() => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  console.log("userInfo",userInfo)
  data.isAdmin = userInfo.userType === 0;
  if(data.isAdmin){
    data.queryParams.companyId = null
  }else {
    data.queryParams.companyId = userInfo.companyId
  }
  getList();
  if(data.isAdmin){
    getCompanyList()
  }
});
const getList = async () => {
  loading.value = true;
  const res = await getDecree(data.queryParams);
  if(res.code === 200){
    dataList.value = res.data.list.map(item => {
      return {
        ...item,
        sign: item.sign ? [import.meta.env.VITE_APP_BASE_API + '/' + item.sign] :[]
      }
    })
    total.value = res.data.total
  }else{
    ElMessage.warning(res.message)
  }
  loading.value = false;
}
const searchClick = () => {
  getList();
}
const openDialog = (type, value) => {
  noticeRef.value.openDialog(type, value,data.companyList);
}
const getCompanyList = async ()=>{
  const queryParams = {
    pageNum: 1,
    pageSize: 999
  }
  const res = await getCompany(queryParams)
  if (res.code == 200) {
    data.companyList = res.data.list?res.data.list:[]
    // data.queryParams.companyId = data.companyList[0].id
  } else {
    ElMessage.warning(res.message)
  }
}
const handleSizeChange = (val) => {
  data.queryParams.pageSize = val
  getList()
}
const handleCurrentChange = (val) => {
  data.queryParams.pageNum = val
  getList()
}
/** 重置新增的表单以及其他数据  */
function reset() {
  data.queryParams = {
    companyId: null,
    pageNum: 1,
    pageSize: 10,
    type:3,
  }
  data.companyName = ''
  data.companyList = [];
  getList();
  getCompanyList()
}
const handleDelete = (val) => {
  ElMessageBox.confirm(
      '确定删除此条数据?',
      '提示',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
      .then( async() => {
        const res = await delDecree(val.id);
        if(res.code === 200){
          ElMessage({
            type: 'success',
            message: '删除成功'
          });
          getList();
        }else{
          ElMessage.warning(res.message)
        }
      })
}
</script>
<style lang="scss">
.pag-container{
  float: right;
  margin-top: 10px;
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityPolicys/components/editDialog.vue
对比新文件
@@ -0,0 +1,241 @@
<template>
  <div class="notice">
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="800px"
        :before-close="handleClose"
    >
      <el-form :model="state.noticeForm" size="default" ref="noticeRef" :rules="title === '新增' || title === '编辑' ? state.formRules : {}" label-width="140px" >
        <el-form-item label="单位名称:" prop="companyId" v-if="state.isAdmin">
          <el-select v-model="state.noticeForm.companyId" placeholder="请选择" @change="changeCom" filterable clearable style="width: 100%" :disabled="title == '查看' || title == '编辑' || !state.isAdmin">
            <el-option
                v-for="item in state.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="质量方针颁布令:" v-if="showEditor"  required>
          <t-editor style="width: 800px" ref="myEditor" :toolbar="toolbar" :value="state.noticeForm.content" ></t-editor>
        </el-form-item>
        <el-form-item label="质量方针颁布令:" v-else>
          <div class="ql-container ql-snow" style="height: 500px;width: 100%;margin-top: 10px;" >
            <div class="ql-editor">
              <div class="reviewTable" v-html="state.noticeForm.content" ></div>
            </div>
          </div>
        </el-form-item>
        <el-form-item label="批准人:" prop="checkId">
          <el-select clearable v-model="state.noticeForm.checkId" :disabled="title =='查看'" filterable placeholder="批准人" style="width: 100%">
            <el-option
                v-for="item in state.userList"
                :key="item.userId"
                :label="item.name"
                :value="item.userId"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer v-if="!isReview">
        <span class="dialog-footer">
            <el-button @click="handleClose" size="default">取 消</el-button>
            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {nextTick, onMounted, reactive, ref, toRefs, watch} from 'vue'
import WeEditor from "@/components/WeEditor/index.vue";
import TEditor from "@/components/Tinymce/Tinymce.vue"
import {ElMessage} from "element-plus";
import Cookies from "js-cookie";
import {getEmployeeRecords} from "@/api/onlineEducation/user";
import {addDecree, editDecree} from "@/api/decree";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false);
const toolbar = ref('fontsizeselect | undo redo')
const title = ref("");
const noticeRef = ref();
const fileList = ref([]);
const myEditor = ref();
const isReview = ref(false);
const showEditor = ref(true);
const state = reactive({
  noticeForm: {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:2,
    companyName: ''
  },
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    content: [{ required: true, message: '请输入质量方针颁布令', trigger: 'blur' }],
    checkId: [{ required: true, message: '请选择批准人', trigger: 'blur' }],
  },
  isAdmin: false,
  companyList: [],
  userList:[]
})
onMounted(() => {
});
const openDialog = async (type, value,companyList) => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  state.isAdmin = userInfo.userType === 0;
  if(state.isAdmin){
    state.companyList = companyList
    state.noticeForm.companyId = null
  }else  {
    state.noticeForm.companyId = userInfo.companyId
  }
  isReview.value = false;
  showEditor.value = false
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  if(type === 'edit' || type === 'review') {
    Object.keys(state.noticeForm).forEach(key => {
      if (key in value) {
        state.noticeForm[key] = value[key]
      }
    })
  }
  if(type === 'review') {
    showEditor.value = false
    isReview.value = true;
  }
  if(type === 'edit' || type === 'add') {
    showEditor.value = true;
    isReview.value = false;
  }
  await getUserList()
  dialogVisible.value = true;
}
const onSubmit = async () => {
  state.noticeForm.content = tinyMCE.activeEditor.getContent();
  if(!state.isAdmin){
    const userInfo = JSON.parse(Cookies.get('userInfo'))
    state.noticeForm.companyId = userInfo.companyId
  }
  const valid = await noticeRef.value.validate();
  if(valid){
    if(title.value === '新增'){
      const {id,...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await addDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }else if(title.value === '编辑') {
      const {...data} = JSON.parse(JSON.stringify(state.noticeForm))
      const res = await editDecree(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '编辑成功'
        });
      }else{
        ElMessage.warning(res.message)
      }
      emit("getList")
      reset();
      showEditor.value=false
      myEditor.value.clear();
      noticeRef.value.clearValidate();
      dialogVisible.value = false;
    }
  }
}
const getUserList = async ()=> {
  if(state.isAdmin && (state.noticeForm.companyId == 0 || state.noticeForm.companyId == null)){
    return
  }
  const res = await getEmployeeRecords({companyId: state.noticeForm.companyId})
  if(res.code == 200){
    state.userList = res.data ? res.data :[]
  }else{
    ElMessage.warning(res.message)
  }
}
const handleClose = () => {
  if(title.value ==="新增"|| title.value ==='编辑'){
    myEditor.value.clear();
    showEditor.value=false
  }
  reset()
  noticeRef.value.clearValidate();
  dialogVisible.value = false;
}
const reset = () => {
  state.noticeForm = {
    id: '',
    content: '',
    companyId:null,
    checkId:null,
    type:2,
    companyName: ''
  }
  state.companyList = []
  state.userList = []
}
const changeCom = () => {
  state.noticeForm.checkId = ''
  getUserList()
}
defineExpose({
  openDialog
});
</script>
<style scoped lang="scss">
.notice{
  :deep(.el-form .el-form-item__label) {
    font-size: 15px;
  }
  .file {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
}
.reviewTable {
  :deep(table){
    border: 1px solid #ccc;
    text-align: center;
  }
  :deep(table td){
    border: 1px solid #ccc;
    text-align: center;
    padding: 0 5px;
  }
  :deep(table th){
    border: 1px solid #ccc;
  }
}
</style>
src/views/build/conpanyFunctionConsult/Decree/qualityPolicys/index.vue
对比新文件
@@ -0,0 +1,213 @@
<template>
  <div class="app-container">
    <div style="margin-bottom: 10px">
      <el-form style="display: flex;flex-wrap: wrap">
        <el-form-item>
          <el-button
              type="primary"
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['qualityManual:add']"
          >新增</el-button>
        </el-form-item>
        <el-form-item label="单位名称:" v-if="data.isAdmin" style="margin-left: 20px">
          <el-select v-model="data.queryParams.companyId" placeholder="请选择" filterable clearable>
            <el-option
                v-for="item in data.companyList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item v-if="data.isAdmin">
          <el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
          <el-button plain @click="reset">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
    <!-- 表格数据 -->
    <el-table v-loading="loading" :data="dataList" :border="true">
      <el-table-column type="index" label="序号" width="80" align="center"></el-table-column>
      <el-table-column label="质量方针颁布令" prop="content" align="left" header-align="center" width="500">
        <template #default="scope">
          <div v-html="scope.row.content"></div>
        </template>
      </el-table-column>
      <el-table-column label="批准人" prop="checkName" align="center" />
      <el-table-column label="签名" prop="policy" align="center" >
        <template #default="scope">
          <div v-if="scope.row.sign ">
            <el-image
                style="width: 100px; height: 100%"
                :src= "scope.row.sign ? scope.row.sign[0] : '' "
                :zoom-rate="1.2"
                :max-scale="7"
                :min-scale="0.2"
                :preview-src-list="scope.row.sign ? scope.row.sign : '' "
                :initial-index="0"
                fit="cover"
                :preview-teleported=true
            />
          </div>
          <div v-else></div>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
        <template #default="scope">
          <el-button link type="primary"  @click="openDialog('review',scope.row)" >查看</el-button>
          <el-button link type="primary"  @click="openDialog('edit',scope.row)" v-hasPermi="['qualityManual:edit']">编辑</el-button>
          <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['qualityManual:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div class="pag-container">
      <el-pagination
          v-model:current-page="data.queryParams.pageNum"
          v-model:page-size="data.queryParams.pageSize"
          :page-sizes="[10,15,20,25]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>
    <policyDialog ref="noticeRef" @getList = "getList"></policyDialog>
  </div>
</template>
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import policyDialog from "./components/editDialog.vue"
import {ElMessage, ElMessageBox} from "element-plus";
import {getCompany} from "@/api/onlineEducation/company";
import Cookies from "js-cookie";
import {delCom, getCom} from "@/api/companyInfo/overview";
import {delPolicy, getPolicy} from "@/api/companyInfo/policy";
import {delDecree, getDecree} from "@/api/decree";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const noticeRef = ref();
const loadingCompany = ref(false)
const data = reactive({
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    type:2,
    companyId: null,
  },
  companyList: [],
  isAdmin: false,
  companyName: ''
});
const dataList = ref([]);
const total = ref(0);
const { queryParams } = toRefs(data);
onMounted(() => {
  const userInfo = JSON.parse(Cookies.get('userInfo'))
  console.log("userInfo",userInfo)
  data.isAdmin = userInfo.userType === 0;
  if(data.isAdmin){
    data.queryParams.companyId = null
  }else {
    data.queryParams.companyId = userInfo.companyId
  }
  getList();
  if(data.isAdmin){
    getCompanyList()
  }
});
const getList = async () => {
  loading.value = true;
  const res = await getDecree(data.queryParams);
  if(res.code === 200){
    dataList.value = res.data.list.map(item => {
      return {
        ...item,
        sign: item.sign ? [import.meta.env.VITE_APP_BASE_API + '/' + item.sign] :[]
      }
    })
    total.value = res.data.total
  }else{
    ElMessage.warning(res.message)
  }
  loading.value = false;
}
const searchClick = () => {
  getList();
}
const openDialog = (type, value) => {
  noticeRef.value.openDialog(type, value,data.companyList);
}
const getCompanyList = async ()=>{
  const queryParams = {
    pageNum: 1,
    pageSize: 999
  }
  const res = await getCompany(queryParams)
  if (res.code == 200) {
    data.companyList = res.data.list?res.data.list:[]
    // data.queryParams.companyId = data.companyList[0].id
  } else {
    ElMessage.warning(res.message)
  }
}
const handleSizeChange = (val) => {
  data.queryParams.pageSize = val
  getList()
}
const handleCurrentChange = (val) => {
  data.queryParams.pageNum = val
  getList()
}
/** 重置新增的表单以及其他数据  */
function reset() {
  data.queryParams = {
    companyId: null,
    pageNum: 1,
    pageSize: 10,
    type:2,
  }
  data.companyName = ''
  data.companyList = [];
  getList();
  getCompanyList()
}
const handleDelete = (val) => {
  ElMessageBox.confirm(
      '确定删除此条数据?',
      '提示',
      {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
      .then( async() => {
        const res = await delDecree(val.id);
        if(res.code === 200){
          ElMessage({
            type: 'success',
            message: '删除成功'
          });
          getList();
        }else{
          ElMessage.warning(res.message)
        }
      })
}
</script>
<style lang="scss">
.pag-container{
  float: right;
  margin-top: 10px;
}
</style>
src/views/system/clauseManage/index.vue
@@ -33,7 +33,7 @@
      <el-table-column label="条款编号" prop="clauseNum" align="center" width="90"/>
      <el-table-column label="条款内容" prop="name" align="center" width="150"/>
<!--      <el-table-column label="审核要点" prop="points" align="center"/>-->
      <el-table-column label="审核要点" prop="points" align="center" >
      <el-table-column label="审核要点" prop="points" align="left" header-align="center" >
        <template #default="scope">
          <div  v-html="scope.row.points"  ></div>
        </template>