明树Git Lab

Commit d9d21c69 authored by zhanghan's avatar zhanghan

投后管理开发完毕

parent 30abc7bb
...@@ -47,7 +47,6 @@ ...@@ -47,7 +47,6 @@
<el-button <el-button
link link
type="danger" type="danger"
size="small"
@click="handleDelete($index)" @click="handleDelete($index)"
:disabled="disabled" :disabled="disabled"
class="delete-btn" class="delete-btn"
......
This diff is collapsed.
...@@ -173,6 +173,18 @@ const routes = [ ...@@ -173,6 +173,18 @@ const routes = [
title: "投资后评价", title: "投资后评价",
component: () => import("@/views/castbehind/evaluateAdd.vue"), component: () => import("@/views/castbehind/evaluateAdd.vue"),
}, },
{
path: "/turnover",
name: "turnover",
title: "移交管理",
component: () => import("@/views/castbehind/turnover.vue"),
},
{
path: "/turnoverAdd",
name: "turnoverAdd",
title: "移交管理",
component: () => import("@/views/castbehind/turnoverAdd.vue"),
},
], ],
}, },
{ {
......
...@@ -137,7 +137,7 @@ ...@@ -137,7 +137,7 @@
text-align: center; text-align: center;
} }
::v-deep.add-project-content .tab-content .tab-handle { ::v-deep.add-project-content .tab-content .tab-handle {
margin: 10px 0; margin-bottom: 16px;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
...@@ -274,3 +274,20 @@ ...@@ -274,3 +274,20 @@
font-weight: bold; font-weight: bold;
background-color: #f5f7fa; background-color: #f5f7fa;
} }
.add-project-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24px;
}
::v-deep .el-collapse-item__title {
flex: auto;
text-align: left;
}
:deep(.el-table) {
--el-table-border-color: #ebeef5;
width: 100%;
}
:deep(.el-upload) {
width: 100%;
}
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
text-align: center; text-align: center;
} }
.tab-handle{ .tab-handle{
margin: 10px 0; margin-bottom: 16px;;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
...@@ -292,3 +292,29 @@ ...@@ -292,3 +292,29 @@
background-color: #f5f7fa; background-color: #f5f7fa;
} }
} }
.add-project-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24px;
}
// 动态表格样式适配
:deep(.el-collapse-item__content) {
// padding: 16px;
}
::v-deep .el-collapse-item__title{
flex: auto;
text-align: left;
}
:deep(.el-table) {
--el-table-border-color: #ebeef5;
width: 100%;
}
:deep(.el-upload) {
width: 100%;
}
\ No newline at end of file
...@@ -178,5 +178,5 @@ onMounted(() => { ...@@ -178,5 +178,5 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less"; @import "@/styles/verticalManages.less";
</style> </style>
This diff is collapsed.
...@@ -92,8 +92,6 @@ const getStatementData = () => { ...@@ -92,8 +92,6 @@ const getStatementData = () => {
pagesize: pageSize.value, pagesize: pageSize.value,
}, },
callback: (data) => { callback: (data) => {
console.log(data, "data");
tableData.value = data.rows; tableData.value = data.rows;
total.value = data.count; total.value = data.count;
loading.value = false; loading.value = false;
......
This diff is collapsed.
<template>
<div class="manage-container">
<div class="manage-wrap">
<div class="manage-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="primary" @click="turnoverAdd">新增</el-button>
</div>
</div>
<div class="manage-content" v-loading="loading">
<common-table
:autoHeight="true"
:maxRows="10"
:data="tableData"
:columns="tableColumns"
:total="total"
:current-page="currentPage"
:page-size="pageSize"
:index="true"
:indexLabel="'序号'"
title=""
:border="true"
@size-change="handleSizeChange"
@current-page-change="handleCurrentPageChange"
>
<template #operations="{ row, index }">
<el-button
link
type="primary"
size="small"
@click="previewStatement(row)"
>查看</el-button
>
<el-button
link
type="primary"
size="small"
@click="editStatement(row)"
>编辑</el-button
>
<el-button
link
type="danger"
size="small"
@click="deleteStatement(row)"
>删除</el-button
>
</template>
</common-table>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
const router = useRouter();
const { proxy } = getCurrentInstance();
let tableData = ref([]);
let tableColumns = ref([
{
prop: "projectName",
label: "项目信息",
showOverflowTooltip: true,
},
{
prop: "zbyzyjLen",
label: "资本处置移交",
showOverflowTooltip: true,
},
{
prop: "qzlyzzyjLen",
label: "期中履约终止移交",
showOverflowTooltip: true,
},
{
prop: "qmyjLen",
label: "期满移交",
showOverflowTooltip: true,
},
{
prop: "operations",
label: "操作",
width: 170,
slot: "operations",
fixed: "right",
align: "center",
},
]);
let loading = ref(false);
let total = ref(0);
let currentPage = ref(1);
let pageSize = ref(10);
// 获取列表数据
const getStatementData = () => {
loading.value = true;
proxy.$post({
url: "/api/project/getYjglList",
data: {
page: currentPage.value,
pagesize: pageSize.value,
},
callback: (data) => {
const countValidRows = (arr) => {
if (!Array.isArray(arr)) return 0;
return arr.reduce((count, item) => {
if (Array.isArray(item?.fj) && item.fj.length > 0) {
count++;
}
return count;
}, 0);
};
tableData.value = data.rows.map((it) => {
return {
...it,
qmyjLen: `${countValidRows(it.qmyj)}行`,
qzlyzzyjLen: `${countValidRows(it.qzlyzzyj)}行`,
zbyzyjLen: `${countValidRows(it.zbyzyj)}行`,
};
});
total.value = data.count;
loading.value = false;
},
});
};
// 分页
const handleSizeChange = (size) => {
pageSize.value = size;
currentPage.value = 1;
getStatementData();
};
const handleCurrentPageChange = (page) => {
currentPage.value = page;
getStatementData();
};
const turnoverAdd = () => {
router.push("/turnoverAdd");
};
const editStatement = (item) => {
router.push({
name: "turnoverAdd",
query: {
id: item.id,
},
});
};
const previewStatement = (item) => {
router.push({
name: "turnoverAdd",
query: {
isPreview: true,
id: item.id,
},
});
};
const deleteStatement = (item) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
proxy.$post({
url: "/api/project/deleteYjgl",
data: {
id: item.id,
},
callback: (data) => {
ElMessage.success("删除成功");
getStatementData();
},
});
})
.catch(() => {});
};
onMounted(() => {
getStatementData();
});
</script>
<style scoped lang="less">
@import "@/styles/manage.less";
</style>
<template>
<div class="add-project-container">
<div class="add-project-content" v-loading="loading">
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content">
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview">
<el-collapse v-model="activeCollapse">
<!-- 项目信息 -->
<el-collapse-item title="项目信息" name="项目信息">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
>
<el-option
v-for="item in projectList"
:key="item.key"
:label="item.projectName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 资本处置移交 -->
<el-collapse-item title="资本处置移交" name="资本处置移交">
<DynamicTable
:showAddButton="false"
v-model="zbyzyj"
:show-delete-button="false"
:columns="transferColumns"
:default-row="transferDefaultRow"
:disabled="isPreview"
/>
</el-collapse-item>
<!-- 期中履约终止移交 -->
<el-collapse-item
title="期中履约终止移交"
name="期中履约终止移交"
>
<DynamicTable
:showAddButton="false"
v-model="qzlyzzyj"
:show-delete-button="false"
:columns="transferColumns"
:default-row="transferDefaultRow"
:disabled="isPreview"
/>
</el-collapse-item>
<!-- 期满移交 -->
<el-collapse-item title="期满移交" name="期满移交">
<DynamicTable
:showAddButton="false"
v-model="qmyj"
:show-delete-button="false"
:columns="transferColumns"
:default-row="transferDefaultRow"
:disabled="isPreview"
/>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue";
// 路由与全局实例
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
// 折叠面板默认展开项
const activeCollapse = ref([
"项目信息",
"资本处置移交",
"期中履约终止移交",
"期满移交",
]);
// 移交类表格列配置
const transferColumns = ref([
{ prop: "mc", label: "名称", type: "input", placeholder: "请填写文件名称" },
{ prop: "fj", label: "附件", type: "upload", placeholder: "" },
{
prop: "bz",
label: "备注",
type: "textarea",
rows: 2,
placeholder: "请输入备注信息",
},
]);
// 移交类默认行数据
const transferDefaultRow = ref({ mc: "", fj: [], bz: "" });
// 表单核心数据
const formData = reactive({
projectName: "",
projectId: "",
del: 0,
createdAt: "",
updatedAt: "",
});
// 状态管理
const loading = ref(false);
const isPreview = ref(!!route.query.isPreview);
const projectList = ref([]);
const rcCgqyglId = ref(route.query.id || "");
let options = ref();
// 初始化移交列表数据
const zbyzyj = ref([
{ mc: "股权转让协议", fj: [], bz: "" },
{ mc: "移交工作方案", fj: [], bz: "" },
{ mc: "资产移交清单", fj: [], bz: "" },
{ mc: "运营交接验收报告", fj: [], bz: "" },
]);
const qzlyzzyj = ref([
{ mc: "终止协议", fj: [], bz: "" },
{ mc: "移交工作方案", fj: [], bz: "" },
{ mc: "资产移交清单", fj: [], bz: "" },
{ mc: "运营交接验收报告", fj: [], bz: "" },
]);
const qmyj = ref([
{ mc: "移交工作方案", fj: [], bz: "" },
{ mc: "资产移交清单", fj: [], bz: "" },
{ mc: "运营交接验收报告", fj: [], bz: "" },
]);
// 可新增的期中履约终止移交列表
const yyqtzjcZxjcsList = ref([]);
// 获取项目列表数据
const getProjectData = () => {
proxy.$post({
url: "/api/project/listProject",
data: { page: 1, pagesize: 1000, attributes: [], menuType: "xmjc" },
callback: (data) => {
projectList.value = data.rows || [];
},
});
};
// 选择项目同步名称
const changeProject = (val) => {
const selectItem = projectList.value.find((item) => item.id === val);
if (selectItem) formData.projectName = selectItem.projectName;
};
// 获取单条记录详情(编辑/预览)
const getJsqtzjcDetail = () => {
if (!rcCgqyglId.value) return;
loading.value = true;
proxy.$post({
url: "/api/project/getYjglInfo",
data: { id: rcCgqyglId.value },
callback: (data) => {
loading.value = false;
Object.assign(formData, data);
zbyzyj.value = data.zbyzyj || zbyzyj.value;
qzlyzzyj.value = data.qzlyzzyj || qzlyzzyj.value;
qmyj.value = data.qmyj || qmyj.value;
yyqtzjcZxjcsList.value = data.yyqtzjcZxjcs || [];
},
});
};
// 返回上一页
const backClick = () => {
router.back(-1);
};
// 保存/提交表单
const saveClick = () => {
if (!formData.projectId) {
ElMessage.warning("请选择项目信息");
return;
}
loading.value = true;
const url = rcCgqyglId.value
? "/api/project/updateYjgl"
: "/api/project/createYjgl";
const submitData = {
...formData,
projectId: formData.projectId + "",
zbyzyj: zbyzyj.value,
qzlyzzyj: qzlyzzyj.value,
qmyj: qmyj.value,
yyqtzjcZxjcs: yyqtzjcZxjcsList.value,
};
proxy.$post({
url: url,
data: submitData,
callback: () => {
loading.value = false;
ElMessage.success(rcCgqyglId.value ? "编辑成功" : "新增成功");
router.back(-1);
},
});
};
// 页面初始化
onMounted(() => {
getProjectData();
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
if (rcCgqyglId.value) getJsqtzjcDetail();
});
</script>
<style scoped lang="less">
@import "@/styles/verticalManages.less";
</style>
...@@ -92,8 +92,6 @@ const getStatementData = () => { ...@@ -92,8 +92,6 @@ const getStatementData = () => {
pagesize: pageSize.value, pagesize: pageSize.value,
}, },
callback: (data) => { callback: (data) => {
console.log(data, "data");
tableData.value = data.rows; tableData.value = data.rows;
total.value = data.count; total.value = data.count;
loading.value = false; loading.value = false;
......
import { defineConfig } from 'vite' import { defineConfig } from "vite";
import vue from '@vitejs/plugin-vue' import vue from "@vitejs/plugin-vue";
import path from 'path' import path from "path";
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [vue()], plugins: [vue()],
resolve: { resolve: {
alias: { alias: {
'@': path.resolve(__dirname, './src') "@": path.resolve(__dirname, "./src"),
} },
}, },
css: { css: {
preprocessorOptions: { preprocessorOptions: {
less: { less: {
javascriptEnabled: true, javascriptEnabled: true,
additionalData: '@import "./src/styles/utils.less";', additionalData: '@import "./src/styles/utils.less";',
}
}
}, },
}) },
},
});
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