Browse Source

fix. 修复修改核查内容 涉及单位修改不生效的问题。

fix 修复单位会签,当连续会签时会保留上一个件会签的记录的问题。

fit. 模型超市-模型分类,增加模型数量显示。
fit. 问题下发,新增是否开启流程选项。如果选择关闭流程,问题下发后对应办理单位无待办任务;
perf. 问题下发调整: a、枪支管理:监督管理-专项督察-选择“枪支管理”取消“通报期数”的必填项 b、主办层级描述修改,并将标红后半句:如主办层级为 市局主办,则由督察支队办理;如主办层级为 二级机构主办,则由督察部门办理,可进一步下发;如主办层级为 三级机构主办,则由所队办理。 c、指定具体办理单位 修改为 “指定办理单位” d、主办层级与指定办理单位需灵活关联,a.如“主办层级”选择二级主办,关联办理单位为三级机构,需友好提示“当前选择二级机构主办,指定办理单位请选择二级机构!”b.需根据主办层级的修改,关联办理单位可选择的范围,并提示。
main
wxc 1 year ago
parent
commit
fdcf5530a0
  1. 29
      src/components/file/list.vue
  2. 13
      src/components/model-risk-tree.vue
  3. 64
      src/components/negative/add.vue
  4. 8
      src/components/negative/apply-countersign.vue
  5. 6
      src/components/negative/countersign.vue
  6. 4
      src/views/sensitivePerception/Model.vue
  7. 2
      src/views/sensitivePerception/RiskPersonnel.vue
  8. 15
      src/views/system/Police.vue

29
src/components/file/list.vue

@ -26,11 +26,11 @@
</a> </a>
</template> </template>
<template v-else>
<div <div
class="item flex end v-center column text-center" class="item flex end v-center column text-center"
:title="item.fileName" :title="item.fileName"
@click="filePreview(item)" @click="filePreview(item)"
v-else
> >
<icon :name="getIconName(item.fileName)" :size="40" /> <icon :name="getIconName(item.fileName)" :size="40" />
<span class="filename">{{ item.fileName }}</span> <span class="filename">{{ item.fileName }}</span>
@ -42,7 +42,6 @@
<icon name="el-icon-CircleCloseFilled" :size="16" /> <icon name="el-icon-CircleCloseFilled" :size="16" />
</a> </a>
</div> </div>
</template>
</div> </div>
</div> </div>
@ -61,10 +60,7 @@
</section> </section>
</div> </div>
</el-scrollbar> </el-scrollbar>
<div <div class="file-content flex center v-center" @click="preview = false">
class="file-content flex center v-center"
@click="preview = false"
>
<div <div
class="img-container flex center" class="img-container flex center"
v-if="getFileType(activeFile.fileName) === FileType.IMG" v-if="getFileType(activeFile.fileName) === FileType.IMG"
@ -128,9 +124,7 @@
</video> </video>
</template> </template>
<template <template
v-else-if=" v-else-if="getFileType(activeFile.fileName) === FileType.WORD"
getFileType(activeFile.fileName) === FileType.WORD
"
> >
<vue-office-docx <vue-office-docx
:src="`${BASE_PATH}/file/stream/${activeFile.filePath}`" :src="`${BASE_PATH}/file/stream/${activeFile.filePath}`"
@ -174,7 +168,13 @@
@click.stop @click.stop
> >
<template #extra> <template #extra>
<el-button type="primary" text size="large" @click="download">下载文件</el-button> <el-button
type="primary"
text
size="large"
@click="download"
>下载文件</el-button
>
</template> </template>
</el-result> </el-result>
</div> </div>
@ -205,12 +205,7 @@
<icon name="el-icon-Close" :size="28" /> <icon name="el-icon-Close" :size="28" />
</button> </button>
<el-button <el-button class="download-btn" @click="download" type="primary" plain>
class="download-btn"
@click="download"
type="primary"
plain
>
<template #icon> <template #icon>
<icon name="el-icon-Download" :size="20" /> <icon name="el-icon-Download" :size="20" />
</template> </template>
@ -290,7 +285,6 @@ function next() {
} }
} }
function wheel(event) { function wheel(event) {
if (event.deltaY > 0 && scale.value > 0.5) { if (event.deltaY > 0 && scale.value > 0.5) {
scale.value -= 0.1; scale.value -= 0.1;
@ -348,7 +342,6 @@ function rotateRight() {
rotate.value -= 90; rotate.value -= 90;
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.file-container { .file-container {

13
src/components/model-risk-tree.vue

@ -13,7 +13,7 @@
:default-expanded-keys="[ROOT_ID]" :default-expanded-keys="[ROOT_ID]"
:props="{ :props="{
label: 'riskName', label: 'riskName',
value: 'id' value: 'id',
}" }"
:filter-node-method="filterNode" :filter-node-method="filterNode"
@node-click="handleClick" @node-click="handleClick"
@ -24,9 +24,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import Icon from "@/components/icon/index.vue"; import Icon from "@/components/icon/index.vue";
import { import { listRiskScoreRuleTree } from "@/api/sensitivePerception/riskScoreRule";
listRiskScoreRuleTree
} from "@/api/sensitivePerception/riskScoreRule";
const ROOT_ID = 0; const ROOT_ID = 0;
const treeData = ref([ const treeData = ref([
@ -75,16 +73,16 @@ function renderContent(
h( h(
"span", "span",
{ {
title: node.label + '('+node.ruleDesc+')', title: node.label + "(" + node.ruleDesc + ")",
}, },
node.label node.label
), ),
h( h(
"span", "span",
{ {
class: 'ml-8 text-primary' class: "ml-8 text-primary",
}, },
node.data.size ? `(${node.data.size })` : '' node.data.size ? `(${node.data.size})` : ""
) )
); );
} }
@ -126,6 +124,7 @@ function getModelId(arr, node) {
getModelId(arr, item); getModelId(arr, item);
}); });
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep() { :deep() {

64
src/components/negative/add.vue

@ -1,5 +1,5 @@
<template> <template>
<el-dialog title="问题录入" width="54vw" :lock-scroll="false" top="5vh"> <el-dialog title="问题下发" width="54vw" :lock-scroll="false" top="5vh">
<el-scrollbar <el-scrollbar
height="75vh" height="75vh"
v-loading="loading" v-loading="loading"
@ -108,8 +108,8 @@
label="通报期数" label="通报期数"
prop="reportNumber" prop="reportNumber"
:rules="{ :rules="{
required: true, required: form.specialSupervision !== '2',
message: '请选择通报期数', message: '请输入通报期数',
trigger: ['blur'], trigger: ['blur'],
}" }"
> >
@ -293,7 +293,19 @@
tips="为便于“办理单位”更全面了解问题详情,请上传相关附件,如现场督察、数字督察等相关照片、视频及其他佐证材料。" tips="为便于“办理单位”更全面了解问题详情,请上传相关附件,如现场督察、数字督察等相关照片、视频及其他佐证材料。"
/> />
</el-form-item> </el-form-item>
<el-form-item label="流程" prop="">
<el-switch
v-model="form.flowFlag"
inline-prompt
active-text="开启"
inactive-text="关闭"
:active-value="true"
:inactive-value="false"
/>
</el-form-item>
</div> </div>
<template v-if="form.flowFlag">
<el-divider />
<h2>办理单位</h2> <h2>办理单位</h2>
<div class="add-negation-container"> <div class="add-negation-container">
<el-form-item <el-form-item
@ -319,20 +331,19 @@
</el-select> </el-select>
<div class="tips mt-10"> <div class="tips mt-10">
<p> <p>
如主办层级 市局主办 则由市局直属支队办理 如主办层级 市局主办
则由督察支队办理
</p> </p>
<p> <p>
如主办层级 如主办层级为 二级机构主办则由督察部门办理可进一步下发
二级机构主办时则由涉及单位的二级机构办理
</p> </p>
<p> <p style="color: var(--danger-color)">
如主办层级 三级机构主办时 如主办层级为 三级机构主办则由所队办理
则由涉及单位办理
</p> </p>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label="指定具体办理单位" label="指定办理单位"
prop="departId" prop="departId"
:rules="{ :rules="{
required: true, required: true,
@ -343,7 +354,9 @@
<div class="flex gap"> <div class="flex gap">
<div style="width: 280px"> <div style="width: 280px">
<template <template
v-if="form.hostLevel === HostLevel.THREE" v-if="
form.hostLevel === HostLevel.THREE
"
> >
<depart-tree-select <depart-tree-select
v-model="form.departId" v-model="form.departId"
@ -353,7 +366,10 @@
<el-tree-select <el-tree-select
v-else v-else
:data="departs" :data="departs"
:props="{ label: 'shortName', value: 'id' }" :props="{
label: 'shortName',
value: 'id',
}"
node-key="id" node-key="id"
clearable clearable
filterable filterable
@ -374,7 +390,10 @@
</div> </div>
<div class="tips mt-10"> <div class="tips mt-10">
<p>问题涉及单位 指与该问题相关的单位</p> <p>问题涉及单位 指与该问题相关的单位</p>
<p>指定具体办理单位 指将问题分派给哪个单位办理</p> <p>
指定具体办理单位
指将问题分派给哪个单位办理
</p>
</div> </div>
</el-form-item> </el-form-item>
</div> </div>
@ -392,14 +411,15 @@
<time-limit-select <time-limit-select
v-model="form.timeLimit" v-model="form.timeLimit"
v-model:maxSignDuration="form.maxSignDuration" v-model:maxSignDuration="form.maxSignDuration"
v-model:maxHandleDuration="form.maxHandleDuration" v-model:maxHandleDuration="
form.maxHandleDuration
"
v-model:maxExtensionDuration=" v-model:maxExtensionDuration="
form.maxExtensionDuration form.maxExtensionDuration
" "
/> />
</el-form-item> </el-form-item>
</div> </div>
<div> <div>
<h2>审批流程</h2> <h2>审批流程</h2>
<div class="add-negation-container"> <div class="add-negation-container">
@ -419,7 +439,9 @@
:value="item.dictValue" :value="item.dictValue"
>{{ item.dictLabel >{{ item.dictLabel
}}{{ }}{{
item.remark ? `(${item.remark})` : "" item.remark
? `(${item.remark})`
: ""
}}</el-radio }}</el-radio
> >
</el-radio-group> </el-radio-group>
@ -434,6 +456,7 @@
</el-form-item> </el-form-item>
</div> </div>
</div> </div>
</template>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
<footer class="flex end"> <footer class="flex end">
@ -449,7 +472,7 @@
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import moment from 'moment' import moment from "moment";
import { import {
HostLevel, HostLevel,
TimeLimit, TimeLimit,
@ -487,6 +510,7 @@ const form = ref({
hostLevel: HostLevel.THREE, hostLevel: HostLevel.THREE,
timeLimit: TimeLimit.WORK_137, timeLimit: TimeLimit.WORK_137,
approvalFlow: ApprovalFlow.SECOND, approvalFlow: ApprovalFlow.SECOND,
flowFlag: true
}); });
watch( watch(
@ -546,6 +570,10 @@ function handleSelectDepart(row, node) {
} }
function handleLinkDepart() { function handleLinkDepart() {
if (form.value.hostLevel === HostLevel.SECOND) {
feedback.msgWarning('当前选择二级机构主办,指定办理单位请选择二级机构!')
return
}
form.value.departId = form.value.involveDepartId; form.value.departId = form.value.involveDepartId;
form.value.departName = form.value.involveDepartName; form.value.departName = form.value.involveDepartName;
} }
@ -560,7 +588,7 @@ function handleChangeHostLevel(val) {
} }
function disabledDate(time) { function disabledDate(time) {
return time.getTime() < moment('1949-10-01', 'YYYY-MM-DD').valueOf() return time.getTime() < moment("1949-10-01", "YYYY-MM-DD").valueOf();
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

8
src/components/negative/apply-countersign.vue

@ -65,6 +65,14 @@ const formData = ref({
}) })
const formRef = ref() const formRef = ref()
const negative = inject('negative')
watch(() => negative.value.id, () => {
formData.value = {
countersignDeparts: [{}]
}
})
function handleAddDepart() { function handleAddDepart() {
formData.value.countersignDeparts.push({}) formData.value.countersignDeparts.push({})
} }

6
src/components/negative/countersign.vue

@ -20,6 +20,12 @@
const formData = ref({}); const formData = ref({});
const formRef = ref(); const formRef = ref();
const negative = inject('negative')
watch(() => negative.value.id, () => {
formData.value = {}
})
async function validate() { async function validate() {
await formRef.value.validate(); await formRef.value.validate();
return formData.value; return formData.value;

4
src/views/sensitivePerception/Model.vue

@ -12,7 +12,8 @@
@click="handleChangeClass(item.id)" @click="handleChangeClass(item.id)"
:active="query.classId === item.id" :active="query.classId === item.id"
> >
{{ item.name }} <span :title="item.name">{{ item.name }}</span>
<span class="ml-8 text-primary text-bold">{{ item.size }}</span>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -980,6 +981,7 @@ function goClue() {
line-height: 47px; line-height: 47px;
padding-left: 36px; padding-left: 36px;
white-space: nowrap; white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
&:hover, &:hover,
&[active="true"] { &[active="true"] {

2
src/views/sensitivePerception/RiskPersonnel.vue

@ -66,7 +66,7 @@
</header> </header>
<div class="table-container"> <div class="table-container">
<el-table :data="list"> <el-table :data="list">
<el-table-column label="姓名" prop="name" width="100" /> <el-table-column label="姓名" prop="name" width="80" />
<el-table-column <el-table-column
label="性别" label="性别"
prop="gender" prop="gender"

15
src/views/system/Police.vue

@ -475,6 +475,19 @@
<el-button type="primary" @click="submit">确定</el-button> <el-button type="primary" @click="submit">确定</el-button>
</footer> </footer>
</el-dialog> </el-dialog>
<el-dialog title="删除" v-model="delDialog">
<el-form>
<el-form-item title="删除原因">
<el-select>
<el-option></el-option>
</el-select>
</el-form-item>
<el-form-item title="其他原因">
<el-input />
</el-form-item>
</el-form>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { BASE_PATH } from "@/api/request"; import { BASE_PATH } from "@/api/request";
@ -651,6 +664,8 @@ function handleError(result) {
importLoading.close(); importLoading.close();
feedback.msgError(result.message || "上传失败!"); feedback.msgError(result.message || "上传失败!");
} }
const delDialog = ref(false)
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>
Loading…
Cancel
Save