Browse Source

Merge remote-tracking branch 'origin/master'

master
parent
commit
02e96de428
  1. 4
      src/api/system/user/index.ts
  2. 841
      src/views/task/create copy.vue
  3. 1057
      src/views/task/create.vue
  4. 170
      src/views/task/create2.vue
  5. 151
      src/views/task/createEnterprise.vue
  6. 350
      src/views/task/createEnterprise2.vue
  7. 388
      src/views/task/detail.vue
  8. 30
      src/views/task/index.vue

4
src/api/system/user/index.ts

@ -93,8 +93,8 @@ export const getSimpleUserList = (): Promise<UserVO[]> => {
}
// 获取专管员
export const getSimpleUserZGList = (param) => {
return request.get({ url: `/system/user/simple-zg-list`, param })
export const getSimpleUserZGList = () => {
return request.get({ url: `/system/user/simple-zg-list` })
}
// 通过用户类型获取用户列表

841
src/views/task/create copy.vue

@ -1,841 +0,0 @@
<template>
<ContentWrap>
<section class="taskForm">
<div class="title">基本信息</div>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="auto" class="formClass" size="large">
<el-form-item label="标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入任务标题" />
</el-form-item>
<el-form-item label="时间周期" prop="planTime">
<el-date-picker
v-model="formData.planTime"
type="daterange"
format="YYYY年MM月DD日"
range-separator="至"
size="large"
start-placeholder="选择开始时间"
end-placeholder="选择结束时间"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item label="描述" prop="description" style="width: 100%; padding: 0; margin-top: 0px;" class="descClass">
<el-input
type="textarea"
v-model="formData.description"
:autosize="{
minRows: 5
}"
placeholder="请输入描述"
/>
</el-form-item>
<el-form-item label="任务类型" prop="taskType">
<el-select v-model="formData.taskTopType" placeholder="请选择任务优先级" size="large" @change="selectChild">
<el-option
v-for="dict in taskTagTopList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="执行周期" prop="execCycle" v-if="formData.taskType == 2">
<el-select v-model="formData.execCycle" placeholder="请选择执行周期">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.TASK_EXEC_TIME)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> -->
<el-form-item label="类型选项" prop="priority">
<el-select v-model="formData.taskType" placeholder="请选择任务选项" >
<el-option
v-for="dict in tagChildList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
</el-form>
</section>
</ContentWrap>
<ContentWrap>
<div class="title">执行范围</div>
<section class="select-area" v-loading="loading">
<section>
<el-form
:model="enterprise.queryParams"
ref="queryFormRef"
:inline="true"
label-width="0"
size="large"
class="search-form"
>
<div class="form-container">
<el-form-item label="" prop="region" class="form-item" >
<el-select
v-model="enterprise.queryParams.qy"
placeholder="请选择所属区域"
clearable
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select
v-model="enterprise.queryParams.hy"
placeholder="请选择行业"
clearable
>
<el-option
v-for="dict in hyList"
:key="dict.id"
:label="dict.tagName"
:value="dict.tagName"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select
v-model="enterprise.queryParams.st"
placeholder="请选择生态"
>
<el-option
v-for="dict in stList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select
v-model="enterprise.queryParams.wr"
placeholder="请选择污染程度"
>
<el-option
v-for="dict in wrList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="userId" class="form-item">
<el-select v-model="enterprise.queryParams.userId" placeholder="请选择执法人员" clearable>
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.deptName +'_'+ dict.realName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="enterprisesName" class="form-item">
<el-input
v-model="enterprise.queryParams.enterprisesName"
placeholder="请输入企业名称"
/>
</el-form-item>
<el-form-item class="form-item">
<el-button type="primary" plain>
<Icon icon="ep:search" class="mr-5px" /> 查询
</el-button>
<el-button @click="resetQuery" class="mr-10px" type="primary" plain>
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
<el-form-item class="action-buttons">
<el-button @click="insertEnterprise" type="primary">
<el-icon><CirclePlus /></el-icon> &nbsp;
</el-button>
</el-form-item>
</div>
</el-form>
<section class="enterprise-area" style="border: 1px solid #ebeef5">
<el-table
ref="multipleTableRef"
:data="enterprise.list"
@selection-change="handleSelectionChange"
:cell-style="{ borderBottom: '1px solid #EBEEF5' }"
:header-cell-style="{
borderBottom: '1px solid #EBEEF5',
backgroundColor: '#F5F7FA'
}"
>
<template #empty>
<el-empty description="暂无数据" />
</template>
<el-table-column type="selection" width="30" />
<el-table-column property="enterprisesName" label="企业名称" min-width="100" />
<el-table-column property="region" label="区域">
<template #default="scope">
{{
getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA).find(
(dict) => dict.value == scope.row.region
)?.label || '未知区域'
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="行业">
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 1)
.map((item) => item.label)
.join(', ')
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="生态">
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 2)
.map((item) => item.label)
.join(', ')
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="类型">
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 4)
.map((item) => item.label)
.join(', ')
}}
</template>
</el-table-column>
<el-table-column property="inviterName" label="执法人员" min-width="100" />
<el-table-column label="操作" align="center" min-width="80px">
<template #default="scope">
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</section>
<div class="pageArea" v-show="enterprise.total > 0">
<div class="selected">已选择 {{ selectedEnterprises.length }} / {{ enterprise.total }}
<el-button
link
type="primary"
@click="deletedSelected"
v-show="selectedEnterprises.length > 0"
>
删除所选
</el-button>
</div>
<el-pagination
:total="enterprise.total"
:show-page-size="false"
size="small"
layout="total, prev, pager, next"
v-model:page="enterprise.queryParams.pageNo"
v-model:limit="enterprise.queryParams.pageSize"
@pagination="getEnterPriseList"
class="page"
/>
</div>
</section>
<div class="footer">
<el-button type="primary" @click="submitForm" size="large">创建任务</el-button>
<el-button @click="submitForm" size="large">返回列表</el-button>
<el-button
type="primary"
@click="submitForm"
v-hasPermi="['system:enterprise-inspections:audit']"
>审核通过</el-button
>
<el-button
type="danger"
@click="submitForm"
v-hasPermi="['system:enterprise-inspections:audit']"
>删除</el-button
>
</div>
</section>
</ContentWrap>
<CreateEnterprise ref="formCreateRef" @success="getList" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { TagLibraryApi } from '@/api/system/taglibrary'
import { EnterprisesApi, EnterprisesVO } from '@/api/enterprises'
import { TaskInfoApi } from '@/api/system/taskinfo'
import { useTagsViewStore } from '@/store/modules/tagsView'
import { defaultProps } from '@/utils/tree'
import CreateEnterprise from './createEnterprise.vue'
import { cloneDeep } from 'lodash-es';
import { getSimpleUserZGList } from '@/api/system/user'
defineOptions({ name: 'CreateTask' })
const loading = ref(false)
const formData = ref({
id: undefined,
title: undefined,
description: undefined,
execCycle: undefined,
taskType: undefined,
priority: undefined,
status: undefined,
startDate: undefined,
endDate: undefined,
createBy: undefined,
updateBy: undefined,
parentId: undefined,
parentType: undefined,
taskStep: undefined,
taskTotal: undefined,
planTime: [] as any,
tags: [],
enterprises: [] as any
})
const router = useRouter()
const route = useRoute()
const tagView = useTagsViewStore()
const formCreateRef = ref()
const message = useMessage() //
const formRules = reactive({
title: [{ required: true, message: '任务标题不能为空', trigger: 'blur' }],
// taskType: [
// {
// required: true,
// message: '',
// trigger: 'change'
// }
// ],
planTime: [{ required: true, message: '时间周期不能为空', trigger: 'blur' }]
})
const { query } = useRoute()
const formRef = ref() // Ref`
const tagList = ref([])
const queryFormRef = ref() //
const enterprise = ref({
list: [] as any,
queryParams: reactive({
pageNo: 1,
pageSize: 10,
enterprisesName: undefined,
qy: undefined,
hy: undefined,
st: undefined,
wr: undefined,
inviterName: undefined,
userId: undefined,
tagList: []
}),
total: ref(0) as any
})
//
const deletedSelected = async () => {
await message.delConfirm()
selectedEnterprises.value.forEach(item=> {
deleteHandle(item.id)
})
}
const selectedEnterprises = ref<EnterprisesVO[]>([])
const handleSelectionChange = (selectedItems: EnterprisesVO[]) => {
selectedEnterprises.value = selectedItems
}
const handleDelete = async (id: number) => {
//
await message.delConfirm()
//
deleteHandle(id)
}
const deleteHandle = (id: number) => {
const targetIndex = enterprise.value.list.findIndex(item => item.id === id);
if (targetIndex === -1) return;
//
enterprise.value.list.splice(targetIndex, 1);
enterprise_copy.value = cloneDeep(enterprise.value);
enterprise.value.total = enterprise.value.list.length
//
const { pageNo, pageSize } = enterprise.value.queryParams;
const itemsOnCurrentPage = enterprise.value.list.slice(
(pageNo - 1) * pageSize,
pageNo * pageSize
);
if (itemsOnCurrentPage.length === 0 && pageNo > 1) {
enterprise.value.queryParams.pageNo = pageNo - 1;
}
}
const enterprise_copy = ref({
list: [] as any,
queryParams: reactive({
pageNo: 1,
pageSize: 10,
enterprisesName: undefined,
qy: undefined,
hy: undefined,
st: undefined,
wr: undefined,
userId: undefined
}),
total: ref(0) as any
})
const userList:any = ref()
//
const isAllConditionsEmpty = computed(() => {
const params = enterprise.value.queryParams;
return (
!params.enterprisesName &&
!params.qy &&
!params.hy &&
!params.st &&
!params.wr &&
!params.userId
);
});
/** 搜索按钮操作 */
const handleQuery = () => {
const list = filterList(enterprise.value.list)
enterprise.value.list = list
enterprise.value.total = list?.length
}
//
const filterList = (list: EnterprisesVO[]) => {
if (isAllConditionsEmpty.value) return enterprise_copy.value.list; //
if (list.length > 0) {
const { enterprisesName, qy, hy, st, wr , userId } = enterprise.value.queryParams;
return list.filter(item => {
//
const nameMatch = enterprisesName ?
item.enterprisesName?.toLowerCase().includes(enterprisesName.toLowerCase()) : true;
//
const typeMatch = qy ? item.region == qy : true;
//
const hyMatch = hy ? item.tagList.includes(hy) : true
const stMatch = st ? item.tagList.includes(st) : true
const wrMatch = wr ? item.tagList.includes(wr) : true
const userIdMatch = userId ? item.userId == userId : true
//
// const regNumMatch = registrationNumber ?
// item.registrationNumber === registrationNumber : true;
// // ID
// const idMatch = id !== undefined ? item.id === id : true;
return nameMatch && typeMatch && hyMatch && stMatch && wrMatch && userIdMatch;
});
}
}
const insertEnterprise = () => {
formCreateRef.value.open()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
//
const hyList:any = ref([])
//
const stList:any = ref([])
//
const wrList:any = ref([])
/**
* 获取标签列表
*/
async function getTagList() {
const codeList = 'codeList=hy&codeList=st&codeList=wr'
const data = await TagLibraryApi.tagLibraryList(codeList)
hyList.value = data[0].children
stList.value = data[1].children
wrList.value = data[2].children
}
const defaultProps = {
label: 'tagName', // 使 'name'
children: 'children' // 使 'children'
}
/**
* 单选企业
* @param enterprise
*/
function selectEnterprise(enterprise) {
formData.value.enterprises.push(enterprise)
}
/**
* 单选取消
* @param enterprise
*/
function checkEnterprise(enterprise) {
formData.value.enterprises = formData.value.enterprises.filter((e) => e.id != enterprise.id)
}
/**
* 数组去重
* @param arr
* @param uniId 唯一id
* @returns
*/
function uniqueFunc(arr, uniId) {
const res = new Map()
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1))
}
/**
* 提交表单
*/
async function submitForm() {
// id
const validate = await unref(formRef).validate()
if (validate) {
const data = JSON.parse(JSON.stringify(formData.value))
enterprise.value.list
//1
data.status = 1
console.log('任务类型:', formData.value.taskType)
// data.enterpriseIds = formData.value.enterprises.map((i) => i.id)
if (enterprise.value.list.length == 0) {
message.success('温馨提示:请您选择执法对象')
} else {
if (data.status < 2) {
data.startDate = data.planTime[0]
data.endDate = data.planTime[1]
data.enterpriseIds = enterprise.value.list.map(i=>i.id)
console.log('data', data)
if (data.id) {
TaskInfoApi.updateTaskInfo(data).then(() => {
message.success('操作成功')
tagView.delView(route)
router.go(-1)
})
} else {
TaskInfoApi.createTaskInfo(data).then(() => {
message.success('操作成功')
tagView.delView(route)
router.go(-1)
})
}
} else {
message.success('温馨提示:该任务已经执行,无法再进行修改')
}
}
}
}
// async function taskTopType() {
// const data = TagLibraryApi.getTagLibraryPage()
// }
//
const taskTagTopList:any = ref([])
//
const tagChildList:any = ref([])
async function taskTopQuery() {
const params = {
tagType: 2
}
const data = await TagLibraryApi.getTagLibraryPage(params)
taskTagTopList.value = data
}
async function init() {
//
const userData = await getSimpleUserZGList()
userList.value = userData
//
taskTopQuery()
if (query.id) {
TaskInfoApi.getTaskInfo(query.id).then((res) => {
formData.value = res
formData.value.planTime = [formData.value.startDate, formData.value.endDate]
formData.value.enterprises = res.enterpriseIdes
formData.value.tags = res.taskTagIdes.map((t) => t.tagId)
})
}
}
const selectChild = (value: any) => {
const data = taskTagTopList.value.find(item=>item.id == value)
console.log('daratata', data.children)
tagChildList.value = data.children
}
function getList(data) {
enterprise.value.list.push(...data)
//
enterprise.value.list = uniqueFunc(enterprise.value.list, 'id')
enterprise.value.total = enterprise.value.list.length
enterprise_copy.value = cloneDeep(enterprise.value);
}
// getEnterPriseList()
getTagList()
onMounted(() => {
init()
})
</script>
<style scoped lang="scss">
.title {
font-size: 16px;
font-weight: bold;
margin: 20px;
font-size: 17px;
}
.taskForm{
padding-right: 20px;
.formClass {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
align-items: center;
gap: 20px;
width: 100%;
.descClass {
grid-row: span 2;
flex: 1 0 0;
align-self: stretch;
}
::v-deep(.el-form-item) {
width: 100%;
align-items: flex-start;
}
}
}
.pageArea{
display: flex;
flex-direction: row;
justify-content: space-between;
font-size: 13px;
padding: 20px 1.5%;
}
.enterprise-area {
flex: 1;
gap: 10px;
margin: 0 20px; //
overflow-x: hidden; //
width: calc(100% - 40px); // q
::v-deep(.el-table) {
width: 100% !important; //
.el-table__cell {
text-align: center;
}
}
:deep(.no-data) {
padding: 30px 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
p {
margin-top: 10px;
color: #909399;
}
}
.enterprise {
cursor: pointer;
box-shadow: 0 0 1px 1px #eaeaea;
border-radius: 6px;
padding: 10px;
transition: 0.2s all;
margin-bottom: 5px;
&:hover {
box-shadow: 0 0 1px 1px #ccc;
}
}
}
.check-area {
border: 1px dashed #ccc;
border-radius: 6px;
overflow: hidden;
overflow-y: scroll;
height: 550px;
max-height: 550px;
scroll-behavior: smooth;
padding: 10px;
display: flex;
flex-flow: row wrap;
gap: 10px;
align-content: flex-start;
&::-webkit-scrollbar {
width: 3px;
height: 100%;
padding: 2px;
}
&::-webkit-scrollbar-thumb {
background-color: #ccc;
border-radius: 5px;
}
.isChecked {
width: calc(100% / 4 - 10px);
height: 80px;
color: #fff;
background-color: var(--el-color-primary);
padding: 5px 10px;
box-shadow: 0px 0px 1px 1px #ccc;
border-radius: 4px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
}
}
.total {
width: 100%;
margin-top: 10px;
text-align: right;
}
.select-area {
display: grid;
grid-template-rows: 1fr;
grid-template-columns: minmax(0, 1fr);
align-items: center;
gap: 20px;
::v-deep(.select-area .el-form) {
margin-bottom: 15px;
.el-form-item {
margin-right: 10px;
margin-bottom: 10px;
}
}
:deep(.el-form) {
margin-bottom: 15px;
.el-form-item {
margin-right: 10px;
margin-bottom: 10px;
}
}
.search-form {
background-color: #fff;
border-radius: 4px;
margin: 0 20px; // margin
.form-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
margin-bottom: 20px;
}
.form-item {
margin: 0;
width: 100%;
:deep(.el-input),
:deep(.el-select) {
width: 100%;
}
}
.action-buttons {
display: flex;
justify-content: flex-end; /* 水平右对齐 */
align-items: center;
width: 100%;
button{
margin-left: auto;
margin-top: auto;
}
}
.button-container {
display: flex;
justify-content: center;
gap: 8px;
}
}
.pagination-container {
display: flex;
justify-content: right;
margin: 10px; //
}
.footer {
display: flex;
justify-content: center; //
gap: 8px; //
padding-top: 20px;
margin: 10px; //
}
}
</style>

1057
src/views/task/create.vue

File diff suppressed because it is too large Load Diff

170
src/views/task/create2.vue

@ -1,170 +0,0 @@
<template>
<ContentWrap title="基本信息">
<section class="taskForm">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="任务标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务周期" prop="planTime">
<el-date-picker
v-model="formData.planTime"
type="daterange"
start-placeholder="选择日期"
end-placeholder="选择日期"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="任务类型" prop="taskType">
<el-select v-model="formData.taskType" placeholder="请选择">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.TASK_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="任务描述" prop="description">
<el-input
type="textarea"
v-model="formData.description"
:autosize="{ minRows: 3 }"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</section>
</ContentWrap>
<ContentWrap title="执行范围">
<section class="select-area">
<el-row :gutter="20">
<el-col :span="24">
<el-form :inline="true" :model="enterprise.queryParams">
<el-form-item>
<el-select v-model="enterprise.queryParams.region" placeholder="请选择区域" clearable>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="enterprise.queryParams.type" placeholder="请选择行业" clearable>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.ENTERPRISES_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="enterprise.queryParams.life" placeholder="请选择生态" clearable>
<el-option label="水质污染" value="1" />
<el-option label="大气污染" value="2" />
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="enterprise.queryParams.type" placeholder="请选择类型" clearable>
<el-option label="危险企业" value="1" />
<el-option label="一般企业" value="2" />
</el-select>
</el-form-item>
<el-form-item>
<el-input
v-model="enterprise.queryParams.enterprisesName"
placeholder="请输入执法人员"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">
<Icon icon="ep:search" /> 查询
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" /> 重置
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table :data="enterprise.list" style="width: 100%" v-loading="loading">
<el-table-column type="selection" width="55" />
<el-table-column prop="enterprisesName" label="企业名称" />
<el-table-column prop="region" label="区域">
<template #default="scope">
<DictTag :type="DICT_TYPE.ENTERPRISES_AREA" :value="scope.row.region" />
</template>
</el-table-column>
<el-table-column prop="type" label="行业" />
<el-table-column prop="life" label="生态" />
<el-table-column prop="type" label="类型" />
<el-table-column prop="person" label="执法人员" />
<el-table-column label="操作" width="100">
<template #default="scope">
<el-button link type="primary" @click="selectEnterprise(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination-container">
<el-pagination
v-model:current-page="enterprise.queryParams.pageNo"
v-model:page-size="enterprise.queryParams.pageSize"
:total="enterprise.total"
layout="prev, pager, next"
/>
</div>
</section>
</ContentWrap>
<ContentWrap>
<div class="flex justify-center gap-20px">
<el-button type="primary" @click="submitForm">创建任务</el-button>
<el-button @click="router.back()">返回列表</el-button>
</div>
</ContentWrap>
</template>
<style scoped lang="scss">
.taskForm {
padding: 20px;
.el-form {
.el-form-item {
margin-bottom: 20px;
}
}
}
.select-area {
padding: 20px;
.el-form {
margin-bottom: 20px;
}
.pagination-container {
margin-top: 20px;
text-align: center;
}
}
.el-table {
margin: 20px 0;
}
</style>

151
src/views/task/createEnterprise.vue

@ -2,11 +2,16 @@
<el-dialog
v-model="visible"
title="新增企业"
title="筛选企业"
width="1200px"
style="padding: 40px; "
top="5vh"
:close-on-click-modal="false"
append-to-body
>
<template #header >
<span style="font-size: 20px; font-weight: bold;">筛选企业</span>
</template>
<div class="enterprise-container">
<!-- 搜索区域 -->
<div class="search-area">
@ -14,7 +19,6 @@
:model="enterprise.queryParams"
ref="queryFormRef"
:inline="true"
label-width="0"
size="large"
class="search-form"
>
@ -31,8 +35,8 @@
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select v-model="enterprise.queryParams.hy" placeholder="请选择行业" clearable>
<el-form-item label="" prop="hy" class="form-item">
<el-select v-model="enterprise.queryParams.hy" placeholder="请选择行业" clearable filterable multiple>
<el-option
v-for="dict in hyList"
:key="dict.id"
@ -42,30 +46,8 @@
</el-select>
</el-form-item>
<el-form-item label="" prop="region" class="form-item">
<el-select v-model="enterprise.queryParams.st" placeholder="请选择生态" clearable>
<el-option
v-for="dict in stList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select v-model="enterprise.queryParams.wr" placeholder="请选择污染程度" clearable>
<el-option
v-for="dict in wrList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="type" class="form-item">
<el-select v-model="enterprise.queryParams.userId" placeholder="请选择执法人员" clearable>
<el-form-item label="" prop="userId" class="form-item">
<el-select v-model="enterprise.queryParams.userId" placeholder="请选择执法人员" filterable clearable>
<el-option
v-for="dict in userList"
:key="dict.id"
@ -98,8 +80,9 @@
@select="handleSelectionChange"
@select-all="selectAll"
style="width: 100%; border: 1px solid #ebeef5"
:cell-style="{ borderBottom: '1px solid #EBEEF5' }"
:cell-style="{ borderBottom: '1px solid #EBEEF5', textAlign: 'left'}"
height="400px"
size="large"
row-key="id"
:header-cell-style="{
borderBottom: '1px solid #EBEEF5',
@ -109,7 +92,7 @@
<el-table-column type="selection" :reserve-selection="true" />
<el-table-column property="enterprisesName" label="企业名称" />
<el-table-column property="region" label="区域">
<el-table-column property="region" label="所属区域">
<template #default="scope">
{{
getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA).find(
@ -118,7 +101,7 @@
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="行业">
<el-table-column property="enterprisesName" label="行业类别">
<template #default="scope">
{{
scope.row.tagListName &&
@ -129,29 +112,12 @@
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="生态">
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 2)
.map((item) => item.label)
.join(', ')
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="类型">
<el-table-column property="inviterName" label="执法人员" >
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 4)
.map((item) => item.label)
.join(', ')
}}
</template>
{{scope.row.inviterName}} | {{scope.row.inviterNameDept}}
</template>
</el-table-column>
<el-table-column property="inviterName" label="执法人员" />
</el-table>
<!-- 分页 -->
@ -172,8 +138,8 @@
<!-- 底部按钮 -->
<div class="footer">
<el-button type="primary" @click="confirmSelect">确认选择</el-button>
<el-button @click="handleClose">关闭窗口</el-button>
<el-button type="primary" @click="confirmSelect" size="large">确认选择</el-button>
<el-button @click="handleClose" size="large">关闭窗口</el-button>
</div>
</div>
</el-dialog>
@ -181,16 +147,11 @@
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { EnterprisesApi, EnterprisesVO } from '@/api/enterprises'
import { TagLibraryVO, TagLibraryApi } from '@/api/system/taglibrary'
import { TagLibraryApi } from '@/api/system/taglibrary'
import { getSimpleUserZGList } from '@/api/system/user'
const loading = ref(true) //
const emit = defineEmits(['update:modelValue', 'success'])
const props = defineProps({
modelValue: {
type: Boolean,
default: false
}
})
const enterprise = ref({
list: ref<EnterprisesVO[]>(),
queryParams: reactive({
@ -204,20 +165,11 @@ const enterprise = ref({
inviterName: undefined,
id: undefined,
userId: undefined,
tagList: []
tagList: [],
isAudit: true
}),
total: ref(0)
})
const queryParams = ref({
enterprisesName: undefined,
hy: undefined,
st: undefined,
wr: undefined,
region: undefined,
userId: undefined,
// registrationNumber: undefined,
id: undefined
})
//
const visible = ref(false) //
@ -237,31 +189,19 @@ const selectAll = (selection) => {
//
const confirmSelect = () => {
visible.value = false
emit('success', selectedEnterprises.value)
}
//
// const handleSelectionChange = (selection) => {
// const currentPageIds = selection.map(item => item.id);
// currentPageIds.forEach(id => selectedIds.value.add(id));
// };
/**
* 获取企业列表
*/
async function getEnterPriseList() {
loading.value = true
console.log('enterprise.value.queryParams', enterprise.value.queryParams)
if (enterprise.value.queryParams.hy ||
enterprise.value.queryParams.st ||
enterprise.value.queryParams.wr
) {
enterprise.value.queryParams.tagList.push(enterprise.value.queryParams.hy)
enterprise.value.queryParams.tagList.push(enterprise.value.queryParams.st)
enterprise.value.queryParams.tagList.push(enterprise.value.queryParams.wr)
if (enterprise.value.queryParams.hy ) {
enterprise.value.queryParams.tagList = enterprise.value.queryParams.hy
}
@ -269,15 +209,19 @@ async function getEnterPriseList() {
const data = await EnterprisesApi.getEnterpriseByUserId(enterprise.value.queryParams)
enterprise.value.list = data.list
enterprise.value.total = data.total
console.log('enterprise.value.list=>', enterprise.value.list)
} finally {
loading.value = false
enterprise.value.queryParams.tagList = []
}
}
//
const open = async () => {
// TODO:
visible.value = true
getEnterPriseList()
}
/** 搜索按钮操作 */
@ -285,28 +229,26 @@ const handleQuery = () => {
enterprise.value.queryParams.pageNo = 1
getEnterPriseList()
}
const queryFormRef = ref()
/** 重置按钮操作 */
const resetQuery = () => {
// queryFormRef.value.resetFields()
// handleQuery()
queryFormRef.value.resetFields()
getEnterPriseList()
}
//
const hyList: any = ref([])
//
const stList: any = ref([])
//
const wrList: any = ref([])
//
const userList:any = ref()
async function init() {
try {
const codeList = 'codeList=hy&codeList=st&codeList=wr'
const codeList = 'hy'
const data = await TagLibraryApi.tagLibraryList(codeList)
hyList.value = data[0].children
stList.value = data[1].children
wrList.value = data[2].children
} finally {
}
@ -317,7 +259,7 @@ async function init() {
}
getEnterPriseList()
onMounted(() => {
init()
})
@ -325,21 +267,28 @@ defineExpose({ open })
</script>
<style scoped lang="scss">
::v-deep(.el-dialog) {
padding: 40px;
}
::v-deep(.el-dialog__title) {
font-weight: bold !important;
font-size: 20px;
}
.enterprise-container {
// ... ...
.search-form {
background-color: #fff;
padding: 20px 20px 0 20px;
padding: 20px 20px 0px 0;
border-radius: 4px;
position: relative;
margin: 0 20px; // margin
.form-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(3, 1fr);
gap: 24px;
margin-bottom: 20px;
width: 100%;
}
.form-item {

350
src/views/task/createEnterprise2.vue

@ -1,350 +0,0 @@
<template>
<el-dialog
v-model="visible"
title="筛选企业"
width="1200px"
style="padding: 40px; "
top="5vh"
:close-on-click-modal="false"
append-to-body
>
<template #header >
<span style="font-size: 20px; font-weight: bold;">筛选企业</span>
</template>
<div class="enterprise-container">
<!-- 搜索区域 -->
<div class="search-area">
<el-form
:model="enterprise.queryParams"
ref="queryFormRef"
:inline="true"
size="large"
class="search-form"
>
<div class="form-container">
<el-form-item label="" prop="region" class="form-item">
<el-select v-model="enterprise.queryParams.region" placeholder="请选择所属区域" clearable>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="hy" class="form-item">
<el-select v-model="enterprise.queryParams.hy" placeholder="请选择行业" clearable>
<el-option
v-for="dict in hyList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="userId" class="form-item">
<el-select v-model="enterprise.queryParams.userId" placeholder="请选择执法人员" filterable clearable>
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.deptName +'_'+ dict.realName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="enterprisesName" class="form-item">
<el-input v-model="enterprise.queryParams.enterprisesName" placeholder="请输入企业名称" />
</el-form-item>
<el-form-item class="form-item">
<el-button @click="handleQuery" type="primary" plain>
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery" class="mr-10px" type="primary" plain>
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</div>
</el-form>
</div>
<!-- 表格区域 -->
<el-table
ref="multipleTableRef"
:data="enterprise.list"
@select="handleSelectionChange"
@select-all="selectAll"
style="width: 100%; border: 1px solid #ebeef5"
:cell-style="{ borderBottom: '1px solid #EBEEF5', textAlign: 'left'}"
height="400px"
size="large"
row-key="id"
:header-cell-style="{
borderBottom: '1px solid #EBEEF5',
backgroundColor: '#F5F7FA'
}"
>
<el-table-column type="selection" :reserve-selection="true" />
<el-table-column property="enterprisesName" label="企业名称" />
<el-table-column property="region" label="所属区域">
<template #default="scope">
{{
getStrDictOptions(DICT_TYPE.ENTERPRISES_AREA).find(
(dict) => dict.value == scope.row.region
)?.label || '未知区域'
}}
</template>
</el-table-column>
<el-table-column property="enterprisesName" label="行业类别">
<template #default="scope">
{{
scope.row.tagListName &&
scope.row.tagListName
.filter((item) => item.value == 1)
.map((item) => item.label)
.join(', ')
}}
</template>
</el-table-column>
<el-table-column property="inviterName" label="执法人员" >
<template #default="scope">
{{scope.row.inviterName}} | {{scope.row.inviterNameDept}}
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<div class="selected">已选择 {{ selectedEnterprises.length }} / {{ enterprise.total }}</div>
<el-pagination
v-show="enterprise.total > 0"
:total="enterprise.total"
:show-page-size="false"
layout="total, prev, pager, next"
size="small"
v-model:current-page="enterprise.queryParams.pageNo"
@update:current-page="getEnterPriseList"
v-model:page-size="enterprise.queryParams.pageSize"
@pagination="getEnterPriseList"
/>
</div>
<!-- 底部按钮 -->
<div class="footer">
<el-button type="primary" @click="confirmSelect" size="large">确认选择</el-button>
<el-button @click="handleClose" size="large">关闭窗口</el-button>
</div>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { EnterprisesApi, EnterprisesVO } from '@/api/enterprises'
import { TagLibraryApi } from '@/api/system/taglibrary'
import { getSimpleUserZGList } from '@/api/system/user'
const loading = ref(true) //
const emit = defineEmits(['update:modelValue', 'success'])
const props = defineProps({
modelValue: {
type: Boolean,
default: false
}
})
const enterprise = ref({
list: ref<EnterprisesVO[]>(),
queryParams: reactive({
pageNo: 1,
pageSize: 20,
enterprisesName: undefined,
region: undefined,
hy: undefined,
st: undefined,
wr: undefined,
inviterName: undefined,
id: undefined,
userId: undefined,
tagList: [],
isAudit: true
}),
total: ref(0)
})
//
const visible = ref(false) //
// ... ...
//
const handleClose = () => {
visible.value = false
}
const selectedEnterprises = ref<EnterprisesVO[]>([])
const handleSelectionChange = (selectedItems: EnterprisesVO[]) => {
selectedEnterprises.value = selectedItems
}
const selectAll = (selection) => {
selectedEnterprises.value = selection
}
//
const confirmSelect = () => {
visible.value = false
emit('success', selectedEnterprises.value)
}
//
// const handleSelectionChange = (selection) => {
// const currentPageIds = selection.map(item => item.id);
// currentPageIds.forEach(id => selectedIds.value.add(id));
// };
/**
* 获取企业列表
*/
async function getEnterPriseList() {
loading.value = true
console.log('enterprise.value.queryParams', enterprise.value.queryParams)
if (enterprise.value.queryParams.hy ) {
enterprise.value.queryParams.tagList.push(enterprise.value.queryParams.hy)
}
try {
const data = await EnterprisesApi.getEnterpriseByUserId(enterprise.value.queryParams)
enterprise.value.list = data.list
enterprise.value.total = data.total
console.log('enterprise.value.list=>', enterprise.value.list)
} finally {
loading.value = false
enterprise.value.queryParams.tagList = []
}
}
//
const open = async () => {
// TODO:
visible.value = true
getEnterPriseList()
}
/** 搜索按钮操作 */
const handleQuery = () => {
enterprise.value.queryParams.pageNo = 1
getEnterPriseList()
}
const queryFormRef = ref()
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
getEnterPriseList()
}
//
const hyList: any = ref([])
//
const userList:any = ref()
async function init() {
try {
const codeList = 'codeList=hy'
const data = await TagLibraryApi.tagLibraryList(codeList)
hyList.value = data[0].children
} finally {
}
const userData = await getSimpleUserZGList()
userList.value = userData
}
onMounted(() => {
init()
})
defineExpose({ open })
</script>
<style scoped lang="scss">
::v-deep(.el-dialog) {
padding: 40px;
}
::v-deep(.el-dialog__title) {
font-weight: bold !important;
font-size: 20px;
}
.enterprise-container {
// ... ...
.search-form {
background-color: #fff;
padding: 20px 20px 0px 0;
border-radius: 4px;
position: relative;
.form-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
margin-bottom: 20px;
width: 100%;
}
.form-item {
margin: 0;
width: 100%;
:deep(.el-input),
:deep(.el-select) {
width: 100%;
}
}
.action-buttons {
position: absolute;
right: 10px;
bottom: 0px;
}
.button-container {
display: flex;
justify-content: center;
gap: 8px;
}
}
.pagination-container {
display: flex;
flex-direction: row;
justify-content: space-between;
margin-top: 20px; //
.selected {
font-size: 12px;
margin-left: 10px;
font-weight: bold;
}
}
.footer {
display: flex;
justify-content: center; //
gap: 8px; //
padding-top: 20px;
margin-top: 20px; //
}
}
</style>

388
src/views/task/create copy 2.vue → src/views/task/detail.vue

@ -4,69 +4,36 @@
<div class="title">基本信息</div>
<div class="box">
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="auto" class="formClass" size="large">
<div class="formClass">
<el-form-item label="任务标题" prop="title">
<el-input v-model="formData.title" placeholder="请输入任务标题" />
</el-form-item>
<el-form-item label="任务类型" prop="taskType">
<el-select v-model="formData.taskType" placeholder="请选择任务类型" size="large">
<el-option
v-for="dict in tagChildList"
:key="dict.id"
:label="dict.tagName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="描述" prop="description" style="width: 100%; padding: 0; margin-top: 0px;" class="descClass">
<el-input
type="textarea"
v-model="formData.description"
:autosize="{
minRows: 5
}"
placeholder="请输入描述"
/>
</el-form-item>
<el-form-item label="时间周期" prop="planTime">
<el-date-picker
v-model="formData.planTime"
type="daterange"
format="YYYY年MM月DD日"
range-separator="至"
size="large"
start-placeholder="选择开始时间"
end-placeholder="选择结束时间"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<div >
<span class="label">任务标题</span> {{formData.title}}
</div>
<div>
<span class="label">任务周期</span> {{formData.startDate}}-{{formData.endDate}}
</div>
<!-- <el-form-item label="执行周期" prop="execCycle" v-if="formData.taskType == 2">
<el-select v-model="formData.execCycle" placeholder="请选择执行周期">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.TASK_EXEC_TIME)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> -->
<el-form-item label="通知时间" prop="execCycle">
<el-select v-model="formData.execCycle" placeholder="请选择任务选项" >
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TASK_NOTICE_TIME)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-form>
<div>
<span class="label">任务状态</span> <dict-tag :type="DICT_TYPE.TASK_STATE" :value="formData.status" />
</div>
<div>
<span class="label">任务类型</span> {{formData.taskTypeName}}
</div>
<div>
<span class="label">通知时间</span> {{ getDictLabel(DICT_TYPE.TASK_NOTICE_TIME, formData.execCycle) }}
</div>
<div>
<span class="label">发布部门</span> {{formData.deptName}}
</div>
<div class="merge">
<span class="label">任务描述</span> {{formData.description}}
</div>
</div>
@ -88,9 +55,7 @@
:value="dict.id"
/>
</el-select>
</div>
<div>
<el-select
@ -136,11 +101,7 @@
/>
</el-select>
<div class="btn2">
<el-button @click="insertEnterprise" type="primary" size="large">
<el-icon><Sort /></el-icon> &nbsp;
</el-button>
</div>
</div>
</div>
<div class="table">
@ -186,29 +147,9 @@
{{scope.row.inviterName}} | {{scope.row.inviterNameDept}}
</template>
</el-table-column>
<el-table-column label="操作" align="left" >
<template #default="scope">
<el-button
link
type="primary"
@click="handleDelete(scope.row.id)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<div class="page">
<div class="selected">已选择 {{ selectedEnterprises.length }} / {{ enterprise.total }}
<el-button
link
type="primary"
@click="deletedSelected"
v-show="selectedEnterprises.length > 0"
>
删除所选
</el-button>
</div>
<!--12-->
<div class="page-item">
<el-pagination
:total="enterprise.total"
@ -222,34 +163,18 @@
</div>
</div>
</div>
<div class="footer">
<el-button type="primary" @click="submitForm(false)" size="large" v-if="!formData.status || formData.status == 0 || formData.status == 1" >{{btnTitle}}</el-button>
<el-button
type="primary"
v-if="formData.status == 0"
@click="submitForm(true)"
size="large"
v-hasPermi="['system:enterprise-inspections:audit']"
>审核通过</el-button
>
<el-button type="danger" link v-if="formData.status == 0" @click="handleDeleteTask('delete')">删除任务?</el-button>
<el-button type="warning" link v-if="formData.status == 2" @click="handleDeleteTask('end')">结束任务?</el-button>
<el-button @click="goBack" size="large">返回列表</el-button>
</div>
</div>
</div>
<CreateEnterprise ref="formCreateRef" @success="getList" />
</template>
<script setup lang="ts">
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
import { DICT_TYPE, getStrDictOptions, getDictLabel } from '@/utils/dict'
import { TagLibraryApi } from '@/api/system/taglibrary'
import { EnterprisesVO } from '@/api/enterprises'
import { TaskInfoApi } from '@/api/system/taskinfo'
import { useTagsViewStore } from '@/store/modules/tagsView'
import CreateEnterprise from './createEnterprise2.vue'
import CreateEnterprise from './createEnterprise.vue'
import { cloneDeep } from 'lodash-es';
import { getSimpleUserZGList } from '@/api/system/user'
@ -275,31 +200,9 @@ const formData:any = ref({
tags: [],
enterprises: [] as any
})
const router = useRouter()
const route = useRoute()
const tagView = useTagsViewStore()
const formCreateRef = ref()
const message = useMessage() //
const formRules = reactive({
title: [{ required: true, message: '任务标题不能为空', trigger: 'blur' }],
execCycle: [
{
required: true,
message: '任务通知时间不能为空',
trigger: 'change'
}
],
taskType: [
{
required: true,
message: '类型不能为空',
trigger: 'change'
}
],
planTime: [{ required: true, message: '时间周期不能为空', trigger: 'blur' }]
})
const { query } = useRoute()
const formRef = ref() // Ref`
const enterprise:any = ref({
list: [] as any,
queryParams: reactive({
@ -317,30 +220,7 @@ const enterprise:any = ref({
total: ref(0) as any
})
const goBack = () => {
router.go(-1); // router.back()
};
const handleDeleteTask = async (type: string) => {
try {
if (type == 'delete') {
await message.delConfirm("是否确定删除任务!", "删除任务")
await TaskInfoApi.deleteTaskInfo(formData.value.id)
} else {
await message.delConfirm("是否确定结束任务", "结束任务")
formData.value.status = 3
await TaskInfoApi.updateTaskInfo(formData.value)
}
} finally {
}
}
//
@ -350,52 +230,12 @@ const paginatedData = computed(() => {
return enterprise.value.list.slice(start, end); // :ml-citation{ref="1,4" data="citationList"}
});
//
const deletedSelected = async () => {
await message.delConfirm()
selectedEnterprises.value.forEach(item=> {
deleteHandle(item.id)
})
}
const selectedEnterprises = ref<EnterprisesVO[]>([])
const handleSelectionChange = (selectedItems: EnterprisesVO[]) => {
selectedEnterprises.value = selectedItems
}
const handleDelete = async (id: number) => {
//
await message.delConfirm()
//
deleteHandle(id)
}
const deleteHandle = (id: number) => {
const targetIndex = enterprise.value.list.findIndex(item => item.id === id);
if (targetIndex === -1) return;
//
enterprise.value.list.splice(targetIndex, 1)
enterprise_copy.value = cloneDeep(enterprise.value)
enterprise.value.total = enterprise.value.list.length
//
const { pageNo, pageSize } = enterprise.value.queryParams;
const itemsOnCurrentPage = enterprise.value.list.slice(
(pageNo - 1) * pageSize,
pageNo * pageSize
)
if (itemsOnCurrentPage.length === 0 && pageNo > 1) {
enterprise.value.queryParams.pageNo = pageNo - 1;
}
}
const enterprise_copy = ref({
list: [] as any,
@ -426,48 +266,64 @@ const isAllConditionsEmpty = computed(() => {
);
});
/** 搜索按钮操作 */
const handleQuery = () => {
const list = filterList(enterprise.value.list)
const isTagMatched2 = (hy: string[], tagList?: string[] | null) => {
// 1 =>
if (!hy?.length) return true;
// 2 =>
if (!Array.isArray(tagList) || tagList.length === 0) return false;
// 3
return hy.some(tag => tagList.includes(tag));
};
enterprise.value.list = list
enterprise.value.total = list?.length
}
//
const filterList = (list: EnterprisesVO[]) => {
console.log('isAllConditionsEmpty.value', isAllConditionsEmpty.value)
if (isAllConditionsEmpty.value) return enterprise_copy.value.list; //
// 1.
if (isAllConditionsEmpty.value || !list?.length) {
return enterprise_copy.value.list || [];
}
if (list.length > 0) {
const { enterprisesName, qy, hy, userId } = enterprise.value.queryParams;
// 2. undefined
const {
enterprisesName = '',
qy = null,
hy = [],
userId = null
} = enterprise.value.queryParams || {};
// 3. 使
return list.filter(item => {
const isNameMatched = enterprisesName
? item.enterprisesName?.toLowerCase().includes(enterprisesName.toLowerCase())
: true;
const isRegionMatched = qy
? item.region === qy
: true;
const isTagMatched = isTagMatched2(hy, item.tagList);
const isUserMatched = userId
? item.userId === userId
: true;
return list.filter(item => {
if (item.tagList) {
//
const nameMatch = enterprisesName ?
item.enterprisesName?.toLowerCase().includes(enterprisesName.toLowerCase()) : true;
//
const typeMatch = qy ? item.region == qy : true;
//
return isNameMatched && isRegionMatched && isTagMatched && isUserMatched;
});
};
const hyMatch = hy ? hy.filter(h => item.tagList.includes(h)) : true
/** 搜索按钮操作 */
const handleQuery = () => {
const userIdMatch = userId ? item.userId == userId : true
return nameMatch && typeMatch && hyMatch && userIdMatch;
}
});
}
const list = filterList(enterprise.value.list)
enterprise.value.list = list
enterprise.value.total = list?.length
}
const insertEnterprise = () => {
formCreateRef.value.open()
}
/** 重置按钮操作 */
const resetQuery = () => {
// queryFormRef.value.resetFields()
@ -492,20 +348,13 @@ const resetQuery = () => {
//
const hyList:any = ref([])
//
const stList:any = ref([])
//
const wrList:any = ref([])
/**
* 获取标签列表
*/
async function getTagList() {
const codeList = 'codeList=hy&codeList=st&codeList=wr'
const codeList = 'hy'
const data = await TagLibraryApi.tagLibraryList(codeList)
hyList.value = data[0].children
stList.value = data[1].children
wrList.value = data[2].children
}
/**
@ -521,67 +370,7 @@ function uniqueFunc(arr, uniId) {
/**
* 提交表单
*/
async function submitForm(isAudit) {
let title:any = ''
let content:any = ''
if (formData.value.id) {
if (isAudit) {
title = '审核任务'
content = '是否确定审核任务?'
} else{
title = '修改任务'
content = '是否确定修改任务?'
}
} else {
title = '发布任务'
content = '是否确定发布新的任务?'
}
await message.delConfirm(content, title)
const validate = await unref(formRef).validate()
if (validate) {
// id
const data = JSON.parse(JSON.stringify(formData.value))
enterprise.value.list
//1
data.status = 0
if (enterprise.value.list.length == 0) {
message.success('温馨提示:请您选择执法对象')
} else {
if (data.status < 2) {
data.startDate = data.planTime[0]
data.endDate = data.planTime[1]
data.enterpriseIds = enterprise.value.list.map(i=>i.id)
if (data.id) {
if (isAudit) {
data.status = 1
}
TaskInfoApi.updateTaskInfo(data).then(() => {
message.success('操作成功')
tagView.delView(route)
router.go(-1)
})
} else {
TaskInfoApi.createTaskInfo(data).then(() => {
message.success('操作成功')
tagView.delView(route)
router.go(-1)
})
}
} else {
message.success('温馨提示:该任务已经执行,无法再进行修改')
}
}
}
}
//
@ -687,11 +476,22 @@ onMounted(() => {
.formClass {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-template-rows: repeat(3, 1fr);
align-items: center;
gap: 20px;
row-gap: 40px;
width: 100%;
font-size: 16px;
color: var(--text-color-primary, #303133);
.merge {
grid-column: span 3;
}
.label {
color: var(--text-color-primary, #606266);
margin-right: 12px;
}
.descClass {
grid-row: span 2;
flex: 1 0 0;
@ -748,7 +548,7 @@ onMounted(() => {
.page{
display: flex;
flex-direction: row;
justify-content: space-between;
justify-content: flex-end;
font-size: 14px;
}
}

30
src/views/task/index.vue

@ -107,7 +107,7 @@
</template>
</el-table-column>
<el-table-column label="操作选项" align="center" width="100px">
<el-table-column label="操作选项" align="center" width="120px">
<template #default="scope">
<el-button
link
@ -121,6 +121,21 @@
})
"
v-hasPermi="['system:task-info:update']"
>
修改
</el-button>
<el-button
link
type="primary"
@click="
push({
path: 'detail',
query: {
id: scope.row.id
}
})
"
v-hasPermi="['system:task-info:update']"
>
详情
</el-button>
@ -159,7 +174,6 @@ import { deptByMenu } from '@/api/system/user'
defineOptions({ name: 'TaskList' })
const message = useMessage() //
const { t } = useI18n() //
const { push } = useRouter()
const loading = ref(true) //
const list = ref<TaskInfoVO[]>([]) //
@ -226,18 +240,6 @@ const resetQuery = () => {
/** 添加/修改操作 */
const formRef = ref()
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await TaskInfoApi.deleteTaskInfo(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {

Loading…
Cancel
Save