From 033db2186f2fe5589b25ec55e41ddaa4f2f08108 Mon Sep 17 00:00:00 2001
From: wjt <1797368093@qq.com>
Date: 星期二, 18 六月 2024 19:04:12 +0800
Subject: [PATCH] 完善

---
 src/views/infomanger/companymanger/components/exportRecord.vue |   70 +++++-
 src/views/infomanger/companymanger/components/export.vue       |   25 +
 src/utils/request.ts                                           |   42 ---
 src/api/system/company/company.ts                              |   45 ++++
 src/views/infomanger/companymanger/index.vue                   |   14 
 src/views/infomanger/policy/index.vue                          |   61 ++++-
 src/views/infomanger/policy/components/addNews.vue             |   90 +++++++-
 src/components/FileUpload/handlerImport.vue                    |  215 +++++++++++++++++++++
 8 files changed, 467 insertions(+), 95 deletions(-)

diff --git a/src/api/system/company/company.ts b/src/api/system/company/company.ts
index b08d18d..8afdd6d 100644
--- a/src/api/system/company/company.ts
+++ b/src/api/system/company/company.ts
@@ -58,7 +58,7 @@
   return request({
     url: '/system/company/import',
     method: 'get',
-   })
+  })
 }
 
 // 瀵煎叆璁板綍 /system/company/export
@@ -68,7 +68,6 @@
   return request({
     url: '/system/company/export',
     method: 'get',
-    responseType: 'blob'
   })
 }
 // /system/doc/list 鎱т紒鏀跨瓥鍒楄〃
@@ -76,6 +75,46 @@
   return request({
     url: '/system/doc/list',
     method: 'get',
-    responseType: 'blob'
+  })
+}
+// 鏂板浼佷笟淇℃伅 /system/doc/add
+export function addDoc(data) {
+  return request({
+    url: '/system/doc/add',
+    method: 'post',
+    data: data
+  })
+}
+// 淇敼鏀跨瓥 /system/doc/upd
+export function updDoc(data) {
+  return request({
+    url: '/system/doc/upd',
+    method: 'post',
+    data: data
+  })
+}
+// system/doc/ 鍒犻櫎鏀跨瓥
+export function delDoc(data) {
+  return request({
+    url: `/system/doc/${data.delId}`,
+    method: 'DELETE',
+    data: data
+  })
+}
+// 澶勭悊瀵煎叆淇℃伅 
+export function doImport(data) {
+  return request({
+    url: `/system/company/doImport`,
+    method: 'post',
+    data: data
+  })
+}
+// 涓婁紶鏂囦欢淇℃伅/tool/file/upload
+
+export function uploadFile(data) {
+  return request({
+    url: `/tool/file/upload`,
+    method: 'post',
+    data: data
   })
 }
\ No newline at end of file
diff --git a/src/components/FileUpload/handlerImport.vue b/src/components/FileUpload/handlerImport.vue
new file mode 100644
index 0000000..a47b3f2
--- /dev/null
+++ b/src/components/FileUpload/handlerImport.vue
@@ -0,0 +1,215 @@
+<template>
+  <div class="upload-file">
+    <el-upload
+      multiple
+      :action="uploadFileUrl"
+      :before-upload="handleBeforeUpload"
+      :file-list="fileList"
+      :limit="limit"
+      :on-error="handleUploadError"
+      :on-exceed="handleExceed"
+      :on-success="handleUploadSuccess"
+      :show-file-list="false"
+      :headers="headers"
+      class="upload-file-uploader"
+      ref="fileUpload"
+    >
+      <!-- 涓婁紶鎸夐挳 -->
+      <el-button type="primary">閫夊彇鏂囦欢</el-button>
+    </el-upload>
+    <!-- 涓婁紶鎻愮ず -->
+    <div class="el-upload__tip" v-if="showTip">
+      璇蜂笂浼�
+      <!-- <template v-if="fileSize">
+        澶у皬涓嶈秴杩� <b style="color: #f56c6c">{{ fileSize }}MB</b>
+      </template> -->
+      <template v-if="fileType">
+        鏍煎紡涓� <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
+      </template>
+      鐨勬枃浠�
+    </div>
+    <!-- 鏂囦欢鍒楄〃 -->
+    <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
+      <li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+        <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+          <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
+        </el-link>
+        <div class="ele-upload-list__item-content-action">
+          <el-link :underline="false" @click="handleDelete(index)" type="danger">鍒犻櫎</el-link>
+        </div>
+      </li>
+    </transition-group>
+  </div>
+</template>
+
+<script setup>
+import { getToken } from "@/utils/auth";
+
+const props = defineProps({
+  modelValue: [String, Object, Array],
+  // 鏁伴噺闄愬埗
+  limit: {
+    type: Number,
+    default: 5,
+  },
+  // 澶у皬闄愬埗(MB)
+  fileSize: {
+    type: Number,
+    default: 5,
+  },
+  // 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
+  fileType: {
+    type: Array,
+    default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+  },
+  // 鏄惁鏄剧ず鎻愮ず
+  isShowTip: {
+    type: Boolean,
+    default: true,
+  },
+});
+
+const { proxy } = getCurrentInstance();
+const emit = defineEmits();
+const number = ref(0);
+const uploadList = ref([]);
+const baseUrl = import.meta.env.VITE_APP_BASE_API;
+const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/system/company/doImport"); // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧�
+const headers = ref({ Authorization: "Bearer " + getToken() });
+const fileList = ref([]);
+const showTip = computed(() => props.isShowTip && (props.fileType || props.fileSize));
+
+watch(
+  () => props.modelValue,
+  (val) => {
+    if (val) {
+      let temp = 1;
+      // 棣栧厛灏嗗�艰浆涓烘暟缁�
+      const list = Array.isArray(val) ? val : props.modelValue.split(",");
+      // 鐒跺悗灏嗘暟缁勮浆涓哄璞℃暟缁�
+      fileList.value = list.map((item) => {
+        if (typeof item === "string") {
+          item = { name: item, url: item };
+        }
+        item.uid = item.uid || new Date().getTime() + temp++;
+        return item;
+      });
+    } else {
+      fileList.value = [];
+      return [];
+    }
+  },
+  { deep: true, immediate: true }
+);
+
+// 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
+function handleBeforeUpload(file) {
+  // 鏍℃鏂囦欢绫诲瀷
+  if (props.fileType.length) {
+    const fileName = file.name.split(".");
+    const fileExt = fileName[fileName.length - 1];
+    const isTypeOk = props.fileType.indexOf(fileExt) >= 0;
+    if (!isTypeOk) {
+      proxy.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${props.fileType.join("/")}鏍煎紡鏂囦欢!`);
+      return false;
+    }
+  }
+  // 鏍℃鏂囦欢澶у皬
+  if (props.fileSize) {
+    const isLt = file.size / 1024 / 1024 < props.fileSize;
+    if (!isLt) {
+      proxy.$modal.msgError(`涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃 ${props.fileSize} MB!`);
+      return false;
+    }
+  }
+  proxy.$modal.loading("姝e湪涓婁紶鏂囦欢锛岃绋嶅��...");
+  number.value++;
+  return true;
+}
+
+// 鏂囦欢涓暟瓒呭嚭
+function handleExceed() {
+  proxy.$modal.msgError(`涓婁紶鏂囦欢鏁伴噺涓嶈兘瓒呰繃 ${props.limit} 涓�!`);
+}
+
+// 涓婁紶澶辫触
+function handleUploadError(err) {
+  proxy.$modal.msgError("涓婁紶鏂囦欢澶辫触");
+}
+
+// 涓婁紶鎴愬姛鍥炶皟
+function handleUploadSuccess(res, file) {
+  if (res.code === 200) {
+    uploadList.value.push({ name: res.fileName, url: res.fileName });
+    uploadedSuccessfully(res.data.voList);
+  } else {
+    number.value--;
+    proxy.$modal.closeLoading();
+    proxy.$modal.msgError(res.msg);
+    proxy.$refs.fileUpload.handleRemove(file);
+    uploadedSuccessfully();
+  }
+}
+
+// 鍒犻櫎鏂囦欢
+function handleDelete(index) {
+  fileList.value.splice(index, 1);
+  emit("update:modelValue", listToString(fileList.value));
+}
+
+// 涓婁紶缁撴潫澶勭悊
+function uploadedSuccessfully(item) {
+  if (number.value > 0 && uploadList.value.length === number.value) {
+    fileList.value = fileList.value.filter((f) => f.url !== undefined).concat(uploadList.value);
+    uploadList.value = [];
+    number.value = 0;
+    emit("update:modelValue", listToString(fileList.value));
+    proxy.$modal.closeLoading();
+    if(item) {
+      emit('resList', item)
+    }
+  }
+}
+
+// 鑾峰彇鏂囦欢鍚嶇О
+function getFileName(name) {
+  if (name.lastIndexOf("/") > -1) {
+    return name.slice(name.lastIndexOf("/") + 1);
+  } else {
+    return "";
+  }
+}
+
+// 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅�
+function listToString(list, separator) {
+  let strs = "";
+  separator = separator || ",";
+  for (let i in list) {
+    if (list[i].url) {
+      strs += list[i].url + separator;
+    }
+  }
+  return strs != "" ? strs.substr(0, strs.length - 1) : "";
+}
+</script>
+
+<style scoped lang="scss">
+.upload-file-uploader {
+  margin-bottom: 5px;
+}
+.upload-file-list .el-upload-list__item {
+  border: 1px solid #e4e7ed;
+  line-height: 2;
+  margin-bottom: 10px;
+  position: relative;
+}
+.upload-file-list .ele-upload-list__item-content {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  color: inherit;
+}
+.ele-upload-list__item-content-action .el-link {
+  margin-right: 10px;
+}
+</style>
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 932820b..b939337 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -136,7 +136,10 @@
 export function download(url: string, params: any, filename: string, config: any) {
   downloadLoadingInstance = ElLoading.service({ text: "姝e湪涓嬭浇鏁版嵁锛岃绋嶅��", background: "rgba(0, 0, 0, 0.7)" });
   return service
-    .post(url, params, {
+    .get(url, { 
+      params,
+      responseType: "blob",
+    }, {
       transformRequest: [
         (params) => {
           return tansParams(params);
@@ -165,42 +168,7 @@
       downloadLoadingInstance.close();
     });
 }
-// 閫氱敤涓嬭浇鏂规硶
-export function downloadGet(url: string, params: any, filename: string, config: any, isSaveFile = false) {
-  downloadLoadingInstance = ElLoading.service({ text: "姝e湪涓嬭浇鏁版嵁锛岃绋嶅��", background: "rgba(0, 0, 0, 0.7)" });
-  return service
-    .get(url, { params }, {
-      transformRequest: [
-        (params) => {
-          return tansParams(params);
-        },
-      ],
-      headers: { "Content-Type": "application/x-www-form-urlencoded" },
-      responseType: "blob",
-      ...config,
-    })
-    .then(async (data) => {
-      const isBlob = blobValidate(data);
-      if (isBlob && isSaveFile) {
-        const blob = new Blob([data]);
-        saveAs(blob, filename);
-      } else {
-        if(!isSaveFile) {
-        } else {
-          const resText = await data.text();
-          const rspObj = JSON.parse(resText);
-          const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
-          ElMessage.error(errMsg);
-        }
-      }
-      downloadLoadingInstance.close();
-    })
-    .catch((r) => {
-      console.error(r);
-      ElMessage.error("涓嬭浇鏂囦欢鍑虹幇閿欒锛岃鑱旂郴绠$悊鍛橈紒");
-      downloadLoadingInstance.close();
-    });
-}
+
 const request = <T = any>(_config: AxiosRequestConfig<any>): Promise<T> => {
   return service(_config) as Promise<T>;
 };
diff --git a/src/views/infomanger/companymanger/components/export.vue b/src/views/infomanger/companymanger/components/export.vue
index b1c979b..84936ee 100644
--- a/src/views/infomanger/companymanger/components/export.vue
+++ b/src/views/infomanger/companymanger/components/export.vue
@@ -1,28 +1,31 @@
 <template>
-  <el-dialog title="鐢ㄦ埛瀵煎叆" v-model="dialogVisible" width="600px" append-to-body @close="closeDialog"
+  <el-dialog title="鐢ㄦ埛瀵煎叆" v-model="dialogVisible" width="900px" append-to-body @close="cloaseDialog"
   >
     <el-form label-width="80px">
       <el-form-item label="涓嬭浇妯℃澘">
         <el-link type="primary" @click="downLoad">浼佷笟淇℃伅瀵煎叆妯℃澘.xlsx</el-link>
       </el-form-item>
       <el-form-item label="閫夊彇鏂囦欢">
-        <FileUpload :limit="1" :fileType="['cvs', 'xlsx']" v-model="form.exportNews.file"></FileUpload>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" plain @click="startExport">寮�濮嬪鍏�</el-button>
+        <FileUpload :limit="1" :fileType="['cvs', 'xlsx']" v-model="form.exportNews.file" @resList="resList"></FileUpload>
       </el-form-item>
     </el-form>
+    <template #footer>
+      <div style="text-align: center;">
+        <el-button @click="cloaseDialog" >鍏抽棴</el-button>
+      </div>
+    </template>
   </el-dialog>
 </template>
 
 <script lang="ts" setup>
 import { ref } from 'vue'
 import { ElMessageBox } from 'element-plus'
-import FileUpload from '@/components/FileUpload/index'
-import { downloadGet  as downloadHttp} from '@/utils/request'
-import { downTemplate, importTemplate } from '@/api/system/company/company'
+import FileUpload from '@/components/FileUpload/handlerImport.vue'
+import { download  as downloadHttp} from '@/utils/request'
+import { downTemplate, importTemplate, doImport } from '@/api/system/company/company'
 const { proxy } = getCurrentInstance();
 const dialogVisible = ref(false)
+const emit = defineEmits()
 const form = reactive({
   exportNews: {}
 })
@@ -42,7 +45,11 @@
   })
 }
 function startExport() {
-
+  uploadFile()
+}
+function resList(row) {
+  cloaseDialog()
+  emit('resList', row)
 }
 defineExpose({
   openDialog,
diff --git a/src/views/infomanger/companymanger/components/exportRecord.vue b/src/views/infomanger/companymanger/components/exportRecord.vue
index bc4196d..9be907c 100644
--- a/src/views/infomanger/companymanger/components/exportRecord.vue
+++ b/src/views/infomanger/companymanger/components/exportRecord.vue
@@ -1,32 +1,70 @@
 <template>
    <el-dialog title="瀵煎叆璁板綍" v-model="dialogVisible" width="1200px" append-to-body @close="closeDialog"
   >
-    <el-table>
-      <el-table-column label="搴忓彿"></el-table-column>
-      <el-table-column label="瀵煎叆鏂囦欢"></el-table-column>
-      <el-table-column label="瀵煎叆浜�"></el-table-column>
-      <el-table-column label="瀵煎叆鏃堕棿"></el-table-column>
-      <el-table-column label="杩涘害"></el-table-column>
-      <el-table-column label="瀵煎叆缁撴灉"></el-table-column>
-      <el-table-column label="瀵煎叆缁撴灉鏂囦欢"></el-table-column>
+    <el-table :data="recordValue" border>
+      <el-table-column label="浼佷笟鍚�(浼佷笟鍏ㄧО)" prop="companyName">
+        <template #default="scope">
+          <el-input v-model="scope.row.companyName"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column label="缁熶竴绀句細淇$敤浠g爜" prop="companyCode">
+        <template #default="scope">
+          <el-input v-model="scope.row.companyCode"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column label="浼佷笟鑱旂郴浜�" prop="companyUser">
+        <template #default="scope">
+          <el-input v-model="scope.row.companyUser"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column label="鑱旂郴浜虹數璇�" prop="companyPhone">
+        <template #default="scope">
+          <el-input v-model="scope.row.companyPhone"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column label="浼佷笟鍦板潃" prop="companyAddress">
+        <template #default="scope">
+          <el-input v-model="scope.row.companyAddress"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column label="澶囨敞" prop="mark">
+        <template #default="scope">
+          <el-input v-model="scope.row.mark"></el-input>
+        </template>
+      </el-table-column>
     </el-table>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="closeDialog">鍙� 娑�</el-button>
+        <el-button type="primary" @click="addCompany">纭� 瀹�</el-button>
+      </div>
+    </template>
   </el-dialog>
 </template>
 
 <script setup lang="ts">
-import { importTemplateRecord } from '@/api/system/company/company'
 const dialogVisible = ref(false)
-const closeDialog = () => {
-  dialogVisible.value = false
-}
-const openDialog = () => {
+const props = defineProps({
+  recordRow: { type: Array, default: () => [] },
+})
+const recordValue = ref([])
+watch(() => props.recordRow, (newValue) => {
+  // console.log(props.recordRow)
+  recordValue.value = newValue
+})
+function openDialog() {
   dialogVisible.value = true
 }
-function importTemplateRecord() {
-  console.log('鑾峰彇瀵煎叆璁板綍')
+function closeDialog() {
+  dialogVisible.value = false
 }
 defineExpose({
   openDialog,
   closeDialog
 })
-</script>
\ No newline at end of file
+</script>
+<style>
+.dialog-footer{
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/infomanger/companymanger/index.vue b/src/views/infomanger/companymanger/index.vue
index 97b7cf0..4e0664b 100644
--- a/src/views/infomanger/companymanger/index.vue
+++ b/src/views/infomanger/companymanger/index.vue
@@ -41,9 +41,9 @@
       <el-col :span="1.5">
         <el-button type="primary" plain icon="Plus" @click="exportExcel" v-hasPermi="['system:dept:add']">瀵煎叆</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button type="primary" plain icon="Plus" @click="exportRecordComOpen" v-hasPermi="['system:dept:add']">瀵煎叆璁板綍</el-button>
-      </el-col>
+      </el-col> -->
       <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
     </el-row>
 
@@ -127,8 +127,8 @@
         </div>
       </template>
     </el-dialog>
-    <exportExcelCom ref="exporttem"></exportExcelCom>
-    <exportRecord ref="exportRecordCom"></exportRecord>
+    <exportExcelCom ref="exporttem" @resList="resList"></exportExcelCom>
+    <exportRecord ref="exportRecordCom" :recordRow="recordRow"></exportRecord>
   </div>
 </template>
 
@@ -223,7 +223,7 @@
 // const dispDeptType = computed(() => (e) => {
 //   return dept_type.value.find((f) => f.value == e).label;
 // });
-
+const recordRow = ref([])
 /** 鏌ヨ浼佷笟鍒楄〃 */
 function getList() {
   loading.value = true;
@@ -326,5 +326,9 @@
 function exportRecordComOpen() {
   exportRecordCom.value.openDialog()
 }
+function resList(row) {
+  recordRow.value = row
+  exportRecordCom.value.openDialog()
+}
 getList();
 </script>
diff --git a/src/views/infomanger/policy/components/addNews.vue b/src/views/infomanger/policy/components/addNews.vue
index d929589..64072e9 100644
--- a/src/views/infomanger/policy/components/addNews.vue
+++ b/src/views/infomanger/policy/components/addNews.vue
@@ -1,32 +1,72 @@
 <!-- 鏂板鏀跨瓥 -->
 <template>
-  <el-dialog title="鐢ㄦ埛瀵煎叆" v-model="dialogVisible" width="600px" append-to-body @close="closeDialog">
-    <el-form>
-      <el-form-item>
-        <el-select>
-          <el-option></el-option>
+  <el-dialog title="鎯犱紒鏀跨瓥" v-model="dialogVisible" width="900px" append-to-body @close="closeDialog">
+    <div style="padding: 0 20px;">
+      <el-form :mode="form" :rules="rules">
+      <el-form-item label="鏀跨瓥绫诲瀷" prop="docType">
+        <el-select v-model="form.docType" placeholder="璇烽�夋嫨" style="width: 200px">
+          <el-option v-for="(item,index) in policyList" :label="item.label" :value="item.value"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
-        <el-input></el-input>
+      <el-form-item label="鏀跨瓥鍚嶇О" prop="docName">
+        <el-input v-model="form.docTitle" placeholder="璇疯緭鍏ユ斂绛栧悕绉�"></el-input>
       </el-form-item>
-      <el-form-item>
-        <div>鍐呭</div>
+      <el-form-item label="鏀跨瓥鍐呭" prop="docContent">
+        <div><editPolicy v-model="form.docContent"></editPolicy></div>
       </el-form-item>
-      <el-form-item label="鐘舵��" prop="docStatus">
-        <el-switch v-model="form.docStatus"></el-switch>
+      <el-form-item label="鐘舵��" >
+        <el-switch v-model="form.docStatus" :active-value="0" :inactive-value="1"></el-switch>
       </el-form-item>
     </el-form>
+    </div>
+    <template v-slot:footer>
+      <el-button type="primary" @click="addDoc">纭</el-button>
+      <el-button @click="closeDialog">鍙栨秷</el-button>
+    </template>
 </el-dialog>
 </template>
 
 <script>
+import editPolicy from '@/components/Editor/index'
+import { addDoc, updDoc } from '@/api/system/company/company'
 export default {
+  components: {
+    editPolicy
+  },
+  props: {
+    policyList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
   data() {
     return {
       dialogVisible: false,
       form: {
-
+        docStatus: 0
+      },
+      rules: {
+        docType:[{
+          required: true,
+          message: '璇疯緭鍏ユ斂绛栧悕绉�',
+          trigger: 'blur'
+        }],
+        docName: [
+          {
+            required: true,
+            message: '璇疯緭鍏ユ斂绛栧悕绉�',
+            trigger: 'blur'
+          }
+        ],
+        docContent: [
+          {
+            required: true,
+            message: '璇疯緭鍏ユ斂绛栧唴瀹�',
+            trigger: 'blur'
+          }
+        ]
       }
     }
   },
@@ -34,8 +74,32 @@
     closeDialog() {
       this.dialogVisible = false
     },
-    openDialog() {
+    openDialog(row) {
+      if(row) {
+        this.form = row
+        this.form.docContent = decodeURIComponent(row.docContent)
+      } else {
+        this.form = {
+          docStatus: 0
+        }
+      }
       this.dialogVisible = true
+    },
+    addDoc() {
+      this.form.docContent = encodeURIComponent(this.form.docContent)
+      if(this.form.docId) {
+        updDoc(this.form).then(val => {
+        this.$message.success('娣诲姞鎴愬姛')
+        this.closeDialog()
+        this.$emit('upload')
+      })
+      } else {
+        addDoc(this.form).then(val => {
+        this.$message.success('娣诲姞鎴愬姛')
+        this.closeDialog()
+        this.$emit('upload')
+      })
+      }
     }
   }
 }
diff --git a/src/views/infomanger/policy/index.vue b/src/views/infomanger/policy/index.vue
index fbcb569..c147859 100644
--- a/src/views/infomanger/policy/index.vue
+++ b/src/views/infomanger/policy/index.vue
@@ -24,22 +24,33 @@
         <el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['system:dept:add']">鏂板</el-button>
       </el-col>
     </el-row>
-    <el-table :data="deptList">
-      <el-table-column label="鏀跨瓥鍚嶇О"></el-table-column>
-      <el-table-column label="鏀跨瓥绫诲瀷"></el-table-column>
-      <el-table-column label="鍒涘缓鏃堕棿"></el-table-column>
+    <el-table :data="tableData" v-loading="loading" border>
+      <el-table-column label="鏀跨瓥鍚嶇О" prop="docTitle"></el-table-column>
+      <el-table-column label="鏀跨瓥绫诲瀷" prop="docType"></el-table-column>
+      <el-table-column label="鍒涘缓鏃堕棿" ></el-table-column>
       <el-table-column label="鍒涘缓浜�" width="200"></el-table-column>
-      <el-table-column label="鐘舵��" width="200"></el-table-column>
-      <el-table-column label="鎿嶄綔"></el-table-column>
+      <el-table-column label="鐘舵��" width="200" prop="docStatus">
+        <template #default="scope">
+          <el-switch v-if="scope.row.docId" v-model="scope.row.docStatus" :active-value="0" :inactive-value="1" @change="changeStatus(scope.row)"></el-switch>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔">
+        <template #default="scope">
+          <el-link type="primary" @click="handleAdd(scope.row)">缂栬緫</el-link>
+          <el-divider direction="vertical" />
+          <el-link type="primary" @click="delData(scope.row)">鍒犻櫎</el-link>
+        </template>
+      </el-table-column>
     </el-table>
     <pagination v-show="queryParams.total > 0" :total="queryParams.total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
-      <addNews ref="addnews"></addNews>
+      <addNews ref="addnews" :policyList="policyList" @upload="getList"></addNews>
    </div>
 </template>
 
 <script>
-import { docList } from '@/api/system/company/company'
+import { docList,updDoc, delDoc } from '@/api/system/company/company'
 import addNews from './components/addNews'
+import { ElMessageBox } from 'element-plus'
 export default {
   components: {
     addNews
@@ -67,10 +78,12 @@
         pageNum: 1,
         pageSize: 10
       },
-      tableData: []
+      tableData: [],
+      loading: false
     }
   },
-  mounted() {
+  created() {
+    this.loading = true
     this.getList()
   },
   methods: {
@@ -79,6 +92,7 @@
       docList(this.queryParams).then(res => {
         this.tableData = res.rows
         this.queryParams.total = res.total
+        this.loading = false
       })
     },
     // 鎼滅储
@@ -86,8 +100,31 @@
       this.queryParams.pageNum = 1
       this.getList()
    },
-   handleAdd() {
-    this.$refs.addnews.openDialog()
+   handleAdd(row) {
+    this.$refs.addnews.openDialog(row)
+   },
+   changeStatus(row) {
+    if(this.loading){
+      return
+    }
+    updDoc(row).then(val => {
+      this.$message.success('淇敼鎴愬姛')
+      this.getList()
+    })
+   },
+   delData(row) {
+    ElMessageBox({
+      type: 'warning',
+      message: '纭鍒犻櫎璇ユ斂绛栵紵',
+      title: '鎻愮ず',
+      cancelButtonText: '鍙栨秷',
+
+    }).then(val => {
+      delDoc({delId: row.docId}).then(val => {
+        this.$message.success('鍒犻櫎鎴愬姛')
+        this.getList()
+      })
+    })
    }
   }
 }

--
Gitblit v1.9.1