Files
sgxt_web/src/views/backOfficeSystem/JudgmentHome/judgmentCommand/index.vue
2026-01-23 15:43:22 +08:00

261 lines
7.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="getDataById('add', '')">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #zlzt="{ row }">
{{ showSign(row) }}
<!-- <div v-for="item in row.xfbmList" :key="item.id">
{{ showSign(item) }}
</div> -->
<!-- <DictTag v-if="" :tag="true" :value="item.zlzt" :options="[{ label: '未签收', value: '01' }, { label: '已签收', value: '02' }, { label: '已反馈', value: '03' }]" /> -->
</template>
<template #ypfs="{ row }">
<DictTag :tag="false" :value="row.ypfs" :options="D_BZ_YPFS" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link size="small" type="primary" @click="getDataById('edit', row)">修改</el-link>
<el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
<el-link v-if="showBtn(row) == 'sign'" size="small" type="success" @click="sign(row)">签收</el-link>
<el-link v-if="showBtn(row) == 'feedback'" size="small" type="warning" @click="feedback(row)">反馈</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
</div>
<AddForm ref="addForm" @getList="getList" :dict="{ D_BZ_YPFS, D_BZ_YPLX }" />
<FeedbackDialog v-model="feedbackDialog" :currentRow="currentFeedbackRow" @ok="handleFeedbackSuccess" />
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { useRoute } from 'vue-router'
import { getJudgmentCommandList, deleteJudgmentCommand, signCommand, feedbackCommand } from "@/api/huiShangyp/judgmentCommand.js";
import { reactive, ref, onMounted, getCurrentInstance, watch, computed } from "vue";
import AddForm from "./addForm.vue";
import FeedbackDialog from "./components/FeedbackDialog.vue";
import { getItem } from '@//utils/storage.js'
const { proxy } = getCurrentInstance();
const { D_BZ_YPFS, D_BZ_YPLX } = proxy.$dict("D_BZ_YPFS", "D_BZ_YPLX")
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const userInfo = ref()
onMounted(() => {
userInfo.value = getItem('deptId')[0]
tabHeightFn()
if (route.query.id) {
detailDiloag.value.init('edit', {
id: route.query.id
});
return
}
getList()
});
const searchConfiger = ref([
{ label: "指令标题", prop: 'zlbt', placeholder: "请输入研判议题", showType: "input" },
// { label: "研判方式", prop: 'ypfs', placeholder: "请输入研判方式", showType: "radio",options:D_BZ_YPFS },
]);
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 240,
// zlzt
// string
// 可选
// 指令状态01 未签收、02 已签收、03已反馈
tableColumn: [
{ label: "指令标题", prop: "zlbt" },
{ label: "指令内容", prop: "zlnr", },
{ label: "指令状态", prop: "zlzt", showSolt: true },
{ label: "部门", prop: "xfbmMc" },
]
});
const queryFrom = ref({});
// 搜索
const onSearch = (val) => {
const promes = {
...val,
...pageData.pageConfiger,
}
queryFrom.value = { ...promes }
pageData.pageConfiger.pageCurrent = 1;
getList()
}
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
getList()
}
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList()
}
// 获取列表
const getList = () => {
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
getJudgmentCommandList(data).then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(() => { pageData.tableConfiger.loading = false; })
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
const route = useRoute()
const addForm = ref(null)
const feedbackDialog = ref(false)
const currentFeedbackRow = ref({})
const getDataById = (type, row) => {
addForm.value.init(type, row, '01');
}
const deleteFile = (row) => {
proxy.$confirm('确定删除选中数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteJudgmentCommand({ ids: [row.id] }).then(res => {
proxy.$message.success('删除成功');
getList();
}).catch(() => {
proxy.$message.error('删除失败');
});
}).catch(() => {
proxy.$message.info('已取消删除');
});
}
const sign = (row) => {
proxy.$confirm('确定签收吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
signCommand({ zlid: row.id }).then(res => {
proxy.$message.success('签收成功');
getList();
}).catch(() => {
proxy.$message.error('签收失败');
});
}).catch(() => {
proxy.$message.info('已取消签收');
});
}
const feedback = (row) => {
currentFeedbackRow.value = row;
feedbackDialog.value = true;
}
const handleFeedbackSuccess = () => {
// 反馈成功后刷新列表
getList();
}
// 权限控制
// 显示签收
const showSign = (row) => {
let item = row.xfbmList.find(v => v.ssbmdm == userInfo.value.deptCode)
if (item) {
return item.zlzt == '01' ? '未签收' : item.zlzt == '02' ? '已签收' : '已反馈'
} else {
return row.zlzt == '01' ? '未签收' : row.zlzt == '02' ? '已签收' : '已反馈'
}
}
// sign--签收
// feedback--反馈
// 显示按钮
const showBtn = (row) => {
let item = row.xfbmList.find(v => v.ssbmdm == userInfo.value.deptCode)
if (item) {
return item.zlzt == '01' ? 'sign' : item.zlzt == '02' ? 'feedback' : ''
} else {
return ''
}
}
</script>
<style lang="scss" scoped>
.label-pop {
position: relative;
&::before {
position: absolute;
content: '*';
top: 0;
left: -7px;
color: red;
}
}
</style>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
:v-deep .el-dialog {
width: 90% !important;
}
.zdy-model-dialogs {
/* background-color: rgb(50, 148, 214); */
background: url("~@/assets/images/bg46.png") no-repeat center center;
background-size: 100% 100%;
padding: 8px 10px;
box-sizing: border-box;
pointer-events: auto !important;
height: calc(100% - 50px);
overflow: auto;
}
</style>