浏览代码

reactor:省工单发布调整;

zhangchong 1 年之前
父节点
当前提交
53a4480f67

+ 0 - 8
src/App.vue

@@ -21,8 +21,6 @@ import checkUpdate from '@/utils/checkUpdate';
 import mittBus from '@/utils/mitt';
 import { Session, Local } from '@/utils/storage';
 import setIntroduction from '@/utils/setIconfont';
-import { loginPageInfo } from '@/api/login';
-import { getImageUrl } from '@/utils/tools';
 import { useKeepALiveNames } from '@/stores/keepAliveNames';
 import { useUserInfo } from '@/stores/userInfo';
 // 引入组件
@@ -73,12 +71,6 @@ const openSetTingsDrawer = () => {
 };
 // 设置初始化,防止刷新时恢复默认
 onBeforeMount(async () => {
-	// 获取登录页的背景图和系统名称等
-	const res: any = await loginPageInfo();
-	const globalTitle = res.result.sysName.join('|') ?? ''; // 标题名称
-	const loginImage = res.result.loginImage ? `url${res.result.loginImage}` : `url(${getImageUrl('login/bg.png')})`; // 登录页背景图
-	const isLoginMessageCode = res.result.isLoginMessageCode; // 是否开启短信验证码
-	storesThemeConfig.setThemeConfig(Object.assign(themeConfig.value, { globalTitle, loginImage, isLoginMessageCode }));
 	// 设置批量第三方 icon 图标
 	setIntroduction.cssCdn();
 	// 设置批量第三方 js

+ 1 - 0
src/components/ProTable/index.vue

@@ -282,6 +282,7 @@ const dragSort = () => {
 };
 // 刷新事件
 const onRefresh = () => {
+  clearSelection();
 	emit('updateTable');
 };
 const filterColumns = ref([]);

+ 64 - 44
src/views/auxiliary/advice/index.vue

@@ -19,45 +19,29 @@
 			</el-form>
 		</el-card>
 		<el-card shadow="never">
-			<div class="mb20">
-				<el-button type="primary" @click="onAdviceAdd"> <SvgIcon name="ele-Plus" class="mr5" />新增 </el-button>
-				<el-button type="primary" @click="onAdviceDelete" :disabled="!multipleSelection.length">
-					<SvgIcon name="ele-Delete" class="mr5" />删除
-				</el-button>
-			</div>
-			<!-- 表格 -->
-			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" />
-				<el-table-column prop="content" label="意见内容" show-overflow-tooltip width="300"></el-table-column>
-				<el-table-column prop="commonTypeText" label="意见类型" show-overflow-tooltip width="130"></el-table-column>
-				<el-table-column prop="isOpen" label="常用意见分类" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						{{ row.isOpen ? '公开常用意见' : '个人常用意见' }}
-					</template>
-				</el-table-column>
-				<el-table-column prop="creatorName" label="创建人" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="creatorOrgName" label="创建部门" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="afterBegin" label="创建时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="120" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="updateAdvice(row)" v-auth="'auxiliary:advice:edit'" title="修改参数"> 修改 </el-button>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
-				</template>
-			</el-table>
-			<!-- 分页 -->
-			<pagination
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
 				:total="state.total"
-				v-model:page="state.queryParams.PageIndex"
-				v-model:limit="state.queryParams.PageSize"
-				@pagination="queryList"
-			/>
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+			>
+				<!-- 表格 header 按钮 -->
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="onAdviceAdd"> <SvgIcon name="ele-Plus" class="mr5" />新增 </el-button>
+					<el-button type="primary" @click="onAdviceDelete" :disabled="!scope.isSelected"> <SvgIcon name="ele-Delete" class="mr5" />删除 </el-button>
+				</template>
+				<template #isOpen="{ row }">
+					{{ row.isOpen ? '公开常用意见' : '个人常用意见' }}
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="updateAdvice(row)" v-auth="'auxiliary:advice:edit'" title="修改参数"> 修改 </el-button>
+				</template>
+			</ProTable>
 		</el-card>
 		<!--  常用意见新增  -->
 		<advice-add ref="adviceAddRef" @updateList="queryList" :commonType="commonType" />
@@ -66,19 +50,55 @@
 	</div>
 </template>
 
-<script lang="ts" setup name="auxiliaryAdvice">
+<script lang="tsx" setup name="auxiliaryAdvice">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
-import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
-import { auth } from '@/utils/authFunction';
 import { commonBaseData, deleteCommon, publicCommonList } from '@/api/auxiliary/advice';
 
 // 引入组件
 const AdviceAdd = defineAsyncComponent(() => import('@/views/auxiliary/advice/component/Advice-add.vue')); // 常用意见新增
 const AdviceEdit = defineAsyncComponent(() => import('@/views/auxiliary/advice/component/Advice-edit.vue')); // 常用意见编辑
 
+const proTableRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columns = ref<any[]>([
+	{ type: 'selection', fixed: 'left', width: 55 },
+	{
+		label: '意见内容',
+		prop: 'content',
+		width: 300,
+	},
+	{
+		label: '意见类型',
+		prop: 'commonTypeText',
+		width: 130,
+	},
+	{
+		label: '常用意见分类',
+		prop: 'isOpen',
+		width: 170,
+	},
+	{
+		label: '创建人',
+		prop: 'creatorName',
+	},
+	{
+		label: '创建部门',
+		prop: 'creatorOrgName',
+	},
+	{
+		label: '创建时间',
+		prop: 'creationTime',
+		width: 170,
+		render: ({ row }) => {
+			return <span>{formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 140, align: 'center' },
+]);
 // 定义变量内容
-const state = reactive<any>({
+const state = reactive({
 	loading: false, // 加载状态
 	queryParams: {
 		// 查询参数
@@ -147,8 +167,8 @@ const handleSelectionChange = (val: any[]) => {
 };
 // 删除参数
 const onAdviceDelete = () => {
-	const contents = multipleSelection.value.map((item: any) => item.content).join('、');
-	const ids = multipleSelection.value.map((item: any) => item.id);
+	const contents = proTableRef.value.selectedList.map((item: any) => item.content).join('、');
+	const ids = proTableRef.value.selectedList.map((item: any) => item.id);
 	ElMessageBox.confirm(`您确定要删除:【${contents}】的常用意见,是否继续?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',

+ 64 - 59
src/views/auxiliary/knowledgeLexicon/index.vue

@@ -20,55 +20,32 @@
 			</el-form>
 		</el-card>
 		<el-card shadow="never">
-			<div class="mb20">
-				<el-button type="primary" @click="addParameter" v-auth="'auxiliary:knowledgeLexicon:add'">
-					<SvgIcon name="ele-Plus" class="mr5" />新增
-				</el-button>
-				<el-button type="primary" @click="businessTagRemove" v-auth="'auxiliary:knowledgeLexicon:delete'" :disabled="!multipleSelection.length">
-					<SvgIcon name="ele-Delete" class="mr5" />删除
-				</el-button>
-			</div>
-			<!-- 表格 -->
-			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" />
-				<el-table-column prop="classify" label="词性分类" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="tag" label="关键词" show-overflow-tooltip width="130"></el-table-column>
-				<el-table-column prop="synonym" label="同义词" show-overflow-tooltip width="130"></el-table-column>
-				<el-table-column label="是否启用" show-overflow-tooltip>
-					<template #default="{ row }">
-						<span>{{ row.isEnable === 1 ? '启用' : '禁用' }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="creatorName" label="创建人" show-overflow-tooltip></el-table-column>
-				<el-table-column label="创建时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="lastModificationName" label="更新人" show-overflow-tooltip></el-table-column>
-				<el-table-column label="更新时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.lastModificationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="120" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="updateLexicon(row)" v-auth="'auxiliary:knowledgeLexicon:edit'" title="编辑知识库词库">
-							编辑
-						</el-button>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
-				</template>
-			</el-table>
-			<!-- 分页 -->
-			<pagination
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
 				:total="state.total"
-				v-model:page="state.queryParams.PageIndex"
-				v-model:limit="state.queryParams.PageSize"
-				@pagination="queryList"
-			/>
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+			>
+				<!-- 表格 header 按钮 -->
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="addParameter" v-auth="'auxiliary:knowledgeLexicon:add'">
+						<SvgIcon name="ele-Plus" class="mr5" />新增
+					</el-button>
+					<el-button type="primary" @click="businessTagRemove" v-auth="'auxiliary:knowledgeLexicon:delete'" :disabled="!scope.isSelected">
+						<SvgIcon name="ele-Delete" class="mr5" />删除
+					</el-button>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="updateLexicon(row)" v-auth="'auxiliary:knowledgeLexicon:edit'" title="编辑知识库词库">
+						编辑
+					</el-button>
+				</template>
+			</ProTable>
 		</el-card>
 		<!--  新增知识库词库  -->
 		<knowledge-lexicon-add ref="knowledgeLexiconAddRef" @updateList="queryList" :knowledgeWordClassify="knowledgeWordClassify" />
@@ -77,16 +54,50 @@
 	</div>
 </template>
 
-<script lang="ts" setup name="auxiliaryKnowledgeLexicon">
+<script lang="tsx" setup name="auxiliaryKnowledgeLexicon">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
-import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { formatDate } from '@/utils/formatTime';
-import { auth } from '@/utils/authFunction';
 import { knowledgeLexiconDelete, knowledgeLexiconList, orderKnowledgeBaseData } from '@/api/auxiliary/knowledgeLexicon';
 // 引入组件
 const KnowledgeLexiconAdd = defineAsyncComponent(() => import('@/views/auxiliary/knowledgeLexicon/components/Knowledge-lexicon-add.vue')); // 新增知识库词库
 const KnowledgeLexiconEdit = defineAsyncComponent(() => import('@/views/auxiliary/knowledgeLexicon/components/Knowledge-lexicon-edit.vue')); // 编辑知识库词库
 
+const proTableRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columns = ref<any[]>([
+	{ type: 'selection', fixed: 'left', width: 55 },
+	{ prop: 'classify', label: '词性分类', showOverflowTooltip: true },
+	{ prop: 'tag', label: '关键词', width: 130 },
+	{ prop: 'synonym', label: '同义词', width: 130 },
+	{
+		prop: 'isEnable',
+		label: '是否启用',
+
+		render: (scope: any) => {
+			return scope.row.isEnable === 1 ? '启用' : '禁用';
+		},
+	},
+	{ prop: 'creatorName', label: '创建人', showOverflowTooltip: true },
+	{
+		prop: 'creationTime',
+		label: '创建时间',
+		width: 170,
+		render: (scope: any) => {
+			return formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS');
+		},
+	},
+	{ prop: 'lastModificationName', label: '更新人', showOverflowTooltip: true },
+	{
+		prop: 'lastModificationTime',
+		label: '更新时间',
+		width: 170,
+		render: (scope: any) => {
+			return formatDate(scope.row.lastModificationTime, 'YYYY-mm-dd HH:MM:SS');
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },
+]);
 // 定义变量内容
 const state = reactive<any>({
 	loading: false, // 加载状态
@@ -141,16 +152,10 @@ const knowledgeLexiconEditRef = ref<RefType>();
 const updateLexicon = (row: any) => {
 	knowledgeLexiconEditRef.value.openDialog(row.id);
 };
-// 表格多选
-const multipleTableRef = ref<RefType>();
-const multipleSelection = ref<any>([]);
-const handleSelectionChange = (val: any[]) => {
-	multipleSelection.value = val;
-};
 // 删除词库
 const businessTagRemove = () => {
-	const ids = multipleSelection.value.map((item: any) => item.id);
-	const names = multipleSelection.value.map((item: any) => item.tag);
+	const ids = proTableRef.value.selectedList.map((item: any) => item.id);
+	const names = proTableRef.value.selectedList.map((item: any) => item.tag);
 	ElMessageBox.confirm(`您确定要删除:【${names}】,是否继续?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',

+ 186 - 161
src/views/auxiliary/notice/index.vue

@@ -49,165 +49,121 @@
 						/>
 					</el-form-item>
 				</template>
-
 				<el-form-item>
 					<el-button type="primary" @click="queryList" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
 					<el-button @click="resetQuery(ruleFormRef)" v-waves class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
 				</el-form-item>
 			</el-form>
-			<div class="mb20">
-				<el-button type="primary" @click="onNoticeAdd('0')" v-if="listType === '0'" v-auth="'auxiliary:notice:add'" title="新增通知">
-					<SvgIcon name="ele-Plus" class="mr5" />新增
-				</el-button>
-				<el-button type="primary" @click="onNoticeAdd('1')" v-else v-auth="'auxiliary:bulletin:add'" title="新增公告">
-					<SvgIcon name="ele-Plus" class="mr5" />新增
-				</el-button>
-			</div>
-			<!-- 表格 -->
-			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" />
-				<!--  通知  -->
-				<template v-if="listType === '0'">
-					<el-table-column prop="circularTypeName" label="通知类型" show-overflow-tooltip width="120"></el-table-column>
-					<el-table-column prop="circularStateText" label="通知状态" show-overflow-tooltip width="120"></el-table-column>
-					<el-table-column prop="title" label="通知标题" show-overflow-tooltip width="150"></el-table-column>
-					<el-table-column prop="commonTypeText" label="必须阅读" show-overflow-tooltip>
-						<template #default="{ row }">
-							{{ row.isMustRead ? '是' : '否' }}
-						</template>
-					</el-table-column>
-					<el-table-column label="已阅读数" show-overflow-tooltip>
-						<template #default="{ row }">
-							<el-popover placement="right" :width="450" trigger="click" popper-class="notice-container" v-if="[2].includes(row.circularState)">
-								<template #reference>
-									<el-button link type="primary">{{ row.readedNum + '/' + row.needReadNum }}</el-button>
-								</template>
-								<div class="notice-container-box">
-									<div class="notice-container-box-inner">
-										已读:{{ row.readedNum }}
-										<el-scrollbar class="mt5" v-if="row.circularReadGroups?.length">
-											<el-tag v-for="item in row.circularReadGroups.filter((i) => i.isRead)"
-												>{{ row.circularType === 1 ? item.userName : item.orgName }}
-												<span v-if="item.isTimeOut" class="color-danger">(超时阅读)</span>
-											</el-tag>
-										</el-scrollbar>
-									</div>
-									<div class="notice-container-box-inner">
-										未读:{{ row.needReadNum - row.readedNum }}
-										<el-scrollbar class="mt5 mb10" v-if="row.circularReadGroups?.length">
-											<el-tag v-for="item in row.circularReadGroups.filter((i) => !i.isRead)">{{
-												row.circularType === 1 ? item.userName : item.orgName
-											}}</el-tag>
-										</el-scrollbar>
-									</div>
-								</div>
-							</el-popover>
-						</template>
-					</el-table-column>
-					<el-table-column prop="circularTypeText" label="通知对象" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="commonTypeText" label="通知时间" show-overflow-tooltip width="170">
-						<template #default="{ row }">
-							<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-						</template>
-					</el-table-column>
-					<el-table-column label="失效时间" show-overflow-tooltip width="170">
-						<template #default="{ row }">
-							<span>{{ formatDate(row.lostEfficacyTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-						</template>
-					</el-table-column>
-					<el-table-column prop="sourceOrgName" label="来源单位" show-overflow-tooltip width="120"></el-table-column>
-					<el-table-column prop="circularStateText" label="审核状态" show-overflow-tooltip width="120"></el-table-column>
+			<!--   通知表格   -->
+			<ProTable
+				ref="proTableNoticeRef"
+				:columns="columnsNotice"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
+				:total="state.total"
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				v-if="listType === '0'"
+			>
+				<!-- 表格 header 按钮 -->
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="onNoticeAdd('0')" v-if="listType === '0'" v-auth="'auxiliary:notice:add'" title="新增通知">
+						<SvgIcon name="ele-Plus" class="mr5" />新增
+					</el-button>
 				</template>
-				<!--  公告  -->
-				<template v-if="listType === '1'">
-					<el-table-column prop="bulletinTypeName" label="公告类型" show-overflow-tooltip width="120"></el-table-column>
-					<el-table-column prop="bulletinStateText" label="公告状态" show-overflow-toolti width="120"></el-table-column>
-					<el-table-column prop="title" label="公告标题" show-overflow-tooltip width="150"></el-table-column>
-					<el-table-column prop="readedNum" label="已阅次数" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="pushRangesText" label="公告范围" show-overflow-tooltip width="300"></el-table-column>
-					<el-table-column prop="commonTypeText" label="通知时间" show-overflow-tooltip width="170">
-						<template #default="{ row }">
-							<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-						</template>
-					</el-table-column>
-					<el-table-column label="失效时间" show-overflow-tooltip width="170">
-						<template #default="{ row }">
-							<span>{{ formatDate(row.loseEfficacyTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-						</template>
-					</el-table-column>
-					<el-table-column prop="creatorOrgName" label="来源单位" show-overflow-tooltip width="120"></el-table-column>
-					<el-table-column prop="bulletinStateText" label="审核状态" show-overflow-tooltip width="120"></el-table-column>
+				<template #isProvince="{ row }">
+					<span>{{ row.isProvince ? '省工单' : '市工单' }}</span>
 				</template>
-
-				<el-table-column prop="examinOpinion" label="审核理由" show-overflow-tooltip width="150"></el-table-column>
-				<el-table-column prop="examinMan.name" label="审核人" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="examinOpinion" label="审核时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.examinTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="200" fixed="right" align="center">
-					<template #default="{ row }">
-						<template v-if="listType === '0'">
-							<el-button link type="primary" @click="onEdit(row, '0')" v-if="[0, 3].includes(row.circularState)" v-auth="'auxiliary:bulletin:edit'">
-								编辑
-							</el-button>
-							<el-button link type="danger" @click="onDelete(row, '0')" v-if="[0].includes(row.circularState)" v-auth="'auxiliary:bulletin:delete'">
-								删除
-							</el-button>
-							<el-button
-								link
-								type="primary"
-								@click="onCommit(row, '0')"
-								v-if="[0, 3].includes(row.circularState)"
-								title="提交审批"
-								v-auth="'auxiliary:bulletin:commit'"
-							>
-								提交
-							</el-button>
-							<el-button
-								link
-								type="primary"
-								@click="onDetail(row, '0')"
-								v-if="[1, 2].includes(row.circularState)"
-							>
-								查看详情
-							</el-button>
-						</template>
-						<template v-if="listType === '1'">
-							<el-button link type="primary" @click="onEdit(row, '1')" v-if="[0, 3].includes(row.bulletinState)" v-auth="'auxiliary:notice:edit'">
-								编辑
-							</el-button>
-							<el-button link type="danger" @click="onDelete(row, '1')" v-if="[0].includes(row.bulletinState)" v-auth="'auxiliary:notice:delete'">
-								删除
-							</el-button>
-							<el-button
-								link
-								type="primary"
-								@click="onCommit(row, '1')"
-								v-if="[0, 3].includes(row.bulletinState)"
-								title="提交审批"
-								v-auth="'auxiliary:notice:commit'"
-							>
-								提交
-							</el-button>
-							<el-button link type="primary" @click="onDetail(row, '1')" v-if="[1, 2].includes(row.bulletinState)">
-								查看详情
-							</el-button>
-						</template>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
+				<template #isMustRead="{ row }">
+					{{ row.isMustRead ? '是' : '否' }}
+				</template>
+				<template #readedNum="{ row }">
+          <el-popover placement="right" :width="450" trigger="click" popper-class="notice-container" v-if="[2].includes(row.circularState)">
+            <template #reference>
+              <el-button link type="primary">{{ row.readedNum + '/' + row.needReadNum }}</el-button>
+            </template>
+            <div class="notice-container-box">
+              <div class="notice-container-box-inner">
+                已读:{{ row.readedNum }}
+                <el-scrollbar class="mt5" v-if="row.circularReadGroups?.length">
+                  <el-tag v-for="item in row.circularReadGroups.filter((i) => i.isRead)"
+                  >{{ row.circularType === 1 ? item.userName : item.orgName }}
+                    <span v-if="item.isTimeOut" class="color-danger">(超时阅读)</span>
+                  </el-tag>
+                </el-scrollbar>
+              </div>
+              <div class="notice-container-box-inner">
+                未读:{{ row.needReadNum - row.readedNum }}
+                <el-scrollbar class="mt5 mb10" v-if="row.circularReadGroups?.length">
+                  <el-tag v-for="item in row.circularReadGroups.filter((i) => !i.isRead)">{{
+                      row.circularType === 1 ? item.userName : item.orgName
+                    }}</el-tag>
+                </el-scrollbar>
+              </div>
+            </div>
+          </el-popover>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="onEdit(row, '0')" v-if="[0, 3].includes(row.circularState)" v-auth="'auxiliary:bulletin:edit'">
+						编辑
+					</el-button>
+					<el-button link type="danger" @click="onDelete(row, '0')" v-if="[0].includes(row.circularState)" v-auth="'auxiliary:bulletin:delete'">
+						删除
+					</el-button>
+					<el-button
+						link
+						type="primary"
+						@click="onCommit(row, '0')"
+						v-if="[0, 3].includes(row.circularState)"
+						title="提交审批"
+						v-auth="'auxiliary:bulletin:commit'"
+					>
+						提交
+					</el-button>
+					<el-button link type="primary" @click="onDetail(row, '0')" v-if="[1, 2].includes(row.circularState)"> 查看详情 </el-button>
 				</template>
-			</el-table>
-			<!-- 分页 -->
-			<pagination
+			</ProTable>
+			<!--   公告表格   -->
+			<ProTable
+				ref="proTableBulletinRef"
+				:columns="columnsBulletin"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
 				:total="state.total"
-				v-model:page="state.queryParams.PageIndex"
-				v-model:limit="state.queryParams.PageSize"
-				@pagination="queryList"
-			/>
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+				v-else
+			>
+				<!-- 表格 header 按钮 -->
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="onNoticeAdd('1')" v-auth="'auxiliary:bulletin:add'" title="新增公告">
+						<SvgIcon name="ele-Plus" class="mr5" />新增
+					</el-button>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="onEdit(row, '1')" v-if="[0, 3].includes(row.bulletinState)" v-auth="'auxiliary:notice:edit'">
+						编辑
+					</el-button>
+					<el-button link type="danger" @click="onDelete(row, '1')" v-if="[0].includes(row.bulletinState)" v-auth="'auxiliary:notice:delete'">
+						删除
+					</el-button>
+					<el-button
+						link
+						type="primary"
+						@click="onCommit(row, '1')"
+						v-if="[0, 3].includes(row.bulletinState)"
+						title="提交审批"
+						v-auth="'auxiliary:notice:commit'"
+					>
+						提交
+					</el-button>
+					<el-button link type="primary" @click="onDetail(row, '1')" v-if="[1, 2].includes(row.bulletinState)"> 查看详情 </el-button>
+				</template>
+			</ProTable>
 		</el-card>
 		<!-- 流程审批 -->
 		<process-audit ref="processAuditRef" @orderProcessSuccess="queryList" />
@@ -218,13 +174,12 @@
 	</div>
 </template>
 
-<script lang="ts" setup name="auxiliaryNotice">
+<script lang="tsx" setup name="auxiliaryNotice">
 import { defineAsyncComponent, onActivated, onMounted, reactive, ref } from 'vue';
 import { useRouter } from 'vue-router';
-import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { shortcuts } from '@/utils/constants';
 import { formatDate } from '@/utils/formatTime';
-import { auth } from '@/utils/authFunction';
 import {
 	bulletinBaseData,
 	bulletinCommit,
@@ -235,15 +190,91 @@ import {
 	circularDelete,
 	circularList,
 } from '@/api/auxiliary/notice';
-import { businessTagDelete } from '@/api/auxiliary/businessTag';
 
 // 引入组件
 const ProcessAudit = defineAsyncComponent(() => import('@/components/ProcessAudit/index.vue')); // 流程审批
 const NoticeAdd = defineAsyncComponent(() => import('@/views/auxiliary/notice/component/Notice-add.vue')); // 通知公告新增
 const NoticeEdit = defineAsyncComponent(() => import('@/views/auxiliary/notice/component/Notice-edit.vue')); // 通知公告编辑
 
+const proTableNoticeRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columnsNotice = ref<any[]>([
+	{ prop: 'circularTypeName', label: '通知类型', width: 120 },
+	{ prop: 'circularStateText', label: '通知状态', width: 120 },
+	{ prop: 'title', label: '通知标题', width: 150 },
+	{ prop: 'isMustRead', label: '必须阅读' },
+	{ prop: 'readedNum', label: '已阅读数' },
+	{ prop: 'circularTypeText', label: '通知对象' },
+	{
+		prop: 'creationTime',
+		label: '通知时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'lostEfficacyTime',
+		label: '失效时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.lostEfficacyTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'sourceOrgName', label: '来源单位', width: 120 },
+	{ prop: 'circularStateText', label: '审核状态', width: 120 },
+	{ prop: 'examinOpinion', label: '审核理由', width: 150 },
+	{ prop: 'examinMan.name', label: '审核人' },
+	{
+		prop: 'examinTime',
+		label: '审核时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.examinTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 200, align: 'center' },
+]);
+const proTableBulletinRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columnsBulletin = ref<any[]>([
+	{ prop: 'bulletinTypeName', label: '公告类型', width: 120 },
+	{ prop: 'bulletinStateText', label: '公告状态', width: 120 },
+	{ prop: 'title', label: '公告标题', width: 150 },
+	{ prop: 'readedNum', label: '已阅次数' },
+	{ prop: 'pushRangesText', label: '公告范围', width: 300 },
+	{
+		prop: 'creationTime',
+		label: '通知时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{
+		prop: 'loseEfficacyTime',
+		label: '失效时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.loseEfficacyTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'creatorOrgName', label: '来源单位', width: 120 },
+	{ prop: 'bulletinStateText', label: '审核状态', width: 120 },
+	{ prop: 'examinOpinion', label: '审核理由', width: 150 },
+	{ prop: 'examinMan.name', label: '审核人' },
+	{
+		prop: 'examinTime',
+		label: '审核时间',
+		width: 170,
+		render: (scope) => {
+			return <span>{formatDate(scope.row.examinTime, 'YYYY-mm-dd HH:MM:SS')}</span>;
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 200, align: 'center' },
+]);
 // 定义变量内容
-const state = reactive<any>({
+const state = reactive({
 	loading: false, // 加载状态
 	queryParams: {
 		// 查询参数
@@ -422,12 +453,6 @@ const onCommit = (row: any, type: string) => {
 		})
 		.catch(() => {});
 };
-// 表格多选
-const multipleTableRef = ref<RefType>();
-const multipleSelection = ref<any>([]);
-const handleSelectionChange = (val: any[]) => {
-	multipleSelection.value = val;
-};
 const params = history.state;
 // 页面加载时
 onMounted(() => {

+ 63 - 59
src/views/auxiliary/orderLexicon/index.vue

@@ -20,53 +20,30 @@
 			</el-form>
 		</el-card>
 		<el-card shadow="never">
-			<div class="mb20">
-				<el-button type="primary" @click="addParameter" v-auth="'auxiliary:orderLexicon:add'">
-					<SvgIcon name="ele-Plus" class="mr5" />新增
-				</el-button>
-				<el-button type="primary" @click="businessTagRemove" v-auth="'auxiliary:orderLexicon:delete'" :disabled="!multipleSelection.length">
-					<SvgIcon name="ele-Delete" class="mr5" />删除
-				</el-button>
-			</div>
-			<!-- 表格 -->
-			<el-table :data="state.tableData" v-loading="state.loading" row-key="id" ref="multipleTableRef" @selection-change="handleSelectionChange">
-				<el-table-column type="selection" width="55" />
-				<el-table-column prop="classify" label="词性分类" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="tag" label="关键词" show-overflow-tooltip width="130"></el-table-column>
-				<el-table-column prop="synonym" label="同义词" show-overflow-tooltip width="130"></el-table-column>
-				<el-table-column label="是否启用" show-overflow-tooltip>
-					<template #default="{ row }">
-						<span>{{ row.isEnable === 1 ? '启用' : '禁用' }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="creatorName" label="创建人" show-overflow-tooltip></el-table-column>
-				<el-table-column label="创建时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="lastModificationName" label="更新人" show-overflow-tooltip></el-table-column>
-				<el-table-column label="更新时间" show-overflow-tooltip width="170">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.lastModificationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="120" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="updateLexicon(row)" v-auth="'auxiliary:orderLexicon:edit'" title="编辑工单词库"> 编辑 </el-button>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
-				</template>
-			</el-table>
-			<!-- 分页 -->
-			<pagination
+			<ProTable
+				ref="proTableRef"
+				:columns="columns"
+				:data="state.tableData"
+				@updateTable="queryList"
+				:loading="state.loading"
 				:total="state.total"
-				v-model:page="state.queryParams.PageIndex"
-				v-model:limit="state.queryParams.PageSize"
-				@pagination="queryList"
-			/>
+				v-model:page-index="state.queryParams.PageIndex"
+				v-model:page-size="state.queryParams.PageSize"
+			>
+				<!-- 表格 header 按钮 -->
+				<template #tableHeader="scope">
+					<el-button type="primary" @click="addParameter" v-auth="'auxiliary:orderLexicon:add'">
+						<SvgIcon name="ele-Plus" class="mr5" />新增
+					</el-button>
+					<el-button type="primary" @click="businessTagRemove" v-auth="'auxiliary:orderLexicon:delete'" :disabled="!scope.isSelected">
+						<SvgIcon name="ele-Delete" class="mr5" />删除
+					</el-button>
+				</template>
+				<!-- 表格操作 -->
+				<template #operation="{ row }">
+					<el-button link type="primary" @click="updateLexicon(row)" v-auth="'auxiliary:orderLexicon:edit'" title="编辑工单词库"> 编辑 </el-button>
+				</template>
+			</ProTable>
 		</el-card>
 		<!--  新增工单词库  -->
 		<order-lexicon-add ref="orderLexiconAddRef" @updateList="queryList" :orderWordClassify="orderWordClassify" />
@@ -75,19 +52,52 @@
 	</div>
 </template>
 
-<script lang="ts" setup name="auxiliaryOrderLexicon">
+<script lang="tsx" setup name="auxiliaryOrderLexicon">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
-import { ElMessage, ElMessageBox, FormInstance } from 'element-plus';
-import { auth } from '@/utils/authFunction';
+import { ElButton, ElMessage, ElMessageBox, FormInstance } from 'element-plus';
 import { orderLexiconBaseData, orderLexiconDelete, orderLexiconList } from '@/api/auxiliary/orderLexicon';
-import dayjs from 'dayjs';
 import { formatDate } from '@/utils/formatTime';
 // 引入组件
 const OrderLexiconAdd = defineAsyncComponent(() => import('@/views/auxiliary/orderLexicon/components/Order-lexicon-add.vue')); // 新增工单词库
 const OrderLexiconEdit = defineAsyncComponent(() => import('@/views/auxiliary/orderLexicon/components/Order-lexicon-edit.vue')); // 编辑工单词库
 
+const proTableRef = ref<RefType>(); // 表格ref
+// 表格配置项
+const columns = ref<any[]>([
+	{ type: 'selection', fixed: 'left', width: 55 },
+	{ prop: 'classify', label: '词性分类', showOverflowTooltip: true },
+	{ prop: 'tag', label: '关键词', width: 130 },
+	{ prop: 'synonym', label: '同义词', width: 130 },
+	{
+		prop: 'isEnable',
+		label: '是否启用',
+
+		render: (scope: any) => {
+			return scope.row.isEnable === 1 ? '启用' : '禁用';
+		},
+	},
+	{ prop: 'creatorName', label: '创建人', showOverflowTooltip: true },
+	{
+		prop: 'creationTime',
+		label: '创建时间',
+		width: 170,
+		render: (scope: any) => {
+			return formatDate(scope.row.creationTime, 'YYYY-mm-dd HH:MM:SS');
+		},
+	},
+	{ prop: 'lastModificationName', label: '更新人', showOverflowTooltip: true },
+	{
+		prop: 'lastModificationTime',
+		label: '更新时间',
+		width: 170,
+		render: (scope: any) => {
+			return formatDate(scope.row.lastModificationTime, 'YYYY-mm-dd HH:MM:SS');
+		},
+	},
+	{ prop: 'operation', label: '操作', fixed: 'right', width: 100, align: 'center' },
+]);
 // 定义变量内容
-const state = reactive<any>({
+const state = reactive({
 	loading: false, // 加载状态
 	queryParams: {
 		// 查询参数
@@ -141,16 +151,10 @@ const orderLexiconEditRef = ref<RefType>();
 const updateLexicon = (row: any) => {
 	orderLexiconEditRef.value.openDialog(row.id);
 };
-// 表格多选
-const multipleTableRef = ref<RefType>();
-const multipleSelection = ref<any>([]);
-const handleSelectionChange = (val: any[]) => {
-	multipleSelection.value = val;
-};
 // 删除词库
 const businessTagRemove = () => {
-	const ids = multipleSelection.value.map((item: any) => item.id);
-	const names = multipleSelection.value.map((item: any) => item.tag);
+	const ids = proTableRef.value.selectedList.map((item: any) => item.id);
+	const names = proTableRef.value.selectedList.map((item: any) => item.tag);
 	ElMessageBox.confirm(`您确定要删除:【${names}】,是否继续?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',

+ 0 - 1
src/views/business/citizen/index.vue

@@ -146,7 +146,6 @@ const onLexiconDelete = () => {
 		.then(() => {
 			citizenDelete({ ids }).then(() => {
 				ElMessage.success('操作成功');
-				proTableRef.value.clearSelection();
 				queryList();
 			});
 		})

+ 0 - 2
src/views/business/order/index.vue

@@ -560,7 +560,6 @@ const onObserve = () => {
 		.then(() => {
 			addObserve({ orderIds: ids }).then(() => {
 				ElMessage.success('操作成功');
-        proTableRef.value.clearSelection();
 				queryList();
 			});
 		})
@@ -584,7 +583,6 @@ const onEnd = () => {
 		.then(() => {
 			addEnd({ orderIds: ids }).then(() => {
 				ElMessage.success('操作成功');
-        proTableRef.value.clearSelection();
 				queryList();
 			});
 		})

+ 25 - 0
src/views/business/publish/component/Order-publish-edit.vue

@@ -23,6 +23,31 @@
 									{{ state.ruleForm.noPubReason }}
 								</el-form-item>
 							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+								<el-form-item label="是否联系">
+									{{ state.ruleForm.isContact ? '是' : '否' }}
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+								<el-form-item label="是否评价">
+									{{ state.ruleForm.isVisited ? '是' : '否' }}
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+								<el-form-item label="网民评价">
+									{{ state.ruleForm.netizenEvaluate?.value }}
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.isVisited">
+								<el-form-item label="评价内容">
+									{{ state.ruleForm.evaluateContent }}
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
+								<el-form-item label="备注">
+									{{ state.ruleForm.remark }}
+								</el-form-item>
+							</el-col>
 						</el-row>
 					</el-col>
 					<el-divider content-position="left">

+ 60 - 8
src/views/business/publish/component/Order-publish.vue

@@ -5,9 +5,9 @@
 				<el-row :gutter="10" class="w100">
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.orderDetail.isProvince">
 						<el-row :gutter="0">
-              <el-divider content-position="left">
-                <el-text tag="b" size="large"> 省工单发布内容 </el-text>
-              </el-divider>
+							<el-divider content-position="left">
+								<el-text tag="b" size="large"> 省工单发布内容 </el-text>
+							</el-divider>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
 								<el-form-item label="是否公开" prop="proPublishState" :rules="[{ required: false, message: '请选择是否公开', trigger: 'change' }]">
 									<el-radio-group v-model="state.ruleForm.proPublishState" :disabled="disabled">
@@ -43,11 +43,56 @@
 									></el-input>
 								</el-form-item>
 							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+								<el-form-item label="是否联系" prop="isContact" :rules="[{ required: true, message: '请选择是否公开', trigger: 'change' }]">
+									<el-radio-group v-model="state.ruleForm.isContact" :disabled="disabled">
+										<el-radio :label="true">是</el-radio>
+										<el-radio :label="false">否</el-radio>
+									</el-radio-group>
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+								<el-form-item label="是否评价" prop="isVisited" :rules="[{ required: true, message: '请选择是否公开', trigger: 'change' }]">
+									<el-radio-group v-model="state.ruleForm.isVisited" :disabled="disabled">
+										<el-radio :label="true">是</el-radio>
+										<el-radio :label="false">否</el-radio>
+									</el-radio-group>
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+								<el-form-item label="网民评价" prop="netizen" :rules="[{ required: false, message: '请选择网民评价', trigger: 'change' }]">
+									<el-radio-group v-model="state.ruleForm.netizen" :disabled="disabled">
+										<el-radio :label="item.key" v-for="item in netizenEvaluateType" :key="item.key">{{ item.value }}</el-radio>
+									</el-radio-group>
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.isVisited">
+								<el-form-item label="评价内容" prop="evaluateContent" :rules="[{ required: false, message: '请输入评价内容', trigger: 'blur' }]">
+									<el-input
+										type="textarea"
+										placeholder="请输入评价内容"
+										:autosize="{ minRows: 6, maxRows: 10 }"
+										v-model="state.ruleForm.evaluateContent"
+										:disabled="disabled"
+									></el-input>
+								</el-form-item>
+							</el-col>
+							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
+								<el-form-item label="备注" prop="remark" :rules="[{ required: false, message: '请输入备注', trigger: 'blur' }]">
+									<el-input
+										type="textarea"
+										placeholder="请输入备注"
+										:autosize="{ minRows: 6, maxRows: 10 }"
+										v-model="state.ruleForm.remark"
+										:disabled="disabled"
+									></el-input>
+								</el-form-item>
+							</el-col>
 						</el-row>
 					</el-col>
-          <el-divider content-position="left">
-            <el-text tag="b" size="large"> 市工单发布内容 </el-text>
-          </el-divider>
+					<el-divider content-position="left">
+						<el-text tag="b" size="large"> 市工单发布内容 </el-text>
+					</el-divider>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
 						<el-form-item label="工单标题"> {{ state.publishDetail.orderTitle }} </el-form-item>
 					</el-col>
@@ -129,6 +174,8 @@ const state = reactive<any>({
 	loading: false, // 是否显示加载
 	ruleForm: {
 		proPublishState: false, // 是否公开
+		isContact: true, // 是否联系
+		isVisited: true, // 是否评价
 		feedBackPhone: '', // 反馈人电话
 		noPubReason: '', // 不公开原因
 		arrangeContent: '', // 整改后内容
@@ -143,6 +190,7 @@ const ruleFormRef = ref<RefType>(); // 表单ref
 const idNamesArray = ref<EmptyArrayType>(); // 部门列表
 const disabled = ref<boolean>(false); //是否查看详情
 const dialogTitle = ref<string>('发布详情'); // 弹窗标题
+const netizenEvaluateType = ref<EmptyArrayType>([]);
 /*
  * @param row 工单详情
  * @param isDisabled 是否查看详情
@@ -156,9 +204,10 @@ const openDialog = async (row: any, isDisabled: boolean = false) => {
 			state.orderDetail = row.order ?? {};
 			const [response, res] = await Promise.all([publishOrderDetail(row.id), baseData(state.orderDetail.id)]);
 			state.ruleForm = response.result ?? {};
-
+			state.ruleForm.netizen = response.result?.netizenEvaluate?.key;
 			state.publishDetail = res.result ?? {};
 			idNamesArray.value = res.result?.idNames ?? [];
+			netizenEvaluateType.value = res.result?.netizenEvaluateType ?? [];
 
 			dialogTitle.value = '发布详情';
 			state.loading = false;
@@ -171,6 +220,7 @@ const openDialog = async (row: any, isDisabled: boolean = false) => {
 			state.ruleForm.arrangeContent = state.publishDetail.content;
 			state.ruleForm.arrangeOpinion = state.publishDetail.actualOpinion;
 			idNamesArray.value = res.result?.idNames ?? [];
+			netizenEvaluateType.value = res.result?.netizenEvaluateType ?? [];
 			dialogTitle.value = '工单发布';
 			state.loading = false;
 			state.dialogVisible = true;
@@ -195,7 +245,9 @@ const onPublish = (formEl: FormInstance | undefined) => {
 		if (!valid) return;
 		state.loading = true;
 		let idNames = [];
-		if (state.ruleForm.idNames.length > 0) { // 如果选择了部门
+		state.ruleForm.netizenEvaluate = netizenEvaluateType.value.find((item) => item.key === state.ruleForm.netizen);
+		if (state.ruleForm.idNames.length > 0) {
+			// 如果选择了部门
 			idNames = [...state.ruleForm.idNames];
 		} else {
 			idNames = [{ key: state.publishDetail.actualHandleOrgName?.key, value: state.publishDetail.actualHandleOrgName?.value }];

+ 1 - 3
src/views/business/publish/index.vue

@@ -57,7 +57,6 @@
 <script setup lang="tsx" name="orderPublish">
 import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { ElButton, ElMessage, FormInstance } from 'element-plus';
-import { auth } from '@/utils/authFunction';
 import { throttle } from '@/utils/tools';
 import { formatDate } from '@/utils/formatTime';
 import { publishedList } from '@/api/business/publish';
@@ -79,7 +78,7 @@ const columns = ref<any[]>([
 	{ prop: 'isProvince', label: '省/市工单', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
 	{ prop: 'order.counterSignTypeText', label: '是否会签', width: 100 },
-	{ prop: 'order.sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'order.sourceChannel', label: '来源方式', width: 120 },
 	{ prop: 'order.statusText', label: '工单状态', width: 100 },
 	{ prop: 'order.acceptType', label: '受理类型', width: 150 },
 	{ prop: 'order.hotspotName', label: '热点分类', width: 200 },
@@ -151,7 +150,6 @@ const resetQuery = throttle((formEl: FormInstance | undefined) => {
 	formEl.resetFields();
 	queryList();
 }, 300);
-// 表格多选
 // 修改发布
 const orderPublishEditRef = ref<RefType>(); // 工单发布修改ref
 const editPublish = (row: any) => {

+ 20 - 11
src/views/login/index.vue

@@ -5,19 +5,19 @@
 				<Motion>
 					<h4 class="login-content-title">{{ getThemeConfig.globalViceTitle }}</h4>
 				</Motion>
-        <Motion>
-<!--          <div v-if="!state.isScan">-->
-<!--            <el-tabs v-model="state.tabsActiveName">
+				<Motion>
+					<!--          <div v-if="!state.isScan">-->
+					<!--            <el-tabs v-model="state.tabsActiveName">
               <el-tab-pane label="账号登录" name="account">-->
-                <account />
-<!--              </el-tab-pane>
+					<account />
+					<!--              </el-tab-pane>
               <el-tab-pane label="手机号登录" name="mobile">
                 <Mobile />
               </el-tab-pane>
             </el-tabs>-->
-<!--          </div>-->
-        </Motion>
-<!--				<Scan v-if="state.isScan" />
+					<!--          </div>-->
+				</Motion>
+				<!--				<Scan v-if="state.isScan" />
 				<div class="login-content-main-scan" @click="state.isScan = !state.isScan">
 					<i class="iconfont" :class="state.isScan ? 'icon-diannao1' : 'icon-barcode-qr'"></i>
 					<div class="login-content-main-scan-delta"></div>
@@ -28,12 +28,13 @@
 </template>
 
 <script setup lang="ts" name="loginIndex">
-import { defineAsyncComponent, reactive, onMounted, computed } from 'vue';
+import { defineAsyncComponent, reactive, onMounted, computed, onBeforeMount } from 'vue';
 import { storeToRefs } from 'pinia';
 import { useThemeConfig } from '@/stores/themeConfig';
 import { NextLoading } from '@/utils/loading';
 import { getImageUrl } from '@/utils/tools';
 import Motion from '@/utils/motion';
+import { loginPageInfo } from '@/api/login';
 // 定义接口来定义对象的类型
 interface LoginState {
 	tabsActiveName: string;
@@ -56,6 +57,14 @@ let bgImg = themeConfig.value.loginImage ?? `url(${getImageUrl('login/bg.png')})
 const getThemeConfig = computed(() => {
 	return themeConfig.value;
 });
+onBeforeMount(async () => {
+	// 获取登录页的背景图和系统名称等
+	const res: any = await loginPageInfo();
+	const globalTitle = res.result.sysName.join('|') ?? ''; // 标题名称
+	const loginImage = res.result.loginImage ? `url${res.result.loginImage}` : `url(${getImageUrl('login/bg.png')})`; // 登录页背景图
+	const isLoginMessageCode = res.result.isLoginMessageCode; // 是否开启短信验证码
+	storesThemeConfig.setThemeConfig(Object.assign(themeConfig.value, { globalTitle, loginImage, isLoginMessageCode }));
+});
 // 页面加载时
 onMounted(async () => {
 	NextLoading.done();
@@ -63,8 +72,8 @@ onMounted(async () => {
 </script>
 
 <style scoped lang="scss">
-:deep(.el-tabs__item){
-  font-size: var(--el-font-size-medium);
+:deep(.el-tabs__item) {
+	font-size: var(--el-font-size-medium);
 }
 .login-container {
 	position: relative;

+ 0 - 1
src/views/query/end/index.vue

@@ -155,7 +155,6 @@ const oncancelEnd = () => {
 		.then(() => {
 			deleteEnd({ ids }).then(() => {
 				ElMessage.success('操作成功');
-				proTableRef.value.clearSelection();
 				queryList();
 			});
 		})

+ 0 - 1
src/views/query/observe/index.vue

@@ -155,7 +155,6 @@ const oncancelObserve = () => {
 		.then(() => {
 			deleteObserve({ ids }).then(() => {
 				ElMessage.success('操作成功');
-        proTableRef.value.clearSelection();
 				queryList();
 			});
 		})

+ 1 - 3
src/views/todo/publish/index.vue

@@ -90,7 +90,6 @@ const state = reactive({
 });
 const proTableRef = ref<RefType>(); // 表格ref
 const selectable = (row: any) => {
-	console.log(row, '21');
 	//设置省工单和会签工单不可选(不可批量发布)
 	return !row.isProvince && row.counterSignType === null;
 };
@@ -101,7 +100,7 @@ const columns = ref<any[]>([
 	{ prop: 'isProvince', label: '省/市工单', width: 100 },
 	{ prop: 'statusText', label: '发布状态', width: 100 },
 	{ prop: 'title', label: '工单标题', width: 300 },
-	{ prop: 'sourceChannel', label: '来源方式', width: 100 },
+	{ prop: 'sourceChannel', label: '来源方式', width: 120 },
 	{ prop: 'acceptType', label: '受理类型', width: 150 },
 	{ prop: 'counterSignTypeText', label: '是否会签', width: 100 },
 	{ prop: 'actualHandleOrgName', label: '接办对象', width: 150 },
@@ -172,7 +171,6 @@ const publishMultiple = () => {
 		.then(() => {
 			batchPublishOrder({ ids }).then(() => {
 				ElMessage.success('操作成功');
-        proTableRef.value.clearSelection();
 				queryList();
 			});
 		})

+ 0 - 1
src/views/todo/visit/index.vue

@@ -172,7 +172,6 @@ const queryList = throttle(() => {
 		.then((res: any) => {
 			state.tableData = res.result?.items ?? [];
 			state.total = res.result?.total ?? 0;
-      proTableRef.value.clearSelection();
 			state.loading = false;
 		})
 		.catch(() => {