xy 2 years ago
parent 7a587bd700
commit 88a03710eb

@ -7,3 +7,19 @@ export function getNewNotice(params) {
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') let re = new RegExp('<[^<>]+>', 'g')
return html_str.replace(re, '') return html_str.replace(re, '')
//或
//var text = html_str.replace(/<[^<>]+>/g, "");
} }
export const useNoticeStore = defineStore({ export const useNoticeStore = defineStore({
id: "notice", id: "notice",
@ -60,11 +58,15 @@ export const useNoticeStore = defineStore({
return return
} }
getNewNotice().then(res => { 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) ipcRenderer.invoke("set-tray-title", res.list?.length ?? 0)
this.setNewNotices(res.list) this.setNewNotices(res.list)
}) })
}, 1000 * 10) }, 1000 * 5)
}, },
destroyNoticeTimer () { destroyNoticeTimer () {
clearInterval(timer) clearInterval(timer)

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

@ -9,10 +9,17 @@
<el-table-column type="index" width="40"></el-table-column> <el-table-column type="index" width="40"></el-table-column>
<el-table-column prop="title" label="内容"> <el-table-column prop="title" label="内容">
<template #default="{ row }"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" width="240" label="下发时间" prop="created_at"></el-table-column>
</el-table> </el-table>
<!-- <div style="padding: 10px;">--> <!-- <div style="padding: 10px;">-->
@ -31,10 +38,14 @@
</template> </template>
<script setup> <script setup>
import { useUserStore } from "@/store/user" import { ipcRenderer } from "electron";
import { useNoticeStore } from "@/store/notice" import { useUserStore } from "@/store/user";
import { useNoticeStore } from "@/store/notice";
import { ref, reactive, computed, onMounted, nextTick, onUpdated } from 'vue'; 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 userStore = useUserStore()
const noticeStore = useNoticeStore() const noticeStore = useNoticeStore()
const total = ref(0) const total = ref(0)
@ -42,26 +53,56 @@ const notices = computed(() => noticeStore.notice['notice'])
const loading = ref(false) const loading = ref(false)
const table = ref(null) const table = ref(null)
const toDataUrl = (el) => { const read = (row) => {
window.open(`${el.getAttribute('data-url')}?auth_token=${userStore.authToken}`, '_blank'); 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 () => { const handle = row => {
await nextTick(); if (row.hasOwnProperty("remark")) {
table.value.$el.querySelectorAll("[data-url]").forEach(el => { let doc = document.createRange().createContextualFragment(row.remark)?.querySelector("a")
// if (doc) {
if (el._clickHandler) { let uri = doc.getAttribute("data-url")
el.removeEventListener("click", el._clickHandler); 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); const hasDataUrl = computed(() => {
}; return function (row) {
// return (row.remark && /data-url/g.test(row.remark)) || row.hasOwnProperty("title")
el.addEventListener('click', el._clickHandler); }
}); })
});
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
a {
color: #2b86c5;
}
</style> </style>

Loading…
Cancel
Save