Compare commits

...

4 Commits

Author SHA1 Message Date
8eb2495cea fix: 客户检索 2026-03-25 16:09:27 +08:00
8df05405b4 fix: 客户检索分页查询 2026-03-25 15:57:05 +08:00
9dbcab4e89 fix: 分页查询 2026-03-25 15:18:15 +08:00
aa37f75a07 fix: bug 2026-03-24 17:19:15 +08:00
12 changed files with 789 additions and 133 deletions

View File

@@ -77,7 +77,7 @@ class Contract extends Common
{
$param = request()->post();
$FirstLeveType = db('partner_company')->where('company_type & 0x01', 1)->field('company_id as id, company_name as name')->select();
$FirstLeveType = db('partner_company')->where('company_type & 0x01', 1)->field('company_id as id, company_name as name')->order('company_name asc')->select();
for ($i = 0; $i < count($FirstLeveType); $i++)
{

View File

@@ -129,4 +129,46 @@ class Customer extends Common
return $this->sendSuccess($ret);
}
// 客户检索 - 分页查询合作伙伴公司
public function SearchPartnerCompany()
{
$param = request()->post();
$currPage = isset($param['page']) ? $param['page'] : 1;
$pageSize = isset($param['limit']) ? $param['limit'] : 10;
$company_name = isset($param['company_name']) ? $param['company_name'] : '';
// 构建查询条件
$query = db('partner_company');
// 查询客户类型
$query->whereIn('company_type', [1, 5]);
if (!empty($company_name)) {
$query->where('company_name', 'like', '%' . $company_name . '%');
}
// 查询列表数据
$list = $query->page($currPage, $pageSize)
->order('company_id desc')
->select();
// 查询总记录数
$totalQuery = db('partner_company');
$totalQuery->whereIn('company_type', [1, 5]);
if (!empty($company_name)) {
$totalQuery->where('company_name', 'like', '%' . $company_name . '%');
}
$total = $totalQuery->count();
$result = [
'list' => $list,
'total' => $total
];
return $this->sendSuccess($result);
}
}

View File

@@ -237,6 +237,7 @@ class Partner extends Common
//查找所有的签约客户公司
$result = db('partner_company')->where('company_type & 0x01', 1)
->field('company_id as id, company_name as name')
->order('company_name asc')
->select();
for ($i=0; $i<count($result); $i++)
@@ -271,6 +272,7 @@ class Partner extends Common
//查找所有的业主公司
$OwnerList = db('partner_company')->where('company_type & 0x02', 2)
->field('company_id as id, company_name as name')
->order('company_name asc')
->select();
$ret = [];
$item = [];

View File

@@ -227,7 +227,6 @@ class Work extends Common
->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types')
->select();
for ($i = 0; $i < count($ret); $i++) {
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']);
if ($info != "")
@@ -239,6 +238,8 @@ class Work extends Common
$ret[$i]['issue_processor_name'] = '-';
}
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']);
// error_log("ret: " . print_r($info, true));
$ret[$i]['issue_creator_name'] = $info['name'];
}
@@ -292,10 +293,10 @@ class Work extends Common
if (1 == $user_info['user_role'])
{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
if($param['task_processor'] != ''){
if(isset($param['task_processor']) && $param['task_processor'] != ''){
$where['s.task_processor'] = $param['task_processor'];
}
$ret = db('work_task_info')->alias('s')
@@ -317,7 +318,7 @@ class Work extends Common
return $this->sendSuccess($ret);
}else{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
$ret = db('work_task_info')->alias('s')
@@ -444,7 +445,7 @@ class Work extends Common
if (1 == $user_info['user_role'])
{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
$ret = db('work_task_info')->alias('s')
@@ -467,7 +468,7 @@ class Work extends Common
return $this->sendSuccess($ret);
}else{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
$ret = db('work_task_info')->alias('s')
@@ -571,7 +572,7 @@ class Work extends Common
if (1 == $user_info['user_role'])
{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
$ret = db('work_task_info')->alias('s')
@@ -585,7 +586,7 @@ class Work extends Common
return $ret;
}else{
$where = [];
if($param['task_state'] != ''){
if(isset($param['task_state']) && $param['task_state'] != ''){
$where['s.task_state'] = $param['task_state'];
}
$ret = db('work_task_info')->alias('s')
@@ -823,4 +824,294 @@ class Work extends Common
return $ret;
}
//获取内部客户参与的项目 - 分页版本
public function GetWorkInfoByLoginIdPaginated()
{
$param = request()->post();
$user_id = $param['user_id'];
$currPage = isset($param['currPage']) ? $param['currPage'] : 1;
$pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10;
$project_name = isset($param['project_name']) ? $param['project_name'] : '';
$user = new User();
$project_work = $this->GetProjectListPaginated($user_id, $currPage, $pageSize, $project_name);
for ($i = 0; $i < count($project_work['list']); $i++) {
$involve_manager = $project_work['list'][$i]['involve_manager'];
$info = $user->GetUserInfoByLoginId($involve_manager);
if ($info && isset($info['name'])) {
$project_work['list'][$i]['issue_creator_name'] = $info['name'];
}
}
$res['list'] = $project_work['list'];
$res['total'] = $project_work['total'];
return $this->sendSuccess($res);
}
//获取参与的客户项目列表 - 分页版本
public function GetProjectListPaginated($user_id, $currPage, $pageSize, $project_name = '')
{
//判断登录用户的角色,如果是管理员,就获取所有的项目信息
$user_info = db('system_user')->where('id', $user_id)->find();
$query = db('project_info')->alias('p')
->join('project_state s', 's.id =p.project_state', 'left')
->where('p.project_state', '<', 10) //未关闭的项目
->field('p.*, s.desp as project_state_name,1 as project_types');
// 添加项目名称模糊查询
if (!empty($project_name)) {
$query->where('p.project_name', 'like', '%' . $project_name . '%');
}
if (1 != $user_info['user_role']) {
$query->where(function ($query) use ($user_id) {
$query->where('p.involve_manager', $user_id)
->whereor('p.involve_members', 'like', $user_id . ',%')
->whereor('p.involve_members', 'like', '%,' . $user_id . ',%')
->whereor('p.involve_members', 'like', $user_id . '')
->whereor('p.involve_members', 'like', '%,' . $user_id);
});
}
// 获取分页数据
$ret = $query->page($currPage, $pageSize)->select();
// 获取总数
$totalQuery = db('project_info')->alias('p')
->join('project_state s', 's.id =p.project_state', 'left')
->where('p.project_state', '<', 10);
// 添加项目名称模糊查询到总数查询
if (!empty($project_name)) {
$totalQuery->where('p.project_name', 'like', '%' . $project_name . '%');
}
if (1 != $user_info['user_role']) {
$totalQuery->where(function ($query) use ($user_id) {
$query->where('p.involve_manager', $user_id)
->whereor('p.involve_members', 'like', $user_id . ',%')
->whereor('p.involve_members', 'like', '%,' . $user_id . ',%')
->whereor('p.involve_members', 'like', $user_id . '')
->whereor('p.involve_members', 'like', '%,' . $user_id);
});
}
$total = $totalQuery->count();
//统计每个项目与登录用户有关的任务数
for ($i = 0; $i < count($ret); $i++) {
$ret[$i]['issue_count'] = $this->GetProjectIssueCount($user_id, $ret[$i]['project_id']);
$ret[$i]['task_count'] = $this->GetProjectTaskCount($user_id, $ret[$i]['project_id']);
}
return [
'list' => $ret,
'total' => $total
];
}
//获取项目问题列表 - 分页版本
public function GetProjectIssueListPaginated()
{
$param = request()->post();
$user = new User();
$user_id = $param['user_id'];
$project_id = $param['project_id'];
$issue_state = $param['issue_state'];
$currPage = isset($param['currPage']) ? $param['currPage'] : 1;
$pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10;
$user_info = db('system_user')->where('id', $user_id)->find();
if (1 == $user_info['user_role']) {
$where = [];
if ($issue_state == 1) {
$where['s.issue_state'] = array('<', 10); //未关闭
} else if ($issue_state == 2) {
$where['s.issue_state'] = array('>', 10);//已关闭
}
// 获取分页数据
$query = db('project_issues')->alias('s')
->join('project_info i', 'i.project_id =s.project_id', 'left')
->join('project_issue_state t', 't.id =s.issue_state', 'left')
->where('s.project_id', $project_id)
->where($where)
->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types');
$ret = $query->page($currPage, $pageSize)->select();
// 获取总数
$total = db('project_issues')->alias('s')
->join('project_info i', 'i.project_id =s.project_id', 'left')
->join('project_issue_state t', 't.id =s.issue_state', 'left')
->where('s.project_id', $project_id)
->where($where)
->count();
for ($i = 0; $i < count($ret); $i++) {
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']);
if ($info != "") {
$ret[$i]['issue_processor_name'] = $info['name'];
} else {
$ret[$i]['issue_processor_name'] = '-';
}
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']);
$ret[$i]['issue_creator_name'] = $info['name'];
}
$res['list'] = $ret;
$res['total'] = $total;
return $this->sendSuccess($res);
} else {
$where = [];
if ($issue_state == 1) {
$where['s.issue_state'] = array('<', 10); //未关闭
} else if ($issue_state == 2) {
$where['s.issue_state'] = array('>', 10);//已关闭
}
// 获取分页数据
$query = db('project_issues')->alias('s')
->join('project_info i', 'i.project_id =s.project_id', 'left')
->join('project_issue_state t', 't.id =s.issue_state', 'left')
->where('s.project_id', $project_id)
->where(function ($query) use ($user_id) {
$query->where('s.issue_processor', $user_id)
->whereor('s.issue_creator', $user_id)
->whereor('i.involve_manager', $user_id);
})
->where($where)
->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types');
$ret = $query->page($currPage, $pageSize)->select();
// 获取总数
$total = db('project_issues')->alias('s')
->join('project_info i', 'i.project_id =s.project_id', 'left')
->join('project_issue_state t', 't.id =s.issue_state', 'left')
->where('s.project_id', $project_id)
->where(function ($query) use ($user_id) {
$query->where('s.issue_processor', $user_id)
->whereor('s.issue_creator', $user_id)
->whereor('i.involve_manager', $user_id);
})
->where($where)
->count();
for ($i = 0; $i < count($ret); $i++) {
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']);
if ($info != "") {
$ret[$i]['issue_processor_name'] = $info['name'];
} else {
$ret[$i]['issue_processor_name'] = '-';
}
$info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']);
$ret[$i]['issue_creator_name'] = $info['name'];
}
$res['list'] = $ret;
$res['total'] = $total;
return $this->sendSuccess($res);
}
}
//获取运营Story列表 - 分页版本
public function GetOperationStoryListPaginated()
{
$param = request()->post();
$user = new User();
$user_id = $param['user_id'];
$currPage = isset($param['currPage']) ? $param['currPage'] : 1;
$pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10;
$user_info = db('system_user')->where('id', $user_id)->find();
if (1 == $user_info['user_role']) {
$where = [];
if(isset($param['story_state']) && $param['story_state'] != ''){
$where['y.story_state'] = $param['story_state'];
}
// 获取分页数据
$query = db('work_story_info')->alias('y')
->join('work_story_state p', 'p.id =y.story_state', 'left')
->where('y.story_type', 2)
->where('y.story_state', '<', 4) //未完成的Story
->where($where)
->field('y.*, p.desp as story_state_desp');
$ret = $query->page($currPage, $pageSize)->select();
// 获取总数
$total = db('work_story_info')->alias('y')
->join('work_story_state p', 'p.id =y.story_state', 'left')
->where('y.story_type', 2)
->where('y.story_state', '<', 4)
->where($where)
->count();
for ($i=0; $i<count($ret); $i++) {
//根据登录账号获取Story管理员用户姓名
$user_info = $user->GetUserInfoByLoginId($ret[$i]['story_manager']);
$ret[$i]['story_manager_name'] = $user_info['name'];
$ret[$i]['story_tasks'] = $this->GetOperationTaskCount($user_id,$ret[$i]['story_id']);
}
$res['list'] = $ret;
$res['total'] = $total;
return $this->sendSuccess($res);
} else {
$where = [];
if(isset($param['story_state']) && $param['story_state'] != ''){
$where['y.story_state'] = $param['story_state'];
}
// 获取分页数据
$query = db('work_story_info')->alias('y')
->join('work_story_state p', 'p.id =y.story_state', 'left')
->where('y.story_type', 2)
->where('y.story_state', '<', 4) //未完成的Story
->where($where)
->where(function ($query) use ($user_id) {
$query->where('y.story_manager', $user_id)
->whereor('y.story_member', 'like', $user_id . ',%')
->whereor('y.story_member', 'like', '%,' . $user_id . ',%')
->whereor('y.story_member', $user_id)
->whereor('y.story_member', 'like', '%,' . $user_id);
})
->field('y.*, p.desp as story_state_desp');
$ret = $query->page($currPage, $pageSize)->select();
// 获取总数
$total = db('work_story_info')->alias('y')
->join('work_story_state p', 'p.id =y.story_state', 'left')
->where('y.story_type', 2)
->where('y.story_state', '<', 4)
->where($where)
->where(function ($query) use ($user_id) {
$query->where('y.story_manager', $user_id)
->whereor('y.story_member', 'like', $user_id . ',%')
->whereor('y.story_member', 'like', '%,' . $user_id . ',%')
->whereor('y.story_member', $user_id)
->whereor('y.story_member', 'like', '%,' . $user_id);
})
->count();
for ($i=0; $i<count($ret); $i++) {
//根据登录账号获取Story管理员用户姓名
$user_info = $user->GetUserInfoByLoginId($ret[$i]['story_manager']);
$ret[$i]['story_manager_name'] = $user_info['name'];
$ret[$i]['story_tasks'] = $this->GetOperationTaskCount($user_id,$ret[$i]['story_id']);
}
$res['list'] = $ret;
$res['total'] = $total;
return $this->sendSuccess($res);
}
}
}

View File

@@ -1,7 +1,7 @@
module.exports = {
NODE_ENV: '"development"',
ENV_CONFIG: '"dev"',
BASE_WMS_API: '"http://127.0.0.1:8080/api"',
BASE_WMS_FILE: '"http://127.0.0.1:8080/"'
BASE_WMS_API: '"http://127.0.0.1:8011/api"',
BASE_WMS_FILE: '"http://127.0.0.1:8011/"'
// 47.101.147.253
}

View File

@@ -1,8 +1,8 @@
module.exports = {
NODE_ENV: '"production"',
ENV_CONFIG: '"prod"',
BASE_WMS_API: '"http://127.0.0.1:8080/api"',
BASE_WMS_FILE: '"http://127.0.0.1:8080/"'
BASE_WMS_API: '"http://127.0.0.1:8011/api"',
BASE_WMS_FILE: '"http://127.0.0.1:8011/"'
////BASE_AGV_API: '"http://192.168.3.223:55200/v1"',
//BASE_WMS_API: '"http://169.254.71.103/api"',
//BASE_AGV_API: '"http://127.0.0.1:55200/v1"',

View File

@@ -1,76 +1,89 @@
import request from '@/utils/request'
export default {
// 获取客户信息列表
GetCustomerList(param) {
export function GetCustomerList(param) {
return request({
url: `/Customer/GetCustomerList`,
method: 'post',
data: param
})
},
}
// 添加客户信息
AddCustomerInfo(param) {
export function AddCustomerInfo(param) {
return request({
url: `/Customer/AddCustomerInfo`,
method: 'post',
data: param
})
},
}
GetProjectInfoList(param) {
export function GetProjectInfoList(param) {
return request({
url: `/Project/GetProjectInfoList`,
method: 'post',
data: param
})
},
}
AddProjectInfo(param) {
export function AddProjectInfo(param) {
return request({
url: `/Project/AddProjectInfo`,
method: 'post',
data: param
})
},
}
UpdateProjectInfo(param) {
export function UpdateProjectInfo(param) {
return request({
url: `/Project/updateProjectInfo`,
method: 'post',
data: param
})
},
}
// 添加客户联系人
AddCustomerMemberInfo(param) {
export function AddCustomerMemberInfo(param) {
return request({
url: `/Customer/AddCustomerMemberInfo`,
method: 'post',
data: param
})
},
}
GetCustomerMemberList(param) {
export function GetCustomerMemberList(param) {
return request({
url: `/Customer/GetCustomerMemberList`,
method: 'post',
data: param
})
},
}
GetCustomerInfo(param) {
export function GetCustomerInfo(param) {
return request({
url: `/Customer/GetCustomerInfo`,
method: 'post',
data: param
})
},
}
// 客户检索 - 搜索合作伙伴公司
export function searchPartnerCompany(param) {
return request({
url: `/Customer/SearchPartnerCompany`,
method: 'post',
data: param
})
}
export default {
GetCustomerList,
AddCustomerInfo,
GetProjectInfoList,
AddProjectInfo,
UpdateProjectInfo,
AddCustomerMemberInfo,
GetCustomerMemberList,
GetCustomerInfo,
searchPartnerCompany
}

View File

@@ -10,6 +10,15 @@ export default {
});
},
//获取项目类型列表 - 分页版本
GetWorkInfoByLoginIdPaginated(param) {
return request({
url: `/work/GetWorkInfoByLoginIdPaginated`,
method: "post",
data: param
});
},
GetDevelopIssueList(param) {
return request({
url: `/work/GetDevelopIssueList`,
@@ -26,6 +35,15 @@ export default {
});
},
//获取项目问题列表 - 分页版本
GetProjectIssueListPaginated(param) {
return request({
url: `/work/GetProjectIssueListPaginated`,
method: "post",
data: param
});
},
GetProjectTaskList(param) {
return request({
url: `/work/GetProjectTaskList`,
@@ -50,6 +68,15 @@ export default {
});
},
//获取运营Story列表 - 分页版本
GetOperationStoryListPaginated(param) {
return request({
url: `/work/GetOperationStoryListPaginated`,
method: "post",
data: param
});
},
GetProjectDevelopProcessor(param) {
return request({
url: `/work/GetProjectDevelopProcessor`,

View File

@@ -59,36 +59,36 @@ export const constantRouterMap = [
{
path: "/",
component: Layout,
meta: {
title: "系统首页",
icon: "camera"
},
children: [
{
path: "/dashboard",
component: () => import("@/views/dashboard/index"),
name: "系统首页",
meta: { title: "系统首页", icon: "component", noCache: true }
}
]
},
{
path: "/workbench",
component: Layout,
meta: {
title: "我的工作台",
icon: "camera"
},
children: [
{
path: "/workbench",
path: "/dashboard",
component: () => import("@/views/workbench/index"),
name: "我的工作台",
meta: { title: "我的工作台", icon: "component", noCache: true }
}
]
}
];
// {
// path: "/workbench",
// component: Layout,
// meta: {
// title: "我的工作台",
// icon: "camera"
// },
// children: [
// {
// path: "/workbench",
// component: () => import("@/views/workbench/index"),
// name: "我的工作台",
// meta: { title: "我的工作台", icon: "component", noCache: true }
// }
// ]
// }
]
//需要权限的路由表
export const asyncRouterMap = [

View File

@@ -74,7 +74,7 @@
<!-- 添加项目对话框 -->
<el-dialog title="添加联系人" :visible.sync="dialogVisibleAddContacts" width="30%" :close-on-click-modal="false"
append-to-body>
append-to-body custom-class="nested-dialog">
<el-form :model="newContacts" label-width="100px">
<el-form-item label="联系人姓名">
<el-input v-model="newContacts.name"></el-input>
@@ -96,7 +96,8 @@
</el-dialog>
<!-- 添加项目对话框 -->
<el-dialog title="编辑联系人" :visible.sync="dialogVisibleUpdateContacts" width="30%" :close-on-click-modal="false">
<el-dialog title="编辑联系人" :visible.sync="dialogVisibleUpdateContacts" width="30%" :close-on-click-modal="false"
append-to-body custom-class="nested-dialog">
<el-form :model="editContacts" label-width="100px">
<el-form-item label="联系人姓名">
<el-input v-model="editContacts.contacts_name"></el-input>
@@ -118,7 +119,8 @@
</el-dialog>
<!-- 添加合作伙伴对话框 -->
<el-dialog title="添加公司信息" :visible.sync="dialogVisibleAddPartner" width="30%" :close-on-click-modal="false">
<el-dialog title="添加公司信息" :visible.sync="dialogVisibleAddPartner" width="30%" :close-on-click-modal="false"
append-to-body custom-class="nested-dialog">
<el-form :model="newPartner" label-width="100px">
<el-form-item label="公司名称">
<el-input v-model="newPartner.company_name"></el-input>
@@ -139,7 +141,8 @@
</el-dialog>
<!-- 编辑合作伙伴对话框 -->
<el-dialog title="编辑公司信息" :visible.sync="dialogVisibleUpdatePartner" width="30%" :close-on-click-modal="false">
<el-dialog title="编辑公司信息" :visible.sync="dialogVisibleUpdatePartner" width="30%" :close-on-click-modal="false"
append-to-body custom-class="nested-dialog">
<el-form :model="editPartner" label-width="100px">
<el-form-item label="公司名称">
<el-input v-model="editPartner.company_name"></el-input>
@@ -160,7 +163,8 @@
</el-dialog>
<!-- 添加项目对话框 -->
<el-dialog title="添加项目" :visible.sync="dialogVisibleCreateProject" width="30%" :close-on-click-modal="false">
<el-dialog title="添加项目" :visible.sync="dialogVisibleCreateProject" width="30%" :close-on-click-modal="false"
append-to-body custom-class="nested-dialog">
<el-form :model="newProject" label-width="100px">
<el-form-item label="项目名称">
<el-input v-model="newProject.project_name"></el-input>
@@ -188,7 +192,8 @@
</el-dialog>
<!-- 编辑项目对话框 -->
<el-dialog title="编辑项目" :visible.sync="dialogVisibleEditProject" width="30%" :close-on-click-modal="false">
<el-dialog title="编辑项目" :visible.sync="dialogVisibleEditProject" width="30%" :close-on-click-modal="false"
append-to-body custom-class="nested-dialog">
<el-form :model="editProject" label-width="100px">
<el-form-item label="项目名称">
<el-input v-model="editProject.project_name"></el-input>
@@ -457,3 +462,19 @@ export default {
}
}
</script>
<style scoped>
/* 嵌套对话框样式 - 确保在父对话框之上显示 */
.nested-dialog {
z-index: 3000 !important;
}
/* 全局样式调整嵌套对话框 */
:deep(.nested-dialog) {
z-index: 3000 !important;
}
:deep(.nested-dialog .el-overlay) {
z-index: 2999 !important;
}
</style>

View File

@@ -5,25 +5,173 @@
<div slot="header" class="clearfix">
<span>客户检索</span>
</div>
<!-- 搜索表单 -->
<el-form :inline="true" :model="searchForm" class="search-form">
<el-form-item label="公司名称">
<el-input
v-model="searchForm.company_name"
placeholder="请输入公司名称"
clearable
@keyup.enter.native="handleSearch"/>
</el-form-item>
<el-form-item>
<el-button :loading="loading" type="primary" @click="handleSearch">搜索</el-button>
<el-button @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
<!-- 数据表格 -->
<el-table
v-loading="loading"
:data="tableData"
border
style="width: 100%">
<el-table-column prop="company_id" label="公司ID" width="80"/>
<el-table-column prop="company_name" label="公司名称" min-width="200">
<template slot-scope="scope">
<el-button type="text" @click="showPartnerDetail(scope.row)">
{{ scope.row.company_name }}
</el-button>
</template>
</el-table-column>
<el-table-column prop="company_intro" label="公司介绍" min-width="200"/>
<el-table-column prop="company_type" label="公司类型" width="120">
<template slot-scope="scope">
<el-tag v-if="scope.row.company_type == 1" type="primary">客户</el-tag>
<el-tag v-else type="warning">供应商/客户</el-tag>
</template>
</el-table-column>
<!-- <el-table-column prop="contact_person" label="联系人" width="120"></el-table-column>-->
<!-- <el-table-column prop="contact_phone" label="联系电话" width="140"></el-table-column>-->
<!-- <el-table-column prop="contact_email" label="联系邮箱" min-width="180"></el-table-column>-->
<el-table-column prop="address" label="地址" min-width="200"/>
<el-table-column prop="create_time" label="创建时间" width="160"/>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
:current-page="pagination.page"
:page-sizes="[10, 20, 50, 100]"
:page-size="pagination.limit"
:total="pagination.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
</div>
</el-card>
</el-row>
<!-- 客户详情对话框 -->
<el-dialog
title="客户详情"
:visible.sync="dialogVisible"
width="80%"
:close-on-click-modal="false"
:modal-append-to-body="false"
custom-class="customer-detail-dialog"
append-to-body>
<PartnerInfo
:partner_id="selectedPartnerId"
:partner_type="1"
:service_type="0"
:add_support="false"
v-if="dialogVisible"/>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">关闭</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
import { searchPartnerCompany } from '@/api/customer'
import PartnerInfo from '@/views/components/PartnerInfo'
export default {
components: {
PartnerInfo
},
data() {
return {
};
loading: false,
searchForm: {
company_name: ''
},
tableData: [],
pagination: {
page: 1,
limit: 10,
total: 0
},
dialogVisible: false,
selectedPartnerId: null
}
},
mounted() {
this.getList()
},
created() {
},
methods: {
// 获取列表数据
getList() {
this.loading = true
const params = {
page: this.pagination.page,
limit: this.pagination.limit,
company_name: this.searchForm.company_name
}
searchPartnerCompany(params).then(response => {
console.log('API响应:', response) // 调试用
if (response.data.success || response.data.code === 20000) {
this.tableData = response.data.data.list
this.pagination.total = response.data.data.total
} else {
this.$message.error(response.data.message || '获取数据失败')
}
this.loading = false
}).catch(error => {
console.error('获取数据失败:', error)
this.$message.error('获取数据失败')
this.loading = false
})
},
// 搜索
handleSearch() {
this.pagination.page = 1
this.getList()
},
// 重置
handleReset() {
this.searchForm.company_name = ''
this.pagination.page = 1
this.getList()
},
// 每页显示条数改变
handleSizeChange(val) {
this.pagination.limit = val
this.pagination.page = 1
this.getList()
},
// 当前页改变
handleCurrentChange(val) {
this.pagination.page = val
this.getList()
},
// 显示客户详情
showPartnerDetail(row) {
this.selectedPartnerId = row.company_id
this.dialogVisible = true
}
}
}
</script>
@@ -34,4 +182,31 @@ export default {
height: 100%;
}
.search-form {
margin-bottom: 20px;
}
.pagination-container {
margin-top: 20px;
text-align: right;
}
/* 客户详情对话框样式 */
.customer-detail-dialog {
z-index: 2000 !important;
}
/* 确保内部对话框有更高的层级 */
.customer-detail-dialog .el-dialog__wrapper {
z-index: 2001 !important;
}
/* 内部对话框遮罩层调整 */
:deep(.el-dialog__wrapper) {
z-index: 2010 !important;
}
:deep(.el-overlay) {
z-index: 2009 !important;
}
</style>

View File

@@ -87,6 +87,21 @@
<div slot="header" class="clearfix">
<span>我参与的项目</span>
</div>
<!-- 添加搜索表单 -->
<el-form :inline="true" size="small" style="margin-bottom: 15px;">
<el-form-item label="项目名称">
<el-input
v-model="work_info_project_name"
placeholder="请输入项目名称"
clearable
style="width: 200px;"
@keyup.enter.native="handleProjectSearch"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleProjectSearch">搜索</el-button>
</el-form-item>
</el-form>
<el-table :data="work_info_list" border fit highlight-current-row style="width: 100%; margin-left: 2px;">
<!--el-table-column prop="project_number" label="项目编号" align="left">
</el-table-column-->
@@ -132,13 +147,35 @@
</template>
</el-table-column>
</el-table>
<pagination v-show="work_info_total > 0" :total="work_info_total" :page.sync="work_info_pageNum" :limit.sync="work_info_pageSize"
@pagination="get_work_info_list" />
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>我参与的工作</span>
<WorkStoryList :project_id="project_id" />
</div>
<el-table :data="work_story_list" border fit highlight-current-row style="width: 100%; margin-left: 2px;">
<el-table-column prop="story_intro" label="Story描述" align="left" width="300">
</el-table-column>
<el-table-column prop="story_manager_name" label="Story管理员" align="left" width="200">
</el-table-column>
<el-table-column prop="story_state_desp" label="Story状态" align="left" width="200">
</el-table-column>
<el-table-column label="计划处理时间" align="left">
<template slot-scope="scope">
<span>{{ scope.row.create_time }}~{{ scope.row.plan_close_time }}</span>
</template>
</el-table-column>
<el-table-column label="Task信息" align="left">
<template slot-scope="scope">
{{ scope.row.story_tasks }}
<el-button class="el-icon-view" @click="showWorkTask(scope.row.story_id)" type="text"></el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="work_story_total > 0" :total="work_story_total" :page.sync="work_story_pageNum" :limit.sync="work_story_pageSize"
@pagination="get_work_story_list" />
</el-card>
<!-- 分配责任人对话框 -->
@@ -193,6 +230,13 @@
</div>
</el-dialog>
<el-dialog title="工作任务列表" v-if="update_view == false" :visible.sync="dialogVisibleShowWorkTask"
:close-on-click-modal="false" width="95%" style="position: fixed;top:-10%" append-to-body>
<div class="custom-dialog">
<WorkTaskList :story_id="story_id" />
</div>
</el-dialog>
</div>
</template>
@@ -203,6 +247,7 @@ import notice from '@/api/notice'
import ProjectIssueList from './projectissuelist.vue'
import ProjectTaskList from './projecttasklist.vue'
import WorkStoryList from './workstorylist.vue'
import WorkTaskList from './worktasklist.vue'
import ProjectDetail from '@/views/components/ProjectDetail.vue'
import project from '@/api/project'
import develop from '@/api/develop'
@@ -214,12 +259,21 @@ export default {
ProjectIssueList,
ProjectTaskList,
WorkStoryList,
WorkTaskList,
ProjectDetail
},
data() {
return {
work_info_list: [],
work_info_total: 0,
work_info_pageNum: 1,
work_info_pageSize: 10,
work_info_project_name: '', // 添加项目名称搜索变量
work_story_list: [],
work_story_total: 0,
work_story_pageNum: 1,
work_story_pageSize: 10,
dialogVisibleShowProjectIssueList: false,
dialogVisibleShowProjectTaskList: false,
dialogVisibleUpdateProcessorType: false,
@@ -227,6 +281,8 @@ export default {
dialogVisibleAddMember: false,
dialogVisibleShowLog: false,
dialogVisibleShowProjectDetail: false,
dialogVisibleShowWorkTask: false,
story_id: 0,
project_id: 0,
update_view: false,
issue_list: [],
@@ -285,6 +341,7 @@ export default {
},
mounted() {
this.get_work_info_list()
this.get_work_story_list()
this.get_issue_type_list()
this.handleSelectChange(this.selectedIssueTypeId)
},
@@ -556,13 +613,41 @@ export default {
},
get_work_info_list() {
var param = {
user_id: localStorage.getItem('user_id')
user_id: localStorage.getItem('user_id'),
currPage: this.work_info_pageNum,
pageSize: this.work_info_pageSize,
project_name: this.work_info_project_name
}
work.GetWorkInfoByLoginId(param).then(res => {
this.work_info_list = res.data.data
work.GetWorkInfoByLoginIdPaginated(param).then(res => {
this.work_info_list = res.data.data.list
this.work_info_total = res.data.data.total
console.log(res)
})
},
get_work_story_list() {
var param = {
user_id: localStorage.getItem('user_id'),
currPage: this.work_story_pageNum,
pageSize: this.work_story_pageSize
}
work.GetOperationStoryListPaginated(param).then(res => {
this.work_story_list = res.data.data.list
this.work_story_total = res.data.data.total
console.log(res)
})
},
handleProjectSearch() {
this.work_info_pageNum = 1 // 重置到第一页
this.get_work_info_list()
},
showWorkTask(storyId) {
this.story_id = storyId
this.dialogVisibleShowWorkTask = true
this.update_sub_component()
},
showIssueList(project) {
this.project_id = project.project_id
//客户项目