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