feat: 新功能添加以及BUG修改

This commit is contained in:
kun 2024-04-03 18:19:28 +08:00
parent ff62184921
commit b1affc2d91
16 changed files with 1850 additions and 1413 deletions

View File

@ -18,4 +18,23 @@ export const getOneComputerAuthApi = data => get('xmgl/computerAuth/getOneComput
export const addComputerAuthApi = data => post('xmgl/computerAuth/add', data); //查询服务器认证信息
export const getUserByUidApi = data => post('xmgl/base/getUserByUid', data); //通过uid 做无码登录
export const getUserByUidApi = data => post('xmgl/base/getUserByUid', data); //通过uid 做无码登录
// 获取图形验证码
export const getImgCodeApi = data => get('xmgl/xzRegistry/validCode', data);
// 修改密码-搭配图形验证码
export const imgCodeUpdatePwApi = data => post('xmgl/systemUser/xz/updatePw', data);
// 安全日志
export const getSafeLogListApi = data => post('xmgl/operationLog/list', data);
export const exportSafeLogListApi = data => post('xmgl/operationLog/exportXls', data);
// 消息中心
export const getInfoListApi = data => get('xmgl/xzNotice/page', data);
export const markInfoReadApi = data => post('xmgl/xzNotice/markRead', data);
export const deleteInfoApi = data => post('xmgl/xzNotice/delete', data);
// 工作台用户绑定的组织架构
export const getGroupListApi = data => post('xmgl/company/getTenantOrgTreeList', data);

View File

@ -5,6 +5,8 @@ import {get,post} from '../http'
// 供应商基本信息
export const getSupplierInfoApi = data => post('xmgl/xzSupplier/getXzSupplierByUserId', data);
// 供应商基本信息-记录
export const getSupplierInfoRecordApi = data => post('xmgl/xzSupplierRecord/getXzSupplierByXzSupplierQualificationApplyId', data);
// 企业类型列表
export const getCompanyTypeApi = data => get('xmgl/xzSupplierType/list', data);
@ -14,6 +16,8 @@ export const infoReportSaveApi = data => post('xmgl/xzSupplier/saveSupplier', d
// 资质文件
export const getQualificationFileApi = data => post('xmgl/xzSupplierQualification/list', data);
// 资质文件-记录
export const getQualificationFileRecordApi = data => get('xmgl/xzSupplierQualificationRecord/list', data);
export const addQualificationFileApi = data => post('xmgl/xzSupplierQualification/add', data);
export const editQualificationFileApi = data => post('xmgl/xzSupplierQualification/edit', data);
export const deleteQualificationFileApi = data => post('xmgl/xzSupplierQualification/delete', data);
@ -21,3 +25,5 @@ export const deleteQualificationFileApi = data => post('xmgl/xzSupplierQualific
// 资质申请
export const getQualificationApplyListApi = data => get('xmgl/xzSupplierQualificationApply/page', data);
export const operateQualificationApplyApi = data => post('xmgl/xzSupplierQualificationApply/apply', data);
export const auditQualificationApplyApi = data => post('xmgl/xzSupplierQualificationApply/edit', data);
export const qualificationApplyInfoApi = data => get('xmgl/xzSupplierQualificationApply/queryById', data);

View File

@ -242,11 +242,12 @@ export default {
backtoIndex() {
// window._paq.push(['trackEvent', '', '','' ])
var url = window.location.href;
if (url.indexOf("equipmentCenter.html") != -1) {
this.$router.push("/equipmentCenterIndx");
} else {
this.$router.push("/projectIndex");
}
this.$router.push("/workSpace");
// if (url.indexOf("equipmentCenter.html") != -1) {
// this.$router.push("/equipmentCenterIndx");
// } else {
// this.$router.push("/projectIndex");
// }
},
handleSelect(key, keyPath) {

View File

@ -184,11 +184,12 @@ export default {
backtoIndex() {
// window._paq.push(['trackEvent', '', '','' ])
var url = window.location.href;
if (url.indexOf("equipmentCenter.html") != -1) {
this.$router.push("/equipmentCenterIndx");
} else {
this.$router.push("/projectIndex");
}
this.$router.push("/workSpace");
// if (url.indexOf("equipmentCenter.html") != -1) {
// this.$router.push("/equipmentCenterIndx");
// } else {
// this.$router.push("/projectIndex");
// }
},
handleSelect(key,keyPath) {

View File

@ -49,7 +49,8 @@ export default {
},
methods: {
backtoIndex() {
this.$router.push("/projectIndex");
// this.$router.push("/projectIndex");
this.$router.push("/workSpace");
},
handleSelect(url) {

View File

@ -8,72 +8,55 @@
v-model="visible"
>
<div class="changeBox">
<div class="title-content">
<span>{{isUserList?'切换用户':'用户组织'}}</span>
<i class="el-icon-arrow-left" style="cursor: pointer;" @click="isUserList = true;"></i>
<i class="el-icon-arrow-right" style="cursor: pointer;" @click="isUserList = false;"></i>
<div class="title-content">
<span>{{ isUserList ? "切换用户" : "用户组织" }}</span>
<i
class="el-icon-arrow-left"
style="cursor: pointer;"
@click="isUserList = true"
></i>
<i
class="el-icon-arrow-right"
style="cursor: pointer;"
@click="isUserList = false"
></i>
</div>
<div class="content-list" v-if="isUserList">
<div
class="content-list-item"
v-for="(item, index) in groupListData"
:key="index"
@click="selectGroup(item)"
>
<i class="el-icon-trophy-1"></i>
<span>{{ item.companyName }}</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list" v-if="isUserList">
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="content-list-item">
<i class="el-icon-trophy-1"></i>
<span>中国建筑第八工程局第三建设有限公司</span>
<span>个人租户</span>
<i class="el-icon-arrow-right"></i>
</div>
</div>
<div class="tree-group" v-else>
<div class="select-list">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText"
style="width: 98%;"
suffix-icon="el-icon-search"
size="medium"
>
</el-input>
<el-tree
:data="level1CompanyData"
:props="selectTreeProps"
node-key="id"
ref="tree"
:filter-node-method="filterNode"
:highlight-current="true"
:check-on-click-node="true"
@node-click="treeClick"
style="margin:10px 5px;"
></el-tree>
</div>
</div>
<div class="tree-group" v-else>
<div class="select-list">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText"
style="width: 98%;"
suffix-icon="el-icon-search"
size="medium"
>
</el-input>
<el-tree
:data="selectedGroupData"
:props="selectTreeProps"
:default-expand-all="true"
node-key="sn"
ref="tree"
:filter-node-method="filterNode"
:highlight-current="true"
:check-on-click-node="true"
@node-click="treeClick"
style="margin:10px 5px;"
></el-tree>
</div>
</div>
</div>
<!-- 点击内容 -->
<div slot="reference" class="click-content">
@ -85,67 +68,93 @@
</div>
</template>
<script>
import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project";
export default {
data() {
return {
visible: false,
isUserList: true,
filterText: "",
level1CompanyData: [],
selectTreeProps: {
children: "children",
label: "label",
children: "list",
label: "name",
},
}
groupListData: [],
selectedGroupData: [],
selectedProjectSn: ""
};
},
created() {
this.loadData();
},
mounted() {
this.getGroupTreeData();
},
mounted() {},
methods: {
//
selectProject(obj) {
if (obj.list && obj.list.length > 0) {
obj.list.map((item) => {
this.selectProject(item);
});
} else {
if(!this.selectedProjectSn){ //
this.selectedProjectSn = obj.sn;
// projectSn
this.$store.commit("setProjectSn", obj.sn);
}
}
},
//
selectGroup(item) {
this.selectedGroupData = [item];
this.isUserList = false;
this.$nextTick(() => {
this.selectProject(item);
});
},
//
getGroupTreeData() {
this.groupListData = this.$store.state.groupTreeList;
this.isUserList = false;
let findItem = this.groupListData.find(
(item) => item.sn == this.$store.state.selectedGroupSn
);
this.selectedGroupData = [findItem];
this.$nextTick(() => {
this.selectProject(findItem);
});
},
//
treeClick(data) {
console.log(data);
if(data.projectSn){
this.selectedProjectSn = data.projectSn;
// projectSn
this.$store.commit("setProjectSn", data.projectSn);
// popover
this.visible = false;
}
},
filterNode(value, data) {
if (!value) return true;
return data.name.indexOf(value) !== -1;
},
loadData() {
let sn = this.$store.state.userInfo.sn;
let projectType = 1; //
if (this.$store.state.userInfo.addProjectType == 1) {
projectType = 0; //
}
getComapnyStatisticsListApi({
sn: sn,
projectType: projectType,
}).then((res) => {
this.level1CompanyData = res.result.companyList
? res.result.companyList
: res.result.projectList;
});
},
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
}
};
</script>
<style lang="less" scoped>
.flexStyle(){
display: flex;
align-items: center;
.flexStyle() {
display: flex;
align-items: center;
}
.changeBox {
padding: 0px 10px;
.title-content{
.title-content {
.flexStyle();
>span{
> span {
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
@ -153,34 +162,34 @@ export default {
margin-right: auto;
}
}
.content-list{
.content-list {
margin-top: 15px;
&-item{
&-item {
.flexStyle();
padding: 10px 15px;
border: 1px solid #DADBDB;
border: 1px solid #dadbdb;
border-radius: 5px;
cursor: pointer;
>span:nth-child(2){
> span:nth-child(2) {
margin: 2px 10px 0px 10px;
}
>span:nth-child(3){
padding:3px 10px;
color: #79ACFA;
background-color: #E4F5FF;
border: 1px solid #99C3FB;
> span:nth-child(3) {
padding: 3px 10px;
color: #79acfa;
background-color: #e4f5ff;
border: 1px solid #99c3fb;
border-radius: 5px;
font-size: 10px;
}
/deep/.el-icon-arrow-right{
/deep/.el-icon-arrow-right {
margin-left: auto;
}
}
&-item:not(:last-child){
&-item:not(:last-child) {
margin-bottom: 10px;
}
}
.tree-group{
.tree-group {
margin-top: 15px;
background-color: #fff;
.select-list {
@ -192,10 +201,10 @@ export default {
}
}
}
.click-content{
.click-content {
cursor: pointer;
.flexStyle();
>span{
> span {
margin: 0px 10px;
}
}
@ -204,4 +213,4 @@ export default {
.el-popover {
box-sizing: content-box !important;
}
</style>
</style>

View File

@ -20,6 +20,8 @@ export default new Vuex.Store({
projectManageMenuList: val.projectManageMenuList,
isShowBackIndex: val.isShowBackIndex,
projectSn: val.projectSn,
selectedGroupSn: val.selectedGroupSn,
groupTreeList: val.groupTreeList,
currentLanguage: val.currentLanguage,
currentProDetail: val.currentProDetail,
currentMoudle: val.currentMoudle,
@ -48,6 +50,7 @@ export default new Vuex.Store({
// FILEURL:' http://101.43.164.214:11111/image/',// 百色
UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
WORKFLOWURL: 'http://192.168.34.155:88/#/workspace/forms',//测试
// UPLOADURL:'http://10.0.1.43:6023/upload/image',//测试
// FILEURL:'http://10.0.1.43:6023/image/',//测试
// BASEURL: baseUrl
@ -124,6 +127,8 @@ export default new Vuex.Store({
projectManageMenuList: [], // 项目管理页菜单列表
isShowBackIndex: false,
projectSn: null, //项目后台 里的 项目 sn
selectedGroupSn: "",
groupTreeList: [],
currentLanguage: "zh",
currentProDetail: null,
currentMoudle: null,
@ -207,6 +212,12 @@ export default new Vuex.Store({
setProjectSn(state, data) {
state.projectSn = data;
},
setSelectedGroupSn(state, data) {
state.selectedGroupSn = data;
},
setGroupTreeList(state, data) {
state.groupTreeList = data;
},
setLang(state, data) {
state.currentLanguage = data;
},

View File

@ -855,7 +855,7 @@ export default {
: [];
var companyModule = [];
var projectModule = [];
if (moduleList.length == 0 && data.accountType != 1) {
if (moduleList.length == 0 && (data.accountType != 1 && data.accountType != 10)) {
this.$message.warning("当前账号还没分配权限");
return false;
}
@ -934,6 +934,7 @@ export default {
break;
case 5:
case 6:
case 10:
case 11:
//
this.$store.commit("setMenuList", projectModule);

View File

@ -1,150 +1,143 @@
<template>
<div>
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<el-form-item label="标题内容" prop="title">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
<el-input
placeholder="请输入"
clearable
v-model="searchForm.app"
/>
</el-form-item>
<el-form-item label="标签" prop="tag">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.tag"
/>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="timeRange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="primary" size="medium" @click="markReadFn">标为已读</el-button>
<el-button type="danger" plain size="medium" @click="deleteInfoFn">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
scope.row.title
}}</span>
</template>
</el-table-column>
<el-table-column label="类别" align="center" prop="type">
<template slot-scope="scope">
<span>{{ scope.row.type | typeText(searchBtnList) }}</span>
</template>
</el-table-column>
<el-table-column
label="应用"
align="center"
prop="app"
/>
<el-table-column label="标签" align="center" prop="tag" />
<el-table-column label="操作时间" align="center" prop="operateTime" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<!-- 人员名称 -->
<el-form-item label="" prop="deviceName">
<el-input
placeholder="请输入"
suffix-icon="el-icon-search"
v-model="searchForm.personName"
>
</el-input>
</el-form-item>
<!-- 设备序号 -->
<el-form-item label="应用标签" prop="deviceNumber">
<el-select
v-model="searchForm.departmentId"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
>
<el-option
v-for="(item, index) in deviceList"
:key="index"
:label="item.deviceNumber"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="daterange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeDate"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="primary" size="medium">标为已读</el-button>
<el-button type="danger" plain size="medium">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData">
<el-table-column type="selection" align="center" width="55" />
<el-table-column label="标题内容" align="center" prop="deviceName">
<el-button type="text" @click="infoDetailOpen">标题内容</el-button>
</el-table-column>
<el-table-column
label="类别"
align="center"
prop="deviceNumber"
width="180"
/>
<el-table-column
label="应用"
align="center"
prop="currentLocation"
width="180"
/>
<el-table-column label="标签" align="center" prop="speed" />
<el-table-column label="操作时间" align="center" prop="workStatus" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false;">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
</div>
</div>
</template>
<script>
import { rtToolPage } from "@/assets/js/api/workTicketManage.js";
import {} from "@/assets/js/api/devicePosition/payData";
import { getInfoListApi, markInfoReadApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
mounted() {},
created() {
this.getList();
// this.getDutyPerson()
},
data() {
return {
infoDetailShow: false,
checkIndex: 0,
searchBtnList: [
{ name: "全部类别", value: "" },
{ name: "通知公告", value: "" },
{ name: "审批流程", value: "" },
{ name: "风险预警", value: "" },
{ name: "任务待办", value: "" },
{ name: "其他", value: "" },
{ name: "通知公告", value: 1 },
{ name: "审批流程", value: 3 },
{ name: "风险预警", value: 2 },
{ name: "任务待办", value: 4 },
{ name: "其他", value: 5 },
],
devSn: "",
//
@ -156,159 +149,138 @@ export default {
total: 1, //
},
searchForm: {
pageNo: 1,
pageSize: 10,
projectSn: "", // SN
personName: "",
deviceNumber: "",
startTime: "",
endTime: "",
title: "",
app: "",
tag: "",
},
personList: [
{ id: 1, personName: "张三" },
{ id: 2, personName: "李四" },
{ id: 3, personName: "王二" },
],
deviceList: [
{ id: 1, deviceNumber: "EMP21313212135132" },
{ id: 2, deviceNumber: "EMP44613213543212" },
{ id: 3, deviceNumber: "EMP21321546312556" },
],
tableData: [
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 50,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 95,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 18,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 45,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 81,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 11,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 67,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 90,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 16,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 80,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
],
timeRange: [],
tableData: [],
multipleSelection: []
};
},
filters: {
typeText(val, list) {
let findItem = list.find((item) => val === item.value);
return findItem ? findItem.name : "";
},
},
mounted() {},
created() {
this.getList();
},
methods: {
infoDetailOpen(){
//
deleteInfoFn(){
let selectedIds = [];
if(this.multipleSelection.length == 0){
this.$message({
type: "error",
message: "请勾选表格项",
});
return;
} else {
this.multipleSelection.map(item => {
selectedIds.push(item.id)
})
}
this.$confirm("此操作将删除信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
type: "success",
message: "操作成功!",
});
} else {
this.$message({
type: "error",
message: res.message,
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消操作",
});
});
},
//
markReadFn(){
let selectedIds = [];
if(this.multipleSelection.length == 0){
this.$message({
type: "error",
message: "请勾选表格项",
});
return;
} else {
this.multipleSelection.map(item => {
selectedIds.push(item.id)
})
}
this.$confirm("此操作将标记已读, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
markInfoReadApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
type: "success",
message: "操作成功!",
});
} else {
this.$message({
type: "error",
message: res.message,
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消操作",
});
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
this.infoDetailShow = true;
},
searchSelect(obj, index) {
this.checkIndex = index;
},
exportFn() {
window.location.href =
this.$http.defaults.baseURL +
"xmgl/standardCurrentData/exportExcelStandardCurrentData?devSn=" +
this.formInline.devSn +
"&projectSn=" +
this.projectSn +
"&startTime=" +
this.formInline.startTime +
"&endTime=" +
this.formInline.endTime;
this.pageInfo.pageNo = 1;
this.getList();
},
//
getList() {
rtToolPage({
let requestData = {
// accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
projectSn: this.$store.state.projectSn,
devSn: this.searchForm.devSn,
toolName: this.searchForm.toolName,
toolStatus: this.searchForm.toolStatus,
}).then((result) => {
type: this.searchBtnList[this.checkIndex].value,
...this.searchForm
}
if(this.timeRange && this.timeRange.length > 0){
requestData.operateTime_begin = this.timeRange[0]
requestData.operateTime_end = this.timeRange[1]
}
getInfoListApi(requestData).then((result) => {
if (result.success) {
this.List = result.result.records;
this.tableData = result.result.records;
this.pageInfo.total = result.result.total;
}
});
@ -326,7 +298,11 @@ export default {
this.getList();
},
refresh() {
this.searchForm = {};
this.searchForm = {
title: "",
app: "",
tag: "",
};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
@ -340,16 +316,7 @@ export default {
handleCurrentChange(val) {
this.pageNo2 = val;
this.getPageList();
},
changeDate() {
if (this.daterange) {
this.searchForm.startTime = this.daterange[0];
this.searchForm.endTime = this.daterange[1];
} else {
this.searchForm.startTime = "";
this.searchForm.endTime = "";
}
},
}
},
};
</script>
@ -396,32 +363,32 @@ export default {
color: #000000;
}
}
.info-content{
.back-operate{
.info-content {
.back-operate {
display: flex;
align-items: center;
color: #5282F6;
color: #5282f6;
height: 40px;
border-bottom: 2px solid #C8C8C8;
border-bottom: 2px solid #c8c8c8;
padding-bottom: 5px;
cursor: pointer;
.el-icon-arrow-left{
color: #5282F6;
.el-icon-arrow-left {
color: #5282f6;
margin-left: 15px;
}
>span{
> span {
margin-left: 5px;
}
}
.info-content-detail{
.info-content-detail {
margin-top: 80px;
.detail-title{
.detail-title {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 18px;
text-align: center;
}
.detail-sub-title{
.detail-sub-title {
display: flex;
align-items: center;
justify-content: center;
@ -430,11 +397,11 @@ export default {
font-size: 16px;
margin-top: 30px;
margin-bottom: 30px;
span:not(:last-child){
span:not(:last-child) {
margin-right: 25px;
}
}
.detail-content{
.detail-content {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;

View File

@ -1,149 +1,142 @@
<template>
<div>
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<el-form-item label="标题内容" prop="title">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
<el-input
placeholder="请输入"
clearable
v-model="searchForm.app"
/>
</el-form-item>
<el-form-item label="标签" prop="tag">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.tag"
/>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="timeRange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="danger" plain size="medium" @click="deleteInfoFn">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
scope.row.title
}}</span>
</template>
</el-table-column>
<el-table-column label="类别" align="center" prop="type">
<template slot-scope="scope">
<span>{{ scope.row.type | typeText(searchBtnList) }}</span>
</template>
</el-table-column>
<el-table-column
label="应用"
align="center"
prop="app"
/>
<el-table-column label="标签" align="center" prop="tag" />
<el-table-column label="操作时间" align="center" prop="operateTime" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<!-- 人员名称 -->
<el-form-item label="" prop="deviceName">
<el-input
placeholder="请输入"
suffix-icon="el-icon-search"
v-model="searchForm.personName"
>
</el-input>
</el-form-item>
<!-- 设备序号 -->
<el-form-item label="应用标签" prop="deviceNumber">
<el-select
v-model="searchForm.departmentId"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
>
<el-option
v-for="(item, index) in deviceList"
:key="index"
:label="item.deviceNumber"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="daterange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeDate"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="danger" plain size="medium">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData">
<el-table-column type="selection" align="center" width="55" />
<el-table-column label="标题内容" align="center" prop="deviceName">
<el-button type="text" @click="infoDetailOpen">标题内容</el-button>
</el-table-column>
<el-table-column
label="类别"
align="center"
prop="deviceNumber"
width="180"
/>
<el-table-column
label="应用"
align="center"
prop="currentLocation"
width="180"
/>
<el-table-column label="标签" align="center" prop="speed" />
<el-table-column label="操作时间" align="center" prop="workStatus" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false;">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
</div>
</div>
</template>
<script>
import { rtToolPage } from "@/assets/js/api/workTicketManage.js";
import {} from "@/assets/js/api/devicePosition/payData";
import { getInfoListApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
mounted() {},
created() {
this.getList();
// this.getDutyPerson()
},
data() {
return {
infoDetailShow: false,
checkIndex: 0,
searchBtnList: [
{ name: "全部类别", value: "" },
{ name: "通知公告", value: "" },
{ name: "审批流程", value: "" },
{ name: "风险预警", value: "" },
{ name: "任务待办", value: "" },
{ name: "其他", value: "" },
{ name: "通知公告", value: 1 },
{ name: "审批流程", value: 3 },
{ name: "风险预警", value: 2 },
{ name: "任务待办", value: 4 },
{ name: "其他", value: 5 },
],
devSn: "",
//
@ -155,159 +148,96 @@ export default {
total: 1, //
},
searchForm: {
pageNo: 1,
pageSize: 10,
projectSn: "", // SN
personName: "",
deviceNumber: "",
startTime: "",
endTime: "",
title: "",
app: "",
tag: "",
},
personList: [
{ id: 1, personName: "张三" },
{ id: 2, personName: "李四" },
{ id: 3, personName: "王二" },
],
deviceList: [
{ id: 1, deviceNumber: "EMP21313212135132" },
{ id: 2, deviceNumber: "EMP44613213543212" },
{ id: 3, deviceNumber: "EMP21321546312556" },
],
tableData: [
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 50,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 95,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 18,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 45,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 81,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 11,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 67,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 90,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 16,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 80,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
],
timeRange: [],
tableData: [],
multipleSelection: []
};
},
filters: {
typeText(val, list) {
let findItem = list.find((item) => val === item.value);
return findItem ? findItem.name : "";
},
},
mounted() {},
created() {
this.getList();
},
methods: {
infoDetailOpen(){
//
deleteInfoFn(){
let selectedIds = [];
if(this.multipleSelection.length == 0){
this.$message({
type: "error",
message: "请勾选表格项",
});
return;
} else {
this.multipleSelection.map(item => {
selectedIds.push(item.id)
})
}
this.$confirm("此操作将删除信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
type: "success",
message: "操作成功!",
});
} else {
this.$message({
type: "error",
message: res.message,
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消操作",
});
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
this.infoDetailShow = true;
},
searchSelect(obj, index) {
this.checkIndex = index;
},
exportFn() {
window.location.href =
this.$http.defaults.baseURL +
"xmgl/standardCurrentData/exportExcelStandardCurrentData?devSn=" +
this.formInline.devSn +
"&projectSn=" +
this.projectSn +
"&startTime=" +
this.formInline.startTime +
"&endTime=" +
this.formInline.endTime;
this.pageInfo.pageNo = 1;
this.getList();
},
//
getList() {
rtToolPage({
let requestData = {
// accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
projectSn: this.$store.state.projectSn,
devSn: this.searchForm.devSn,
toolName: this.searchForm.toolName,
toolStatus: this.searchForm.toolStatus,
}).then((result) => {
type: this.searchBtnList[this.checkIndex].value,
...this.searchForm
}
if(this.timeRange && this.timeRange.length > 0){
requestData.operateTime_begin = this.timeRange[0]
requestData.operateTime_end = this.timeRange[1]
}
getInfoListApi(requestData).then((result) => {
if (result.success) {
this.List = result.result.records;
this.tableData = result.result.records;
this.pageInfo.total = result.result.total;
}
});
@ -325,7 +255,11 @@ export default {
this.getList();
},
refresh() {
this.searchForm = {};
this.searchForm = {
title: "",
app: "",
tag: "",
};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
@ -339,16 +273,7 @@ export default {
handleCurrentChange(val) {
this.pageNo2 = val;
this.getPageList();
},
changeDate() {
if (this.daterange) {
this.searchForm.startTime = this.daterange[0];
this.searchForm.endTime = this.daterange[1];
} else {
this.searchForm.startTime = "";
this.searchForm.endTime = "";
}
},
}
},
};
</script>
@ -395,32 +320,32 @@ export default {
color: #000000;
}
}
.info-content{
.back-operate{
.info-content {
.back-operate {
display: flex;
align-items: center;
color: #5282F6;
color: #5282f6;
height: 40px;
border-bottom: 2px solid #C8C8C8;
border-bottom: 2px solid #c8c8c8;
padding-bottom: 5px;
cursor: pointer;
.el-icon-arrow-left{
color: #5282F6;
.el-icon-arrow-left {
color: #5282f6;
margin-left: 15px;
}
>span{
> span {
margin-left: 5px;
}
}
.info-content-detail{
.info-content-detail {
margin-top: 80px;
.detail-title{
.detail-title {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 18px;
text-align: center;
}
.detail-sub-title{
.detail-sub-title {
display: flex;
align-items: center;
justify-content: center;
@ -429,11 +354,11 @@ export default {
font-size: 16px;
margin-top: 30px;
margin-bottom: 30px;
span:not(:last-child){
span:not(:last-child) {
margin-right: 25px;
}
}
.detail-content{
.detail-content {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;

View File

@ -1,150 +1,143 @@
<template>
<div>
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
<div class="fullHeight" v-if="!infoDetailShow">
<div class="searchBtn">
<div
class="search-btn-item"
:class="checkIndex == index ? 'item-active' : ''"
v-for="(item, index) in searchBtnList"
:key="index"
@click="searchSelect(item, index)"
>
{{ item.name }}
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<el-form-item label="标题内容" prop="title">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.title"
/>
</el-input>
</el-form-item>
<el-form-item label="应用" prop="app">
<!-- suffix-icon="el-icon-search" -->
<el-input
placeholder="请输入"
clearable
v-model="searchForm.app"
/>
</el-form-item>
<el-form-item label="标签" prop="tag">
<el-input
placeholder="请输入"
clearable
v-model="searchForm.tag"
/>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="timeRange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="primary" size="medium" @click="markReadFn">标为已读</el-button>
<el-button type="danger" plain size="medium" @click="deleteInfoFn">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="60" />
<el-table-column label="标题内容" align="center" prop="title">
<template slot-scope="scope">
<span :style="{color: scope.row.isread == 1?'#BFBFBF':'#5181F7'}" style="cursor: pointer;" @click="infoDetailOpen">{{
scope.row.title
}}</span>
</template>
</el-table-column>
<el-table-column label="类别" align="center" prop="type">
<template slot-scope="scope">
<span>{{ scope.row.type | typeText(searchBtnList) }}</span>
</template>
</el-table-column>
<el-table-column
label="应用"
align="center"
prop="app"
/>
<el-table-column label="标签" align="center" prop="tag" />
<el-table-column label="操作时间" align="center" prop="operateTime" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="searchBox whiteBlock">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
style="width: 100%;display: flex;align-items: center;"
>
<!-- 人员名称 -->
<el-form-item label="" prop="deviceName">
<el-input
placeholder="请输入"
suffix-icon="el-icon-search"
v-model="searchForm.personName"
>
</el-input>
</el-form-item>
<!-- 设备序号 -->
<el-form-item label="应用标签" prop="deviceNumber">
<el-select
v-model="searchForm.departmentId"
placeholder="请选择"
clearable
:style="{ width: '100%' }"
>
<el-option
v-for="(item, index) in deviceList"
:key="index"
:label="item.deviceNumber"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<!-- 时间 -->
<el-form-item label="接收时间" style="margin-right: auto;">
<el-date-picker
size="medium"
v-model="daterange"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeDate"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
<el-form-item style="margin-right: 0px;">
<el-button type="primary" plain @click="searchList">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="info-operate">
<span>消息列表</span>
<el-button type="primary" size="medium">标为已读</el-button>
<el-button type="danger" plain size="medium">删除</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData">
<el-table-column type="selection" align="center" width="55" />
<el-table-column label="标题内容" align="center" prop="deviceName">
<el-button type="text" @click="infoDetailOpen">标题内容</el-button>
</el-table-column>
<el-table-column
label="类别"
align="center"
prop="deviceNumber"
width="180"
/>
<el-table-column
label="应用"
align="center"
prop="currentLocation"
width="180"
/>
<el-table-column label="标签" align="center" prop="speed" />
<el-table-column label="操作时间" align="center" prop="workStatus" />
</el-table>
<el-pagination
class="pagerBox"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pageInfo.total)"
background
></el-pagination>
</div>
</div>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false;">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
<div class="info-content" v-else>
<div class="back-operate" @click="infoDetailShow = false">
<i class="el-icon-arrow-left"></i>
<span>返回</span>
</div>
<div class="info-content-detail">
<div class="detail-title">人员未在场预警</div>
<div class="detail-sub-title">
<span>应用劳务管理系统</span>
<span>标签预警信息</span>
<span>接收时间2024/03/03 23:50:00</span>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
<div class="detail-content">人员未在场预警</div>
</div>
</div>
</div>
</template>
<script>
import { rtToolPage } from "@/assets/js/api/workTicketManage.js";
import {} from "@/assets/js/api/devicePosition/payData";
import { getInfoListApi, markInfoReadApi, deleteInfoApi } from "@/assets/js/api/loginSign.js";
export default {
mounted() {},
created() {
this.getList();
// this.getDutyPerson()
},
data() {
return {
infoDetailShow: false,
checkIndex: 0,
searchBtnList: [
{ name: "全部类别", value: "" },
{ name: "通知公告", value: "" },
{ name: "审批流程", value: "" },
{ name: "风险预警", value: "" },
{ name: "任务待办", value: "" },
{ name: "其他", value: "" },
{ name: "通知公告", value: 1 },
{ name: "审批流程", value: 3 },
{ name: "风险预警", value: 2 },
{ name: "任务待办", value: 4 },
{ name: "其他", value: 5 },
],
devSn: "",
//
@ -156,159 +149,138 @@ export default {
total: 1, //
},
searchForm: {
pageNo: 1,
pageSize: 10,
projectSn: "", // SN
personName: "",
deviceNumber: "",
startTime: "",
endTime: "",
title: "",
app: "",
tag: "",
},
personList: [
{ id: 1, personName: "张三" },
{ id: 2, personName: "李四" },
{ id: 3, personName: "王二" },
],
deviceList: [
{ id: 1, deviceNumber: "EMP21313212135132" },
{ id: 2, deviceNumber: "EMP44613213543212" },
{ id: 3, deviceNumber: "EMP21321546312556" },
],
tableData: [
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 50,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 95,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 18,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 45,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 81,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 11,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 67,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 90,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 0,
deviceBattery: 16,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
{
deviceName: "挖掘机",
deviceNumber: "EMP21313212135132",
currentLocation: "123,4561,895,5648",
speed: "15km/h",
workStatus: 1,
deviceBattery: 80,
deviceVoltage: 3.7,
uploadTime: "2024-03-13 00:00:00",
},
],
timeRange: [],
tableData: [],
multipleSelection: []
};
},
filters: {
typeText(val, list) {
let findItem = list.find((item) => val === item.value);
return findItem ? findItem.name : "";
},
},
mounted() {},
created() {
this.getList();
},
methods: {
infoDetailOpen(){
//
deleteInfoFn(){
let selectedIds = [];
if(this.multipleSelection.length == 0){
this.$message({
type: "error",
message: "请勾选表格项",
});
return;
} else {
this.multipleSelection.map(item => {
selectedIds.push(item.id)
})
}
this.$confirm("此操作将删除信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteInfoApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
type: "success",
message: "操作成功!",
});
} else {
this.$message({
type: "error",
message: res.message,
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消操作",
});
});
},
//
markReadFn(){
let selectedIds = [];
if(this.multipleSelection.length == 0){
this.$message({
type: "error",
message: "请勾选表格项",
});
return;
} else {
this.multipleSelection.map(item => {
selectedIds.push(item.id)
})
}
this.$confirm("此操作将标记已读, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
markInfoReadApi({ accountId: this.$store.state.userInfo.userId, ids: selectedIds.join(',') }).then((res) => {
if (res.success) {
this.getList()
this.$message({
type: "success",
message: "操作成功!",
});
} else {
this.$message({
type: "error",
message: res.message,
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消操作",
});
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
console.log(val,'测试测试')
},
infoDetailOpen() {
this.infoDetailShow = true;
},
searchSelect(obj, index) {
this.checkIndex = index;
},
exportFn() {
window.location.href =
this.$http.defaults.baseURL +
"xmgl/standardCurrentData/exportExcelStandardCurrentData?devSn=" +
this.formInline.devSn +
"&projectSn=" +
this.projectSn +
"&startTime=" +
this.formInline.startTime +
"&endTime=" +
this.formInline.endTime;
this.pageInfo.pageNo = 1;
this.getList();
},
//
getList() {
rtToolPage({
let requestData = {
// accountId: this.$store.state.userInfo.userId,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
projectSn: this.$store.state.projectSn,
devSn: this.searchForm.devSn,
toolName: this.searchForm.toolName,
toolStatus: this.searchForm.toolStatus,
}).then((result) => {
type: this.searchBtnList[this.checkIndex].value,
...this.searchForm
}
if(this.timeRange && this.timeRange.length > 0){
requestData.operateTime_begin = this.timeRange[0]
requestData.operateTime_end = this.timeRange[1]
}
getInfoListApi(requestData).then((result) => {
if (result.success) {
this.List = result.result.records;
this.tableData = result.result.records;
this.pageInfo.total = result.result.total;
}
});
@ -326,7 +298,11 @@ export default {
this.getList();
},
refresh() {
this.searchForm = {};
this.searchForm = {
title: "",
app: "",
tag: "",
};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
@ -340,16 +316,7 @@ export default {
handleCurrentChange(val) {
this.pageNo2 = val;
this.getPageList();
},
changeDate() {
if (this.daterange) {
this.searchForm.startTime = this.daterange[0];
this.searchForm.endTime = this.daterange[1];
} else {
this.searchForm.startTime = "";
this.searchForm.endTime = "";
}
},
}
},
};
</script>
@ -396,32 +363,32 @@ export default {
color: #000000;
}
}
.info-content{
.back-operate{
.info-content {
.back-operate {
display: flex;
align-items: center;
color: #5282F6;
color: #5282f6;
height: 40px;
border-bottom: 2px solid #C8C8C8;
border-bottom: 2px solid #c8c8c8;
padding-bottom: 5px;
cursor: pointer;
.el-icon-arrow-left{
color: #5282F6;
.el-icon-arrow-left {
color: #5282f6;
margin-left: 15px;
}
>span{
> span {
margin-left: 5px;
}
}
.info-content-detail{
.info-content-detail {
margin-top: 80px;
.detail-title{
.detail-title {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 18px;
text-align: center;
}
.detail-sub-title{
.detail-sub-title {
display: flex;
align-items: center;
justify-content: center;
@ -430,11 +397,11 @@ export default {
font-size: 16px;
margin-top: 30px;
margin-bottom: 30px;
span:not(:last-child){
span:not(:last-child) {
margin-right: 25px;
}
}
.detail-content{
.detail-content {
font-family: PingFang SC, PingFang SC;
color: #000000;
font-size: 14px;

View File

@ -5,24 +5,21 @@
<el-form :inline="true" class="demo-form-inline" size="medium">
<el-form-item label="审批状态">
<el-select
v-model="tableParameter.enterpriseId"
v-model="tableParameter.applyStatus"
:placeholder="$t('message.laborMange.pleaseChoose')"
filterable
clearable
>
<el-option
:label="$t('message.laborMange.allTheCompany')"
:value="''"
></el-option>
<el-option
v-for="(item, index) in enterpriseListData"
v-for="(item, index) in statusListData"
:key="index"
:label="item.enterpriseName"
:value="item.id"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="资质申请时间">
<el-date-picker
v-model="tableParameter.timeRange"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
@ -31,11 +28,8 @@
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="身份证号">
<el-input placeholder="请输入" v-model="tableParameter.idCard"></el-input>
</el-form-item> -->
<el-form-item>
<el-button type="primary" plain>{{
<el-button type="primary" plain @click="searchData">{{
$t("message.laborMange.inquire")
}}</el-button>
<el-button type="warning" plain>{{
@ -45,49 +39,62 @@
</el-form>
</div>
<vue-scroll style="height: 86%">
<el-table class="tables" :data="tableData" height="800">
<el-table class="tables" :data="tableData" height="500">
<el-table-column
width="200"
prop="jobName"
prop="applyTime"
align="center"
label="资质申请时间"
></el-table-column>
<el-table-column
prop="personName"
label="供应商名称"
prop="applyOrg"
label="审批组织"
align="center"
></el-table-column>
<el-table-column
prop="phone"
label="审批"
prop="replyTime"
label="审批回复时间"
align="center"
></el-table-column>
<el-table-column label="审批回复时间" align="center">
<!-- <div slot slot-scope="scope">
<img
:preview="
scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []
"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
alt=""
width="50px"
/>
</div> -->
<el-table-column label="审批状态" align="center">
<template slot-scope="scope">
<span
:style="{
color:
scope.row.applyStatus == 1
? '#66A972'
: scope.row.applyStatus == 2
? '#5F73CD'
: scope.row.applyStatus == 3
? '#E14655'
: scope.row.applyStatus == 4
? '#B8B8BA'
: '',
}"
>
{{
scope.row.applyStatus == 1
? "待审批"
: scope.row.applyStatus == 2
? "已审批"
: scope.row.applyStatus == 3
? "已驳回"
: scope.row.applyStatus == 4
? "已撤销"
: ""
}}
</span>
</template>
</el-table-column>
<el-table-column
prop="phone"
label="审批状态"
align="center"
></el-table-column>
<el-table-column
:label="$t('message.deviceManage.operation')"
align="center"
width="400"
>
<template slot-scope="scope">
<div class="tableBtns">
<div @click="showAuditReply(scope.row)" class="operationText">
<div @click="showAudit(scope.row)" class="operationText">
<img
src="@/assets/images/icon-edit.png"
src="@/assets/images/tableIcon/showReply.png"
width="15px"
height="15px"
/>
@ -134,6 +141,7 @@
<span
:class="activeTab == 2 ? 'activeStyle' : ''"
@click="activeTab = 2"
v-if="[2,3].includes(rowData.applyStatus)"
>审批回复</span
>
</div>
@ -142,58 +150,78 @@
<div class="flex4">
<div class="type_content" style="z-index: 2">
<div class="flex3">
<span class="width_35">{{
$t("message.qualificationApply.companyName")
<span class="width_35">企业名称</span>
<span class="width_65">{{
supplierDetail.enterpriseName
}}</span>
<span class="width_65">坤之企业</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">企业类型</span>
<span class="width_65 bg_color">企业分包</span>
<span class="width_65 bg_color">{{
supplierDetail.companyTypeName
}}</span>
</div>
<div class="flex3">
<span class="width_35">开户行</span>
<span class="width_65">123</span>
<span class="width_65">{{ supplierDetail.bankname }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">注册人申请电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.registerPersonPhoneTel
}}</span>
</div>
<div class="flex3">
<span class="width_35">法人电话</span>
<span class="width_65">123456</span>
<span class="width_65">{{
supplierDetail.legalPersonTel
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">营业执照截止日期</span>
<span class="width_65 bg_color">2024-03-05</span>
<span class="width_65 bg_color">{{
supplierDetail.businessLicenseEndDate
}}</span>
</div>
<div class="flex3">
<span class="width_35">企业邮箱</span>
<span class="width_65">123@qq.com</span>
<span class="width_65">{{
supplierDetail.enterpriseEmail
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">劳资证书号</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.qualificationNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35">单位性质</span>
<span class="width_65" style="white-space: nowrap"
>国有企业</span
>
<span class="width_65" style="white-space: nowrap">{{
supplierDetail.enterpriseProperty == 1
? "国有企业"
: supplierDetail.enterpriseProperty == 2
? "三资企业"
: supplierDetail.enterpriseProperty == 3
? "集体企业"
: supplierDetail.enterpriseProperty == 4
? "私营企业"
: ""
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">项目负责人</span>
<span class="width_65 bg_color">叶起中</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorName
}}</span>
</div>
</div>
<div class="type_content">
<div class="flex3">
<span class="width_35 border_l">{{
$t("message.qualificationApply.qualificationImg")
}}</span>
<span class="width_65">
<!-- <img
:src="projectDetail.layoutImage"
<span class="width_35 border_l">资质图片</span>
<span class="width_65"
><img
:src="supplierDetail.enterpriseQualificationUrl"
style="
width: 40px;
height: 40px;
@ -202,46 +230,72 @@
"
@click="
bigImageDialog = true;
bigImageUrl = projectDetail.layoutImage;
bigImageUrl = supplierDetail.enterpriseQualificationUrl;
"
/> -->
</span>
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">法定代表人</span>
<span class="width_65 bg_color">小坤坤</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseLegalPerson
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">统一社会信用代码</span>
<span class="width_65">111222333</span>
<span class="width_65">{{ supplierDetail.socialCode }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">注册资金(万元)</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.registeredCapital
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">银行账号</span>
<span class="width_65">123</span>
<span class="width_65">{{
supplierDetail.bankcardnumber
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">营业执照注册号</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.businessNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">企业地址</span>
<span class="width_65">123 </span>
<span class="width_65">{{
supplierDetail.enterpriseAddress
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">安全生产许可证</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseSafeAllow
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">logo</span>
<span class="width_65">123</span>
<span class="width_65"
><img
:src="supplierDetail.logo"
style="
width: 40px;
height: 40px;
margin-top: 2px;
cursor: pointer;
"
@click="
bigImageDialog = true;
bigImageUrl = supplierDetail.logo;
"
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">项目负责人电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorPhone
}}</span>
</div>
</div>
</div>
@ -250,41 +304,42 @@
<div class="company-qualification" v-show="activeTab == 1">
<el-table class="tables" :data="dialogTableData" height="300">
<el-table-column
width="200"
prop="jobName"
width="50"
type="index"
align="center"
label="序号"
></el-table-column>
<el-table-column
prop="personName"
prop="fileName"
label="资质文件名称"
align="center"
></el-table-column>
<el-table-column
prop="phone"
prop="fileNumber"
label="资质文件编号"
align="center"
></el-table-column>
<el-table-column label="资质文件" width="80" align="center">
<!-- <div slot slot-scope="scope">
<img
:preview="
scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []
"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
alt=""
width="50px"
/>
</div> -->
<el-table-column label="资质文件" align="center">
<div slot slot-scope="scope">
<img
:src="scope.row.fileUrl ? scope.row.fileUrl : []"
alt=""
width="50px"
@click="
bigImageDialog = true;
bigImageUrl = scope.row.fileUrl;
"
/>
</div>
</el-table-column>
<el-table-column
prop="phone"
prop="remarks"
label="备注"
align="center"
></el-table-column>
</el-table>
</div>
<div class="dialog-footer relative-group" v-show="activeTab == 1">
<div class="dialog-footer relative-group" v-show="activeTab == 1 && rowData.applyStatus == 1">
<el-button
type="primary"
@click="auditReplyDialog = true"
@ -296,19 +351,20 @@
<div class="audit-content">
<div class="audit-content-item">
<span>审批人</span>
<span>李天泽</span>
<span>{{replyData.applyUser}}</span>
</div>
<div class="audit-content-item">
<span>审批回复时间</span>
<span>2024-03-29 18:00:00</span>
<span>{{replyData.replyTime}}</span>
</div>
<div class="audit-content-item">
<span>审批回复</span>
<el-input
v-model="replyData.applyContent"
disabled
type="textarea"
:rows="5"
placeholder="请补充企业资质"
placeholder="请补充"
style="flex: 1;align-self: flex-start"
></el-input>
</div>
@ -327,11 +383,12 @@
<div class="reply-content">
<div class="reply-content-item">
<span>审批人</span>
<span>李天泽</span>
<span>{{$store.state.userInfo.realName}}</span>
</div>
<div class="reply-content-item">
<span>审批回复</span>
<el-input
v-model="auditReplyVal"
type="textarea"
:rows="5"
placeholder="请输入"
@ -358,28 +415,50 @@
</el-button>
</div>
</el-dialog>
<!-- 查看大图 -->
<el-dialog
:modal-append-to-body="false"
title="查看大图"
:visible.sync="bigImageDialog"
>
<img width="100%" :src="bigImageUrl" alt />
</el-dialog>
</div>
</template>
<script>
import {
getQualificationApplyListApi,
getSupplierInfoRecordApi,
getQualificationFileRecordApi,
auditQualificationApplyApi,
qualificationApplyInfoApi
} from "@/assets/js/api/supplier.js";
import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project";
import moment from 'moment'
export default {
name: "temporary",
data() {
return {
dialogTableData: [{ jobName: 111, personName: 111, phone: 123 }],
bigImageDialog: false,
bigImageUrl: "",
auditReplyVal: "",
dialogTableData: [],
activeTab: 0,
tableData: [{ jobName: 111, personName: 111, phone: 123 }],
tableData: [],
page: 1,
pageSize: 10,
total: 0,
workerName: "",
projectSn: "",
enterpriseListData: [],
statusListData: [
{ name: "待审批", value: 1 },
{ name: "已审批", value: 2 },
{ name: "已驳回", value: 3 },
{ name: "已撤销", value: 4 },
],
tableParameter: {
idCard: "",
personType: "",
workerName: "",
enterpriseId: "",
applyStatus: "",
timeRange: [],
},
relativeGroupDialog: false,
level1CompanyData: [],
@ -389,10 +468,36 @@ export default {
label: "name",
},
auditReplyDialog: false,
supplierDetail: {
enterpriseName: "",
enterpriseQualificationUrl: "",
companyTypeName: "",
xzSupplierTypeId: "",
enterpriseLegalPerson: "",
bankname: "",
socialCode: "",
registerPersonPhoneTel: "",
registeredCapital: "",
legalPersonTel: "",
bankcardnumber: "",
businessLicenseEndDate: "",
businessNumber: "",
enterpriseEmail: "",
enterpriseAddress: "",
qualificationNumber: "",
enterpriseSafeAllow: "",
enterpriseProperty: "",
logo: "",
projectDirectorName: "",
projectDirectorPhone: "",
},
rowData: {},
replyData: {}
};
},
created() {
this.projectSn = this.$store.state.projectSn;
this.getTableList();
this.loadData();
},
watch: {
@ -401,8 +506,85 @@ export default {
},
},
methods: {
//
showAuditReply() {
// -
loadqulificationReplyRecord() {
let requestData = {
id: this.rowData.id,
};
qualificationApplyInfoApi(requestData).then((res) => {
if (res.result) {
this.replyData = res.result;
}
});
},
// -
loadCompanyQulificationRecord() {
let requestData = {
xzSupplierQualificationApplyId: this.rowData.id,
};
getQualificationFileRecordApi(requestData).then((res) => {
console.log(res, "资质文件表格");
if (res.result) {
this.dialogTableData = res.result;
this.dialogTableData.map((item) => {
if (!item.fileUrl.includes(this.$store.state.FILEURL)) {
item.fileUrl = this.$store.state.FILEURL + item.fileUrl;
}
});
}
});
},
// -
loadBasicInfoRecord() {
getSupplierInfoRecordApi({
xzSupplierQualificationApplyId: this.rowData.id,
}).then((res) => {
console.log(res, "基本信息");
if (res.result) {
for (let i in this.supplierDetail) {
this.supplierDetail[i] = res.result[i];
}
}
});
},
//
searchData() {
this.page = 1; //
this.getTableList();
},
//
getTableList() {
let requestData = {
userId: this.$store.state.userInfo.userId,
pageNo: this.page,
pageSize: this.pageSize,
applyStatus: this.tableParameter.applyStatus,
};
if (
this.tableParameter.timeRange &&
this.tableParameter.timeRange.length > 0
) {
requestData.createTime_begin = this.tableParameter.timeRange[0];
requestData.createTime_end = this.tableParameter.timeRange[1];
}
getQualificationApplyListApi(requestData).then((res) => {
console.log(res, "资质申请表格");
if (res.result && res.result.records) {
this.tableData = res.result.records;
this.total = res.result.total;
}
});
},
//
showAudit(item) {
this.rowData = item;
this.activeTab = 0; // tab
this.auditReplyVal = ""; //
this.loadBasicInfoRecord();
this.loadCompanyQulificationRecord();
if([2,3].includes(this.rowData.applyStatus)){
this.loadqulificationReplyRecord();
}
this.relativeGroupDialog = true;
},
loadData() {
@ -428,47 +610,47 @@ export default {
},
//
noPassFn() {
// let item = this.selectRowObj;
// this.$confirm(
// `{${item.account}}!`,
// this.$t("message.companyDiagram.Tips"),
// {
// confirmButtonText: this.$t(
// "message.companyDiagram.confirmButtonText"
// ), //
// cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), //
// type: "warning",
// }
// ).then(() => {
// userAuditApi({ id: item.id, approvalProcess:3, xzRegistry: item }).then((res) => {
// this.getUserAuditListApi();
// });
// });
let item = this.rowData;
this.$confirm(
`确定要拒绝审核吗?`,
this.$t("message.companyDiagram.Tips"),
{
confirmButtonText: this.$t(
"message.companyDiagram.confirmButtonText"
), //
cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), //
type: "warning",
}
).then(() => {
auditQualificationApplyApi({ id: item.id, applyStatus:3, applyContent: this.auditReplyVal, applyUser: this.$store.state.userInfo.realName, replyTime: moment().format('YYYY-MM-DD HH:mm:ss') }).then((res) => {
this.$message.error("已拒绝");
this.relativeGroupDialog = false;
this.auditReplyDialog = false;
this.getTableList();
});
});
},
//
auditPass() {
// let item = this.selectRowObj;
// const checked = this.$refs.relativeTree.getCheckedNodes();
// const halfChecked = this.$refs.relativeTree.getHalfCheckedNodes();
// const checkedArr = this.transfrom(checked);
// const halfCheckedArr = this.transfrom(halfChecked);
// const concatArr = checkedArr.concat(halfCheckedArr);
// console.log(concatArr)
// this.$confirm(
// `{${item.account}}!`,
// this.$t("message.companyDiagram.Tips"),
// {
// confirmButtonText: this.$t(
// "message.companyDiagram.confirmButtonText"
// ), //
// cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), //
// type: "warning",
// }
// ).then(() => {
// userAuditApi({ id: item.id, approvalProcess:2, xzRegistry: item }).then((res) => {
// this.getUserAuditListApi();
// });
// });
let item = this.rowData;
this.$confirm(
`确定要通过审核吗?`,
this.$t("message.companyDiagram.Tips"),
{
confirmButtonText: this.$t(
"message.companyDiagram.confirmButtonText"
), //
cancelButtonText: this.$t("message.companyDiagram.cancelButtonText"), //
type: "warning",
}
).then(() => {
auditQualificationApplyApi({ id: item.id, applyStatus:2, applyContent: this.auditReplyVal, applyUser: this.$store.state.userInfo.realName, replyTime: moment().format('YYYY-MM-DD HH:mm:ss') }).then((res) => {
this.$message.success("已通过");
this.relativeGroupDialog = false;
this.auditReplyDialog = false;
this.getTableList();
});
});
},
//
handleSizeChange(value) {
@ -602,7 +784,8 @@ export default {
text-transform: none;
cursor: pointer;
}
span:nth-child(1),span:nth-child(2) {
span:nth-child(1),
span:nth-child(2) {
margin-right: 20px;
}
.activeStyle {
@ -668,29 +851,29 @@ export default {
.company-qualification {
margin-top: 20px;
}
.audit-reply{
.audit-reply {
width: 90%;
margin: 0 auto;
margin-top: 20px;
.audit-content {
width: 100%;
line-height: 40px;
&-item {
display: flex;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
color: #272d45;
font-style: normal;
text-transform: none;
}
span:nth-child(1) {
display: inline-block;
width: 105px;
text-align: right;
}
width: 100%;
line-height: 40px;
&-item {
display: flex;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
color: #272d45;
font-style: normal;
text-transform: none;
}
span:nth-child(1) {
display: inline-block;
width: 105px;
text-align: right;
}
}
}
}
}
//

View File

@ -5,24 +5,21 @@
<el-form :inline="true" class="demo-form-inline" size="medium">
<el-form-item label="审批状态">
<el-select
v-model="tableParameter.enterpriseId"
v-model="tableParameter.applyStatus"
:placeholder="$t('message.laborMange.pleaseChoose')"
filterable
clearable
>
<el-option
:label="$t('message.laborMange.allTheCompany')"
:value="''"
></el-option>
<el-option
v-for="(item, index) in enterpriseListData"
v-for="(item, index) in statusListData"
:key="index"
:label="item.enterpriseName"
:value="item.id"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="资质申请时间">
<el-date-picker
v-model="tableParameter.timeRange"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
@ -31,9 +28,6 @@
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="身份证号">
<el-input placeholder="请输入" v-model="tableParameter.idCard"></el-input>
</el-form-item> -->
<el-form-item>
<el-button type="primary" plain>{{
$t("message.laborMange.inquire")
@ -266,58 +260,78 @@
<div class="flex4">
<div class="type_content" style="z-index: 2">
<div class="flex3">
<span class="width_35">{{
$t("message.qualificationApply.companyName")
<span class="width_35">企业名称</span>
<span class="width_65">{{
supplierDetail.enterpriseName
}}</span>
<span class="width_65">坤之企业</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">企业类型</span>
<span class="width_65 bg_color">企业分包</span>
<span class="width_65 bg_color">{{
supplierDetail.companyTypeName
}}</span>
</div>
<div class="flex3">
<span class="width_35">开户行</span>
<span class="width_65">123</span>
<span class="width_65">{{ supplierDetail.bankname }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">注册人申请电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.registerPersonPhoneTel
}}</span>
</div>
<div class="flex3">
<span class="width_35">法人电话</span>
<span class="width_65">123456</span>
<span class="width_65">{{
supplierDetail.legalPersonTel
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">营业执照截止日期</span>
<span class="width_65 bg_color">2024-03-05</span>
<span class="width_65 bg_color">{{
supplierDetail.businessLicenseEndDate
}}</span>
</div>
<div class="flex3">
<span class="width_35">企业邮箱</span>
<span class="width_65">123@qq.com</span>
<span class="width_65">{{
supplierDetail.enterpriseEmail
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">劳资证书号</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.qualificationNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35">单位性质</span>
<span class="width_65" style="white-space: nowrap"
>国有企业</span
>
<span class="width_65" style="white-space: nowrap">{{
supplierDetail.enterpriseProperty == 1
? "国有企业"
: supplierDetail.enterpriseProperty == 2
? "三资企业"
: supplierDetail.enterpriseProperty == 3
? "集体企业"
: supplierDetail.enterpriseProperty == 4
? "私营企业"
: ""
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color">项目负责人</span>
<span class="width_65 bg_color">叶起中</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorName
}}</span>
</div>
</div>
<div class="type_content">
<div class="flex3">
<span class="width_35 border_l">{{
$t("message.qualificationApply.qualificationImg")
}}</span>
<span class="width_65">
<!-- <img
:src="projectDetail.layoutImage"
<span class="width_35 border_l">资质图片</span>
<span class="width_65"
><img
:src="supplierDetail.enterpriseQualificationUrl"
style="
width: 40px;
height: 40px;
@ -326,46 +340,72 @@
"
@click="
bigImageDialog = true;
bigImageUrl = projectDetail.layoutImage;
bigImageUrl = supplierDetail.enterpriseQualificationUrl;
"
/> -->
</span>
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">法定代表人</span>
<span class="width_65 bg_color">小坤坤</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseLegalPerson
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">统一社会信用代码</span>
<span class="width_65">111222333</span>
<span class="width_65">{{ supplierDetail.socialCode }}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">注册资金(万元)</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.registeredCapital
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">银行账号</span>
<span class="width_65">123</span>
<span class="width_65">{{
supplierDetail.bankcardnumber
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">营业执照注册号</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.businessNumber
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">企业地址</span>
<span class="width_65">123 </span>
<span class="width_65">{{
supplierDetail.enterpriseAddress
}}</span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">安全生产许可证</span>
<span class="width_65 bg_color">123</span>
<span class="width_65 bg_color">{{
supplierDetail.enterpriseSafeAllow
}}</span>
</div>
<div class="flex3">
<span class="width_35 border_l">logo</span>
<span class="width_65">123</span>
<span class="width_65"
><img
:src="supplierDetail.logo"
style="
width: 40px;
height: 40px;
margin-top: 2px;
cursor: pointer;
"
@click="
bigImageDialog = true;
bigImageUrl = supplierDetail.logo;
"
/></span>
</div>
<div class="flex3">
<span class="width_35 bg_color border_l">项目负责人电话</span>
<span class="width_65 bg_color">123456</span>
<span class="width_65 bg_color">{{
supplierDetail.projectDirectorPhone
}}</span>
</div>
</div>
</div>
@ -374,65 +414,59 @@
<div class="company-qualification" v-show="activeTab == 1">
<el-table class="tables" :data="dialogTableData" height="300">
<el-table-column
width="200"
prop="jobName"
width="50"
type="index"
align="center"
label="序号"
></el-table-column>
<el-table-column
prop="personName"
prop="fileName"
label="资质文件名称"
align="center"
></el-table-column>
<el-table-column
prop="phone"
prop="fileNumber"
label="资质文件编号"
align="center"
></el-table-column>
<el-table-column label="资质文件" width="80" align="center">
<!-- <div slot slot-scope="scope">
<img
:preview="
scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []
"
:src="scope.row.imageUrl[0] ? scope.row.imageUrl[0].url : []"
alt=""
width="50px"
/>
</div> -->
<el-table-column label="资质文件" align="center">
<div slot slot-scope="scope">
<img
:src="scope.row.fileUrl ? scope.row.fileUrl : []"
alt=""
width="50px"
@click="
bigImageDialog = true;
bigImageUrl = scope.row.fileUrl;
"
/>
</div>
</el-table-column>
<el-table-column
prop="phone"
prop="remarks"
label="备注"
align="center"
></el-table-column>
</el-table>
</div>
<div class="dialog-footer relative-group" v-show="activeTab == 1">
<el-button
type="primary"
@click="auditReplyDialog = true"
size="medium"
>审批
</el-button>
</div>
<div class="audit-reply" v-show="activeTab == 2">
<div class="audit-content">
<div class="audit-content-item">
<span>审批人</span>
<span>李天泽</span>
<span>{{replyData.applyUser}}</span>
</div>
<div class="audit-content-item">
<span>审批回复时间</span>
<span>2024-03-29 18:00:00</span>
<span>{{replyData.replyTime}}</span>
</div>
<div class="audit-content-item">
<span>审批回复</span>
<el-input
v-model="replyData.applyContent"
disabled
type="textarea"
:rows="5"
placeholder="请补充企业资质"
placeholder="请补充"
style="flex: 1;align-self: flex-start"
></el-input>
</div>
@ -446,6 +480,9 @@
import {
getQualificationApplyListApi,
operateQualificationApplyApi,
getSupplierInfoRecordApi,
getQualificationFileRecordApi,
qualificationApplyInfoApi
} from "@/assets/js/api/supplier.js";
import { getComapnyStatisticsListApi } from "@/assets/js/api/company/project";
export default {
@ -459,14 +496,16 @@ export default {
page: 1,
pageSize: 10,
total: 0,
workerName: "",
projectSn: "",
enterpriseListData: [],
statusListData: [
{ name: "待审批", value: 1 },
{ name: "已审批", value: 2 },
{ name: "已驳回", value: 3 },
{ name: "已撤销", value: 4 },
],
tableParameter: {
idCard: "",
personType: "",
workerName: "",
enterpriseId: "",
applyStatus: "",
timeRange: [],
},
relativeGroupDialog: false,
level1CompanyData: [],
@ -476,6 +515,31 @@ export default {
label: "name",
},
auditReplyDialog: false,
supplierDetail: {
enterpriseName: "",
enterpriseQualificationUrl: "",
companyTypeName: "",
xzSupplierTypeId: "",
enterpriseLegalPerson: "",
bankname: "",
socialCode: "",
registerPersonPhoneTel: "",
registeredCapital: "",
legalPersonTel: "",
bankcardnumber: "",
businessLicenseEndDate: "",
businessNumber: "",
enterpriseEmail: "",
enterpriseAddress: "",
qualificationNumber: "",
enterpriseSafeAllow: "",
enterpriseProperty: "",
logo: "",
projectDirectorName: "",
projectDirectorPhone: "",
},
rowData: {},
replyData: {}
};
},
created() {
@ -488,10 +552,51 @@ export default {
},
props: ["activeTabName"],
methods: {
// -
loadqulificationReplyRecord() {
let requestData = {
id: this.rowData.id,
};
qualificationApplyInfoApi(requestData).then((res) => {
if (res.result) {
this.replyData = res.result;
}
});
},
// -
loadCompanyQulificationRecord() {
let requestData = {
xzSupplierQualificationApplyId: this.rowData.id,
};
getQualificationFileRecordApi(requestData).then((res) => {
console.log(res, "资质文件表格");
if (res.result) {
this.dialogTableData = res.result;
this.dialogTableData.map((item) => {
if (!item.fileUrl.includes(this.$store.state.FILEURL)) {
item.fileUrl = this.$store.state.FILEURL + item.fileUrl;
}
});
}
});
},
// -
loadBasicInfoRecord() {
getSupplierInfoRecordApi({
xzSupplierQualificationApplyId: this.rowData.id,
}).then((res) => {
console.log(res, "基本信息");
if (res.result) {
for (let i in this.supplierDetail) {
this.supplierDetail[i] = res.result[i];
}
}
});
},
//
reApply(item){
reApply(item) {
this.$confirm(
"确定重新申请【该资质】?",
"确定重新申请【该资质】?",
this.$t("message.personnelPosition.beaconManage.table.Tips"),
{
confirmButtonText: this.$t(
@ -504,7 +609,10 @@ export default {
}
)
.then(() => {
operateQualificationApplyApi({ xzSupplierQualificationApplyId: item.id, type: 3 }).then((result) => {
operateQualificationApplyApi({
xzSupplierQualificationApplyId: item.id,
type: 3,
}).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getTableList();
@ -514,9 +622,9 @@ export default {
.catch(() => {});
},
//
cancelApply(item){
cancelApply(item) {
this.$confirm(
"确定撤销【该申请资质】?",
"确定撤销【该申请资质】?",
this.$t("message.personnelPosition.beaconManage.table.Tips"),
{
confirmButtonText: this.$t(
@ -529,7 +637,10 @@ export default {
}
)
.then(() => {
operateQualificationApplyApi({ xzSupplierQualificationApplyId: item.id, type: 2 }).then((result) => {
operateQualificationApplyApi({
xzSupplierQualificationApplyId: item.id,
type: 2,
}).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getTableList();
@ -539,7 +650,7 @@ export default {
.catch(() => {});
},
//
openApplyDialog(){
openApplyDialog() {
this.selectedTreeData = "";
this.relativeGroupDialog = true;
},
@ -566,7 +677,15 @@ export default {
userId: this.$store.state.userInfo.userId,
pageNo: this.page,
pageSize: this.pageSize,
applyStatus: this.tableParameter.applyStatus,
};
if (
this.tableParameter.timeRange &&
this.tableParameter.timeRange.length > 0
) {
requestData.createTime_begin = this.tableParameter.timeRange[0];
requestData.createTime_end = this.tableParameter.timeRange[1];
}
getQualificationApplyListApi(requestData).then((res) => {
console.log(res, "资质申请表格");
if (res.result && res.result.records) {
@ -577,6 +696,10 @@ export default {
},
//
showAuditReply(item) {
this.rowData = item;
this.loadBasicInfoRecord();
this.loadCompanyQulificationRecord();
this.loadqulificationReplyRecord();
this.auditReplyDialog = true;
},
filterNode(value, data) {
@ -769,7 +892,8 @@ export default {
text-transform: none;
cursor: pointer;
}
span:nth-child(1),span:nth-child(2) {
span:nth-child(1),
span:nth-child(2) {
margin-right: 20px;
}
.activeStyle {
@ -835,29 +959,29 @@ export default {
.company-qualification {
margin-top: 20px;
}
.audit-reply{
.audit-reply {
width: 90%;
margin: 0 auto;
margin-top: 20px;
.audit-content {
width: 100%;
line-height: 40px;
&-item {
display: flex;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
color: #272d45;
font-style: normal;
text-transform: none;
}
span:nth-child(1) {
display: inline-block;
width: 105px;
text-align: right;
}
width: 100%;
line-height: 40px;
&-item {
display: flex;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
color: #272d45;
font-style: normal;
text-transform: none;
}
span:nth-child(1) {
display: inline-block;
width: 105px;
text-align: right;
}
}
}
}
}
</style>

View File

@ -1,76 +1,162 @@
<template>
<div class="main-content">
<div class="form-content">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="120px"
class="demo-ruleForm"
>
<el-form-item label="当前账号:" class="defaultStyle">
<span style="color: #5181F6">18772114025</span>
<span style="color: #5181F6">{{
$store.state.userInfo.account
}}</span>
</el-form-item>
<el-form-item label="当前密码:" prop="password">
<el-input v-model="ruleForm.password" placeholder="请输入内容"></el-input>
<el-input
v-model="ruleForm.password"
placeholder="请输入内容"
></el-input>
</el-form-item>
<el-form-item label="新密码:" prop="newPassword">
<el-input v-model="ruleForm.newPassword" placeholder="请输入内容"></el-input>
<el-input
v-model="ruleForm.newPassword"
placeholder="请输入内容"
></el-input>
</el-form-item>
<el-form-item label="确认新密码:" prop="confirmParssword">
<el-input v-model="ruleForm.confirmParssword" placeholder="请输入内容"></el-input>
<el-input
v-model="ruleForm.confirmParssword"
placeholder="请输入内容"
></el-input>
</el-form-item>
<el-form-item label="图形验证码:" prop="auditCode">
<el-input v-model="ruleForm.auditCode" placeholder="请输入图形验证码"></el-input>
<div class="imgCodeBox">
<el-input
v-model="ruleForm.auditCode"
placeholder="请输入图形验证码"
></el-input>
<img :src="codeImgData.img" @click="getImgCode" alt="" />
</div>
</el-form-item>
<el-form-item>
<el-button type="primary" plain @click="resetForm('ruleForm')">清空</el-button>
<el-button type="primary" @click="submitForm('ruleForm')">确认</el-button>
<el-button type="primary" plain @click="resetForm('ruleForm')"
>清空</el-button
>
<el-button type="primary" @click="submitForm('ruleForm')"
>确认</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import { getImgCodeApi, imgCodeUpdatePwApi } from "@/assets/js/api/loginSign";
export default {
mounted() {},
created() {
},
data() {
return {
ruleForm: {
password: '',
newPassword: '',
confirmParssword: '',
auditCode: ''
},
rules: {
password: [
{ required: true, message: '请输入', trigger: 'blur' },
]
}
}
password: "",
newPassword: "",
confirmParssword: "",
auditCode: "",
},
codeImgData: {
img: "",
graphValidateCodeUuid: "",
},
rules: {
password: [{ required: true, message: "请输入", trigger: "blur" }],
newPassword: [
{
required: true,
message: "请输入正确的密码格式",
trigger: "blur",
pattern: /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^0-9a-zA-Z]).{8,30}/,
},
],
confirmParssword: [
{
required: true,
message: "请输入正确的密码格式",
trigger: "blur",
pattern: /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^0-9a-zA-Z]).{8,30}/,
},
],
auditCode: [{ required: true, message: "请输入", trigger: "blur" }],
},
};
},
mounted() {},
created() {
this.getImgCode();
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
getImgCode() {
let requestData = {};
getImgCodeApi(requestData).then((res) => {
if (res.result) {
// this.replyData = res.result;
for (let i in this.codeImgData) {
this.codeImgData[i] = res.result[i];
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
}
}
});
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (this.ruleForm.newPassword != this.ruleForm.confirmParssword) {
this.$message.error("两次输入的密码不一致");
return;
}
let requestData = {
oldPassword: this.ruleForm.password,
showPassword: this.ruleForm.confirmParssword,
graphValidateCode: this.ruleForm.auditCode,
graphValidateCodeUuid: this.codeImgData.graphValidateCodeUuid,
userId: this.$store.state.userInfo.userId
};
imgCodeUpdatePwApi(requestData).then((res) => {
if (res.success) {
this.$message.success("修改成功");
this.resetForm();
this.getImgCode();
}
});
} else {
console.log("error submit!!");
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
},
};
</script>
<style lang="less" scoped>
.main-content{
.form-content{
.main-content {
.form-content {
width: 500px;
margin-top: 25px;
margin-left: 75px;
.defaultStyle /deep/.el-form-item__label{
color: #5181F6;
.defaultStyle /deep/.el-form-item__label {
color: #5181f6;
}
.imgCodeBox {
display: flex;
align-items: center;
justify-content: space-between;
img {
width: 116px;
margin-left: 12px;
cursor: pointer;
}
}
}
}
</style>
</style>

View File

@ -1,25 +1,39 @@
<template>
<div class="fullHeight">
<div class="searchBox whiteBlock">
<el-form :inline="true" ref="searchForm" :model="searchForm" size="medium">
<el-form
:inline="true"
ref="searchForm"
:model="searchForm"
size="medium"
>
<!-- 人员名称 -->
<el-form-item label="机械设备名称" prop="deviceName">
<el-select v-model="searchForm.personName" placeholder="请选择" clearable :style="{ width: '100%' }" >
<el-option v-for="(item, index) in personList" :key="index" :label="item.personName" :value="item.id" ></el-option>
</el-select>
<el-form-item label="操作员名称" prop="userName">
<el-input
v-model="searchForm.userName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- 设备序号 -->
<el-form-item label="设备序号" prop="deviceNumber">
<el-select v-model="searchForm.departmentId" placeholder="请选择" clearable :style="{ width: '100%' }" >
<el-option v-for="(item, index) in deviceList" :key="index" :label="item.deviceNumber" :value="item.id" ></el-option>
</el-select>
<el-form-item label="功能模块" prop="operModul">
<el-input
v-model="searchForm.operModul"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<!-- 时间 -->
<el-form-item label="时间">
<el-date-picker size="medium" v-model="daterange" type="daterange"
range-separator="至" value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'" :end-placeholder="'结束日期'"
@change="changeDate">
<el-form-item label="操作时间">
<el-date-picker
v-model="searchForm.timeRange"
clearable
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
>
</el-date-picker>
</el-form-item>
<!-- 条件查询按钮 -->
@ -28,19 +42,24 @@
<el-button type="warning" plain @click="refresh">刷新</el-button>
<el-button type="primary" plain @click="exportFn">
<!-- 导出 -->
{{$t('message.projectInfo.export')}}
{{ $t("message.projectInfo.export") }}
</el-button>
</el-form-item>
</el-form>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" v-loading="loading" :data="tableData">
<el-table-column label="操作时间" align="center" prop="deviceName" />
<el-table-column label="操作描述" align="center" prop="deviceNumber" width="180"/>
<el-table-column label="功能模块" align="center" prop="currentLocation" width="180"/>
<el-table-column label="操作IP" align="center" prop="speed" />
<el-table-column label="请求URL" align="center" prop="workStatus" />
<el-table-column label="操作员姓名" align="center" prop="uploadTime" width="180"/>
<el-table-column label="序号" align="center" width="80" type="index" />
<el-table-column
label="操作时间"
align="center"
prop="operCreateTime"
/>
<el-table-column label="操作描述" align="center" prop="operDesc" />
<el-table-column label="功能模块" align="center" prop="operModul" />
<el-table-column label="操作IP" align="center" prop="operIp" />
<el-table-column label="请求URL" align="center" prop="operUri" />
<el-table-column label="操作员姓名" align="center" prop="realName" />
</el-table>
<el-pagination
class="pagerBox"
@ -57,130 +76,138 @@
</div>
</template>
<script>
import { rtToolPage } from '@/assets/js/api/workTicketManage.js'
import { } from '@/assets/js/api/devicePosition/payData'
import {
getSafeLogListApi,
exportSafeLogListApi,
} from "@/assets/js/api/loginSign";
export default {
mounted() {},
created() {
this.getList()
// this.getDutyPerson()
this.getList();
},
data() {
return {
devSn: '',
devSn: "",
//
loading: false,
daterange: [],
pageInfo: {
pageNo: 1, //
pageSize: 10, //
total: 1 //
total: 1, //
},
searchForm: {
pageNo: 1,
pageSize: 10,
projectSn: '', // SN
personName: '',
deviceNumber: '',
startTime: '',
endTime: '',
userName: "",
operModul: "",
timeRange: [],
},
personList: [
{id: 1, personName: '张三'},
{id: 2, personName: '李四'},
{id: 3, personName: '王二'},
],
deviceList: [
{id: 1, deviceNumber: 'EMP21313212135132'},
{id: 2, deviceNumber: 'EMP44613213543212'},
{id: 3, deviceNumber: 'EMP21321546312556'},
],
tableData: [
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 0, deviceBattery: 50, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 0, deviceBattery: 95, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 1, deviceBattery: 18, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 1, deviceBattery: 45, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 0, deviceBattery: 81, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 1, deviceBattery: 11, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 0, deviceBattery: 67, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 1, deviceBattery: 90, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 0, deviceBattery: 16, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
{deviceName: '挖掘机', deviceNumber: 'EMP21313212135132', currentLocation: '123,4561,895,5648', speed:'15km/h', workStatus: 1, deviceBattery: 80, deviceVoltage: 3.7, uploadTime: '2024-03-13 00:00:00'},
],
}
tableData: [],
};
},
methods: {
exportFn(){
window.location.href=this.$http.defaults.baseURL+'xmgl/standardCurrentData/exportExcelStandardCurrentData?devSn='+
this.formInline.devSn+'&projectSn='+this.projectSn+'&startTime='+this.formInline.startTime+'&endTime='+this.formInline.endTime
},
//
getList() {
rtToolPage({
exportFn() {
let requestData = {
sn:
this.$store.state.userInfo.sn ||
this.$store.state.userInfo.headquartersSn,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
projectSn: this.$store.state.projectSn,
devSn: this.searchForm.devSn,
toolName: this.searchForm.toolName,
toolStatus: this.searchForm.toolStatus,
}).then(result => {
if (result.success) {
this.List = result.result.records
this.pageInfo.total = result.result.total
}
userName: this.searchForm.userName,
operModul: this.searchForm.operModul,
};
fetch(this.$http.defaults.baseURL + "xmgl/operationLog/exportXls", {
method: "post",
headers: {
Authorization: this.$store.state.userInfo.token,
"Content-Type": "application/json", // JSON
},
body: JSON.stringify(requestData), // dataJSON
})
.then((response) => {
//
if (!response.ok) {
throw new Error("下载失败");
}
return response.blob();
})
.then((blob) => {
//
const url = window.URL.createObjectURL(blob);
// <a>
const link = document.createElement("a");
link.href = url;
link.download = "安全日志.xlsx"; //
//
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// URL
window.URL.revokeObjectURL(url);
//
// 使blob
console.log("下载", link, url);
})
.catch((error) => {
//
console.error(error);
});
},
//
getList() {
let requestData = {
sn:
this.$store.state.userInfo.sn ||
this.$store.state.userInfo.headquartersSn,
pageNo: this.pageInfo.pageNo,
pageSize: this.pageInfo.pageSize,
projectSn: this.$store.state.projectSn,
userName: this.searchForm.userName,
operModul: this.searchForm.operModul,
};
if (this.searchForm.timeRange && this.searchForm.timeRange.length > 0) {
requestData.startTime = this.searchForm.timeRange[0];
requestData.endTime = this.searchForm.timeRange[1];
}
getSafeLogListApi(requestData).then((result) => {
if (result.success) {
this.tableData = result.result.records;
this.pageInfo.total = result.result.total;
}
});
},
SizeChange(val) {
this.pageInfo.pageSize = val
this.getList()
this.pageInfo.pageSize = val;
this.getList();
},
CurrentChange(val) {
this.pageInfo.pageNo = val
this.getList()
this.pageInfo.pageNo = val;
this.getList();
},
searchList() {
this.pageInfo.pageNo = 1 //
this.getList()
this.pageInfo.pageNo = 1; //
this.getList();
},
refresh() {
this.searchForm = {}
this.pageInfo.pageNo = 1 //
this.pageInfo.pageSize = 10 //
this.getList()
this.searchForm = {};
this.pageInfo.pageNo = 1; //
this.pageInfo.pageSize = 10; //
this.getList();
},
//
handleSizeChange(val) {
this.pageSize2 = val
this.getPageList()
this.pageSize2 = val;
this.getPageList();
},
//
handleCurrentChange(val) {
this.pageNo2 = val
this.getPageList()
this.pageNo2 = val;
this.getPageList();
},
changeDate() {
if (this.daterange) {
this.searchForm.startTime = this.daterange[0]
this.searchForm.endTime = this.daterange[1]
} else {
this.searchForm.startTime = ''
this.searchForm.endTime = ''
}
},
}
}
},
};
</script>
<style lang="less" scoped>
.tables{
.tables {
min-height: 0;
}
.tables2 {
min-height: auto;
}
.textStyle {
width: 140px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>

View File

@ -1,13 +1,38 @@
<template>
<!-- 项目首页 -->
<div class="fullHeight">
<vhead :titleName="projectName" :showR="true"></vhead>
<div class="content-part"></div>
<vhead :titleName="projectName" :showR="true" v-if="!selectGroupDialog"></vhead>
<div class="content-part" v-if="!selectGroupDialog">
<iframe
id="myIframe"
:src="`${$store.state.WORKFLOWURL}?token=${$store.state.userInfo.token}`"
style="width: 100%; height: 100%; border: medium none"
frameborder="1"
></iframe>
</div>
<!-- 查看大图 -->
<el-dialog
title="选择组织"
:modal-append-to-body="false"
:close-on-click-modal="false"
:close-on-press-escape="false"
:show-close="false"
:visible.sync="selectGroupDialog"
>
<div class="content-list">
<div class="content-list-item" v-for="(item,index) in groupListData" :key="index" @click="selectedGroupData(item)">
<i class="el-icon-trophy-1"></i>
<span>{{item.companyName}}</span>
<i class="el-icon-arrow-right"></i>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import vhead from "@/components/header";
import { getProjectDetail } from "@/assets/js/api/baseInfo.js";
import { getGroupListApi } from "@/assets/js/api/loginSign.js";
export default {
name: "workSpace",
components: { vhead },
@ -15,15 +40,62 @@
return {
projectSn: "",
projectName: "",
selectGroupDialog: true,
groupListData: [],
selectedDataSn: ""
};
},
created() {
this.projectSn = this.$store.state.projectSn;
},
mounted() {
this.getDataDateils();
this.getGroupTreeData();
},
methods: {
//
selectedDefaultProject(obj){
if (obj.list && obj.list.length > 0) {
obj.list.map((item) => {
this.selectedDefaultProject(item);
});
} else {
this.projectSn = this.$store.state.projectSn || '';
if(!this.projectSn){ //
this.projectSn = obj.sn;
// projectSn
this.$store.commit("setProjectSn", obj.sn);
this.getDataDateils();
}
}
},
//
selectedGroupData(item) {
this.selectedDataSn = item.sn;
this.$store.commit("setSelectedGroupSn", this.selectedDataSn); // Sn
this.selectGroupDialog = false;
this.selectedDefaultProject(item);
this.$nextTick(() => {
setTimeout(() => {
let iframe = document.getElementById("myIframe");
iframe.contentWindow.postMessage(
{
type: "emitData",
data: JSON.stringify(this.$store.state.userInfo)
},
"*"
);
}, 1000);
})
},
getGroupTreeData(){
let data = {
userId: this.$store.state.userInfo.userId,
};
getGroupListApi(data).then((res) => {
// console.log(res);
if (res.code == 200) {
this.groupListData = res.result;
this.$store.commit("setGroupTreeList", res.result); //
}
});
},
//
getDataDateils() {
let data = {
@ -42,11 +114,48 @@
};
</script>
<style lang="less" scoped>
.flexStyle(){
display: flex;
align-items: center;
}
.content-part{
width: 90%;
width: 100%;
height: calc(100% - 60px);
border: 1px solid #ccc;
margin: 0 auto;
}
.content-list{
&-item{
.flexStyle();
padding: 10px 15px;
border: 1px solid #DADBDB;
border-radius: 5px;
cursor: pointer;
>span:nth-child(2){
margin: 2px 10px 0px 10px;
}
>span:nth-child(3){
padding:3px 10px;
color: #79ACFA;
background-color: #E4F5FF;
border: 1px solid #99C3FB;
border-radius: 5px;
font-size: 10px;
}
/deep/.el-icon-arrow-right{
margin-left: auto;
}
}
&-item:not(:last-child){
margin-bottom: 10px;
}
}
/deep/.el-dialog{
width: 25%;
.el-dialog__body{
padding-top: 10px;
padding-bottom: 15px;
}
}
</style>