Browse Source

优化代码风格,调整类型声明及组件样式

master
parent
commit
20f321f3de
  1. 4
      .env.local
  2. 19
      src/api/enterpriseinspections/index.ts
  3. 23
      src/api/system/user/index.ts
  4. 6
      src/components/DictTag/src/DictTag.vue
  5. 8
      src/layout/components/BackOperation/src/index.vue
  6. 10
      src/styles/variables.scss
  7. 13
      src/views/Home/Index.vue
  8. 103
      src/views/enterpriseinspections/ChangeUser.vue
  9. 49
      src/views/enterpriseinspections/EnterpriseInspectionsForm.vue
  10. 202
      src/views/enterpriseinspections/changeInspections.vue
  11. 183
      src/views/enterpriseinspections/detail.vue
  12. 268
      src/views/enterpriseinspections/index.vue
  13. 6
      src/views/enterprises/index.vue
  14. 192
      src/views/enterprises/update.vue
  15. 4
      src/views/system/jobinfo/JobInfoForm.vue
  16. 203
      src/views/system/jobinfo/index.vue
  17. 18
      src/views/system/policy/PolicyForm.vue
  18. 2
      src/views/system/policy/index.vue
  19. 4
      src/views/system/taglibrary/form.vue

4
.env.local

@ -5,9 +5,9 @@ VITE_DEV=true
# 请求路径
#VITE_BASE_URL='http://localhost:48080'
#VITE_BASE_URL='http://188.188.3.232:48080'
VITE_BASE_URL='http://188.188.3.232:48080'
# VITE_BASE_URL='http://188.188.5.188:48080'
VITE_BASE_URL='https://hb.jzce.com'
#VITE_BASE_URL='https://hb.jzce.com'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
VITE_UPLOAD_TYPE=server

19
src/api/enterpriseinspections/index.ts

@ -41,18 +41,19 @@ export const EnterpriseInspectionsApi = {
},
// 导出企业检查记录表,用于记录与企业相关的环保检查信息。 Excel
inspectionsLogList: async (params:any) => {
inspectionsLogList: async (params: any) => {
return await request.get({ url: `/system/inspections-log/list`, params })
},
//根据 用户id和任务名称查询可以转发的任务
getListByUserIdAndTaskName: async (params:any) => {
return await request.get({ url: `/system/enterprise-inspections/getListByUserIdAndTaskName`, params })
},
// 新增企业检查记录表,用于记录与企业相关的环保检查信息。
passOn: async (data:any) => {
getListByUserIdAndTaskName: async (params: any) => {
return await request.get({
url: `/system/enterprise-inspections/getListByUserIdAndTaskName`,
params
})
},
// 变更人员ID
passOn: async (data: any) => {
return await request.post({ url: `/system/enterprise-inspections/passOn`, data })
},
}
}

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

@ -19,14 +19,11 @@ export interface UserVO {
area: string
}
// 查询用户管理列表
export const getUserPage = (params: PageParam) => {
return request.get({ url: '/system/user/page', params })
}
// 查询专管员用户管理列表
export const getPcUserPage = (params: PageParam) => {
return request.get({ url: '/system/user/pcpage', params })
@ -62,7 +59,6 @@ export const deleteUserAllData = (id: number) => {
return request.delete({ url: '/system/user/test_delete?id=' + id })
}
// 导出用户
export const exportUser = (params) => {
return request.download({ url: '/system/user/export', params })
@ -94,17 +90,17 @@ export const updateUserStatus = (id: number, status: number) => {
// 获取用户精简信息列表
export const getSimpleUserList = (): Promise<UserVO[]> => {
return request.get({ url: '/system/user/simple-list' })
}
}
// 获取用户精简信息列表
export const getSimpleUserZGList = (): Promise<UserVO[]> => {
return request.get({ url: '/system/user/simple-zg-list' })
}
// 获取专管员
export const getSimpleUserZGList = (param) => {
return request.get({ url: `/system/user/simple-zg-list`, param })
}
// 通过用户类型获取用户列表
export const getSimpleUserListByUserType = (params:number) => {
return request.get({ url: '/system/user/simple-user-by-userType?type='+ params })
}
export const getSimpleUserListByUserType = (params: number) => {
return request.get({ url: '/system/user/simple-user-by-userType?type=' + params })
}
/**
*
@ -117,8 +113,7 @@ export const getExamieList = (audit: number) => {
*
*/
export function examineUser(data) {
console.log('data=>', data)
return request.put({url: '/system/user/user_audit', data})
return request.put({ url: '/system/user/user_audit', data })
}

6
src/components/DictTag/src/DictTag.vue

@ -75,6 +75,8 @@ export default defineComponent({
type={dict?.colorType || null}
color={dict?.cssClass && isHexColor(dict?.cssClass) ? dict?.cssClass : ''}
disableTransitions={true}
round={true}
size="mini"
>
{dict?.label}
</ElTag>
@ -88,3 +90,7 @@ export default defineComponent({
}
})
</script>
<style scoped lang="scss">
</style>

8
src/layout/components/BackOperation/src/index.vue

@ -5,17 +5,23 @@ import { onBeforeRouteUpdate } from 'vue-router'
defineOptions({ name: 'BackOperation' })
const router = useRouter()
const isBack:any = ref(false)
const route = useRoute()
const isBack: any = ref(false)
defineProps({
color: propTypes.string.def('')
})
const goback = () => {
router.go(-1)
}
onBeforeRouteUpdate((to) => {
isBack.value = to.meta.hidden
})
onMounted(()=>{
isBack.value = route.meta.hidden
})
</script>
<template>

10
src/styles/variables.scss

@ -24,7 +24,6 @@ $elNamespace: el;
.el-table__header {
color: #909399;
}
}
.el-pagination--large .btn-next,
@ -33,3 +32,12 @@ $elNamespace: el;
height: fit-content;
line-height: normal;
}
.el-select-dropdown__item {
display: flex;
align-items: center;
gap: 8px;
line-height: normal;
height: fit-content;
padding: 10px;
}

13
src/views/Home/Index.vue

@ -2,7 +2,7 @@
<el-row justify="space-between">
<el-col :span="14">
<el-form :model="queryParams" class="queryForm" inline>
<el-form-item label="按区域" prop="region">
<el-form-item prop="region">
<el-select
v-model="queryParams.region"
placeholder="请选择区域"
@ -16,7 +16,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="按周期" prop="selectWeek">
<el-form-item prop="selectWeek">
<el-select
v-model="queryParams.selectWeek"
placeholder="请选择周期"
@ -45,7 +45,7 @@
</el-button>
</section>
</el-row>
<el-row :gutter="20" justify="space-between">
<el-row :gutter="20" justify="space-between" class="cursor-pointer">
<el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" :height="280">
<el-card shadow="hover" class="mb-20px">
<template #header> 任务进度 </template>
@ -76,7 +76,7 @@
</el-card>
</el-col>
</el-row>
<el-row :gutter="20" justify="space-between">
<el-row :gutter="20" justify="space-between" class="cursor-pointer">
<el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-20px">
<el-card ref="taskNewCard" shadow="never">
<template #header> 最新任务 </template>
@ -142,7 +142,7 @@
</el-skeleton>
</el-card>
</el-col>
</el-row>
</el-row >
</template>
<script lang="ts" setup>
import { HomeApi } from '@/api/home'
@ -601,8 +601,7 @@ init()
margin-bottom: 20px;
}
.el-form-item {
width: 400px;
margin-right: 20px;
width: 320px;
display: flex;
flex-flow: row nowrap;
align-items: center;

103
src/views/enterpriseinspections/ChangeUser.vue

@ -1,27 +1,29 @@
<template>
<Dialog title="任务转发" v-model="dialogVisible">
<el-form :model="formData" label-width="auto" style="max-width: 600px">
<el-form-item label="转发用户" prop="name" style="max-width: 500px">
<Dialog title="变更人员" v-model="dialogVisible" width="480">
<el-form :model="formData" ref="formRef" :rules="formRules">
<el-form-item label="执法人员" prop="userId">
<el-select v-model="formData.userId" placeholder="请选择用户">
<el-option
v-for="item in userList"
:key="item.id"
:label=" item.deptName +'-'+ item.realName "
:value="item.id!"
/>
v-for="item in userList"
:key="item.id"
:label="item.realName"
:value="item.id"
popper-class="user-wrapper"
>
<el-avatar :src="item.avatar" :size="30" /> <span>{{ item.realName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { EnterpriseInspectionsApi, EnterpriseInspectionsVO } from '@/api/enterpriseinspections'
import { getSimpleUserZGList, UserVO } from '@/api/system/user'
import { EnterpriseInspectionsApi } from '@/api/enterpriseinspections'
import { getSimpleUserZGList } from '@/api/system/user'
/** 企业检查记录表,用于记录与企业相关的环保检查信息。 表单 */
defineOptions({ name: 'EnterpriseInspectionsForm' })
@ -31,59 +33,36 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const changeForm = ref({
id: undefined,
taskId: undefined,
enterpriseId: undefined,
const formRules = ref({
userId: [{ required: true, message: '请选择用户', trigger: 'change' }]
})
const taskName = ref()
const form = reactive({
userId: '',
resUserId: '',
inspectionsId: [],
taskName: ''
const emit = defineEmits(['success']) // success
const formRef = ref() //
const formData: any = ref({
userId: undefined,
inspectionsId: undefined
})
// const formRules = reactive({
// })
const formRef = ref() // Ref
const userList = ref()
const getUserList = async () => {
const data = await getSimpleUserZGList();
userList.value = data
const getUserList = async (deptId) => {
userList.value = await getSimpleUserZGList({ deptId: deptId })
}
const formData:any = ref({
userId: undefined,
inspectionsId: []
});
/** 打开弹窗 */
const open = async (inspectionsId) => {
const open = async (param) => {
formData.value.inspectionsId = param.id
await getUserList(param.deptId)
dialogVisible.value = true
formData.value.inspectionsId.push(inspectionsId)
getUserList()
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
// await formRef.value.validate()
await formRef.value.validate()
//
formLoading.value = true
try {
await EnterpriseInspectionsApi.passOn(formData.value)
message.success(t('更改成功'))
dialogVisible.value = false
//
emit('success')
@ -92,29 +71,7 @@ const submitForm = async () => {
}
}
// /** */
// const resetForm = () => {
// formData.value = {
// id: undefined,
// taskId: undefined,
// enterpriseId: undefined,
// }
// formRef.value?.resetFields()
// }
defineExpose({ open }) // open
</script>
<style scoped>
.box{
display: flex;
flex-direction: column;
.img{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 15px
}
.text{
padding: 15px;
}
}
</style>
<style scoped lang="scss"></style>

49
src/views/enterpriseinspections/EnterpriseInspectionsForm.vue

@ -1,18 +1,13 @@
<template>
<Dialog title="反馈信息" v-model="dialogVisible">
<Dialog title="结果反馈" v-model="dialogVisible">
<div class="box">
<div class="img">
<div v-for="item in imgList" :key="item">
<el-image style="width: 180px; height: 180px" :src="item" :preview-src-list="imgList" />
</div>
<div v-for="item in imgList" :key="item">
<el-image style="width: 180px; height: 180px" :src="item" :preview-src-list="imgList" />
</div>
</div>
<div class="text">{{dataValue.feedBack}}</div>
<div class="text">{{ dataValue.feedBack }}</div>
</div>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
@ -25,13 +20,12 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('反馈信息') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
taskId: undefined,
enterpriseId: undefined,
enterpriseId: undefined
})
// const formRules = reactive({
// })
@ -42,15 +36,14 @@ const imgList = ref([])
/** 打开弹窗 */
const open = async (data) => {
dialogVisible.value = true
dataValue.value = data
if (data.fileList.length > 0) {
imgList.value = data.fileList.map(i=>i.url)
imgList.value = data.fileList.map((i) => i.url)
}
console.log("imgList.value=>", imgList.value)
console.log('imgList.value=>', imgList.value)
// //
// if (id) {
@ -99,18 +92,18 @@ const submitForm = async () => {
// }
</script>
<style scoped>
.box{
.box {
display: flex;
flex-direction: column;
.img {
display: flex;
flex-direction: column;
.img{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 15px
}
.text{
padding: 15px;
}
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 15px;
}
.text {
padding: 15px;
}
}
</style>

202
src/views/enterpriseinspections/changeInspections.vue

@ -1,202 +0,0 @@
<template>
<Dialog title="任务转发" v-model="dialogVisible">
<el-form :model="form" label-width="auto" style="max-width: 600px">
<el-form-item label="转发用户" prop="name" style="max-width: 500px">
<el-select v-model="form.resUserId" placeholder="请选择用户">
<el-option
v-for="item in userList"
:key="item.id"
:label=" item.deptName +'-'+ item.realName "
:value="item.id!"
/>
</el-select>
</el-form-item>
</el-form>
<el-form-item label="目标用户" prop="name" style="max-width: 500px">
<el-select v-model="form.userId" placeholder="请选择目标用户">
<el-option
v-for="item in userList"
:key="item.id"
:label=" item.deptName +'-'+ item.realName "
:value="item.id!"
/>
</el-select>
</el-form-item>
<el-form-item label="任务名称" prop="name" style="max-width: 500px">
<el-select v-model="form.userId" placeholder="请选择任务名称">
<el-option
v-for="item in userList"
:key="item.id"
:label=" item.deptName +'-'+ item.realName "
:value="item.id!"
/>
</el-select>
</el-form-item>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { EnterpriseInspectionsApi, EnterpriseInspectionsVO } from '@/api/enterpriseinspections'
import { getSimpleUserZGList } from '@/api/system/user'
/** 企业检查记录表,用于记录与企业相关的环保检查信息。 表单 */
defineOptions({ name: 'EnterpriseInspectionsForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
taskId: undefined,
enterpriseId: undefined,
})
const taskName = ref()
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const form = reactive({
userId: '',
resUserId: '',
inspectionsId: [],
taskName: ''
})
// const formRules = reactive({
// })
const formRef = ref() // Ref
const dataValue = ref()
const userList = ref()
const getUserList = async () => {
const data = await getSimpleUserZGList();
userList.value = data
}
const selectTask = async() => {
const params = {
'userId': form.resUserId,
'taskName': taskName
}
const data = await EnterpriseInspectionsApi.getListByUserIdAndTaskName(params)
console.log('data==============>', data)
}
/** 打开弹窗 */
const open = async (data) => {
dialogVisible.value = true
dataValue.value = data
getUserList()
// //
// if (id) {
// formLoading.value = true
// try {
// formData.value = await EnterpriseInspectionsApi.getEnterpriseInspections(id)
// } finally {
// formLoading.value = false
// }
// }
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as EnterpriseInspectionsVO
if (formType.value === 'create') {
await EnterpriseInspectionsApi.createEnterpriseInspections(data)
message.success(t('common.createSuccess'))
} else {
await EnterpriseInspectionsApi.updateEnterpriseInspections(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
// /** */
// const resetForm = () => {
// formData.value = {
// id: undefined,
// taskId: undefined,
// enterpriseId: undefined,
// }
// formRef.value?.resetFields()
// }
</script>
<style scoped>
.box{
display: flex;
flex-direction: column;
.img{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 15px
}
.text{
padding: 15px;
}
}
</style>

183
src/views/enterpriseinspections/detail.vue

@ -1,50 +1,65 @@
<template>
<ContentWrap title="" style="padding: 17px;">
<el-descriptions>
<el-descriptions-item label="记录编号">{{detailData.taskNumber}}</el-descriptions-item>
<el-descriptions-item label="任务名称">{{detailData.taskName}}</el-descriptions-item>
<el-descriptions-item label="任务类型">{{tagList}}</el-descriptions-item>
<el-descriptions-item label="企业名称">{{detailData.enterpriseName}}</el-descriptions-item>
<el-descriptions-item label="执法部门">{{detailData.department}}</el-descriptions-item>
<el-descriptions-item label="执法人员">
{{detailData.inspectName}}
<el-tag type="primary" @click="changeUserFun">变更</el-tag>
</el-descriptions-item>
</el-descriptions>
<ContentWrap title="" style="padding: 17px">
<section class="grid grid-cols-3 grid-rows-2 gap-20px">
<section class="item">
<section class="label">任务名称</section>
<section>
{{ detailData.taskName }}
</section>
<el-button type="primary" link text>详情</el-button>
</section>
<section class="item">
<section class="label">任务类型</section>
<section>{{ detailData.taskType }} </section>
</section>
<section class="item">
<section class="label">发布部门</section>
<section>{{ detailData.department }}</section>
</section>
<section class="item">
<section class="label">企业名称</section>
<section>{{ detailData.enterpriseName }} </section>
<el-button type="primary" link text>详情</el-button>
</section>
<section class="item">
<section class="label">所属部门</section>
<section> {{ detailData.taskName }}</section>
</section>
<section class="item">
<section class="label">执法人员</section>
<section>
{{ detailData.inspectName }}
</section>
<el-button
type="primary"
link
text
@click="changeUserFun"
v-if="![1, 3].includes(detailData.inspectionStatus)"
>
变更
</el-button>
</section>
</section>
</ContentWrap>
<ContentWrap title="">
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<!-- <el-table-column label="检查记录ID,主键" align="center" prop="id" /> -->
<el-table-column label="执法人员" align="center" prop="inspectName" />
<el-table-column label="协同执法" align="center" prop="cooperateWithName" />
<el-table-column
label="执法时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="进度状态" align="center" prop="inspectionStatus">
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true">
<el-table-column label="执法人员" prop="inspectName" />
<el-table-column label="协同执法" prop="cooperateWithName" />
<el-table-column label="进度状态" prop="inspectionStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.status" />
</template>
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="120px">
<el-table-column label="执法时间" prop="createTime" :formatter="dateFormatter" />
<el-table-column label="结果反馈" align="center" width="100px">
<template #default="scope">
<el-button
link
v-if="scope.row.status > 1"
type="primary"
@click="openForm(scope.row)"
>
查看
<el-button link v-if="scope.row.status > 1" type="primary" @click="viewDetail(scope.row)">
详情
</el-button>
<span v-if="scope.row.status == 1">-</span>
<span v-if="scope.row.status === 1">-</span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
@ -55,58 +70,57 @@
@pagination="getList"
/>
</ContentWrap>
<changeUser ref="formRef" @success="getList" />
<EnterpriseInspectionsForm ref="formRef" @success="getList" />
<changeUser ref="changeUserRef" @success="getDetail" />
<EnterpriseInspectionsForm ref="detailRef" />
</template>
<script setup>
import { EnterpriseInspectionsApi } from '@/api/enterpriseinspections'
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { DICT_TYPE } from '@/utils/dict'
import EnterpriseInspectionsForm from './EnterpriseInspectionsForm.vue'
import changeUser from './ChangeUser.vue'
import { dateFormatter } from '@/utils/formatTime'
defineOptions({ name: 'EnterpriseInspections' })
import { ref } from 'vue'
const message = ref('Hello, Vue 3!')
defineOptions({ name: 'EnterpriseInspections' })
const loading = ref(true) //
const list = ref() //
const total = ref(0) //
const queryParams = ref({
inspectionsId: undefined
})
const queryFormRef = ref()
const detailRef = ref()
const route = useRoute()
/** 添加/修改操作 */
const formRef = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
inspectionsId: route.query.id
})
const openForm = (data) => {
formRef.value.open(data)
}
const changeUserRef = ref()
//
const changeUserFun = () => {
changeUserRef.value.open(detailData.value.id )
changeUserRef.value.open({ id: detailData.value.id, deptId: detailData.value.deptId })
}
// const detailData = ref()
const getDetail = async () => {
const data = await EnterpriseInspectionsApi.getEnterpriseInspections(queryParams.value.inspectionsId)
detailData.value = data
detailData.value = await EnterpriseInspectionsApi.getEnterpriseInspections(
queryParams.inspectionsId
)
}
const viewDetail = async (row) => {
unref(detailRef).open(row)
}
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await EnterpriseInspectionsApi.inspectionsLogList(queryParams.value)
const data = await EnterpriseInspectionsApi.inspectionsLogList(queryParams)
list.value = data
total.value = data.total
} finally {
@ -115,33 +129,34 @@ const getList = async () => {
}
const detailData = ref({
enterpriseName: undefined,
taskName: undefined,
tagList: undefined,
department: undefined,
inspectName: undefined,
cooperateWithName: undefined,
id: undefined
enterpriseName: undefined,
taskName: undefined,
tagList: undefined,
department: undefined,
inspectName: undefined,
cooperateWithName: undefined,
id: undefined
})
const tagList = ref()
/** 初始化 **/
onMounted(() => {
const data = JSON.parse(route.query.data)
tagList.value = data.tagList
queryParams.value.inspectionsId = data.id
getDetail()
getList()
getDetail(route.query.id)
getList(route.query.id)
})
</script>
<style scoped></style>
<style scoped lang="scss">
.item {
display: flex;
gap: 12px;
align-items: center;
color: #303133;
font-size: 16px;
.label {
color: #606266;
}
.el-button {
font-size: 16px;
line-height: normal;
}
}
</style>

268
src/views/enterpriseinspections/index.vue

@ -1,108 +1,105 @@
<template>
<ContentWrap style="padding: 10px">
<section class="flex flex-col gap-20px">
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="" prop="taskId">
<el-input
v-model="queryParams.taskName"
placeholder="请输入任务标题"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="" prop="enterpriseId">
<el-input
v-model="queryParams.enterpriseName"
placeholder="请输入企业名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<!-- <el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px"
/>
</el-form-item> -->
<el-form-item>
<el-button @click="handleQuery" type="primary" plain><Icon icon="ep:search" class="mr-5px" /> 查询</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<!-- <el-button @click="openChangeForm"><Icon icon="ep:refresh" class="mr-5px" /> 任务转发</el-button> -->
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['system:enterprise-inspections:create']"
>
<Icon icon="ep:circle-plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['system:enterprise-inspections:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
>
<!-- <el-table-column label="检查记录ID,主键" align="center" prop="id" /> -->
<el-table-column label="企业名称" align="center" prop="enterpriseName" />
<el-table-column label="进度状态" align="center" prop="inspectionStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.inspectionStatus" />
</template>
</el-table-column>
<el-table-column label="任务名称" align="center" prop="taskName" />
<el-table-column label="任务类型" align="center" prop="tagList" />
<el-table-column label="执法部门" align="center" prop="department" />
<el-table-column label="执法人员" align="center" prop="inspectName" />
<el-table-column label="协同执法" align="center" prop="cooperateWithName" />
<el-table-column
label="执法时间"
align="center"
prop="execTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
<el-button
link
type="primary"
@click="push({ path: '/task/inspectionsDetail', query: {data: JSON.stringify(scope.row)} })"
>
查看
<ContentWrap style="padding: 10px">
<section class="flex flex-col gap-20px">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryFormRef" :inline="true" class="formClass">
<el-form-item label="" prop="taskId">
<el-input
v-model="queryParams.taskName"
placeholder="请输入企业名称"
clearable
@keyup.enter="handleQuery"
:prefix-icon="Search"
/>
</el-form-item>
<el-form-item label="" prop="enterpriseId">
<el-select v-model="queryParams.deptId" placeholder="请选择部门">
<el-option />
</el-select>
</el-form-item>
<el-form-item label="" prop="enterpriseId">
<el-select v-model="queryParams.deptId" placeholder="请选择进度状态">
<el-option
v-for="dict in getDictOptions(DICT_TYPE.INSPECTIONS_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="enterpriseId">
<el-select v-model="queryParams.deptId" placeholder="请选择执法人员" filterable>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.realName"
:value="item.id"
popper-class="user-wrapper"
>
<el-avatar :src="item.avatar" :size="30" /> <span>{{ item.realName }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="" prop="enterpriseId">
<el-date-picker
v-model="queryParams.establishmentDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
format="YYYY年M月D日"
start-placeholder="起始日期"
end-placeholder="截止日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary" plain>
<Icon icon="ep:search" class="mr-5px" /> 查询
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
</el-form-item>
<el-form-item>
<el-button @click="handleExport" :loading="exportLoading">
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true">
<el-table-column label="企业名称" prop="enterpriseName" />
<el-table-column label="所属部门" prop="department" width="200" />
<el-table-column label="进度状态" prop="inspectionStatus" width="200">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.inspectionStatus" />
</template>
</el-table-column>
<el-table-column label="执法人员">
<template #default="{ row }">
{{ row.inspectName }}
<span v-if="row.cooperateWithName"> {{ row.cooperateWithName }} </span>
</template>
</el-table-column>
<el-table-column label="执法时间" prop="execTime" :formatter="dateFormatter" width="240" />
<el-table-column label="任务名称" prop="taskName" />
<el-table-column label="操作选项" align="center" width="100px">
<template #default="scope">
<el-button
link
type="primary"
@click="
push({
path: '/task/inspectionsDetail',
query: { id: scope.row.id }
})
"
>
详情
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
:total="total"
:show-page-size="false"
layout="total, prev, pager, next"
@ -111,15 +108,11 @@
@change="getList"
class="ml-auto"
/>
</section>
</section>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<EnterpriseInspectionsForm ref="formRef" @success="getList" />
<ChangeInspections ref="changeRef" @success="getList" />
</template>
<script setup lang="ts">
@ -127,8 +120,9 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { EnterpriseInspectionsApi, EnterpriseInspectionsVO } from '@/api/enterpriseinspections'
import EnterpriseInspectionsForm from './EnterpriseInspectionsForm.vue'
import ChangeInspections from './changeInspections.vue'
import { DICT_TYPE } from '@/utils/dict'
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
import { Search } from '@element-plus/icons-vue'
import { getSimpleUserZGList } from '@/api/system/user'
const { push } = useRouter()
@ -136,7 +130,6 @@ const { push } = useRouter()
defineOptions({ name: 'EnterpriseInspections' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<EnterpriseInspectionsVO[]>([]) //
@ -145,18 +138,12 @@ const queryParams = reactive({
pageNo: 1,
pageSize: 10,
taskName: undefined,
enterpriseName: undefined,
enterpriseName: undefined
})
const userList = ref()
const queryFormRef = ref() //
const exportLoading = ref(false) //
const selectedRows = ref([]);
const handleSelectionChange = (selection) => {
selectedRows.value = selection;
console.log('Selected Rows:', selectedRows.value);
};
const formRef = ref()
/** 查询列表 */
const getList = async () => {
loading.value = true
@ -182,31 +169,10 @@ const resetQuery = () => {
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
//
const changeRef = ref()
const openChangeForm = () => {
changeRef.value.open(selectedRows.value)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await EnterpriseInspectionsApi.deleteEnterpriseInspections(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
/** 查询用户列表 */
const getUserlist = async () => {
userList.value = await getSimpleUserZGList()
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
@ -222,8 +188,22 @@ const handleExport = async () => {
}
}
getUserlist()
/** 初始化 **/
onMounted(() => {
getList()
})
</script>
<style lang="css" scoped>
.formClass {
.el-form-item {
width: calc(100% / 4 - 15px);
&:last-child {
width: fit-content;
margin-left: auto;
}
}
}
</style>

6
src/views/enterprises/index.vue

@ -16,6 +16,7 @@
placeholder="请输入企业名称"
clearable
@keyup.enter="handleQuery"
:prefix-icon="Search"
/>
</el-form-item>
<el-form-item label="" prop="region">
@ -59,8 +60,8 @@
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
format="YYYY年M月D日"
start-placeholder="始日期"
end-placeholder="结束日期"
start-placeholder="始日期"
end-placeholder="截止日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
/>
</el-form-item>
@ -162,6 +163,7 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { EnterprisesApi, EnterprisesVO } from '@/api/enterprises'
import { TagLibraryApi } from '@/api/system/taglibrary'
import {Search} from "@element-plus/icons-vue";
/** 企业 列表 */
defineOptions({ name: 'Enterprises' })

192
src/views/enterprises/update.vue

@ -22,7 +22,6 @@
/>
</el-select>
</el-form-item>
<el-form-item label="企业所属区域" prop="region">
<el-select v-model="formData.region" placeholder="请选择企业所属区域">
<el-option
@ -76,10 +75,7 @@
</el-form-item>
<el-form-item label="企业照片" prop="fileIds">
<UploadImgs v-model="fileList" :limit="3" height="100px" width="100px" />
</el-form-item>
</el-form-item>
<el-form-item label="企业成立时间" prop="establishmentDate">
<el-date-picker
@ -143,21 +139,31 @@
<el-button type="primary" @click="openQualForm('create')">新增</el-button>
</div>
</template>
<el-table v-loading="loading" :data="qualificationlist" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="资质图片" align="center" fixed="left" prop="files" >
<el-table
v-loading="loading"
:data="qualificationlist"
:stripe="true"
:show-overflow-tooltip="true"
>
<el-table-column label="资质图片" align="center" fixed="left" prop="files">
<template #default="scope">
<UploadImgs :disabled="true" v-model="scope.row.files" :limit="3" height="100px" width="100px" />
<UploadImgs
:disabled="true"
v-model="scope.row.files"
:limit="3"
height="100px"
width="100px"
/>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="资质编号" align="center" fixed="left" prop="enterpriseAuth" />
<el-table-column label="资质名称" align="center" fixed="left" prop="qualificationName" >
<el-table-column label="资质名称" align="center" fixed="left" prop="qualificationName">
<template #default="scope">
<dict-tag :type="DICT_TYPE.ENTERPRISES_QUA" :value="scope.row.qualificationName" />
</template>
</el-table-column>
<el-table-column
label="资质到期日期"
align="center"
@ -167,55 +173,46 @@
/>
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
<el-button
link
type="primary"
@click="openQualForm('update', scope.row.id)"
>
<el-button link type="primary" @click="openQualForm('update', scope.row.id)">
编辑
</el-button>
<el-button
link
type="danger"
@click="handQualDelete(scope.row.id)"
>
删除
</el-button>
<el-button link type="danger" @click="handQualDelete(scope.row.id)"> 删除 </el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<!-- 表单弹窗添加/修改 -->
<EnterpriseQualificationForm ref="formQualRef" @success="getQualificationList" style="margin-top: 20px;"/>
<!-- 表单弹窗添加/修改 -->
<EnterpriseQualificationForm
ref="formQualRef"
@success="getQualificationList"
style="margin-top: 20px"
/>
<ContentWrap title="执法记录" v-if="formType === 'update'">
<div class="demo-collapse">
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item
v-for="item in inspectionslist"
:key="item.taskId"
:name="item.taskName" @click="getInspectionsLogList(item.id)">
:name="item.taskName"
@click="getInspectionsLogList(item.id)"
>
<template #title>
<div class="custom-title">
任务编号 {{item.taskName}}
</div>
<div class="custom-title">
任务名称 {{item.taskName}}
</div>
<div class="custom-title">
计划开始时间 {{formatDate(item.taskStartTime)}}
</div>
<div class="custom-title">
计划结束时间 {{formatDate(item.taskEndTime)}}
</div>
<div class="custom-title"> 任务编号 {{ item.taskName }} </div>
<div class="custom-title"> 任务名称 {{ item.taskName }} </div>
<div class="custom-title"> 计划开始时间 {{ formatDate(item.taskStartTime) }} </div>
<div class="custom-title"> 计划结束时间 {{ formatDate(item.taskEndTime) }} </div>
</template>
<el-table v-loading="loading" :data="inspectionsLogList" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="执法人员" align="center" prop="inspectName" />
<el-table-column label="协同执法" align="center" prop="cooperateWithName" />
<el-table
v-loading="loading"
:data="inspectionsLogList"
:stripe="true"
:show-overflow-tooltip="true"
>
<el-table-column label="执法人员" align="center" prop="inspectName" />
<el-table-column label="协同执法" align="center" prop="cooperateWithName" />
<el-table-column label="进度状态" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.status" />
<dict-tag :type="DICT_TYPE.INSPECTIONS_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
@ -230,7 +227,6 @@
</el-collapse>
</div>
</ContentWrap>
</template>
<script setup lang="ts">
import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
@ -246,8 +242,8 @@ import * as FileApi from '@/api/infra/file'
import { ElMessage } from 'element-plus'
import SelectUser from './components/SelectUser.vue'
import * as UserApi from '@/api/system/user'
import {useTagsViewStore} from "@/store/modules/tagsView";
import {dateFormatter,dateFormatter2, formatDate} from "@/utils/formatTime";
import { useTagsViewStore } from '@/store/modules/tagsView'
import { dateFormatter, dateFormatter2, formatDate } from '@/utils/formatTime'
/** 企业 表单 */
defineOptions({ name: 'UpdateEnterprises' })
@ -258,13 +254,13 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
const selectUserRef = ref()
const loading = ref(false)
const selectedUser = ref()
const router=useRouter()
const route=useRoute()
const tagView=useTagsViewStore()
const fileIds = ref([]);
const qualificationlist = ref([]);
const inspectionslist = ref([]);
const inspectionsLogList = ref([]);
const router = useRouter()
const route = useRoute()
const tagView = useTagsViewStore()
const fileIds = ref([])
const qualificationlist = ref([])
const inspectionslist = ref([])
const inspectionsLogList = ref([])
const enterpriseUserList = ref([])
const formData = ref({
@ -276,7 +272,7 @@ const formData = ref({
enterprisesName: undefined,
address: undefined,
contactName: undefined,
enterprisesStatus:undefined,
enterprisesStatus: undefined,
environmentalContactPhone: undefined,
registrationNumber: undefined,
introduction: undefined,
@ -285,26 +281,25 @@ const formData = ref({
searchQuery: undefined,
managerDeptId: undefined,
ides: undefined,
startUserSelectAssignees:undefined,
startUserSelectAssignees: undefined,
enterpriseUserId: undefined
})
const fileList=ref([])
const fileList = ref([])
const getEnterpriseUserList = async () => {
const type:number = 2
const type: number = 2
const data = await getSimpleUserListByUserType(type)
console.log("datadata===>", data)
console.log('datadata===>', data)
}
const formRules = reactive({
type: [{ required: true, message: '企业类型不能为空', trigger: 'change' }],
enterprisesName: [{ required: true, message: '企业名称不能为空', trigger: 'blur' }],
contactName: [{ required: true, message: '负责人不能为空', trigger: 'blur' }],
environmentalContactPhone: [{ required: true, message: '企业环保负责人联系电话不能为空', trigger: 'blur' }]
environmentalContactPhone: [
{ required: true, message: '企业环保负责人联系电话不能为空', trigger: 'blur' }
]
})
const formRef = ref() // Ref
const { query } = useRoute()
@ -312,14 +307,16 @@ const { query } = useRoute()
function init() {
if (query.id) {
// id 'update'
formType.value = 'update'
EnterprisesApi.getEnterprises(query.id).then((res) => {
selectedUser.value=res.inviterName;
// formData.value.startUserSelectAssignees=res.userId;
fileList.value=res.files;
formType.value = 'update'
EnterprisesApi.getEnterprises(query.id).then((res) => {
selectedUser.value = res.inviterName
// formData.value.startUserSelectAssignees=res.userId;
fileList.value = res.files
formData.value = res
})
}else{formType.value = 'create'}
} else {
formType.value = 'create'
}
}
//
const showMap = ref(false)
@ -327,7 +324,7 @@ const showMap = ref(false)
let map
//
let marker
let searchService=null
let searchService = null
// const searchService = ref()
const mapContainerRef = ref<HTMLDivElement | null>(null)
//
@ -366,10 +363,10 @@ const initMap = () => {
})
})
// searchService
searchService = new window.qq.maps.SearchService({
// searchService
searchService = new window.qq.maps.SearchService({
complete: (results) => {
// console.log(':', results) // results
// console.log(':', results) // results
if (results.detail && results.detail.pois.length > 0) {
const firstResult = results.detail.pois[0]
const position = firstResult.latLng
@ -403,7 +400,6 @@ const handleSearch = () => {
}
}
/** 添加/修改操作 */
const formQualRef = ref()
const openQualForm = (type: string, id?: number) => {
@ -419,17 +415,16 @@ const handQualDelete = async (id: number) => {
await EnterpriseQualificationApi.deleteEnterpriseQualification(id)
message.success(t('common.delSuccess'))
//
await getQualificationList()
await getQualificationList()
} catch {}
}
onMounted(() => {
init()
//
if(query.id){
if (query.id) {
getQualificationList()
getInspectionslList()
}
getEnterpriseUserList()
@ -477,9 +472,9 @@ const submitForm = async () => {
try {
let data = formData.value
// 1
data.enterprisesStatus = 1 as number;
data.enterprisesStatus = 1 as number
data.fileIds = (fileList.value || []).map((item: any) => item.id);
data.fileIds = (fileList.value || []).map((item: any) => item.id)
if (formType.value == 'create') {
await EnterprisesApi.pccreateEnterprises(data)
message.success(t('common.createSuccess'))
@ -487,7 +482,7 @@ const submitForm = async () => {
router.go(-1)
} else {
await EnterprisesApi.updateEnterprises(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
@ -495,8 +490,8 @@ const submitForm = async () => {
emit('success')
} finally {
loading.value = false
//
tagView.delView(route)
//
tagView.delView(route)
router.go(-1)
}
}
@ -505,7 +500,7 @@ const echoUser = async (v) => {
// console.log('',v)
const users = await UserApi.getUser(v)
selectedUser.value = users.username
formData.value.userId=users.id
formData.value.userId = users.id
}
/** 重置表单 */
@ -535,7 +530,7 @@ const uploadList: any = ref([])
async function uploadSuccess(res) {
console.log(res.data.file_id)
fileIds.value.push(res.data.file_id);
fileIds.value.push(res.data.file_id)
if (res) {
await FileApi.createFile({
unitId: formData.value.id || id.value,
@ -555,31 +550,31 @@ async function uploadSuccess(res) {
}
}
/** 资质查询列表 BY-ZY */
const getQualificationList = async () => {
loading.value = true
try {
const data = await EnterpriseQualificationApi.getEnterpriseQualificationPageEnterprise({"enterpriseId":query.id})
const data = await EnterpriseQualificationApi.getEnterpriseQualificationPageEnterprise({
enterpriseId: query.id
})
qualificationlist.value = data.list
} finally {
loading.value = false
}
}
/** 执法记录查询列表 by zy*/
const getInspectionslList = async () => {
loading.value = true
try {
const data = await EnterpriseInspectionsApi.getEnterpriseInspectionsPage({"enterpriseId":query.id})
if(!data.list || data.list.length === 0){
console.log("No data or data is null");
const data = await EnterpriseInspectionsApi.getEnterpriseInspectionsPage({
enterpriseId: query.id
})
if (!data.list || data.list.length === 0) {
console.log('No data or data is null')
} else {
inspectionslist.value = data.list;
inspectionslist.value = data.list
}
} finally {
loading.value = false
}
@ -590,17 +585,16 @@ const getInspectionsLogList = async (insprctionsId) => {
console.log(insprctionsId)
loading.value = true
try {
const data = await EnterpriseInspectionsApi.inspectionsLogList({"inspectionsId":insprctionsId})
if(!data.list || data.list.length === 0){
console.log("No data or data is null");
const data = await EnterpriseInspectionsApi.inspectionsLogList({ inspectionsId: insprctionsId })
if (!data.list || data.list.length === 0) {
console.log('No data or data is null')
} else {
inspectionsLogList.value = data.list;
inspectionsLogList.value = data.list
}
} finally {
loading.value = false
}
}
</script>
<style lang="scss" scoped>

4
src/views/system/jobinfo/JobInfoForm.vue

@ -25,7 +25,7 @@
<el-input v-model="formData.jobName" placeholder="请输入汇报人姓名" />
</el-form-item>
<el-form-item label="汇报内容" prop="content" class="!w100%">
<Editor v-model="formData.content" height="400px" class="w100%"/>
<Editor v-model="formData.content" height="500px" class="w100%"/>
</el-form-item>
</section>
</el-form>
@ -97,7 +97,7 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = type == 'create' ? '新增工作汇报' : '修改工作汇报'
dialogTitle.value = type == 'create' ? '新增工作汇报' : '编辑工作汇报'
formType.value = type
resetForm()
//

203
src/views/system/jobinfo/index.vue

@ -1,111 +1,79 @@
<template>
<ContentWrap>
<section class="flex flex-col gap-20px">
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入汇报标题"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="" prop="jobName">
<el-input
v-model="queryParams.jobName"
placeholder="请输入汇报人姓名"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['system:job-info:create']"
>
<Icon icon="ep:circle-plus" class="mr-5px" /> 新增
</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="汇报标题" align="center" prop="title" />
<el-table-column label="汇报日期" :formatter="dateFormatter2" align="center" prop="jobDate" />
<el-table-column label="汇报人姓名" align="center" prop="jobName" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="PDF文件" align="center" prop="pdfUrl">
<template #default="scope">
<el-button
v-if="scope.row.pdfUrl"
link
type="primary"
@click="handleOpenPdf(scope.row.pdfUrl)"
>
查看PDF
</el-button>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="120px">
<template #default="scope">
<el-button
link
type="primary"
@click="handleDetail(scope.row.id)"
v-hasPermi="['system:job-info:update']"
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入汇报标题"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
:prefix-icon="Search"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary" plain
><Icon icon="ep:search" class="mr-5px" /> 查询</el-button
>
生成
</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
</el-form-item>
<el-form-item class="ml-auto">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['system:job-info:update']"
@click="openForm('create')"
v-hasPermi="['system:job-info:create']"
>
编辑
<Icon icon="ep:circle-plus" class="mr-5px" /> 新增
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['system:job-info:delete']"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
:total="total"
:show-page-size="false"
layout="total, prev, pager, next"
v-model:current-page="queryParams.pageNo"
v-model:page-size="queryParams.pageSize"
@change="getList"
class="ml-auto"
/>
</section>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true">
<el-table-column label="汇报标题" prop="title" />
<el-table-column label="汇报日期" :formatter="dateFormatter2" prop="jobDate" />
<el-table-column label="汇报人" prop="jobName" />
<el-table-column label="创建时间" prop="createTime" :formatter="dateFormatter" />
<el-table-column label="操作选项" align="center" width="120px">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['system:job-info:update']"
>
编辑
</el-button>
<el-button
link
type="primary"
@click="handleExport(scope.row.id)"
v-hasPermi="['system:job-info:delete']"
>
下载
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
:total="total"
:show-page-size="false"
layout="total, prev, pager, next"
v-model:current-page="queryParams.pageNo"
v-model:page-size="queryParams.pageSize"
@change="getList"
class="ml-auto"
/>
</section>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
@ -113,10 +81,11 @@
</template>
<script setup lang="ts">
import { dateFormatter,dateFormatter2 } from '@/utils/formatTime'
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import { JobInfoApi, JobInfoVO } from '@/api/system/jobinfo'
import JobInfoForm from './JobInfoForm.vue'
import { Search } from '@element-plus/icons-vue'
/** 工作汇报 列表 */
defineOptions({ name: 'JobInfo' })
@ -132,7 +101,7 @@ const queryParams = reactive({
pageSize: 10,
title: undefined,
jobName: undefined,
createTime: [],
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -167,35 +136,7 @@ const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 生成按钮操作 */
const handleDetail = async (id: number) => {
try {
//
await JobInfoApi.jobDetail(id)
message.success('生成成功')
//
await getList()
} catch {}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await JobInfoApi.deleteJobInfo(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 打开pdf */
const handleOpenPdf = (url: string) => {
window.open(url)
}
/** 导出按钮操作 */
const handleExport = async () => {
@ -216,4 +157,4 @@ const handleExport = async () => {
onMounted(() => {
getList()
})
</script>
</script>

18
src/views/system/policy/PolicyForm.vue

@ -7,7 +7,7 @@
v-loading="formLoading"
class="policyForm"
>
<section class="flex flex-wrap gap-18px">
<section class="flex flex-wrap gap-20px">
<el-form-item label="标题名称" prop="name" class="w-[calc(100%/2-10px)]">
<el-input v-model="formData.name" placeholder="请输入名称" />
</el-form-item>
@ -15,14 +15,14 @@
<el-date-picker
v-model="formData.effectiveDate"
type="date"
placeholder="选择生效日期"
placeholder="选择日期"
value-format="YYYY-MM-DD"
:default-value="new Date()"
class="!w100%"
/>
</el-form-item>
<el-form-item label="内容详细" prop="context" class="w100%">
<Editor v-model="formData.context" height="350px" class="!w100%" />
<Editor v-model="formData.context" height="500px" class="!w100%" />
</el-form-item>
</section>
</el-form>
@ -118,12 +118,12 @@ const resetForm = () => {
formRef.value?.resetFields()
}
const deletePolicy=()=>{
PolicyApi.deletePolicy(formData.value.id).then(()=>{
message.success(t('common.delSuccess'))
dialogVisible.value = false
emit('success')
})
const deletePolicy = () => {
PolicyApi.deletePolicy(formData.value.id).then(() => {
message.success(t('common.delSuccess'))
dialogVisible.value = false
emit('success')
})
}
</script>

2
src/views/system/policy/index.vue

@ -10,6 +10,7 @@
clearable
@keyup.enter="handleQuery"
class="!w-240px"
:prefix-icon="Search"
/>
</el-form-item>
<el-form-item>
@ -89,6 +90,7 @@ import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import { PolicyApi, PolicyVO } from '@/api/system/policy'
import PolicyForm from './PolicyForm.vue'
import {Search} from "@element-plus/icons-vue";
/** 政策法规 列表 */
defineOptions({ name: 'Policy' })

4
src/views/system/taglibrary/form.vue

@ -1,5 +1,5 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<Dialog :title="dialogTitle" v-model="dialogVisible" width="480">
<el-form
ref="formRef"
:model="formData"
@ -68,7 +68,7 @@ const list = ref<any>([])
/** 打开弹窗 */
const open = async (params) => {
dialogVisible.value = true
dialogTitle.value = params.id ? `修改标签` : `创建标签`
dialogTitle.value = params.id ? `编辑标签` : `新增标签`
resetForm()
formLoading.value = true
await getParent(params.parentId)

Loading…
Cancel
Save