Commit c24e7a2f authored by yanzhengyang's avatar yanzhengyang

Merge remote-tracking branch 'origin/master'

parents 83d7e208 afd9ed00
...@@ -53,7 +53,7 @@ export function listDraft(query) { ...@@ -53,7 +53,7 @@ export function listDraft(query) {
} }
// 新增草稿箱 // 新增草稿箱
export function addDraft(data) { export function addDraft(data) {
data.darft = '0' //data.darft = '0'
return request({ return request({
url: '/system/project/draft', url: '/system/project/draft',
method: 'post', method: 'post',
......
import request from '@/utils/request' import request from '@/utils/request'
// 查询项目费用申请列表 // 查询项目费用申请列表
export function getCostRequestList() { export function getCostRequestList(query) {
return request({ return request({
url: '/projectCostRequest/list', url: '/projectCostRequest/list',
method: 'get', method: 'get',
params:query
}) })
} }
// 查询项目费用申请详情
export function getCostRequestDetail(id) {
return request({
url: '/projectCostRequest/' + id,
method: 'get'
})
}
import request from '@/utils/request'
// 查询工时记录列表
export function listTimesheet(query) {
return request({
url: '/system/timesheet/list',
method: 'get',
params: query
})
}
// 查询工时记录详细
export function getTimesheet(id) {
return request({
url: '/system/timesheet/' + id,
method: 'get'
})
}
// 新增工时记录
export function addTimesheet(data) {
return request({
url: '/system/timesheet',
method: 'post',
data: data
})
}
// 修改工时记录
export function updateTimesheet(data) {
return request({
url: '/system/timesheet',
method: 'put',
data: data
})
}
// 删除工时记录
export function delTimesheet(id) {
return request({
url: '/system/timesheet/' + id,
method: 'delete'
})
}
import request from '@/utils/request'
import request from '@/utils/request'
// 查询工时记录列表
export function listTimesheet(query) {
return request({
url: '/timesheet/timesheet/list',
method: 'get',
params: query
})
}
// 查询工时记录详细
export function getTimesheet(id) {
return request({
url: '/timesheet/timesheet/' + id,
method: 'get'
})
}
// 新增工时记录
export function addTimesheet(data) {
return request({
url: '/timesheet/timesheet',
method: 'post',
data: data
})
}
// 修改工时记录
export function updateTimesheet(data) {
return request({
url: '/timesheet/timesheet',
method: 'put',
data: data
})
}
// 删除工时记录
export function delTimesheet(id) {
return request({
url: '/timesheet/timesheet/' + id,
method: 'delete'
})
}
@font-face {
font-family: 'YouSheBiaoTiHei';
src: url('./YouSheBiaoTiHei.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'PingFangSC-Regular';
src: url('./PingFangSC-Regular3_0.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'PingFangSC-Medium';
src: url('./PingFang Medium_downcc.otf');
font-weight: normal;
font-style: normal;
}
...@@ -44,6 +44,9 @@ import ImagePreview from "@/components/ImagePreview" ...@@ -44,6 +44,9 @@ import ImagePreview from "@/components/ImagePreview"
// 字典标签组件 // 字典标签组件
import DictTag from '@/components/DictTag' import DictTag from '@/components/DictTag'
//字体样式
import './assets/font/fonts.css'
const app = createApp(App) const app = createApp(App)
// 全局方法挂载 // 全局方法挂载
......
...@@ -10,13 +10,12 @@ ...@@ -10,13 +10,12 @@
<!-- 表单--> <!-- 表单-->
<div class="addform"> <div class="addform">
<el-form :model="form" label-width="auto"> <el-form :disabled="type ==='详情'" :model="costRequestDetailList" label-width="auto">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="流水号"> <el-form-item label="流水号">
<el-input <el-input
v-model="form.liushuihao" v-model="costRequestDetailList.waterNumber"
disabled disabled
placeholder="自动生成流水号"/> placeholder="自动生成流水号"/>
</el-form-item> </el-form-item>
...@@ -24,13 +23,14 @@ ...@@ -24,13 +23,14 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="费用类型"> <el-form-item label="费用类型">
<el-select <el-select
v-model="form.feiyongleixing" v-model="costRequestDetailList.costType"
placeholder="请选择项目费用类型" disabled>
clearable <el-option
> v-for="dict in project_cost_type"
<el-option label="办公用品" value="shanghai" /> :key="dict.value"
<el-option label="云服务购买" value="beijing" /> :label="dict.label"
<el-option label="域名/服务器托管费" value="beijing" /> :value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-select <el-select
v-model="form.xiangmumingcheng" v-model="costRequestDetailList.projectName"
placeholder="请选择项目名称" clearable> placeholder="请选择项目名称" clearable>
<el-option label="项目一" value="shanghai" /> <el-option label="项目一" value="shanghai" />
<el-option label="项目二" value="beijing" /> <el-option label="项目二" value="beijing" />
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物品描述"> <el-form-item label="物品描述">
<el-input v-model="form.wupinmiaoshu" placeholder="请输入物品名称" /> <el-input v-model="costRequestDetailList.description" placeholder="请输入物品名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -58,13 +58,13 @@ ...@@ -58,13 +58,13 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目编号"> <el-form-item label="项目编号">
<el-input v-model="form.xiangmubianhao" disabled/> <el-input v-model="costRequestDetailList.projectNumber" disabled/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="费用发生时间"> <el-form-item label="费用发生时间">
<el-date-picker style="width: 500px;height: 40px" <el-date-picker style="width: 500px;height: 40px"
v-model="form.date" v-model="costRequestDetailList.createTime"
type="date" type="date"
placeholder="请选择费用发生时间" placeholder="请选择费用发生时间"
clearable/> clearable/>
...@@ -76,7 +76,16 @@ ...@@ -76,7 +76,16 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目类型"> <el-form-item label="项目类型">
<el-input v-model="form.xiangmuleixing" disabled /> <el-select
v-model="costRequestDetailList.projectType"
disabled>
<el-option
v-for="dict in project_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -84,12 +93,12 @@ ...@@ -84,12 +93,12 @@
<el-row > <el-row >
<el-col :span="7"> <el-col :span="7">
<el-form-item label="单价"> <el-form-item label="单价">
<el-input class="danjia_shuliang" v-model="form.danjia" placeholder="请输入物品单价" /> <el-input class="danjia_shuliang" v-model="costRequestDetailList.unitPrice" placeholder="请输入物品单价" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="数量"> <el-form-item label="数量">
<el-input class="danjia_shuliang" v-model="form.num" placeholder="请输入物品数量" /> <el-input class="danjia_shuliang" v-model="costRequestDetailList.amount" placeholder="请输入物品数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -99,12 +108,12 @@ ...@@ -99,12 +108,12 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="事业部负责人"> <el-form-item label="事业部负责人">
<el-input v-model="form.fuzeren" disabled /> <el-input v-model="costRequestDetailList.userName" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="申请金额(元)"> <el-form-item label="申请金额(元)">
<el-input v-model="form.jine" placeholder="请输入申请金额" /> <el-input v-model="costRequestDetailList.sumMoney" placeholder="请输入申请金额" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -112,13 +121,24 @@ ...@@ -112,13 +121,24 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目状态"> <el-form-item label="项目状态">
<el-input v-model="form.xiangmustatus" disabled /> <el-select
v-model="costRequestDetailList.projectStatus"
disabled
>
<el-option
v-for="dict in project_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="备注"> <el-form-item label="备注">
<el-input <el-input
v-model="form.beizhu" v-model="costRequestDetailList.remark"
:autosize="{ minRows: 4 }" :autosize="{ minRows: 4 }"
type="textarea" type="textarea"
placeholder="请输入备注" placeholder="请输入备注"
...@@ -130,7 +150,7 @@ ...@@ -130,7 +150,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="登记人"> <el-form-item label="登记人">
<el-input v-model="form.dengjiren" placeholder="张三" disabled /> <el-input v-model="costRequestDetailList.dengjiren" placeholder="张三" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -138,26 +158,13 @@ ...@@ -138,26 +158,13 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
<!-- 取消、提交按钮--> <!-- 取消、提交按钮-->
<div class="button"> <div class="button">
<div><el-button @click="goBackIndex" class="button_size">取消</el-button></div> <div><el-button @click="goBackIndex" class="button_size">取消</el-button></div>
<div><el-button class="button_size" type="primary">提交</el-button></div> <div><el-button v-if="type !=='详情'" class="button_size" type="primary">提交</el-button></div>
</div> </div>
</div> </div>
...@@ -168,26 +175,30 @@ ...@@ -168,26 +175,30 @@
<script setup> <script setup>
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import {getCostRequestDetail, getCostRequestList} from "../../../api/projectCostRequest/projectCostRequest.js";
const { proxy } = getCurrentInstance();
const { project_status, project_cost_type,project_cost_request_status,project_type} = proxy.useDict('project_status', 'project_cost_type','project_cost_request_status','project_type');
//根据项目id获取表单详情数据
const costRequestDetailList = ref([]);
const getDetail=()=> {
let projectId = proxy.$route.query.id;
getCostRequestDetail(projectId).then(response => {
console.log(response.data)
costRequestDetailList.value = response.data
});
}
//根据跳转页面是否传参判断进详情页or新增页
let type = proxy.$route.query.type
if(type === "详情"){
//进详情页面
getDetail()
}else{
//进新增页面
}
// 表单 // 取消按钮
const form = reactive({
xiangmumingcheng: '',
xiangmubianhao: '',
xiangmuleixing: '',
fuzeren: '',
xiangmustatus: '',
dengjiren: '',
feiyongleixing: '',
date: '',
wupinmiaoshu: '',
danjia: '',
num: '',
jine: '',
beizhu: '',
liushuihao: '',
fujian: ''
})
const router = useRouter() const router = useRouter()
const goBackIndex = () => { const goBackIndex = () => {
router.push({ path: '/costManage/projectCostRequest/index' }) router.push({ path: '/costManage/projectCostRequest/index' })
......
<template> <template>
<div class="app-container" > <div class="app-container" >
<div class="shadow_box_top"> <el-form class="formSearch" ref="formRef" :inline="true" :model="formInline">
<el-form class="shadow_box_top_form" :inline="true" :model="formInline">
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-select <el-input
v-model="formInline.mingcheng" v-model="queryParams.projectName"
placeholder="请选择项目名称" placeholder="请选择项目名称"
clearable clearable/>
>
<el-option label="项目名称一" value="shanghai" />
<el-option label="项目名称二" value="beijing" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目编号"> <el-form-item label="项目编号">
<el-input <el-input
v-model="formInline.bianhao" v-model="queryParams.projectNumber"
placeholder="请输入项目编号" placeholder="请输入项目编号"
clearable clearable/>
/>
</el-form-item> </el-form-item>
<el-form-item label="项目负责人"> <el-form-item label="项目负责人">
<el-input <el-input
v-model="formInline.fuzeren" v-model="queryParams.userName"
placeholder="请输入项目负责人" placeholder="请输入项目负责人"
clearable clearable/>
/>
</el-form-item> </el-form-item>
<el-form-item label="项目类型"> <el-form-item label="项目类型">
<el-select <el-select v-model="queryParams.projectType" placeholder="请选择项目类型" clearable>
v-model="formInline.leixing" <el-option
placeholder="请选择项目类型" v-for="dict in project_type"
clearable :key="dict.value"
> :label="dict.label"
<el-option label="项目类型一" value="shanghai" /> :value="dict.value"/>
<el-option label="项目类型二" value="beijing" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> <el-form-item>
<div>
<el-button type="primary" class="el-button-primary" icon="Search" @click="onSearch">搜索</el-button> <el-button type="primary" class="el-button-primary" icon="Search" @click="onSearch">搜索</el-button>
<el-button type="default" class="el-button-defalut" icon="Refresh" @click="reset">重置</el-button> <el-button type="default" class="el-button-defalut" icon="Refresh" @click="reset">重置</el-button>
</div> </el-form-item>
</div> </el-form>
<div class="shadow_box_bottom">
<!-- 导航、按钮--> <!-- 导航、按钮-->
<div class="shadow_box_bottom_add"> <div class="shadow_box_bottom_add">
<div class="left"> <div class="left">
...@@ -68,7 +56,7 @@ ...@@ -68,7 +56,7 @@
<text class="text1">审批流程</text> <text class="text1">审批流程</text>
<div class="text2"> <div class="text2">
<text>项目编号</text> <text>项目编号</text>
<text>XS647375</text> <text>{{}}</text>
</div> </div>
<div class="step"> <div class="step">
<el-steps :active="2" align-center> <el-steps :active="2" align-center>
...@@ -84,19 +72,12 @@ ...@@ -84,19 +72,12 @@
</div> </div>
<!-- 列表--> <!-- 列表-->
<div class="shadow_box_bottom_table"> <div class="contentTable">
<el-table v-loading="loading" :data="projectCostRequestList" border> <el-table v-loading="loading" :data="projectCostRequestList" border>
<el-table-column type="selection" align="center"></el-table-column> <el-table-column type="selection" align="center"></el-table-column>
<el-table-column prop="projectNumber" label="项目编号" align="center"> <el-table-column prop="projectNumber" label="项目编号" align="center">
<template #default="scope"> <template #default="{row}">
<span <span @click="handleView(row)" style="color:royalblue;text-decoration:underline;cursor:pointer;">{{row.projectNumber}}</span>
style="
color: royalblue;
text-decoration: underline;
cursor: pointer;
"
>{{ scope.row.projectNumber }}</span
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -155,16 +136,27 @@ ...@@ -155,16 +136,27 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="{ row }"> <template #default="scope">
<el-icon class="list_icon"><Edit /></el-icon> <el-button link type="primary" icon="View" @click="handleView(scope.row)" ></el-button>
<el-icon class="list_icon"><View /></el-icon> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</div > <div class="shadow_box_bottom_page">
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div> </div>
</div >
</template> </template>
...@@ -174,57 +166,62 @@ ...@@ -174,57 +166,62 @@
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { project_status, project_cost_type,project_cost_request_status,project_type} = proxy.useDict('project_status', 'project_cost_type','project_cost_request_status','project_type'); const { project_status, project_cost_type,project_cost_request_status,project_type} = proxy.useDict('project_status', 'project_cost_type','project_cost_request_status','project_type');
const total = ref(0);
const queryParams = reactive({
pageNum:1,
pageSize:10,
projectName:null,
projectNumber:null,
userName:null,
projectType:null
})
// 列表 // 列表
const projectCostRequestList = ref([]); const projectCostRequestList = ref([]);
const getList=()=> { const getList=()=> {
getCostRequestList().then(response => { getCostRequestList(queryParams).then(response => {
console.log("数组",response.data) console.log("列表",response.rows)
projectCostRequestList.value = response.data total.value = response.total
projectCostRequestList.value = response.rows
}); });
} }
getList() getList()
// 顶部搜索表单数据
const formInline = reactive({
mingcheng: '',
bianhao: '',
fuzeren: '',
leixing: ''
})
// 重置表单 // 重置表单
const reset = () => { const reset = () => {
formInline.value = { queryParams.projectName = null
mingcheng: '', queryParams.projectNumber = null
bianhao: '', queryParams.userName = null
fuzeren: '', queryParams.projectType = null
leixing: '' getList()
}
} }
// 提交搜索表单 // 提交搜索表单
const onSearch = () => { const onSearch = () => {
console.log(formInline.value) console.log("queryParams",queryParams)
getList()
} }
// 根据项目状态返回标签类型
const getTagType = status => {
if (status === '待审批') return 'warning'
return 'default'
}
//新增按钮 //新增按钮
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import {getCostRequestList} from "../../../api/projectCostRequest/projectCostRequest.js"; import {getCostRequestDetail, getCostRequestList} from "../../../api/projectCostRequest/projectCostRequest.js";
const router = useRouter() const router = useRouter()
const goToAddPage = () => { const goToAddPage = () => {
router.push({ path: '/costManage/projectCostRequest/add' }) router.push({ path: '/costManage/projectCostRequest/add' ,query:{type:"新增"}})
} }
//查看详情
const handleView=({id})=> {
console.log("详情"+id)
proxy.$router.push({ path: '/costManage/projectCostRequest/add', query: { id: id,type:"详情" } });
// router.push({ path: '/costManage/projectCostRequest/add', query: { id: id } })
}
//编辑
const handleUpdate=({id})=>{
console.log("编辑"+id)
}
...@@ -236,44 +233,9 @@ const goToAddPage = () => { ...@@ -236,44 +233,9 @@ const goToAddPage = () => {
<style scoped lang="scss"> <style scoped lang="scss">
.shadow_box_top {
margin-left: 1%;
width: 98%;
display: flex;
justify-content: space-around;
align-items: center;
box-shadow: 0 0 3px rgba(211, 211, 211, 0.2),
0 0 7px rgba(211, 211, 211, 0.2),
0 0 7px rgba(211, 211, 211, 0.2);
.shadow_box_top_form {
margin-top: 20px;
padding: 10px 10px;
display: flex;
justify-content: space-between;
align-items: center;
}
.el-form-item {
width: 270px;
}
.img-icon {
margin-right: 8px;
width: 24px;
height: 24px;
}
}
.shadow_box_bottom {
margin-top: 20px;
margin-left: 1%;
width: 98%;
height: calc(100vh - 250px);
box-shadow: 0 0 3px rgba(211, 211, 211, 0.2),
0 0 7px rgba(211, 211, 211, 0.2),
0 0 7px rgba(211, 211, 211, 0.2);
//导航 、 按钮 //导航 、 按钮
.shadow_box_bottom_add { .shadow_box_bottom_add {
display: flex; display: flex;
width: 98%; width: 98%;
justify-content: space-between; justify-content: space-between;
...@@ -300,10 +262,11 @@ const goToAddPage = () => { ...@@ -300,10 +262,11 @@ const goToAddPage = () => {
} }
.right { .right {
} }
} }
//步骤条 //步骤条
.shadow_box_bottom_step { .shadow_box_bottom_step {
display: flex; display: flex;
margin: 10px 13px; margin: 10px 13px;
padding: 20px 0px; padding: 20px 0px;
...@@ -324,15 +287,16 @@ const goToAddPage = () => { ...@@ -324,15 +287,16 @@ const goToAddPage = () => {
.step { .step {
width: 80%; width: 80%;
} }
}
} }
//列表
.shadow_box_bottom_table {
.list_icon { .list_icon {
color: #477bf5; color: #477bf5;
margin: 8px; margin: 8px;
font-size: 20px; font-size: 20px;
}
} }
</style> </style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="form" label-width="auto"> <div class="contentA">
<el-form-item label="项目编号" prop="projectNumber" > <div style="padding-left: 10px">
<el-input v-model="form.projectNumber" placeholder="请输入项目编号" disabled></el-input> <span class="bold-text" style="border-bottom: 2px solid blue;">项目详情</span>
</div>
<div style="padding-top: 20px">
<el-form ref="formRef" :model="form" :rules="rules" label-width="auto">
<el-row :gutter="150">
<el-col :span="10">
<el-form-item label="项目编号">
<el-input
v-model="form.projectNumber"
disabled
size="large"
style="width: 100%"
readonly
/>
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectName" > <el-form-item label="项目名称">
<el-input v-model="form.projectName" placeholder="请输入项目名称" readonly></el-input> <el-input
v-model="form.projectName"
size="large"
style="width: 100%"
readonly
/>
</el-form-item> </el-form-item>
<el-form-item label="项目类型" prop="projectType" > <el-form-item label="项目类型">
<el-select <el-select
v-model="form.projectType" v-model="form.projectType"
placeholder="请选择项目类型" style="width: 100%"
readonly> size="large"
disabled
>
<el-option <el-option
v-for="dict in project_type" v-for="dict in project_type"
:key="dict.value" :key="dict.value"
...@@ -20,34 +40,41 @@ ...@@ -20,34 +40,41 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="开始时间"> <el-form-item label="预计结束时间">
<el-date-picker <el-date-picker
v-model="form.startDate" v-model="form.startDate"
format="YYYY/MM/DD"
type="date" type="date"
placeholder="选择日期" style="width: 100%"
size="large"
readonly readonly
></el-date-picker> />
</el-form-item> </el-form-item>
<el-form-item label="结束时间"> <el-form-item label="预计开始时间">
<el-date-picker <el-date-picker
v-model="form.endDate" v-model="form.endDate"
format="YYYY/MM/DD"
type="date" type="date"
placeholder="选择日期" style="width: 100%"
size="large"
readonly readonly
></el-date-picker> />
</el-form-item> </el-form-item>
<el-form-item label="部门负责人"> <el-form-item label="事业部门负责人">
<el-input <el-input
v-model="form.departmentLeaderName" v-model="form.departmentLeaderName"
placeholder="请输入部门负责人名称"
disabled disabled
></el-input> style="width: 100%"
size="large"
/>
</el-form-item> </el-form-item>
<el-form-item label="项目经理"> <el-form-item label="项目经理">
<el-select <el-select
v-model="form.projectManagerId" v-model="form.projectManagerId"
placeholder="请选择项目经理" disabled
readonly> style="width: 100%"
size="large"
>
<el-option <el-option
v-for="dict in managerOptions" v-for="dict in managerOptions"
:key="dict.value" :key="dict.value"
...@@ -59,9 +86,12 @@ ...@@ -59,9 +86,12 @@
<el-form-item label="项目成员"> <el-form-item label="项目成员">
<el-select <el-select
v-model="form.projectMemberIds" v-model="form.projectMemberIds"
size="large"
multiple multiple
placeholder="请选择项目成员" filterable
readonly> disabled
style="width: 100%;"
>
<el-option <el-option
v-for="dict in membersOptions" v-for="dict in membersOptions"
:key="dict.value" :key="dict.value"
...@@ -73,22 +103,25 @@ ...@@ -73,22 +103,25 @@
<el-form-item label="项目成本(元)"> <el-form-item label="项目成本(元)">
<el-input <el-input
v-model="form.projectCost" v-model="form.projectCost"
placeholder="请输入项目成本" size="large"
style="width: 100%"
readonly readonly
></el-input> />
</el-form-item> </el-form-item>
<el-form-item label="项目描述"> <el-form-item label="项目描述">
<el-input <el-input
v-model="form.projectDescribe" v-model="form.projectDescribe"
type="textarea" type="textarea"
placeholder="请输入项目描述" :autosize="{ minRows: 5, maxRows: 7 }"
size="large"
style="width: 100%"
readonly readonly
></el-input> />
</el-form-item> </el-form-item>
<el-form-item label="项目状态"> <el-form-item label="项目状态">
<el-select <el-select
v-model="form.projectStatus" v-model="form.projectStatus"
placeholder="请选择项目状态" disabled
> >
<el-option <el-option
v-for="dict in project_status" v-for="dict in project_status"
...@@ -99,37 +132,73 @@ ...@@ -99,37 +132,73 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目附件"> <el-form-item label="项目附件">
<!-- 展示已上传的附件 --> <el-upload
<ul> list-type="text"
<li v-for="(file, index) in fileList" :key="index"> v-model:file-list="form.fileList"
<a :href="file.url" target="_blank">{{ file.name }}</a> class="upload-demo"
</li> action="https://jsonplaceholder.typicode.com/posts/"
</ul> :on-preview="handlePreview"
:on-exceed="handleExceed"
>
</el-upload>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="项目回款笔数"> <el-form-item label="项目回款笔数">
<el-input v-model="form.repaymentCount" readonly></el-input> <el-select
v-model="form.repaymentCount"
@change="updateRepaymentInputs"
size="large"
disabled
>
<el-option
v-for="num in 10"
:key="num"
:label="num"
:value="num"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form :model="form" label-width="120px"> <el-form :model="form" label-width="80px">
<div v-for="(item, index) in form.repaymentDetails" :key="index"> <div v-for="(item, index) in form.repaymentDetails" :key="index">
<el-row> <el-row>
<el-col :span="5"> <el-col :span="12">
<!-- 回款比例 --> <!-- 回款比例 -->
<el-form-item :label="'第 ' + (index + 1) + ' 笔'"> <el-form-item :label="'第 ' + (index + 1) + ' 笔'">
<el-input v-model="item.repaymentPercentage" suffix="%" readonly></el-input> <el-input
v-model="item.repaymentPercentage"
width="100%"
readonly
>
<template #suffix>
%
</template>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="12">
<!-- 回款条件 --> <!-- 回款条件 -->
<el-form-item> <el-form-item label="回款前置条件">
<el-input v-model="item.repaymentCondition" readonly></el-input> <el-input
v-model="item.repaymentCondition"
width="100%"
readonly
></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
</el-form> </el-form>
</el-col>
</el-row>
<el-form-item>
<div style=" margin-left: auto;margin-right: 25px">
<el-button size="large" class="btn-B" @click="reset">返回</el-button>
</div>
</el-form-item>
</el-form> </el-form>
<div> </div>
<el-button @click="reset">取消</el-button>
</div> </div>
</div> </div>
</template> </template>
...@@ -158,7 +227,7 @@ const form = ref({ ...@@ -158,7 +227,7 @@ const form = ref({
repaymentCount: '', repaymentCount: '',
repaymentDetails: [], repaymentDetails: [],
}) })
const repaymentDetails = ref([])
const headOptions = ref([]) const headOptions = ref([])
const managerOptions = ref([]) const managerOptions = ref([])
const membersOptions = ref([]) const membersOptions = ref([])
...@@ -205,5 +274,23 @@ onMounted(() => { ...@@ -205,5 +274,23 @@ onMounted(() => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.contentA{
height: auto;
padding: 20px;
margin-bottom: 10px;
background: #FFFFFF;
box-shadow: 0 2px 2px 0 #b3b3b380;
border-radius: 2px;
overflow: hidden;
}
.bold-text {
width: 72px;
height: 15px;
font-family: PingFangSC-Medium;
font-weight: 900;
font-size: 18px;
color: #0D162A;
letter-spacing: 0;
line-height: 15px;
}
</style> </style>
This diff is collapsed.
This diff is collapsed.
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