xy 2 years ago
parent 7a587bd700
commit 88a03710eb

@ -7,3 +7,19 @@ export function getNewNotice(params) {
params
})
}
export function readNotice(params) {
return request({
url: '/api/admin/notice/has-read',
method: 'get',
params
})
}
export function readOaNotice (params) {
return request({
url: '/api/admin/notice/has-oa-read',
method: 'get',
params
})
}

@ -7,8 +7,6 @@ function getHtmlPlainText(html_str) {
//提取字符串中的文字
let re = new RegExp('<[^<>]+>', 'g')
return html_str.replace(re, '')
//或
//var text = html_str.replace(/<[^<>]+>/g, "");
}
export const useNoticeStore = defineStore({
id: "notice",
@ -60,11 +58,15 @@ export const useNoticeStore = defineStore({
return
}
getNewNotice().then(res => {
this.setNotice('notice', res.list)
if (!res.contract_list instanceof Array || !res.oa_list instanceof Array) {
return
}
let totalRes = [...res.contract_list,...res.oa_list]
this.setNotice('notice', totalRes)
ipcRenderer.invoke("set-tray-title", res.list?.length ?? 0)
this.setNewNotices(res.list)
})
}, 1000 * 10)
}, 1000 * 5)
},
destroyNoticeTimer () {
clearInterval(timer)

@ -31,10 +31,6 @@ export const useUserStore = defineStore({
}).catch(err => {
reject(err)
})
getOaToken().then(t => {
this.authToken = t.auth_token
localStorage.setItem("authToken", t.auth_token);
})
}).catch(err => {
reject(err)
})
@ -63,6 +59,10 @@ export const useUserStore = defineStore({
},
getUserInfo() {
return new Promise((resolve, reject) => {
getOaToken().then(t => {
this.authToken = t.auth_token
localStorage.setItem("authToken", t.auth_token);
})
getInfo().then(res => {
this.info = res
this.isLogin = true

@ -9,10 +9,17 @@
<el-table-column type="index" width="40"></el-table-column>
<el-table-column prop="title" label="内容">
<template #default="{ row }">
<div v-html=row.remark></div>
<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-column align="center" width="240" label="下发时间" prop="created_at"></el-table-column>
</el-table>
<!-- <div style="padding: 10px;">-->
@ -31,10 +38,14 @@
</template>
<script setup>
import { useUserStore } from "@/store/user"
import { useNoticeStore } from "@/store/notice"
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)
@ -42,26 +53,56 @@ const notices = computed(() => noticeStore.notice['notice'])
const loading = ref(false)
const table = ref(null)
const toDataUrl = (el) => {
window.open(`${el.getAttribute('data-url')}?auth_token=${userStore.authToken}`, '_blank');
};
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')`)
}
onUpdated(async () => {
await nextTick();
table.value.$el.querySelectorAll("[data-url]").forEach(el => {
//
if (el._clickHandler) {
el.removeEventListener("click", el._clickHandler);
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;
}
//
el._clickHandler = () => {
toDataUrl(el);
};
//
el.addEventListener('click', el._clickHandler);
});
});
}
}
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>

Loading…
Cancel
Save