Browse Source

Merge remote-tracking branch 'origin/master'

main
parent
commit
9d26b928bd
  1. 1
      .gitignore
  2. 1
      src/assets/icons/rotate-left.svg
  3. 1
      src/assets/icons/rotate-right.svg
  4. 15
      src/components/datav/chart-bar.vue
  5. 67
      src/components/file/list.vue
  6. 54
      src/components/negative/add.vue
  7. 68
      src/components/negative/confirmation-completion.vue
  8. 8
      src/components/negative/countdown.vue
  9. 15
      src/components/negative/description.vue
  10. 1
      src/components/negative/dialog.vue
  11. 2
      src/enums/dictEnums.ts
  12. 2
      src/utils/util.ts
  13. 2
      src/views/Home.vue
  14. 19
      src/views/sensitivePerception/DepartNegative.vue
  15. 1
      src/views/system/User.vue
  16. 301
      src/views/work/Query.vue
  17. 8
      vite.config.ts

1
.gitignore vendored

@ -2,6 +2,7 @@
/node_modules/ /node_modules/
/v2/ /v2/
*.zip *.zip
.idea
package-lock.json package-lock.json
pnpm-lock.yaml pnpm-lock.yaml

1
src/assets/icons/rotate-left.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1710476192729" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1635" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M541.226667 66.517333L393.045333 217.685333a21.333333 21.333333 0 0 0 0 29.866667l147.84 150.826667a21.333333 21.333333 0 0 0 28.16 2.090666l2.346667-2.090666 27.050667-27.605334a21.333333 21.333333 0 0 0 0-29.866666l-69.888-71.338667a304.64 304.64 0 1 1-318.421334 352.682667l-1.024-6.826667a176.554667 176.554667 0 0 1-0.64-5.632 21.333333 21.333333 0 0 0-22.314666-19.114667l-42.666667 2.261334a21.333333 21.333333 0 0 0-20.224 22.4l0.085333 1.024 1.194667 10.496A389.973333 389.973333 0 1 0 539.178667 184.746667l59.306666-60.458667a21.333333 21.333333 0 0 0 0-29.866667l-27.093333-27.605333a21.333333 21.333333 0 0 0-30.165333-0.298667z" p-id="1636"></path></svg>

After

Width:  |  Height:  |  Size: 976 B

1
src/assets/icons/rotate-right.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1710476185031" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1494" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M482.773333 66.517333l148.181334 151.168a21.333333 21.333333 0 0 1 0 29.866667l-147.84 150.826667a21.333333 21.333333 0 0 1-28.16 2.090666l-2.346667-2.090666-27.050667-27.605334a21.333333 21.333333 0 0 1 0-29.866666l69.888-71.338667a304.64 304.64 0 1 0 318.421334 352.682667l1.024-6.826667c0.170667-1.408 0.426667-3.285333 0.64-5.632a21.333333 21.333333 0 0 1 22.314666-19.114667l42.666667 2.261334a21.333333 21.333333 0 0 1 20.224 22.4l-0.085333 1.024-1.194667 10.496A389.973333 389.973333 0 1 1 484.821333 184.746667l-59.306666-60.458667a21.333333 21.333333 0 0 1 0-29.866667l27.093333-27.605333a21.333333 21.333333 0 0 1 30.165333-0.298667z" p-id="1495"></path></svg>

After

Width:  |  Height:  |  Size: 978 B

15
src/components/datav/chart-bar.vue

@ -5,16 +5,16 @@
</div> </div>
<div> <div>
<div <div
class="flex v-center bar-item between wrap" class="flex v-center bar-item wrap between"
v-for="item in data" v-for="item in data"
:size="size" :size="size"
:style="{ '--label-width': `${labelWidth}px` }" :style="{ '--label-width': `${labelWidth}px` }"
:position="labelPosition" :position="labelPosition"
> >
<span class="bar-item-label mr-10"> <span class="bar-item-label mr-8">
{{ item.label }} {{ item.label }}
</span> </span>
<div class="bar-item_content mr-16"> <div class="bar-item_content mr-8" :long="!item.denominator">
<div <div
class="bar-item_content-bar" class="bar-item_content-bar"
:style="{ :style="{
@ -23,9 +23,9 @@
}" }"
></div> ></div>
</div> </div>
<span class="mr-16">{{ item.value }}</span> <span >{{ item.value }}</span>
<span <span
class="bar-item_remark text-right" class="bar-item_remark text-right ml-8"
v-if="item.denominator" v-if="item.denominator"
style="min-width: 40px" style="min-width: 40px"
> >
@ -154,7 +154,10 @@ function getColor(val) {
} }
} }
.bar-item_content { .bar-item_content {
width: calc(100% - var(--label-width) - 80px); width: calc(100% - var(--label-width) - 16px - 20px);
&[long=false] {
width: calc(100% - var(--label-width) - 36px - 58px);
}
.bar-item_content-bar { .bar-item_content-bar {
width: 0; width: 0;
height: 9px; height: 9px;

67
src/components/file/list.vue

@ -64,11 +64,11 @@
<div <div
class="file-content flex center v-center" class="file-content flex center v-center"
@click="preview = false" @click="preview = false"
@wheel="wheel"
> >
<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"
@wheel="wheel"
> >
<img <img
:src="`${BASE_PATH}/file/stream/${activeFile.filePath}`" :src="`${BASE_PATH}/file/stream/${activeFile.filePath}`"
@ -84,7 +84,7 @@
/> />
<button <button
class="rotate-left-btn pointer" class="rotate-left-btn pointer"
@click.stop="rotateLeft" @click.stop.prevent="rotateLeft"
size="small" size="small"
title="左旋转" title="左旋转"
> >
@ -92,7 +92,7 @@
</button> </button>
<button <button
class="rotate-right-btn pointer" class="rotate-right-btn pointer"
@click.stop="rotateRight" @click.stop.prevent="rotateRight"
size="small" size="small"
title="右旋转" title="右旋转"
> >
@ -288,6 +288,67 @@ function next() {
filePreview(props.files[index + 1]); filePreview(props.files[index + 1]);
} }
} }
function wheel(event) {
if (event.deltaY > 0 && scale.value > 0.5) {
scale.value -= 0.1;
}
if (event.deltaY < 0) {
scale.value += 0.1;
}
}
function mousedown() {
moveFlag = true;
initialX = event.clientX;
initialY = event.clientY;
}
function mousemove(event) {
if (!moveFlag) {
return;
}
if (rotate.value % 360 === 0) {
translateX.value += event.clientX - initialX;
translateY.value += event.clientY - initialY;
}
if (rotate.value === 90) {
translateY.value -= event.clientX - initialX;
translateX.value += event.clientY - initialY;
}
if (rotate.value === 180) {
translateX.value -= event.clientX - initialX;
translateY.value -= event.clientY - initialY;
}
if (rotate.value === 270) {
translateY.value += event.clientX - initialX;
translateX.value -= event.clientY - initialY;
}
initialX = event.clientX;
initialY = event.clientY;
}
function mouseup(event) {
moveFlag = false;
}
function rotateLeft() {
if (rotate.value === 360) {
rotate.value = 0;
} else {
rotate.value += 90;
}
}
function rotateRight() {
if (rotate.value === 0) {
rotate.value = 270;
} else {
rotate.value -= 90;
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.file-container { .file-container {

54
src/components/negative/add.vue

@ -88,7 +88,47 @@
</el-select> </el-select>
</el-form-item-ext> </el-form-item-ext>
</el-col> </el-col>
</el-row>
<el-row v-if="form.problemSourcesCode === ProblemSources.ZXDC">
<el-col :span="12">
<el-form-item
label="专项督察"
prop="specialSupervision"
:rules="{
required: true,
message: '请选择专项督察',
trigger: ['blur'],
}"
>
<el-select
v-model="form.specialSupervision"
clearable
>
<el-option
v-for="item in dict.specialSupervision"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="通报期数"
prop="reportNumber"
:rules="{
required: true,
message: '请选择通报期数',
trigger: ['blur'],
}"
>
<el-input placeholder="请输入" v-model="form.reportNumber" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="涉及案件/警情编号" label="涉及案件/警情编号"
@ -361,6 +401,10 @@
>关联问题涉及单位</el-button >关联问题涉及单位</el-button
> >
</div> </div>
<div class="tips mt-10">
<p>问题涉及单位 指与该问题相关的单位</p>
<p>指定具体办理单位 指将问题分派给哪个单位办理</p>
</div>
</el-form-item> </el-form-item>
</div> </div>
<h2>办理时限</h2> <h2>办理时限</h2>
@ -452,8 +496,16 @@ const dict = catchStore.getDicts([
"hostLevel", "hostLevel",
"timeLimit", "timeLimit",
"approvalFlow", "approvalFlow",
"specialSupervision"
]); ]);
const props = defineProps({
modeType: {
type: String,
default: 'add'
}
})
const emit = defineEmits(["close"]); const emit = defineEmits(["close"]);
const form = ref({ const form = ref({

68
src/components/negative/confirmation-completion.vue

@ -0,0 +1,68 @@
<template>
<el-dialog title="认定办结">
<h2>问题符文情况</h2>
<el-form>
<h3>涉及人员</h3>
<div class="row">
<div class="col col-6">
<label>姓名</label>
<span>{{ negative.responderName }}</span>
</div>
<div class="col col-6">
<label>警号</label>
<span>{{ negative.contactPhone }}</span>
</div>
<div class="col col-12">
<label>问题类型</label>
<span>{{ negative.contactPhone }}</span>
</div>
</div>
<el-form-item label="严重等级">
</el-form-item>
<h4>问题赋分</h4>
<el-row>
<el-col :span="8">
<div>问题严重等级</div>
<div>0.3严重影响 赋分增加 30%</div>
</el-col>
<el-col :span="8">
<div>问题严重等级</div>
<div>0.53 赋分增加 50%</div>
</el-col>
<el-col :span="8">
<div>问题严重等级</div>
<div>0.15问题发生率xxx xxx, 赋分增加 15%</div>
</el-col>
</el-row>
<div>
<p>一般影响当问题导致一般性投诉或轻微的内部管理问题时分值为基础分值 </p>
<p>严重影响当问题导致较大投诉或内部管理问题时分值将在基础分值的基础上增加 30%</p>
<p>重大影响当问题导致重大法律责任或产生严重负面社会影响时分值将在基础分值的基础上增加 80%</p>
</div>
<h2>问题标签设定</h2>
<p>为问题设定督察成放方面的标签方便后期根据标签快速查找相关问题设定的标签不要与问题现有属性重复</p>
<h2>认定办结情况</h2>
<el-row>
<el-col :span="12">
<el-form-item label="核查办理情况"></el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="佐证材料情况"></el-form-item>
</el-col>
</el-row>
<el-form-item label="认定办结意见">
<el-input type="textarea" />
</el-form-item>
</el-form>
<footer class="flex between v-center">
<el-button>取消</el-button>
<el-button type="primary">认定办结</el-button>
</footer>
</el-dialog>
</template>
<script setup>
</script>
<style lang="scss" scoped>
</style>

8
src/components/negative/countdown.vue

@ -28,6 +28,7 @@
</template> </template>
</div> </div>
<div class="tips">剩余处理时间</div> <div class="tips">剩余处理时间</div>
<div class="tips mt-8" style="font-size: 12px" v-if="extensionDays > 0">延期{{ extensionDays }}</div>
</div> </div>
</el-progress> </el-progress>
<div v-else class="countdown-container_danger flex center v-center column"> <div v-else class="countdown-container_danger flex center v-center column">
@ -49,7 +50,8 @@
<span></span> <span></span>
</template> </template>
</div> </div>
<span>已超时</span> <div>已超时</div>
<div class="mt-8 text-small" v-if="extensionDays > 0">延期{{ extensionDays }}</div>
</div> </div>
</template> </template>
<script setup> <script setup>
@ -68,6 +70,10 @@ const props = defineProps({
type: Number, type: Number,
default: 100, default: 100,
}, },
extensionDays: {
type: Number,
default: 0
}
}); });
const emit = defineEmits(["update:time"]); const emit = defineEmits(["update:time"]);

15
src/components/negative/description.vue

@ -34,6 +34,14 @@
<label>业务类别</label> <label>业务类别</label>
<span>{{ negative.businessTypeName }}</span> <span>{{ negative.businessTypeName }}</span>
</div> </div>
<div class="col col-6" v-if="negative.specialSupervision">
<label>专项督察</label>
<span>{{ getDictLable(dict.specialSupervision, negative.specialSupervision) }}</span>
</div>
<div class="col col-6" v-if="negative.reportNumber">
<label>警情期数</label>
<span>{{ negative.reportNumber }}</span>
</div>
<div class="col col-6"> <div class="col col-6">
<label>涉及警种</label> <label>涉及警种</label>
<span>{{ negative.policeTypeName }}</span> <span>{{ negative.policeTypeName }}</span>
@ -64,8 +72,13 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { getDictLable } from "@/utils/util";
const negative = inject('negative') const negative = inject('negative')
import useCatchStore from "@/stores/modules/catch";
const catchSotre = useCatchStore();
const dict = catchSotre.getDicts([
"specialSupervision"
]);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.info-container { .info-container {

1
src/components/negative/dialog.vue

@ -81,6 +81,7 @@
<negative-countdown <negative-countdown
v-model:time="remainingDuration" v-model:time="remainingDuration"
:max-time="maxDuration" :max-time="maxDuration"
:extensionDays="negative.extensionDays"
/> />
</template> </template>
<negative-action-history /> <negative-action-history />

2
src/enums/dictEnums.ts

@ -55,6 +55,8 @@ export enum ProblemSources {
JZXX = '23', JZXX = '23',
// 12337信访 // 12337信访
XF12337 = '24', XF12337 = '24',
// 专项督察
ZXDC = '15',
// 其他 // 其他
XF_QT = '25' XF_QT = '25'
} }

2
src/utils/util.ts

@ -321,7 +321,7 @@ export function getFileType(fileName) {
if (fileName.endsWith('.pdf')) { if (fileName.endsWith('.pdf')) {
return FileType.PDF; return FileType.PDF;
} }
if (fileName.endsWith('.jpg') || fileName.endsWith('.png')) { if (fileName.endsWith('.jpg') || fileName.endsWith('.png') || fileName.endsWith('.gif')) {
return FileType.IMG; return FileType.IMG;
} }
if (fileName.endsWith('.doc') || fileName.endsWith('.docx')) { if (fileName.endsWith('.doc') || fileName.endsWith('.docx')) {

2
src/views/Home.vue

@ -67,7 +67,7 @@ function goQuery(item) {
router.push('/query?processingStatus=processing') router.push('/query?processingStatus=processing')
} }
if (item.icon === 'delay') { if (item.icon === 'delay') {
router.push('/query?processingStatus=signing') router.push('/query?extensionFlag=true')
} }
if (item.icon === 'completedApprove') { if (item.icon === 'completedApprove') {
router.push('/query?processingStatus=approval') router.push('/query?processingStatus=approval')

19
src/views/sensitivePerception/DepartNegative.vue

@ -202,7 +202,14 @@
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<el-row> <el-row>
<el-col :span="12" class="mb-20" v-if="negativeInfo.jcj110BusinessSize || negativeInfo.jcj110Size"> <el-col
:span="12"
class="mb-20"
v-if="
negativeInfo.jcj110BusinessSize ||
negativeInfo.jcj110Size
"
>
<description-pair <description-pair
label1="110接处警量" label1="110接处警量"
label2="问题数" label2="问题数"
@ -212,7 +219,13 @@
:value2="negativeInfo.jcj110Size" :value2="negativeInfo.jcj110Size"
/> />
</el-col> </el-col>
<el-col :span="12" v-if="negativeInfo.jcj122BusinessSize || negativeInfo.jcj122Size"> <el-col
:span="12"
v-if="
negativeInfo.jcj122BusinessSize ||
negativeInfo.jcj122Size
"
>
<description-pair <description-pair
label1="122接处警量" label1="122接处警量"
label2="问题数" label2="问题数"
@ -295,7 +308,7 @@
/> />
</el-col> </el-col>
</el-row> </el-row>
<el-row class="mb-20"> <el-row class="mb-20" :gutter="20">
<el-col :span="8"> <el-col :span="8">
<h5>个人问题排名</h5> <h5>个人问题排名</h5>
<el-scrollbar max-height="300px"> <el-scrollbar max-height="300px">

1
src/views/system/User.vue

@ -155,6 +155,7 @@
v-model="form.roleIds" v-model="form.roleIds"
placeholder="请选择角色" placeholder="请选择角色"
multiple multiple
clearable
> >
<el-option <el-option
v-for="item in roles" v-for="item in roles"

301
src/views/work/Query.vue

@ -14,101 +14,83 @@
</el-tag> </el-tag>
</div> </div>
<el-form :label-width="120"> <el-form :label-width="120">
<div class="form-row flex v-center"> <el-row>
<label class="text-center">常规选项</label> <el-col :span="6">
<div> <el-form-item label="问题发现时间">
<el-row> <date-time-range-picker-ext
<el-col :span="6"> v-model="query.discoveryTime"
<el-form-item label="问题发现时间"> />
<date-time-range-picker-ext </el-form-item>
v-model="query.discoveryTime" </el-col>
/> <el-col :span="6">
</el-form-item> <el-form-item label="问题发生时间">
</el-col> <date-time-range-picker-ext
<el-col :span="6"> v-model="query.happenTime"
<el-form-item label="问题发生时间"> />
<date-time-range-picker-ext </el-form-item>
v-model="query.happenTime" </el-col>
/> <el-col :span="6">
</el-form-item> <el-form-item label="问题录入时间">
</el-col> <date-time-range-picker-ext
<el-col :span="6"> v-model="query.crtTime"
<el-form-item label="问题录入时间"> />
<date-time-range-picker-ext </el-form-item>
v-model="query.crtTime" </el-col>
/> <el-col :span="6">
</el-form-item> <el-form-item label="样本源头编号">
</el-col> <el-input
<el-col :span="6"> placeholder="请输入"
<el-form-item label="样本源头编号"> v-model="query.originId"
<el-input clearable
placeholder="请输入" />
v-model="query.originId" </el-form-item>
clearable </el-col>
/> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="6">
</el-row> <el-form-item label="涉及单位">
</div> <depart-tree-select
</div> v-model="query.involveDepartId"
<div class="form-row flex v-center"> />
<label class="text-center">问题选项</label> </el-form-item>
<div> </el-col>
<el-row> <el-col :span="6">
<el-col :span="6"> <el-form-item label="办理单位">
<el-form-item label="涉及单位"> <depart-tree-select
<depart-tree-select v-model="query.handleDepartId"
v-model="query.involveDepartId" />
/> </el-form-item>
</el-form-item> </el-col>
</el-col>
<el-col :span="6">
<el-form-item label="办理单位">
<depart-tree-select
v-model="query.handleDepartId"
/>
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="投诉反映人"> <el-form-item label="投诉反映人">
<div class="flex gap"> <div class="flex gap">
<el-select <el-select
v-model="query.responderKey" v-model="query.responderKey"
style="width: 160px" style="width: 160px"
@change=" @change="delete query.responderValue"
delete query.responderValue >
" <el-option value="name" label="姓名" />
> <el-option value="phone" label="电话" />
<el-option </el-select>
value="name" <el-input
label="姓名" placeholder="请输入"
/> v-model="query.responderValue"
<el-option clearable
value="phone" />
label="电话" </div>
/> </el-form-item>
</el-select> </el-col>
<el-input <el-col :span="6">
placeholder="请输入" <el-form-item label="事情简述">
v-model="query.responderValue" <el-input
clearable placeholder="请输入"
/> v-model="query.thingDesc"
</div> clearable
</el-form-item> />
</el-col> </el-form-item>
<el-col :span="6"> </el-col>
<el-form-item label="事情简述"> </el-row>
<el-input
placeholder="请输入"
v-model="query.thingDesc"
clearable
/>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
<query-select-row <query-select-row
v-for="(item, index) in queryItems" v-for="(item, index) in queryItems"
:key="index" :key="index"
@ -213,6 +195,16 @@
<el-option label="未超时" :value="false" /> <el-option label="未超时" :value="false" />
<el-option label="已超时" :value="true" /> <el-option label="已超时" :value="true" />
</el-select> </el-select>
<el-select
size="small"
style="width: 146px"
placeholder="申请延期"
clearable
v-model="query.extensionFlag"
>
<el-option label="已申请" :value="true" />
<el-option label="未申请" :value="false" />
</el-select>
</div> </div>
</div> </div>
</el-form> </el-form>
@ -449,11 +441,7 @@
/> />
<el-dialog v-model="editShow" title="问题编辑" width="900px"> <el-dialog v-model="editShow" title="问题编辑" width="900px">
<el-form <el-form label-width="148" :model="formData" ref="formRef">
label-width="148"
:model="formData"
ref="formRef"
>
<div style="margin-bottom: 80px"> <div style="margin-bottom: 80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -471,7 +459,8 @@
v-model="formData.problemSourcesCode" v-model="formData.problemSourcesCode"
@change=" @change="
(nodeData) => (nodeData) =>
(formData.problemSources = nodeData.label) (formData.problemSources =
nodeData.label)
" "
/> />
</el-form-item> </el-form-item>
@ -505,7 +494,49 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row v-if="form.problemSourcesCode === ProblemSources.ZXDC">
<el-col :span="12">
<el-form-item
label="专项督察"
prop="specialSupervision"
:rules="{
required: true,
message: '请选择专项督察',
trigger: ['blur'],
}"
>
<el-select
v-model="form.specialSupervision"
clearable
>
<el-option
v-for="item in dict.specialSupervision"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="通报期数"
prop="reportNumber"
:rules="{
required: true,
message: '请选择通报期数',
trigger: ['blur'],
}"
>
<el-input
placeholder="请输入"
v-model="form.reportNumber"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="涉及案件/警情编号" label="涉及案件/警情编号"
@ -585,14 +616,19 @@
:check-strictly="true" :check-strictly="true"
@node-click=" @node-click="
(row) => (row) =>
(formData.involveDepartName = row.shortName) (formData.involveDepartName =
row.shortName)
" "
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row <el-row
v-if="ProblemSources_XFTS.includes(formData.problemSourcesCode)" v-if="
ProblemSources_XFTS.includes(
formData.problemSourcesCode
)
"
> >
<el-col :span="12"> <el-col :span="12">
<el-form-item label="投诉反映人" prop="responderName"> <el-form-item label="投诉反映人" prop="responderName">
@ -665,10 +701,7 @@
</el-form> </el-form>
<footer class="flex end"> <footer class="flex end">
<el-button @click="editShow = false" size="large">取消</el-button> <el-button @click="editShow = false" size="large">取消</el-button>
<el-button <el-button type="primary" @click="handleSumbit" size="large"
type="primary"
@click="handleSumbit"
size="large"
>确定</el-button >确定</el-button
> >
</footer> </footer>
@ -677,15 +710,17 @@
<script setup> <script setup>
import moment from "moment"; import moment from "moment";
import { ElLoading } from "element-plus"; import { ElLoading } from "element-plus";
import { listNegative, negativeExport, delNegative, updateNegative } from "@/api/work/negative"; import {
listNegative,
negativeExport,
delNegative,
updateNegative,
} from "@/api/work/negative";
import { getDictLable, formatTimeText, getInvolveProblem } from "@/utils/util"; import { getDictLable, formatTimeText, getInvolveProblem } from "@/utils/util";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import { ProcessingStatus } from "@/enums/flowEnums"; import { ProcessingStatus } from "@/enums/flowEnums";
import { import { ProblemSources_XFTS, ProblemSources } from "@/enums/dictEnums";
ProblemSources_XFTS,
} from "@/enums/dictEnums";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
@ -697,6 +732,7 @@ const dict = catchStore.getDicts([
"processingStatus", "processingStatus",
"suspectProblem", "suspectProblem",
"policeType", "policeType",
"specialSupervision",
]); ]);
const flowNodes = catchStore.getFlowNodes(); const flowNodes = catchStore.getFlowNodes();
const dictProblemSources = catchStore.getDictProblemSources(); const dictProblemSources = catchStore.getDictProblemSources();
@ -756,6 +792,11 @@ function updateQuery() {
} else { } else {
query.value.crtTime = []; query.value.crtTime = [];
} }
if (route.query.extensionFlag === "true") {
query.value.extensionFlag = true
} else {
query.value.extensionFlag = '';
}
} }
onMounted(() => { onMounted(() => {
@ -792,22 +833,42 @@ async function handleDel(row) {
getList(); getList();
} }
const editShow = ref(false) const editShow = ref(false);
const formData = ref({}) const formData = ref({});
const formRef = ref(null) const formRef = ref(null);
function handleEdit(row) { function handleEdit(row) {
formData.value = {...row} console.log(row);
editShow.value = true editShow.value = true;
formData.value = { ...row };
if (row.involveProblem) {
formData.value.involveProblem = JSON.parse(row.involveProblem);
formData.value.involveProblemCode = JSON.parse(row.involveProblem).map(
(item) => item.dictValue
);
}
} }
async function handleSumbit() { async function handleSumbit() {
await formRef.value.validate() await formRef.value.validate();
await updateNegative(formData.value) await updateNegative(formData.value);
editShow.value = false editShow.value = false;
feedback.msgSuccess("操作成功"); feedback.msgSuccess("操作成功");
getList(); getList();
} }
function handleSelectInvolveProblem(vals) {
formData.value.involveProblem = vals.map((val) => {
const dictItem = dict.suspectProblem.filter(
(item) => item.dictValue === val
)[0];
return {
dictType: "suspectProblem",
dictLabel: dictItem.dictLabel,
dictValue: dictItem.dictValue,
};
});
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.form-row { .form-row {

8
vite.config.ts

@ -70,10 +70,10 @@ export default ({ mode }) => {
}, },
postcss: { postcss: {
plugins: [ plugins: [
postCssPxToRem({ // postCssPxToRem({
rootValue: 192, // rootValue: 192,
propList: ['*'], // propList: ['*'],
}) // })
] ]
} }
}, },

Loading…
Cancel
Save