opt:优化项目,客户相关代码

This commit is contained in:
zhangzq
2026-03-18 11:30:58 +08:00
parent 3a9e6df891
commit b6080e9d4b
10 changed files with 448 additions and 276 deletions

View File

@@ -1,4 +1,4 @@
<p align="center">
npm<p align="center">
<img width="320" src="https://wpimg.wallstcn.com/ecc53a42-d79b-42e2-8852-5126b810a4c8.svg">
</p>

View File

@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Warehouse Management System</title>
<title>上海诺力智能科技有限公司</title>
</head>
<body>
<script src=<%= BASE_URL %>/tinymce4.7.5/tinymce.min.js></script>

View File

@@ -45,6 +45,13 @@ export default {
data: param
})
},
getStaffPage(param) {
return request({
url: `/Hr/GetStaffPage`,
method: "post",
data: param
});
},
GetStaffTypeList() {
return request({
url: `/Hr/GetStaffTypeList`,
@@ -73,7 +80,7 @@ export default {
data: param
})
},
GetOperationDeptStaff()
{
return request({

View File

@@ -5,39 +5,62 @@
<el-collapse-item name="base-info">
<template slot="title">
<span class="custom-title">项目基础信息</span>
<el-button style="margin_left:20px" size="mini" class="el-icon-edit" type="text" @click="editProjectInfo"
v-if="edit_support == true">编辑</el-button>
<el-button
v-if="edit_support == true"
style="margin_left:20px"
size="mini"
class="el-icon-edit"
type="text"
@click="editProjectInfo">编辑</el-button>
</template>
<span style="border: 1px solid #dcdcdc; padding: 8px; display: inline-block;width: 100%;">项目介绍{{
project_info.project_intro }}
project_info.project_intro }}
</span>
<el-descriptions :column="2" border class="resume-label-width" style="margin-top: 5px;">
<el-descriptions-item label="客户名称" :span="1">{{ project_info.company_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" :span="1">{{ project_info.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目状态" :span="1">{{ project_info.project_state_desp }}
<el-button v-if="project_info.project_state == 1 && edit_support == true" type="text"
icon="el-icon-video-play" @click="dialogVisibleStartProject = true" style="margin-left: 20px;"
size="mini">启动</el-button>
<el-descriptions-item :span="1" label="客户名称">{{ project_info.company_name }}</el-descriptions-item>
<el-descriptions-item :span="1" label="项目名称">{{ project_info.project_name }}</el-descriptions-item>
<el-descriptions-item :span="1" label="项目状态">{{ project_info.project_state_desp }}
<el-button
v-if="project_info.project_state == 1 && edit_support == true"
type="text"
icon="el-icon-video-play"
style="margin-left: 20px;"
size="mini"
@click="dialogVisibleStartProject = true">启动</el-button>
</el-descriptions-item>
<el-descriptions-item label="创建时间" :span="1">{{ project_info.create_time }}</el-descriptions-item>
<el-descriptions-item label="销售经理" :span="1">{{ project_info.sale_manager }}
<el-button type="text" icon="el-icon-edit" @click="setSaleManager()" style="margin-left: 20px;"
size="mini" v-if="edit_support == true && allow_change_manager == true">编辑</el-button>
<el-descriptions-item :span="1" label="创建时间">{{ project_info.create_time }}</el-descriptions-item>
<el-descriptions-item :span="1" label="销售经理">{{ project_info.sale_name }}
<el-button
v-if="edit_support == true && allow_change_manager == true"
type="text"
icon="el-icon-edit"
style="margin-left: 20px;"
size="mini"
@click="setSaleManager()">编辑</el-button>
</el-descriptions-item>
<el-descriptions-item label="交付经理" :span="1">{{ project_info.project_manager }}
<el-button type="text" icon="el-icon-edit" @click="setProjectManager()" style="margin-left: 20px;"
size="mini" v-if="edit_support == true && allow_change_manager == true">编辑</el-button>
<el-descriptions-item :span="1" label="交付经理">{{ project_info.project_manager }}
<el-button
v-if="edit_support == true && allow_change_manager == true"
type="text"
icon="el-icon-edit"
style="margin-left: 20px;"
size="mini"
@click="setProjectManager()">编辑</el-button>
</el-descriptions-item>
<el-descriptions-item label="项目成员" :span="1">{{ project_info.project_members }}
<el-button type="text" icon="el-icon-edit" @click="addProjectMember()" style="margin-left: 20px;"
size="mini" v-if="edit_support == true">编辑</el-button>
<el-descriptions-item :span="1" label="项目成员">{{ project_info.project_members }}
<el-button
v-if="edit_support == true"
type="text"
icon="el-icon-edit"
style="margin-left: 20px;"
size="mini"
@click="addProjectMember()">编辑</el-button>
</el-descriptions-item>
<el-descriptions-item label="外部成员" :span="1">
<el-button class="el-icon-view" @click="showExternalMember()" type="text" size="mini">查看</el-button>
<el-descriptions-item :span="1" label="外部成员">
<el-button class="el-icon-view" type="text" size="mini" @click="showExternalMember()">查看</el-button>
</el-descriptions-item>
<!--el-descriptions-item label="项目合同" :span="1" v-if="project_info.project_state > 1 && edit_support == true">
<el-button class="el-icon-view" @click="showContract()" type="text" size="mini">查看</el-button>
@@ -47,29 +70,37 @@
<el-button class="el-icon-view" @click="showProtocol()" type="text" size="mini">查看</el-button>
</el-descriptions-item-->
<el-descriptions-item label="项目计划" :span="1" v-if="project_info.project_state > 1">
<el-button class="el-icon-view" @click="showPlan()" type="text" size="mini">查看</el-button>
<el-descriptions-item v-if="project_info.project_state > 1" :span="1" label="项目计划">
<el-button class="el-icon-view" type="text" size="mini" @click="showPlan()">查看</el-button>
</el-descriptions-item>
<el-descriptions-item label="项目资料" :span="1">
<el-button class="el-icon-view" @click="showContract()" type="text" size="mini"
v-if="project_info.project_state > 1 && edit_support == true">项目合同</el-button>
<el-button class="el-icon-view" @click="showEquipment()" type="text" size="mini">设备资料</el-button>
<el-button class="el-icon-view" @click="showProtocol()" type="text" size="mini">技术协议</el-button>
<el-button class="el-icon-view" @click="showSummary()" type="text" size="mini">会议纪要</el-button>
<el-button class="el-icon-view" @click="showBid()" type="text" size="mini"
v-if="edit_support == true">投标文件</el-button>
<el-descriptions-item :span="1" label="项目资料">
<el-button
v-if="project_info.project_state > 1 && edit_support == true"
class="el-icon-view"
type="text"
size="mini"
@click="showContract()">项目合同</el-button>
<el-button class="el-icon-view" type="text" size="mini" @click="showEquipment()">设备资料</el-button>
<el-button class="el-icon-view" type="text" size="mini" @click="showProtocol()">技术协议</el-button>
<el-button class="el-icon-view" type="text" size="mini" @click="showSummary()">会议纪要</el-button>
<el-button
v-if="edit_support == true"
class="el-icon-view"
type="text"
size="mini"
@click="showBid()">投标文件</el-button>
</el-descriptions-item>
<!--el-descriptions-item label="会议纪要" :span="1">
<el-button class="el-icon-view" @click="showSummary()" type="text" size="mini">查看</el-button>
</el-descriptions-item-->
<el-descriptions-item label="验收报告" :span="1" v-if="project_info.project_state > 8">
<el-button class="el-icon-view" @click="showReport()" type="text" size="mini">查看</el-button>
<el-descriptions-item v-if="project_info.project_state > 8" :span="1" label="验收报告">
<el-button class="el-icon-view" type="text" size="mini" @click="showReport()">查看</el-button>
</el-descriptions-item>
<el-descriptions-item label="供应商" :span="1">
<el-button class="el-icon-view" @click="showSupplier()" type="text" size="mini">查看</el-button>
<el-descriptions-item :span="1" label="供应商">
<el-button class="el-icon-view" type="text" size="mini" @click="showSupplier()">查看</el-button>
</el-descriptions-item>
</el-descriptions>
@@ -77,92 +108,162 @@
</el-collapse>
<!-- 问题单对话框 -->
<el-dialog title="项目合同" :visible.sync="dialogVisibleShowContract" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowContract"
:close-on-click-modal="false"
title="项目合同"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<Contract :project_id="project_info.project_id" :contract_category="1" :edid_authority="false"
v-if="update_view == false" />
<Contract
v-if="update_view == false"
:project_id="project_info.project_id"
:contract_category="1"
:edid_authority="false" />
</div>
</el-dialog>
<!-- 外部客户对话框 -->
<el-dialog title="外部客户" :visible.sync="dialogVisibleShowExternalMember" :close-on-click-modal="false" width="55%"
style="position: fixed;" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowExternalMember"
:close-on-click-modal="false"
title="外部客户"
width="55%"
style="position: fixed;"
append-to-body>
<div class="custom-dialog">
<ExternalMember :project_id="project_info.project_id" :edit_support="edit_support"
v-if="update_view == false" />
<ExternalMember
v-if="update_view == false"
:project_id="project_info.project_id"
:edit_support="edit_support" />
</div>
</el-dialog>
<el-dialog title="技术协议" :visible.sync="dialogVisibleShowProtocol" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowProtocol"
:close-on-click-modal="false"
title="技术协议"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<Contract :project_id="project_info.project_id" :contract_category="2" :edid_authority="edit_support"
v-if="update_view == false" />
<Contract
v-if="update_view == false"
:project_id="project_info.project_id"
:contract_category="2"
:edid_authority="edit_support" />
</div>
</el-dialog>
<el-dialog title="设备资料" :visible.sync="dialogVisibleShowEquipment" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowEquipment"
:close-on-click-modal="false"
title="设备资料"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<Materials :materials_class="1" :materials_owner="project_info.project_id" :materials_type="[18, 19]"
:edid_authority="true" v-if="update_view == false" />
<Materials
v-if="update_view == false"
:materials_class="1"
:materials_owner="project_info.project_id"
:materials_type="[18, 19]"
:edid_authority="true" />
</div>
</el-dialog>
<el-dialog title="会议纪要" :visible.sync="dialogVisibleShowSummary" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowSummary"
:close-on-click-modal="false"
title="会议纪要"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<Materials :materials_class="1" :materials_owner="project_info.project_id" :materials_type="2"
:edid_authority="true" v-if="update_view == false" />
<Materials
v-if="update_view == false"
:materials_class="1"
:materials_owner="project_info.project_id"
:materials_type="2"
:edid_authority="true" />
</div>
</el-dialog>
<el-dialog title="项目计划" :visible.sync="dialogVisibleShowPlan" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowPlan"
:close-on-click-modal="false"
title="项目计划"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<ProjectPlan v-if="update_view == false" :project_id="project_info.project_id" />
</div>
</el-dialog>
<el-dialog title="验收报告" :visible.sync="dialogVisibleShowReport" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowReport"
:close-on-click-modal="false"
title="验收报告"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<Materials :materials_class="1" :materials_owner="project_info.project_id" :materials_type="4"
:edid_authority="true" v-if="update_view == false" />
<Materials
v-if="update_view == false"
:materials_class="1"
:materials_owner="project_info.project_id"
:materials_type="4"
:edid_authority="true" />
</div>
</el-dialog>
<el-dialog title="供应商信息" :visible.sync="dialogVisibleShowSupplier" :close-on-click-modal="false" width="60%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowSupplier"
:close-on-click-modal="false"
title="供应商信息"
width="60%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<SupplierInfo :project_id="project_info.project_id" :edid_authority="edit_support" />
</div>
</el-dialog>
<el-dialog title="投标文件" :visible.sync="dialogVisibleShowBid" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<el-dialog
:visible.sync="dialogVisibleShowBid"
:close-on-click-modal="false"
title="投标文件"
width="95%"
style="position: fixed;top:-10%"
append-to-body>
<div class="custom-dialog">
<BidInfo :project_id="project_info.project_id" :contract_category="5" :edid_authority="edit_support"
v-if="update_view == false" />
<BidInfo
v-if="update_view == false"
:project_id="project_info.project_id"
:contract_category="5"
:edid_authority="edit_support" />
</div>
</el-dialog>
<!-- 对话框 -->
<el-dialog title="文件信息" :visible.sync="dialogVisibleShowFile" width="80%" append-to-body>
<el-dialog :visible.sync="dialogVisibleShowFile" title="文件信息" width="80%" append-to-body>
<img v-if="isImage" :src="previewUrl" alt="Preview" style="max-width: 40%; max-height: 30%;">
<iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"></iframe>
<iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"/>
<p v-else>不支持的文件类型</p>
</el-dialog>
<!-- 设置项目经理对话框 -->
<el-dialog title="设置交付负责人" :visible.sync="dialogVisibleSetManager" width="30%" append-to-body>
<el-dialog :visible.sync="dialogVisibleSetManager" title="设置交付负责人" width="30%" append-to-body>
<el-form :model="editProject" label-width="100px">
<el-form-item label="项目成员">
<el-select v-model="editProject.project_manager" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in dept_member_list" :key="item.staff_id" :label="item.staff_name"
:value="item.staff_id">
</el-option>
<el-option
v-for="item in dept_member_list"
:key="item.staff_id"
:label="item.staff_name"
:value="item.staff_id"/>
</el-select>
</el-form-item>
</el-form>
@@ -173,13 +274,15 @@
</el-dialog>
<!-- 设置项目经理对话框 -->
<el-dialog title="设置销售负责人" :visible.sync="dialogVisibleSetSaleManager" width="30%" append-to-body>
<el-dialog :visible.sync="dialogVisibleSetSaleManager" title="设置销售负责人" width="30%" append-to-body>
<el-form :model="editProject" label-width="100px">
<el-form-item label="项目成员">
<el-select v-model="editProject.sale_manager" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in dept_member_list" :key="item.staff_id" :label="item.staff_name"
:value="item.staff_id">
</el-option>
<el-option
v-for="item in dept_member_list"
:key="item.staff_id"
:label="item.staff_name"
:value="item.staff_id"/>
</el-select>
</el-form-item>
</el-form>
@@ -190,13 +293,15 @@
</el-dialog>
<!-- 添加项目成员对话框 -->
<el-dialog title="添加项目组成员" :visible.sync="dialogVisibleAddMember" width="30%" append-to-body>
<el-dialog :visible.sync="dialogVisibleAddMember" title="添加项目组成员" width="30%" append-to-body>
<el-form :model="editProject" label-width="100px">
<el-form-item label="项目成员">
<el-select v-model="editProject.project_members" multiple placeholder="请选择" style="width: 100%;">
<el-option v-for="item in dept_member_list" :key="item.staff_id" :label="item.staff_name"
:value="item.staff_id">
</el-option>
<el-option
v-for="item in dept_member_list"
:key="item.staff_id"
:label="item.staff_name"
:value="item.staff_id"/>
</el-select>
</el-form-item>
</el-form>
@@ -207,27 +312,29 @@
</el-dialog>
<!-- 编辑项目对话框 -->
<el-dialog title="编辑项目" :visible.sync="dialogVisibleEditProject" width="30%" append-to-body>
<el-dialog :visible.sync="dialogVisibleEditProject" title="编辑项目" width="30%" append-to-body>
<el-form :model="editProject" label-width="100px">
<el-form-item label="项目名称">
<el-input v-model="editProject.project_name"></el-input>
<el-input v-model="editProject.project_name"/>
</el-form-item>
<el-form-item label="项目编号">
<el-input v-model="editProject.project_number"></el-input>
<el-input v-model="editProject.project_number"/>
</el-form-item>
<el-form-item label="项目描述">
<el-input v-model="editProject.project_intro"></el-input>
<el-input v-model="editProject.project_intro"/>
</el-form-item>
<el-form-item label="项目状态">
<el-select v-model="editProject.project_state" placeholder="请选择" style="width: 80%;">
<el-option v-for="item in project_state_list" :key="item.id" :label="item.desp" :value="item.id">
</el-option>
<el-option v-for="item in project_state_list" :key="item.id" :label="item.desp" :value="item.id"/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="editProject.create_time" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
<el-date-picker
v-model="editProject.create_time"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -237,20 +344,27 @@
</el-dialog>
<!-- 启动项目对话框 -->
<el-dialog title="启动项目" :visible.sync="dialogVisibleStartProject" width="30%" append-to-body>
<el-dialog :visible.sync="dialogVisibleStartProject" title="启动项目" width="30%" append-to-body>
<el-form :model="editNode" label-width="100px">
<el-form-item label="参与员工">
<el-select v-model="editNode.members" multiple placeholder="请选择" style="width: 100%;">
<el-option v-for="item in dept_member_list" :key="item.staff_id" :label="item.staff_name"
:value="item.staff_id">
</el-option>
<el-select v-model="editNode.members" filterable multiple placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in dept_member_list"
:key="item.staff_id"
:label="item.staff_name"
:value="item.staff_id"
filterable
/>
</el-select>
</el-form-item>
<el-form-item label="启动时间">
<el-date-picker v-model="editNode.start_date" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
<el-date-picker
v-model="editNode.start_date"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"/>
</el-form-item>
</el-form>
@@ -268,16 +382,15 @@ import project from '@/api/project'
import contract from '@/api/contract'
import hr from '@/api/hr'
import user from '@/api/user'
import Contract from './Contract.vue';
import ExternalMember from './ExternalMember.vue';
import Contract from './Contract.vue'
import ExternalMember from './ExternalMember.vue'
import Materials from '@/views/components/Materials.vue'
import SupplierInfo from './SupplierInfo.vue';
import ProjectPlan from './ProjectPlan.vue';
import BidInfo from '@/views/components/BidInfo.vue';
import SupplierInfo from './SupplierInfo.vue'
import ProjectPlan from './ProjectPlan.vue'
import BidInfo from '@/views/components/BidInfo.vue'
export default {
name: 'ProjectBasicInfo',
props: ['project_id', 'edit_support'],
components: {
Contract,
ExternalMember,
@@ -286,6 +399,7 @@ export default {
BidInfo,
ProjectPlan
},
props: ['project_id', 'edit_support'],
data() {
return {
update_view: false,
@@ -343,141 +457,135 @@ export default {
addProjectMember() {
this.dialogVisibleAddMember = true
this.editProject.project_members = [];
this.editProject.project_members = []
if (this.project_info['involve_members'] != '') {
this.editProject.project_members = this.project_info['involve_members'].split(',').map(staff_id => parseInt(staff_id, 10));
this.editProject.project_members = this.project_info['involve_members'].split(',').map(staff_id => parseInt(staff_id, 10))
}
},
//获取项目部所有员工信息
// 获取项目部所有员工信息
get_project_dept_member_list() {
user.GetProjectDeptStaffList().then(response => {
this.dept_member_list = response.data.data
console.log(this.dept_member_list);
console.log(this.dept_member_list)
})
},
setProjectManager() {
this.dialogVisibleSetManager = true;
this.dialogVisibleSetManager = true
},
setSaleManager() {
this.dialogVisibleSetSaleManager = true;
this.dialogVisibleSetSaleManager = true
},
update_sub_component() {
this.update_view = true;
let that = this;
this.update_view = true
const that = this
setTimeout(() => {
that.update_view = false;
}, 100); // 1000 毫秒后执行
that.update_view = false
}, 100) // 1000 毫秒后执行
},
confirmSetManager() {
var param = { project_id: this.project_id, involve_manager: this.editProject.project_manager };
var param = { project_id: this.project_id, involve_manager: this.editProject.project_manager }
console.log('---------------------------')
console.log(param)
project.UpdateProjectManager(param).then(response => {
this.get_project_info(this.project_id)
this.$message({ type: 'success', message: '更新成功' });
this.dialogVisibleSetManager = false;
this.$message({ type: 'success', message: '更新成功' })
this.dialogVisibleSetManager = false
})
},
confirmSaleManager() {
var param = { project_id: this.project_id, sale_manager: this.editProject.sale_manager };
var param = { project_id: this.project_id, sale_manager: this.editProject.sale_manager }
console.log('---------------------------')
console.log(param)
project.UpdateProjectSaleManager(param).then(response => {
this.get_project_info(this.project_id)
this.$message({ type: 'success', message: '更新成功' });
this.dialogVisibleSetSaleManager = false;
this.$message({ type: 'success', message: '更新成功' })
this.dialogVisibleSetSaleManager = false
})
},
confirmAddMember() {
var param = { project_id: this.project_id, involve_members: this.editProject.project_members };
var param = { project_id: this.project_id, involve_members: this.editProject.project_members }
project.UpdateProjectMember(param).then(response => {
this.get_project_info(this.project_id)
this.dialogVisibleAddMember = false
this.$message({ type: 'success', message: '更新成功' });
this.$message({ type: 'success', message: '更新成功' })
})
},
confirmStartProject() {
if (this.editNode.members.length == 0) {
this.$message.warning('请选择项目组成员');
return;
this.$message.warning('请选择项目组成员')
return
}
if ('' == this.editNode.start_date) {
this.$message.warning('请选择项目启动时间');
return;
if (this.editNode.start_date == '') {
this.$message.warning('请选择项目启动时间')
return
}
var project_id = this.project_id
var param = {
project_id: project_id,
//manager: this.editNode.manager,
// manager: this.editNode.manager,
members: this.editNode.members,
start_date: this.editNode.start_date,
//tech_protocol: this.editNode.tech_protocol_url,
start_date: this.editNode.start_date
// tech_protocol: this.editNode.tech_protocol_url,
};
}
console.log(param);
console.log(param)
project.StartProject(param).then(response => {
this.$message({
type: 'success',
message: '添加成功'
});
})
this.get_project_info(this.project_id)
}).catch(error => {
this.$message({
type: 'error',
message: '添加失败,请重试'
});
});
this.dialogVisibleStartProject = false;
})
})
this.dialogVisibleStartProject = false
},
get_project_state_list() {
project.GetProjectStateList().then(response => {
this.project_state_list = response.data.data
console.log(this.project_state_list);
console.log(this.project_state_list)
})
},
editProjectInfo() {
this.dialogVisibleEditProject = true;
this.get_project_info(this.project_id);
this.dialogVisibleEditProject = true
this.get_project_info(this.project_id)
},
get_project_info(project_id) {
this.project_id = project_id
var param = { project_id: project_id };
var param = { project_id: project_id }
project.GetProjectInfo(param).then(response => {
this.project_info = response.data.data
//从项目管理进入
// 从项目管理进入
if (this.edit_support == false) {
//如果登录用户是项目经理,则有编辑项目基本信息的权限
var login_user = localStorage.getItem('user_id');
// 如果登录用户是项目经理,则有编辑项目基本信息的权限
var login_user = localStorage.getItem('user_id')
if (login_user == this.project_info.involve_manager) {
this.edit_support = true
//不允许编辑项目经理
this.allow_change_manager = false;
// 不允许编辑项目经理
this.allow_change_manager = false
}
}
else//从客户管理进入
} else// 从客户管理进入
{
//允许编辑项目经理
this.allow_change_manager = true;
// 允许编辑项目经理
this.allow_change_manager = true
}
this.editProject = response.data.data
@@ -488,47 +596,47 @@ export default {
showProtocol() {
this.dialogVisibleShowProtocol = true
this.update_sub_component();
this.update_sub_component()
},
showEquipment() {
this.dialogVisibleShowEquipment = true
this.update_sub_component();
this.update_sub_component()
},
showReport() {
this.dialogVisibleShowReport = true
this.update_sub_component();
this.update_sub_component()
},
showSupplier() {
this.dialogVisibleShowSupplier = true
this.update_sub_component();
this.update_sub_component()
},
showBid() {
this.dialogVisibleShowBid = true
this.update_sub_component();
this.update_sub_component()
},
showSummary() {
this.dialogVisibleShowSummary = true
this.update_sub_component();
this.update_sub_component()
},
showPlan() {
this.dialogVisibleShowPlan = true
this.update_sub_component();
this.update_sub_component()
},
showContract() {
this.dialogVisibleShowContract = true
this.update_sub_component();
this.update_sub_component()
},
showExternalMember() {
this.dialogVisibleShowExternalMember = true
this.update_sub_component();
this.update_sub_component()
},
// showProtocol() {
@@ -539,25 +647,24 @@ export default {
var param = { project_id: this.project_id, contract_type: 2 }
contract.GetProjectContractList(param).then(response => {
this.contract_info_list = response.data.data
console.log(this.contract_info_list);
console.log(this.contract_info_list)
})
},
update_sub_component() {
this.update_view = true;
let that = this;
this.update_view = true
const that = this
setTimeout(() => {
that.update_view = false;
}, 100); // 1000 毫秒后执行
that.update_view = false
}, 100) // 1000 毫秒后执行
},
showImg(row) {
const url = process.env.BASE_WMS_FILE + row.contract_url
const ext = url.split('.').pop().toLowerCase();
const ext = url.split('.').pop().toLowerCase()
console.log('-----------------------------------------');
console.log(url);
console.log('-----------------------------------------')
console.log(url)
if (ext === 'jpg' || ext === 'jpeg' || ext === 'png') {
this.previewUrl = url
@@ -570,16 +677,16 @@ export default {
} else if (ext === '') {
} else {
this.$message.success('不支持的文件类型');
this.$message.success('不支持的文件类型')
}
this.dialogVisibleShowFile = true
},
confirmEditProject() {
if (this.editProject.project_name.trim() === '') {
this.$message.warning('请输入项目名称');
return;
this.$message.warning('请输入项目名称')
return
}
var project_id = this.project_id;
var project_id = this.project_id
var param = {
project_id: project_id,
project_name: this.editProject.project_name,
@@ -587,18 +694,18 @@ export default {
project_number: this.editProject.project_number,
project_state: this.editProject.project_state,
create_time: this.editProject.create_time
};
}
console.log(param);
console.log(param)
project.EditProjectInfo(param).then(response => {
this.$message({
type: 'success',
message: '添加成功'
});
this.get_project_info(this.project_id);
});
this.dialogVisibleEditProject = false;
})
this.get_project_info(this.project_id)
})
this.dialogVisibleEditProject = false
}
}
}

View File

@@ -38,7 +38,7 @@
<el-dialog title="功能需求清单" :visible.sync="dialogVisibleShowDemand" :close-on-click-modal="false" width="95%"
style="position: fixed;top:-10%" append-to-body>
<div class="custom-dialog">
<Story :project_id="project_info.project_id" :story_type="1" v-if="update_view == false"/>
<Story :project_id="project_info.project_id" :is_project_manager=true :story_type="1" v-if="update_view == false"/>
</div>
</el-dialog>
@@ -118,7 +118,7 @@ export default {
this.project_info = response.data.data
})
},
update_sub_component() {
this.update_view = true;
let that = this;
@@ -156,7 +156,7 @@ export default {
//查看问题单
showDemand() {
this.dialogVisibleShowDemand = true
this.update_sub_component()
this.update_sub_component()
},
//查看项目实施购买清单
showPorShopping() {

View File

@@ -50,7 +50,7 @@
<el-button class="el-icon-view" @click="showMaterials(scope.row)" size="mini" type="text">查看</el-button>
</template>
</el-table-column>
<el-table-column prop="story_managers" label="Story管理者" align="left">
<el-table-column prop="story_manager" label="Story管理者" align="left">
</el-table-column>
<el-table-column prop="story_members" label="Story成员" align="left">
</el-table-column>

View File

@@ -62,7 +62,9 @@ export default {
data() {
let id = 1;
return {
supplier_type_list: [],
newPartner: {},
dialogVisibleAddPartner: false,
supplier_type_list: [],
update_view:false,
defaultProps: {
children: 'sub_type',
@@ -88,6 +90,31 @@ export default {
},
methods: {
confirmAddPartner() {
// this.newPartner.company_type = this.partner_type
//如果是供应商,需要设置供应商的服务类型
if (this.partner_type == 4) {
this.newPartner.service_type = this.service_type
}
else {
this.newPartner.service_type = 0;
}
partner.AddPartnerCompanyInfo(this.newPartner).then(response => {
this.$message({
type: 'success',
message: '添加成功'
});
//this.get_supplier_type_list(supplier_type)
}).catch(error => {
this.$message({
type: 'error',
message: '添加失败,请重试'
});
});
// 关闭所有对话框
this.dialogVisibleAddPartner = false;
},
openTreeMenu(event, data, node, target) {
console.log(event, data, node, target)
@@ -129,7 +156,14 @@ export default {
that.update_view = false;
}, 100); // 1000 毫秒后执行
},
addPartnerInfo() {
this.dialogVisibleAddPartner = true;
this.newPartner = {
company_name: '',
company_intro: '',
create_time: ''
}
},
handle_node_click(data, node) {
this.currentNode = node;
this.currentData = data;

View File

@@ -1,97 +1,118 @@
<template>
<div class="about">
<el-row>
<el-table :data="staff_info_list" border fit highlight-current-row style="width: 100%; margin-left: 2px;"
height="80vh">
<el-table-column prop="staff_idcard" label="员工工号" align="left">
</el-table-column>
<el-table-column prop="staff_name" label="员工姓名" align="left">
</el-table-column>
<el-table-column prop="staff_phone" label="员工电话" align="left">
</el-table-column>
<el-table-column prop="staff_type_desp" label="员工类型" align="left">
</el-table-column>
<el-table-column prop="staff_dept_desp" label="员工部门" align="left">
</el-table-column>
<el-table-column prop="staff_email" label="员工邮箱" align="left">
</el-table-column>
<el-table-column prop="entry_date" label="入职时间" align="left">
</el-table-column>
<div class="about">
<el-card>
<el-main id="el-main">
<el-table
:data="staff_info_list"
border
fit
highlight-current-row
style="width: 100%; margin-left: 2px;"
height="80vh">
<el-table-column prop="staff_idcard" label="员工工号" align="left"/>
<el-table-column prop="staff_name" label="员工姓名" align="left"/>
<el-table-column prop="staff_phone" label="员工电话" align="left"/>
<el-table-column prop="staff_type_desp" label="员工类型" align="left"/>
<el-table-column prop="staff_dept_desp" label="员工部门" align="left"/>
<el-table-column prop="staff_email" label="员工邮箱" align="left"/>
<el-table-column prop="entry_date" label="入职时间" align="left"/>
<el-table-column fixed="right" label="操作" width="250px">
<template slot-scope="scope">
<el-button v-if="(scope.row.task_state < 2) && (scope.row.action_state < 4)"
@click="handleClick(scope.row)" size="mini" type="danger">删除</el-button>
<!--el-button class="el-icon-view" v-if="scope.row.asset_url != ''" @click="showImg(scope.row)" size="mini"
type="primary"></el-button-->
<!--el-button @click="update(scope.row)" size="mini" class="el-icon-edit" type="primary"></el-button-->
</template>
</el-table-column>
</el-table>
</el-row>
<el-table-column fixed="right" label="操作" width="250px">
<template slot-scope="scope">
<el-button
size="mini"
type="danger"
@click="handleClick(scope.row)">删除</el-button>
<el-button
class="el-icon-view"
size="mini"
type="primary"
@click="showImg(scope.row)"/>
<el-button size="mini" class="el-icon-edit" type="primary" @click="update(scope.row)"/>
</template>
</el-table-column>
</el-table>
</el-main>
<el-pagination
:page-sizes="[5, 10, 20, 50]"
:page-size="pageSize"
:total="total"
:current-page.sync="currPage"
background
layout="sizes,prev, pager, next, jumper,->,total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"/>
</el-card>
<!-- 对话框 -->
<el-dialog title="文件信息" :visible.sync="dialogVisibleStaffInfo" width="80%">
<img v-if="isImage" :src="previewUrl" alt="Preview" style="max-width: 40%; max-height: 30%;">
<iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"></iframe>
<p v-else>不支持的文件类型</p>
</el-dialog>
<!-- 对话框 -->
<el-dialog :visible.sync="dialogVisibleStaffInfo" title="文件信息" width="80%">
<img v-if="isImage" :src="previewUrl" alt="Preview" style="max-width: 40%; max-height: 30%;">
<iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"/>
<p v-else>不支持的文件类型</p>
</el-dialog>
</div>
</div>
</template>
<script>
import hr from '@/api/hr'
export default {
data() {
let id = 1;
return {
staff_info_list: [],
id: id,
dialogVisibleStaffInfo: false,
assets_img: '',
assets_pdf_img: ''
};
},
mounted() {
this.get_staff_info_list()
},
created() {
data() {
const id = 1
return {
pageSize: 20,
currPage: 1,
total: 0,
staff_info_list: [],
id: id,
dialogVisibleStaffInfo: false,
assets_img: '',
assets_pdf_img: ''
}
},
mounted() {
this.getStaffPageInfo()
},
created() {
},
methods: {
},
methods: {
handleSizeChange(val) {
this.pageSize = val
this.getStaffPageInfo()
},
handleCurrentChange(val) {
this.currPage = val
this.getStaffPageInfo()
},
showImg(row) {
const url = row.asset_url
const ext = url.split('.').pop().toLowerCase()
showImg(row) {
const url = row.asset_url
const ext = url.split('.').pop().toLowerCase();
if (ext === 'jpg' || ext === 'jpeg' || ext === 'png') {
this.previewUrl = url
this.isImage = true
this.isPDF = false
} else if (ext === 'pdf') {
this.previewUrl = url
this.isImage = false
this.isPDF = true
} else if (ext === '') {
if (ext === 'jpg' || ext === 'jpeg' || ext === 'png') {
this.previewUrl = url
this.isImage = true
this.isPDF = false
} else if (ext === 'pdf') {
this.previewUrl = url
this.isImage = false
this.isPDF = true
} else if (ext === '') {
} else {
this.$message.success('不支持的文件类型')
}
this.dialogVisibleStaffInfo = true
},
} else {
this.$message.success('不支持的文件类型');
}
this.dialogVisibleStaffInfo = true
},
get_staff_info_list() {
var param = {}
console.log(param);
hr.GetStaffInfoList(param).then(response => {
this.staff_info_list = response.data.data
console.log(this.staff_info_list);
})
},
}
getStaffPageInfo() {
hr.getStaffPage({ currPage: this.currPage, pageSize: this.pageSize }).then(res => {
this.staff_info_list = res.data.data.list
this.total = res.data.data.total
})
}
}
}
</script>

View File

@@ -4,7 +4,7 @@
<img :src="imgTitle" height="100px" alt="" />
</div>
<div class="background" style="margin-bottom:110px;margin-top:110px;background-color:#2d3a4b;">
<img :src="imgBack" width="70%" height="80%" alt="" />
<img :src="imgBack" width="100%" height="100%" alt="" />
</div>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on"
label-position="left" style="float:right">

View File

@@ -49,8 +49,11 @@
</el-form-item>
<el-form-item label="选择添加用户" prop="user_id">
<el-select v-model="userData.user_id" placeholder="请选择" style="width: 100%;">
<el-option v-for="item in contactsList" :key="item.contacts_id" :label="item.contacts_name"
<el-select v-model="userData.user_id" filterable placeholder="请选择" style="width: 100%;">
<el-option v-for="item in contactsList"
filterable
:key="item.contacts_id"
:label="item.contacts_name"
:value="item.contacts_id">
</el-option>
</el-select>
@@ -230,7 +233,7 @@ export default {
},
//获取用户信息
getUserInfoList() {
user.getUserInfoList({ currPage: this.currPage, pageSize: this.pageSize, }).then(res => {
user.getUserInfoList({ currPage: this.currPage, pageSize: this.pageSize}).then(res => {
this.userList = res.data.data.list;
console.log('userList', this.userList);
this.total = res.data.data.total;