You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.7 KiB

<template>
<div>
<el-table :data="notices"
ref="table"
v-loading="loading"
element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)" >
<el-table-column type="index" width="40"></el-table-column>
<el-table-column prop="title" label="内容">
<template #default="{ row }">
<div v-if="row.remark" v-html="row.remark"></div>
<div v-else><a>{{ row.title }}</a></div>
</template>
</el-table-column>
<el-table-column align="center" width="220" label="下发时间" prop="created_at"></el-table-column>
<el-table-column header-align="center" align="left" width="240" label="操作">
<template #default="{ row }">
<el-button size="mini" type="primary" icon="el-icon-coordinate" @click="read(row)">设为已读</el-button>
<el-button v-if="hasDataUrl(row)" size="mini" type="primary" icon="el-icon-edit-outline" @click="handle(row)">办理</el-button>
</template>
</el-table-column>
</el-table>
<!-- <div style="padding: 10px;">-->
<!-- <el-pagination-->
<!-- @current-change="e => {-->
<!-- select.page = e;-->
<!-- getUsers();-->
<!-- }"-->
<!-- :current-page.sync="select.page"-->
<!-- :page-size="select.page_size"-->
<!-- layout="prev, pager, next, jumper"-->
<!-- :total="total">-->
<!-- </el-pagination>-->
<!-- </div>-->
</div>
</template>
<script setup>
import { ipcRenderer } from "electron";
import { useUserStore } from "@/store/user";
import { useNoticeStore } from "@/store/notice";
import { ref, reactive, computed, onMounted, nextTick, onUpdated } from 'vue';
import { readNotice, readOaNotice } from "@/api/notice";
import { useRouter } from "@/hooks/use-router"
const $router = useRouter()
const userStore = useUserStore()
const noticeStore = useNoticeStore()
const total = ref(0)
const notices = computed(() => noticeStore.notice['notice'])
const loading = ref(false)
const table = ref(null)
const read = (row) => {
if (row.hasOwnProperty("remark")) {
readOaNotice({
id: row.id
})
} else {
readNotice({
id: row.id
})
}
}
const toContract = (row) => {
$router.push("/contract/index")
ipcRenderer.invoke("exec-admin-view-js", `window.$router.push('/contract/contract/contractList')`)
}
const handle = row => {
if (row.hasOwnProperty("remark")) {
let doc = document.createRange().createContextualFragment(row.remark)?.querySelector("a")
if (doc) {
let uri = doc.getAttribute("data-url")
console.log(`${uri}?auth_token=${userStore.authToken}`)
window.open(`${uri}?auth_token=${userStore.authToken}`, '_blank');
}
} else {
switch (row.type) {
case 1:
$router.push("/contract/index")
ipcRenderer.invoke("exec-admin-view-js", `window.$router.push('/contract/${row.contract.is_purchase ? 'contract/contractList' : 'contractAll' }?contractId=${row.contract_id}')`)
break;
case 2:
$router.push("/contract/index")
ipcRenderer.invoke("exec-admin-view-js", `window.$router.push('/contract/contract/contractList?contractId=${row.contract_id}')`)
break;
case 3:
$router.push("/contract/index")
ipcRenderer.invoke("exec-admin-view-js", `window.$router.push('/contract/away?awayId=${row.contract_id}')`)
break;
}
}
}
const hasDataUrl = computed(() => {
return function (row) {
return (row.remark && /data-url/g.test(row.remark)) || row.hasOwnProperty("title")
}
})
</script>
<style scoped lang="scss">
a {
color: #2b86c5;
}
</style>