明树Git Lab

Commit c3408065 authored by zhanghan's avatar zhanghan

初版需求处理

parent 6489b8a5
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
v-if="showProcess" v-if="showProcess"
type="primary" type="primary"
plain plain
@click="processDialogVisible = true" @click="handleProcess"
> >
办理过程 办理过程
</el-button> </el-button>
...@@ -42,28 +42,41 @@ ...@@ -42,28 +42,41 @@
<el-dialog <el-dialog
v-if="showProcess" v-if="showProcess"
v-model="processDialogVisible" v-model="processDialogVisible"
:title="processInfo.projectName || '全部办理记录'" title="办理记录"
width="80%" width="80%"
top="5vh" top="5vh"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="true" :close-on-press-escape="true"
> >
<div class="process-dialog-content"> <div class="process-dialog-content">
<div class="process-project-name" v-if="processInfo.projectName">
项目名称:<span class="name">{{ processInfo.projectName }}</span>
</div>
<el-table <el-table
:data="processData" :data="processData"
border border
style="width: 100%" style="width: 100%"
class="process-table" class="process-table"
:header-cell-style="{ background: '#f5f7fa', color: '#333', textAlign: 'center', fontWeight: 600 }" :header-cell-style="{
background: '#f5f7fa',
color: '#333',
textAlign: 'center',
fontWeight: 600,
}"
:cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }"
> >
<el-table-column type="index" label="序号" width="80" /> <el-table-column type="index" label="序号" width="80" />
<el-table-column prop="handleStep" label="办理环节" min-width="120" /> <el-table-column prop="actionName" label="操作" min-width="150" />
<el-table-column prop="handleDept" label="办理处室" min-width="150" /> <el-table-column label="操作人" min-width="120">
<el-table-column prop="handlePerson" label="办理人" min-width="120" /> <template #default="{ row }">{{ row.creator?.name }}</template>
<el-table-column prop="nextPerson" label="下一步办理人" min-width="120" /> </el-table-column>
<el-table-column prop="handleOpinion" label="办理意见" min-width="120" /> <el-table-column prop="actionName" label="项目步骤" min-width="150" />
<el-table-column prop="handleTime" label="办理时间" min-width="180" /> <el-table-column
prop="approvalMessage"
label="审核意见"
min-width="150"
/>
<el-table-column prop="createdAt" label="时间" min-width="180" />
</el-table> </el-table>
</div> </div>
<template #footer> <template #footer>
...@@ -115,7 +128,7 @@ const props = defineProps({ ...@@ -115,7 +128,7 @@ const props = defineProps({
}, },
}); });
const emit = defineEmits(["save", "back", "export"]); const emit = defineEmits(["save", "back", "export", "process"]);
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
...@@ -134,6 +147,11 @@ const handleSave = () => { ...@@ -134,6 +147,11 @@ const handleSave = () => {
const handleExport = () => { const handleExport = () => {
emit("export"); emit("export");
}; };
const handleProcess = () => {
emit("process");
processDialogVisible.value = true;
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.add-project-back { .add-project-back {
...@@ -168,4 +186,12 @@ const handleExport = () => { ...@@ -168,4 +186,12 @@ const handleExport = () => {
gap: 10px; gap: 10px;
} }
} }
.process-project-name {
font-size: 14px;
margin-bottom: 12px;
.name {
font-weight: 700;
}
}
</style> </style>
...@@ -9,10 +9,11 @@ ...@@ -9,10 +9,11 @@
['1', '5', '7'].includes(formData.projectLzType.toString())) ['1', '5', '7'].includes(formData.projectLzType.toString()))
" "
:loading="loading" :loading="loading"
:show-process="true" :show-process="!!projectId"
:process-info="processInfo" :process-info="processInfo"
:process-data="processTableData" :process-data="processTableData"
@save="() => saveClick('save')" @save="() => saveClick('save')"
@process="getProcessData"
></routerBack> ></routerBack>
<div class="tabs-content"> <div class="tabs-content">
...@@ -85,12 +86,24 @@ ...@@ -85,12 +86,24 @@
isPreview && isPreview &&
canAudit && canAudit &&
(formData.projectLzType == '3' || (formData.projectLzType == '3' ||
formData.projectLzType == '4' ||
jcFormData.projectLzType == '8') && jcFormData.projectLzType == '8') &&
formData.del !== 1 formData.del !== 1
" "
type="primary" type="primary"
@click="auditDialogVisible = true" @click="auditDialogVisible = true"
>审核</el-button >{{ formData.projectLzType == '3' ? '初审' : '审核' }}</el-button
>
<el-button
v-if="
isPreview &&
canAudit &&
formData.projectLzType == '2' &&
formData.del !== 1
"
type="primary"
@click="approveDialogVisible = true"
>核准</el-button
> >
</div> </div>
</div> </div>
...@@ -119,7 +132,7 @@ ...@@ -119,7 +132,7 @@
<el-option :value="false" label="不同意"></el-option> <el-option :value="false" label="不同意"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="approvalMessage"> <el-form-item label="审核意见" prop="approvalMessage">
<el-input type="textarea" v-model="auditFormData.approvalMessage" /> <el-input type="textarea" v-model="auditFormData.approvalMessage" />
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -131,6 +144,41 @@ ...@@ -131,6 +144,41 @@
</template> </template>
</el-dialog> </el-dialog>
<el-dialog
v-model="approveDialogVisible"
title="核准意见"
width="500"
align-center
@close="cancelApprove"
>
<el-form
:model="approveFormData"
ref="approveForm"
:rules="approveRules"
label-width="100"
>
<el-form-item label="是否同意" prop="approvalResult">
<el-select
v-model="approveFormData.approvalResult"
placeholder="请选择"
clearable
>
<el-option :value="true" label="同意"></el-option>
<el-option :value="false" label="不同意"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核意见" prop="approvalMessage">
<el-input type="textarea" v-model="approveFormData.approvalMessage" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="cancelApprove">取消</el-button>
<el-button type="primary" @click="submitApprove">确定</el-button>
</div>
</template>
</el-dialog>
</div> </div>
</template> </template>
...@@ -526,24 +574,16 @@ const saveClick = (type) => { ...@@ -526,24 +574,16 @@ const saveClick = (type) => {
const processInfo = computed(() => ({ const processInfo = computed(() => ({
projectName: formData.projectName, projectName: formData.projectName,
})); }));
const processTableData = reactive([ const processTableData = ref([]);
{ const getProcessData = () => {
handleStep: "用户发起", proxy.$post({
handleDept: "—", url: "/api/project/getProFlowRecord",
handlePerson: "张三", data: { projectId },
nextPerson: "李四", callback: (data) => {
handleOpinion: "用户提交", processTableData.value = data || [];
handleTime: "2026-05-13 10:17:28",
},
{
handleStep: "项目编码",
handleDept: "规划发展部",
handlePerson: "李四",
nextPerson: "—",
handleOpinion: "同意编码",
handleTime: "2026-05-13 10:19:32",
}, },
]); });
};
// 审核 // 审核
let auditFormData = ref({}); let auditFormData = ref({});
...@@ -564,6 +604,8 @@ const submitAudit = () => { ...@@ -564,6 +604,8 @@ const submitAudit = () => {
if (valid) { if (valid) {
let url = let url =
formData.projectLzType.toString() === "3" formData.projectLzType.toString() === "3"
? "approvalLixiangByTouGuanJbr"
: formData.projectLzType.toString() === "4"
? "approvalLixiang" ? "approvalLixiang"
: jcFormData.projectLzType.toString() === "8" : jcFormData.projectLzType.toString() === "8"
? "approvalJuece" ? "approvalJuece"
...@@ -581,4 +623,35 @@ const submitAudit = () => { ...@@ -581,4 +623,35 @@ const submitAudit = () => {
} }
}); });
}; };
// 核准
let approveFormData = ref({});
let approveForm = ref();
let approveDialogVisible = ref(false);
const approveRules = {
approvalResult: [
{ required: true, message: "请选择核准意见", trigger: "change" },
],
};
const cancelApprove = () => {
approveFormData.value = {};
approveForm.value.resetFields();
approveDialogVisible.value = false;
};
const submitApprove = () => {
approveForm.value.validate((valid) => {
if (valid) {
proxy.$post({
url: "/api/project/approvalLixiangByDepartHeader",
data: {
id: formData.id,
...approveFormData.value,
},
callback: (data) => {
router.back(-1);
},
});
}
});
};
</script> </script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment