明树Git Lab

Commit c3408065 authored by zhanghan's avatar zhanghan

初版需求处理

parent 6489b8a5
......@@ -11,7 +11,7 @@
v-if="showProcess"
type="primary"
plain
@click="processDialogVisible = true"
@click="handleProcess"
>
办理过程
</el-button>
......@@ -42,28 +42,41 @@
<el-dialog
v-if="showProcess"
v-model="processDialogVisible"
:title="processInfo.projectName || '全部办理记录'"
title="办理记录"
width="80%"
top="5vh"
:close-on-click-modal="false"
:close-on-press-escape="true"
>
<div class="process-dialog-content">
<div class="process-project-name" v-if="processInfo.projectName">
项目名称:<span class="name">{{ processInfo.projectName }}</span>
</div>
<el-table
:data="processData"
border
style="width: 100%"
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' }"
>
<el-table-column type="index" label="序号" width="80" />
<el-table-column prop="handleStep" label="办理环节" min-width="120" />
<el-table-column prop="handleDept" label="办理处室" min-width="150" />
<el-table-column prop="handlePerson" label="办理人" min-width="120" />
<el-table-column prop="nextPerson" label="下一步办理人" min-width="120" />
<el-table-column prop="handleOpinion" label="办理意见" min-width="120" />
<el-table-column prop="handleTime" label="办理时间" min-width="180" />
<el-table-column prop="actionName" label="操作" min-width="150" />
<el-table-column label="操作人" min-width="120">
<template #default="{ row }">{{ row.creator?.name }}</template>
</el-table-column>
<el-table-column prop="actionName" label="项目步骤" min-width="150" />
<el-table-column
prop="approvalMessage"
label="审核意见"
min-width="150"
/>
<el-table-column prop="createdAt" label="时间" min-width="180" />
</el-table>
</div>
<template #footer>
......@@ -115,7 +128,7 @@ const props = defineProps({
},
});
const emit = defineEmits(["save", "back", "export"]);
const emit = defineEmits(["save", "back", "export", "process"]);
const route = useRoute();
const router = useRouter();
......@@ -134,6 +147,11 @@ const handleSave = () => {
const handleExport = () => {
emit("export");
};
const handleProcess = () => {
emit("process");
processDialogVisible.value = true;
};
</script>
<style scoped lang="scss">
.add-project-back {
......@@ -168,4 +186,12 @@ const handleExport = () => {
gap: 10px;
}
}
.process-project-name {
font-size: 14px;
margin-bottom: 12px;
.name {
font-weight: 700;
}
}
</style>
......@@ -9,10 +9,11 @@
['1', '5', '7'].includes(formData.projectLzType.toString()))
"
:loading="loading"
:show-process="true"
:show-process="!!projectId"
:process-info="processInfo"
:process-data="processTableData"
@save="() => saveClick('save')"
@process="getProcessData"
></routerBack>
<div class="tabs-content">
......@@ -85,12 +86,24 @@
isPreview &&
canAudit &&
(formData.projectLzType == '3' ||
formData.projectLzType == '4' ||
jcFormData.projectLzType == '8') &&
formData.del !== 1
"
type="primary"
@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>
......@@ -119,7 +132,7 @@
<el-option :value="false" label="不同意"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="approvalMessage">
<el-form-item label="审核意见" prop="approvalMessage">
<el-input type="textarea" v-model="auditFormData.approvalMessage" />
</el-form-item>
</el-form>
......@@ -131,6 +144,41 @@
</template>
</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>
</template>
......@@ -526,24 +574,16 @@ const saveClick = (type) => {
const processInfo = computed(() => ({
projectName: formData.projectName,
}));
const processTableData = reactive([
{
handleStep: "用户发起",
handleDept: "—",
handlePerson: "张三",
nextPerson: "李四",
handleOpinion: "用户提交",
handleTime: "2026-05-13 10:17:28",
},
{
handleStep: "项目编码",
handleDept: "规划发展部",
handlePerson: "李四",
nextPerson: "—",
handleOpinion: "同意编码",
handleTime: "2026-05-13 10:19:32",
},
]);
const processTableData = ref([]);
const getProcessData = () => {
proxy.$post({
url: "/api/project/getProFlowRecord",
data: { projectId },
callback: (data) => {
processTableData.value = data || [];
},
});
};
// 审核
let auditFormData = ref({});
......@@ -564,10 +604,12 @@ const submitAudit = () => {
if (valid) {
let url =
formData.projectLzType.toString() === "3"
? "approvalLixiang"
: jcFormData.projectLzType.toString() === "8"
? "approvalJuece"
: "";
? "approvalLixiangByTouGuanJbr"
: formData.projectLzType.toString() === "4"
? "approvalLixiang"
: jcFormData.projectLzType.toString() === "8"
? "approvalJuece"
: "";
proxy.$post({
url: "/api/project/" + url,
data: {
......@@ -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>
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