diff --git a/package.json b/package.json
index c4bae0c..215e2f4 100644
--- a/package.json
+++ b/package.json
@@ -33,9 +33,11 @@
"@vue-office/docx": "^1.6.0",
"@vue-office/excel": "^1.7.11",
"@vueup/vue-quill": "^1.2.0",
+ "@vueuse/core": "^10.11.0",
"amfe-flexible": "^2.2.1",
"baidu-map-vue3": "^0.4.9",
"crypto-js": "^4.2.0",
+ "dayjs": "^1.11.20",
"echarts": "^5.4.3",
"element-plus": "^2.8.8",
"flv.js": "^1.6.2",
@@ -63,7 +65,7 @@
"amfe-flexible": "^2.2.1",
"mitt": "^3.0.1",
"postcss-pxtorem": "^6.1.0",
- "sass": "^1.69.7",
+ "sass": "^1.99.0",
"unplugin-auto-import": "^0.17.3",
"unplugin-vue-components": "^0.26.0",
"vite": "^5.0.8",
diff --git a/src/api/data/complaintCollection.ts b/src/api/data/complaintCollection.ts
index e3f543e..ba82ee8 100644
--- a/src/api/data/complaintCollection.ts
+++ b/src/api/data/complaintCollection.ts
@@ -137,4 +137,13 @@ export function getComplaintCollectionDetail(body) {
});
}
+/**
+ * 初核反馈
+ */
+export function initialReview(body) {
+ return request.post({
+ url: `/data/complaintCollection/initialReview`,
+ body
+ });
+}
diff --git a/src/components/negative/dialog.vue b/src/components/negative/dialog.vue
index e7758fc..9e5fcf2 100644
--- a/src/components/negative/dialog.vue
+++ b/src/components/negative/dialog.vue
@@ -166,7 +166,14 @@
"
>
+
@@ -320,7 +327,7 @@
>保存抽检结果
-
+
+
-
+
(STAGE_COMPLETION);
+const isComplaintReport = computed(
+ () => negative.value?.sourceType === COMPLAINT_REPORT_SOURCE_TYPE
+);
+const displayFlowActions = computed(() => {
+ if (!isComplaintReport.value) {
+ return flowActions.value;
+ }
+
+ if (currentComplaintStage.value === STAGE_INITIAL) {
+ return [
+ {
+ actionKey: FlowActionEnum.SAVE,
+ buttonLabel: "保存信息",
+ buttonType: "primary",
+ plain: true,
+ validateForm: false,
+ },
+ {
+ actionKey: LOCAL_INITIAL_REVIEW_ACTION_KEY,
+ buttonLabel: "初核反馈",
+ buttonType: "primary",
+ plain: false,
+ validateForm: true,
+ },
+ ];
+ }
+
+ return flowActions.value;
+});
watch(
() => props.id,
() => {
getDetails();
verifyEditFlag.value = false;
formData.value = {};
+ currentComplaintStage.value = STAGE_COMPLETION;
}
);
@@ -475,7 +519,11 @@ const confirmationCompletionFlag = ref(false);
function getDetails() {
loading.value = true;
getNegativeDetails(props.id, work?.value.workId).then((data) => {
- negative.value = data.negative;
+ negative.value = {
+ ...data.negative,
+ complaintCollectionPageDTO: data.complaintCollectionPageDTO,
+ currentRow: data.complaintCollectionPageDTO || {},
+ };
console.log('negative',negative)
getConfinementData();
getSuperviseReportFun(data.negative.reportNumber)
@@ -602,6 +650,14 @@ async function handleExecute(action, data) {
data = componentRef.value.getData();
}
}
+ if (
+ isComplaintReport.value &&
+ action.actionKey === FlowActionEnum.APPLY_COMPLETION &&
+ componentRef.value?.getStage?.() === STAGE_INITIAL
+ ) {
+ feedback.msgWarning("初核阶段请先保存初核内容,再切换到办结阶段提交办结");
+ return;
+ }
if (action.openDialog) {
if (
confirmationCompletionFlag.value &&
@@ -625,6 +681,26 @@ async function handleExecute(action, data) {
verifyEditFlag.value = false;
}
try {
+ if (isComplaintReport.value && action.actionKey === FlowActionEnum.SAVE) {
+ const formData = componentRef.value.getData();
+ const stage = componentRef.value?.getStage?.() || currentComplaintStage.value;
+ if (stage === STAGE_INITIAL) {
+ await submitComplaintInitialReview(formData);
+ } else {
+ await saveComplaintVerifyData(formData);
+ }
+ feedback.msgSuccess("操作成功");
+ getDetails();
+ return;
+ }
+ if (isComplaintReport.value && action.actionKey === LOCAL_INITIAL_REVIEW_ACTION_KEY) {
+ await submitComplaintInitialReview(data);
+ currentComplaintStage.value = STAGE_COMPLETION;
+ componentRef.value?.setStage?.(STAGE_COMPLETION);
+ feedback.msgSuccess("操作成功");
+ getDetails();
+ return;
+ }
await negativeExecute(props.id, {
workId: work?.value.workId,
actionKey: action.actionKey,
@@ -649,6 +725,10 @@ async function handleSubmitExecute(data) {
handleExecute(activeAction.value, data);
}
+function handleComplaintStageChange(stage: ProcessingStage) {
+ currentComplaintStage.value = stage;
+}
+
function handleFav() {
if (isFav.value) {
delFav(props.id);
@@ -699,6 +779,38 @@ async function handleUpdateVerify() {
verifyEditFlag.value = !verifyEditFlag.value;
}
+async function saveComplaintVerifyData(data) {
+ const payload = {
+ blames: data?.blames || [],
+ blameLeaders: data?.blameLeaders || [],
+ files: data?.files || [],
+ };
+
+ await saveInvolveJson({
+ complaintId: data?.complaintId,
+ checkStatusCode: data?.checkStatusCode,
+ checkStatusName: data?.checkStatusName,
+ checkStatusDesc: data?.checkStatusDesc,
+ accountabilityTarget: data?.accountabilityTarget,
+ involveDepartId: data?.involveDepartId,
+ involveDepartName: data?.involveDepartName,
+ completionStatus: data?.completionStatus,
+ publicRecognition: data?.publicRecognition,
+ caseNumber: data?.caseNumber,
+ involveJson: JSON.stringify(payload),
+ files: data?.files || [],
+ });
+}
+
+async function submitComplaintInitialReview(data) {
+ await initialReview({
+ complaintId: data?.complaintId,
+ initWorkDes: data?.initWorkDes,
+ initProblemPlan: data?.initProblemPlan,
+ initVerdict: data?.initVerdict,
+ });
+}
+
defineExpose({
spotCheck,
});
diff --git a/src/components/negative/verify-description.vue b/src/components/negative/verify-description.vue
index 49684c0..bb95cec 100644
--- a/src/components/negative/verify-description.vue
+++ b/src/components/negative/verify-description.vue
@@ -48,6 +48,34 @@
+
+
+
+
+ {{ initialReviewInfo.gwf2 || "/" }}
+
+
+
+ {{ getInitialReviewStatusLabel(initialReviewInfo.gwf3) }}
+
+
+
+ {{ initialReviewInfo.initWorkDes || "/" }}
+
+
+
+ {{ initialReviewInfo.initProblemPlan || "/" }}
+
+
+
+ {{ getDictLable(dict.checkStatus, initialReviewInfo.initVerdict) || initialReviewInfo.initVerdict || "/" }}
+
+
+
{
+ const currentRow = negative.value?.currentRow || {};
+ return {
+ gwf2: currentRow?.gwf2 || negative.value?.gwf2 || "",
+ gwf3: currentRow?.gwf3 || negative.value?.gwf3 || "",
+ initWorkDes: currentRow?.initWorkDes || negative.value?.initWorkDes || "",
+ initProblemPlan: currentRow?.initProblemPlan || negative.value?.initProblemPlan || "",
+ initVerdict: currentRow?.initVerdict || negative.value?.initVerdict || "",
+ };
+});
+
+const showInitialReviewInfo = computed(() => {
+ if (String(negative.value?.sourceType || "") !== COMPLAINT_REPORT_SOURCE_TYPE) {
+ return false;
+ }
+ return Boolean(
+ initialReviewInfo.value.gwf2 ||
+ initialReviewInfo.value.gwf3 ||
+ initialReviewInfo.value.initWorkDes ||
+ initialReviewInfo.value.initProblemPlan ||
+ initialReviewInfo.value.initVerdict
+ );
+});
+
+function getInitialReviewStatusLabel(status) {
+ const code = String(status || "");
+ if (code === "0") return "未初核";
+ if (code === "1") return "已初核";
+ if (code === "2") return "超时上传";
+ return "/";
+}
console.log('negative.value',negative.value)
diff --git a/src/components/negative/verify-sfss.vue b/src/components/negative/verify-sfss.vue
index 66066a8..b15d7fc 100644
--- a/src/components/negative/verify-sfss.vue
+++ b/src/components/negative/verify-sfss.vue
@@ -1,2157 +1,482 @@
-
-
-
问题信息
-
-
-
- {{ currentRow.id || '/' }}
-
-
-
-
- {{ currentRow.sourceTablePath }}
-
-
-
-
- {{ getDictLabel(dict.businessType, currentRow.businessTypeCode) }}
-
-
-
-
- {{ currentRow.originId || '/' }}
-
-
-
-
- {{ formatLocalDateTime(currentRow.discoveryTime) }}
-
-
-
-
- {{ currentRow.responderName || '/' }}
-
-
-
-
- {{ currentRow.responderIdCode || '/' }}
-
-
-
-
- {{ currentRow.responderPhone || '/' }}
-
-
-
-
- {{ currentRow.secondDepartName || '/' }}
-
-
-
-
- {{ currentRow.thingDesc || '/' }}
-
-
-
-
- {{ currentRow.involveProblemStr || '/' }}
-
-
-
-
-
- {{ getDictLabel(dict?.yesNo, currentRow.repeatt) }}
-
- 查看
-
-
-
-
-
-
-
- {{
- currentRow.tag
- ? currentRow.tag
- .split(',')
- .map(v => getDictLabel(dict.sfssTags, v))
- .join(',')
- : '/'
- }}
-
-
-
-
-
- {{ getDictLabel(dict.handleMethodType, currentRow.handleMethod) }}
-
-
-
-
-
-
- 核查办理
-
-
-
-
-
-
-
-
-
-
- {{ item.dictLabel }}
-
-
-
-
-
-
-
-
-
-
-
-
+ 信访办理
+
+
+
+ 初核阶段
+ 办结阶段
+
+
-
-
+
+ 初核办理
+ 4个工作日内办结无需上传初核情况
-
-
+
+
+
+
+
+
+
+
+
+
+
+
- @node-click="(row) => (form.involveDepartName = row.shortName)"
- :auth="false"
- />
-
-
-
-
-
+
+
+ 程序办结已解决合理诉求
-
- 程序办结
- 已解决合理诉求
-
-
-
-
-
-
-
- 认可
- 不认可
- 不接电话
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 佐证材料
-
-
-
-
-
-
-
- 信访办理
-
-
-
- 涉及人员是否属于领导班子成员
-
-
- 非领导班子成员
- 县级单位班子成员
- 市级单位班子成员
- 省级单位班子成员
- 中央单位班子成员
-
-
- 认可不认可
-
- 具有违纪违法情况
- 无违纪违法情况
- 其他
-
-
-
-
- {{ form.handleResult12337Group }}
-
-
-
-
-
+
{
- item.name = police.name;
- item.idCode = police.idCode;
- item.mobile = police.mobile;
- }
- "
- />
- 联系电话:
- {
+ item.name = police.name;
+ item.mobile = police.mobile;
+ }
+ "
/>
+
新增经办人
-
-
-
- 添加经办人
-
删除
-
-
-
- 删除经办人
-
-
- 经办人不能是涉及人员
-
-
-
-
(form.visitingLeaderName = police.name)"
- :isLeader="true"
- />
- 警号:
-
-
-
-
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+ />
+
+
+
+
-
-
-
-
-
-
-
-
- 涉及人员{{
- form.blames
- .filter(
- (blame) => blame.type === BlameType.PERSONAL
- )
- .indexOf(item) + 1
- }}
-
- 删除
-
-
-
-
-
- handleChangePolice(police, item)
- "
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- (item.ivPersonType = dict.personType.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
-
-
-
-
- handleChangeProblem(node, problem)
- "
- />
-
-
-
-
-
-
- {{
- problem.oneLevelContent
- ? problem.oneLevelContent + " / "
- : ""
- }}
- {{
- problem.twoLevelContent
- ? problem.twoLevelContent + " / "
- : ""
- }}
- {{
- problem.threeLevelContent
- }}
-
-
-
-
-
-
-
-
- 删除问题
-
-
-
-
-
- 添加问题
-
-
-
-
-
-
-
-
-
-
- 添加问题
-
-
-
-
-
-
-
- (item.responsibilityTypeName = dict.responsibilityType.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
-
- handleChangeSubjectiveAspect(
- val,
- item
- )
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
-
-
-
- handleChangeResultCode(item, val)
- "
- clearable
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {
- if (
- item.superviseMeasuresCode ===
- dictItem.dictValue
- ) {
- item.superviseMeasuresCode =
- '';
- item.superviseMeasuresName =
- '';
- item.confinementId = null;
- } else {
- item.superviseMeasuresCode =
- dictItem.dictValue;
- item.superviseMeasuresName =
- dictItem.dictLabel;
-
- if (dictItem.dictValue != 1) {
- item.confinementId = null;
- }
- }
- }
- "
- >{{ dictItem.dictLabel }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 姓名
- 警号
- 部门
- 事由
- 禁闭时间
-
-
-
-
- {{ val.name }}
- {{ val.empNo }}
-
-
- {{
- val.departShortName || "/"
- }}
-
-
-
-
-
- {{ val.matter }}
-
-
-
-
- {{
- val.startTime + "-" + val.endTime
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 添加涉及人员
-
-
-
-
-
-
-
-
涉及领导{{ index + 1 }}
- 删除
-
-
-
-
-
-
-
- handleCheckboxChange(
- item,
- bool,
- obj.blameIdCode
- )
- "
- />
-
-
-
-
- {
- item.leadName = police.name;
- item.leadIdCode = police.idCode;
- }
- "
- :isLeader="true"
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- (item.leadResponsibilityTypeName = dict.leadResponsibilityType.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
- handleChangeLeadResultCode(item, val)
- "
- clearable
- multiple
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 添加涉及领导
-
-
-
-
-
-
-
-
-
涉及单位
-
-
-
-
- {
- item.blameName = police.name;
- item.blameIdCode = police.idCode;
- }
- "
- />
-
-
-
-
-
-
-
-
-
- {
- const hit = dict.personType?.find(d => String(d.dictValue) === String(val))
- const label = hit?.dictLabel || '民警'
- item.ivPersonType = label
- item.ivPersonTypeName = label
- }"
- >
- 民警
-
-
-
-
-
-
- (item.superviseMeasuresName = dict.superviseMeasures.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {
- if (
- item.superviseMeasuresCode ===
- dictItem.dictValue
- ) {
- item.superviseMeasuresCode = '';
- item.superviseMeasuresName = '';
- } else {
- item.superviseMeasuresCode =
- dictItem.dictValue;
- item.superviseMeasuresName =
- dictItem.dictLabel;
- }
- }
- "
- >{{ dictItem.dictLabel }}
-
-
-
-
-
-
-
-
-
-
-
- handleChangeProblem(node, problem)
- "
- />
-
-
-
-
-
-
- {{
- problem.oneLevelContent
- ? problem.oneLevelContent + " / "
- : ""
- }}
- {{
- problem.twoLevelContent
- ? problem.twoLevelContent + " / "
- : ""
- }}
- {{
- problem.threeLevelContent
- }}
-
-
-
-
-
-
-
-
- 删除问题
-
-
-
-
-
- 添加问题
-
-
-
-
-
-
-
-
- 添加问题
-
-
-
-
-
-
-
-
-
- (item.subjectiveAspectName = dict.subjectiveAspect.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
-
- (item.responsibilityTypeName = dict.responsibilityType.filter(
- (item) => item.dictValue === val
- )[0].dictLabel)
- "
- >
- {{ item.dictLabel }}
-
-
-
-
-
-
-
- handleChangeDepartResultCode(item, val)
- "
- clearable
- multiple
- >
-
-
-
-
-
-
-
-
-
-
-
-
+
-
\ No newline at end of file
+