Commit 8b582c80 authored by 拾柒's avatar 拾柒

Merge branch 'dev-sunyu'

parents a3e04f0b 86362e63
......@@ -127,9 +127,9 @@ aside {
margin: 0;
//padding: 0;
overflow: hidden; /* 防止内容溢出 */
padding-left: 20px;
padding-right: 20px;
padding-top: 10px;
padding-left: 40px;
padding-right: 40px;
padding-top: 20px;
background-color: #D4D9E5;
}
......
......@@ -6,29 +6,42 @@
@select="handleSelect"
style="margin-right: 120px"
>
<template v-for="(item, index) in newTopNev">
<el-menu-item class="menuStyle" style="font-size: small;background-color: #F6F6FA;border-top-right-radius: 15px;border-top-left-radius: 15px;text-align: center;margin-left: 1px" :index="item.path" :key="index"
<template>
<el-menu-item class="menuStyle"
style="font-size: small;background-color: #F6F6FA;border-top-right-radius: 15px;border-top-left-radius: 15px;text-align: center;margin-left: 1px" index="/monitoring/video"
>
<i :class="item.icon" style="width: 10px;height: 10px;margin-top: -12px"></i>
{{ item.name }}</el-menu-item
<i style="width: 10px;height: 10px;margin-top: -12px"></i>
首页</el-menu-item
>
<el-menu-item class="menuStyle"
style="font-size: small;background-color: #F6F6FA;border-top-right-radius: 15px;border-top-left-radius: 15px;text-align: center;margin-left: 1px" index="/employee/employee"
>
<i style="width: 10px;height: 10px;margin-top: -12px"></i>
员工信息</el-menu-item
>
<el-menu-item class="menuStyle"
style="font-size: small;background-color: #F6F6FA;border-top-right-radius: 15px;border-top-left-radius: 15px;text-align: center;margin-left: 1px" index="/monitoringhistory/history"
>
<i style="width: 10px;height: 10px;margin-top: -12px"></i>
历史记录</el-menu-item
>
</template>
<!-- 顶部菜单超出数量折叠 -->
<!-- <el-submenu :style="{'&#45;&#45;theme': theme}" index="more" v-if="topMenus.length > visibleNumber">-->
<!-- <template slot="title">更多菜单</template>-->
<!-- <template v-for="(item, index) in topMenus">-->
<!-- <el-menu-item-->
<!-- :index="item.path"-->
<!-- :key="index"-->
<!-- v-if="index >= visibleNumber">-->
<!-- <svg-icon-->
<!-- v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"-->
<!-- :icon-class="item.meta.icon"/>-->
<!-- {{ item.meta.title }}-->
<!-- </el-menu-item>-->
<!-- </template>-->
<!-- </el-submenu>-->
<!-- <el-submenu :style="{'&#45;&#45;theme': theme}" index="more" v-if="topMenus.length > visibleNumber">-->
<!-- <template slot="title">更多菜单</template>-->
<!-- <template v-for="(item, index) in topMenus">-->
<!-- <el-menu-item-->
<!-- :index="item.path"-->
<!-- :key="index"-->
<!-- v-if="index >= visibleNumber">-->
<!-- <svg-icon-->
<!-- v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"-->
<!-- :icon-class="item.meta.icon"/>-->
<!-- {{ item.meta.title }}-->
<!-- </el-menu-item>-->
<!-- </template>-->
<!-- </el-submenu>-->
</el-menu>
</template>
......
<template>
<div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" v-if = "false"/>
<!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
@toggleClick="toggleSideBar" v-if="false"/>
<!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
<img src="../../assets/images/titlePic.png" alt="" style="width: 200px;height: 80px;">
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<div class="right-menu" style="margin-top: 20px">
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar">
<i class="el-icon-caret-bottom" />
<i class="el-icon-caret-bottom"/>
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
......@@ -17,6 +18,32 @@
<el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item>
<!-- sunyu 新加了修改密码的弹窗,完成修改密码功能-->
<el-dropdown-item @click.native="resetPwdVisible = true">
<span>修改密码</span>
</el-dropdown-item>
<el-dialog title="修改密码" :visible.sync="resetPwdVisible" :before-close="handleClose" append-to-body="true">
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
<el-form-item label="旧密码" prop="oldPassword">
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" show-password/>
</el-form-item>
<el-form-item label="确认密码" prop="confirmPassword">
<el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/>
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="submit">保存</el-button>
<el-button type="danger" size="mini" @click="close">关闭</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click.native="resetPwdVisible = false">取 消</el-button>
<el-button type="primary" @click.native="resetPwdVisible = false">确 定</el-button>
</span>
</el-dialog>
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
</el-dropdown-item>
......@@ -27,7 +54,7 @@
</template>
<script>
import { mapGetters } from 'vuex'
import {mapGetters} from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
......@@ -36,8 +63,43 @@ import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import {updateUserPwd} from "@/api/system/user";
export default {
data() {
const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) {
callback(new Error("两次输入的密码不一致"));
} else {
callback();
}
};
return {
user: {
oldPassword: undefined,
newPassword: undefined,
confirmPassword: undefined,
},
// 表单校验
rules: {
oldPassword: [
{required: true, message: "旧密码不能为空", trigger: "blur"}
],
newPassword: [
{required: true, message: "新密码不能为空", trigger: "blur"},
{min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur"},
{pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur"}
],
confirmPassword: [
{required: true, message: "确认密码不能为空", trigger: "blur"},
{required: true, validator: equalToPassword, trigger: "blur"}
]
},
resetPwdVisible: false,
};
},
components: {
Breadcrumb,
TopNav,
......@@ -72,6 +134,29 @@ export default {
}
},
methods: {
submit() {
this.$refs["form"].validate(valid => {
if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
this.$modal.msgSuccess("修改成功");
});
}
});
},
close() {
this.$tab.closePage();
},
handleClose(done) {
this.$confirm('确定关闭吗').then(() => {
// function(done),done 用于关闭 Dialog
done();
console.info("点击右上角 'X' ,取消按钮或遮罩层时触发");
}).catch(() => {
console.log("点击确定时触发");
});
},
toggleSideBar() {
this.$store.dispatch('app/toggleSideBar')
},
......@@ -84,7 +169,8 @@ export default {
this.$store.dispatch('LogOut').then(() => {
location.href = '/index';
})
}).catch(() => {});
}).catch(() => {
});
}
}
}
......@@ -97,15 +183,16 @@ export default {
overflow: hidden;
position: relative;
background: #fff;
box-shadow: 0 1px 4px rgba(0,21,41,.08);
box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
justify-content: space-between;
.hamburger-container {
line-height: 46px;
height: 100%;
float: left;
cursor: pointer;
transition: background .3s;
-webkit-tap-highlight-color:transparent;
-webkit-tap-highlight-color: transparent;
&:hover {
background: rgba(0, 0, 0, .025)
......@@ -117,7 +204,7 @@ export default {
}
.topmenu-container {
margin-top:30px ;
margin-top: 30px;
//margin-left: -10px;
//height: 80px;
//position: absolute;
......
......@@ -86,8 +86,11 @@ export const constantRoutes = [
name: 'Profile',
meta: { title: '个人中心', icon: 'user' }
}
]
},
{
path: '/monitoring',
component: Layout,
......@@ -144,6 +147,7 @@ export const constantRoutes = [
}
]
}
]
// 动态路由,基于用户权限动态去加载
......
This diff is collapsed.
<template>
<div class="app-container">
<div style="background-color: white;height: 95vh;padding-left: 30px;padding-right: 30px" >
<div style="background-color: white;height: 95vh;padding-left: 30px;padding-right: 30px">
<div>
<span style="display: flex;justify-content: flex-start;align-items: center;"><div style="border: 1px solid #116FBB;width: 2px;height: 20px;margin-right: 5px"></div><h5 style="color: #116FBB;font-weight: bolder">历史记录</h5></span>
<span style="display: flex;justify-content: flex-start;align-items: center;"><div
style="border: 1px solid #116FBB;width: 2px;height: 20px;margin-right: 5px"></div><h5
style="color: #116FBB;font-weight: bolder">历史记录</h5></span>
</div>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="监控点名称:" prop="monitoringName">
<el-form-item prop="monitoringName">
<el-input
v-model.trim="queryParams.monitoringName"
placeholder="请输入监控点名称"
......@@ -13,7 +15,16 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监控时间:" prop="monitorTime">
<el-form-item prop="monitorState">
<el-select v-model="queryParams.monitorState" placeholder="请选择监控状态" clearable>
<el-option value="0">进行中</el-option>
<el-option value="1">已完成</el-option>
</el-select>
</el-form-item>
<el-form-item prop="monitorTime">
<el-date-picker
placeholder="请选择监控时间"
value-format="yyyy-MM-dd"
......@@ -24,48 +35,48 @@
end-placeholder="结束日期"
>
</el-date-picker>
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.monitorTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择监控时间">-->
<!-- </el-date-picker>-->
</el-form-item>
<!-- <el-form-item label="监控状态" prop="monitorState">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorState"-->
<!-- placeholder="请输入监控状态"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="监控状态:" prop="monitorState">
<el-select v-model="queryParams.monitorState" placeholder="请选择监控状态" clearable>
<el-option value="0">进行中</el-option>
<el-option value="1">已完成</el-option>
</el-select>
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.monitorTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择监控时间">-->
<!-- </el-date-picker>-->
</el-form-item>
<!-- <el-form-item label="监控状态" prop="monitorState">-->
<!-- <el-input-->
<!-- v-model="queryParams.monitorState"-->
<!-- placeholder="请输入监控状态"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<div style="margin-left: 92%">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</div>
</el-form>
<!-- <el-table v-loading="loading" :data="histableList" @selection-change="handleSelectionChange">-->
<el-table :data="histableList" @selection-change="handleSelectionChange" style="min-height: 650px" >
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" width="100"/>
<!-- <template slot-scope="scope">-->
<!-- <span>{{ (scope.$index+1)+(queryParams.pageNum-1)*queryParams.pageSize }}</span>-->
<!-- </template>-->
<el-table-column label="监控点名称" align="center" prop="monitoringName" />
<el-table-column label="监控开始时间" align="center" prop="monitoringStarttime" width="180">
<!-- <el-table v-loading="loading" :data="histableList" @selection-change="handleSelectionChange">-->
<el-table :data="histableList" @selection-change="handleSelectionChange" style="min-height: 650px">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="序号" align="center" width="100" prop="id"/>
<!-- <template slot-scope="scope">-->
<!-- <span>{{ (scope.$index+1)+(queryParams.pageNum-1)*queryParams.pageSize }}</span>-->
<!-- </template>-->
<el-table-column label="监控点名称" align="center" prop="monitoringName"/>
<el-table-column label="监控开始时间" align="center" prop="monitoringStarttime" width="300">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.monitoringStarttime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="监控结束时间" align="center" prop="monitoringFinallytime" width="180">
<el-table-column label="监控结束时间" align="center" prop="monitoringFinallytime" width="500">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.monitoringFinallytime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
......@@ -75,21 +86,24 @@
<span>{{ formatHoursAsHMS(scope.row.monitorTime) }}</span>
</template>
</el-table-column>
<el-table-column label="监控状态" align="center" prop="monitorState">
<el-table-column label="监控状态" align="center" prop="monitorState" width="500">
<template slot-scope="scope">
<span :class="scope.row.monitorState === '0' ? 'green-text' : 'black-text'">{{ scope.row.monitorState === '0' ? '·进行中' : '·已完成' }}</span>
<!-- <dict-tag :options="dict.type.history_state" :value="scope.row.monitorState"/>-->
<span :class="scope.row.monitorState === '0' ? 'green-text' : 'black-text'">{{
scope.row.monitorState === '0' ? '·进行中' : '·已完成'
}}</span>
<!-- <dict-tag :options="dict.type.history_state" :value="scope.row.monitorState"/>-->
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
style="border: transparent;background-color: transparent"
style="border: transparent;background-color: transparent;color: green;font-size: 20px"
size="mini"
plain
icon="el-icon-view"
class="green-icon"
@click="handleUpdate(scope.row)"
></el-button>
</template>
</el-table-column>
......@@ -118,7 +132,7 @@
</template>
<script>
import { listHistable, getHistable, delHistable, addHistable, updateHistable } from "@/api/system/histable";
import {listHistable, getHistable, delHistable, addHistable, updateHistable} from "@/api/system/histable";
import {parseTime} from "../../utils/ruoyi";
export default {
......@@ -126,6 +140,14 @@ export default {
dicts: ['history_state'],
data() {
return {
carryRowCode:{
id:"",
monitoringName:"",
monitoringStarttime: "",
monitoringFinallytime: "",
monitorState:"",
monitorTime:"",
},
// 遮罩层
loading: true,
// 选中数组
......@@ -151,12 +173,12 @@ export default {
monitoringName: null,
monitorTime: null,
monitorState: null,
id:null,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
rules: {}
};
},
created() {
......@@ -219,7 +241,7 @@ export default {
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.ID)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
......@@ -230,8 +252,14 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.carryRowCode=row;
// 查看详情页面(把id换成code)
this.$router.push({ path: '/monitoringPlayback/playback', query: { code: row.ID } })
this.$router.push({path: '/monitoringPlayback/playback',
query: {
carryRowCode :this.carryRowCode
}
})
},
/** 提交按钮 */
submitForm() {
......@@ -256,12 +284,13 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const IDs = row.ID || this.ids;
this.$modal.confirm('是否确认删除history编号为"' + IDs + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除history编号为"' + IDs + '"的数据项?').then(function () {
return delHistable(IDs);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
......@@ -276,9 +305,11 @@ export default {
.green-text {
color: #51ad51;
}
.black-text {
color: black;
}
.green-icon .el-icon-view {
color: #51ad51;
}
......
<template>
<div class="playback">
<div ref="playWndBack" class="video-watch" id="playWndBack"></div>
<div>
<div style="margin-right: 30px;margin-top: 60px">
<el-form label-position="right" label-width="100px" :model="formLabelAlign">
<el-form-item label="监控点名称">
<el-input v-model="formLabelAlign.name" disabled></el-input>
<el-input v-model="carryRowCode.id" disabled></el-input>
</el-form-item>
<el-form-item label="开始时间">
<el-input v-model="formLabelAlign.startTime" disabled></el-input>
<el-input v-model="carryRowCode.monitoringStarttime" disabled></el-input>
</el-form-item>
<el-form-item label="结束时间">
<el-input v-model="formLabelAlign.endTime" disabled></el-input>
<el-input v-model="carryRowCode.monitoringFinallytime" disabled></el-input>
</el-form-item>
<el-form-item label="监控时间">
<el-input v-model="formLabelAlign.time" disabled></el-input>
<el-input v-model="carryRowCode.monitorTime" disabled></el-input>
</el-form-item>
<el-form-item label="监控状态">
<el-input v-model="formLabelAlign.flag" disabled></el-input>
<el-input v-model="carryRowCode.monitorState" disabled></el-input>
</el-form-item>
</el-form>
</div>
......@@ -27,11 +27,14 @@
<script>
import {getCameras} from "@/api/system/video";
import videoParams from "@/views/video/videoParams";
import {listHistable, getHistable, delHistable, addHistable, updateHistable} from "@/api/system/histable";
export default {
name: "playback",
data() {
return {
carryRowCode:{},
oWebControl: null,
initCount: 0,
pubKey: '',
......@@ -45,6 +48,9 @@ export default {
}
};
},
created() {
this.carryRowCode = this.$route.query.carryRowCode;
},
mounted() {
this.getIndex()
},
......@@ -227,7 +233,11 @@ export default {
<style scoped>
.playback{
display: flex;
margin: 0 20px;
margin-top: 20px;
margin-left: 40px;
margin-right: 40px;
height: 1000px;
background: white;
}
.video-watch{
min-height: calc(100vh - 104px);
......
......@@ -35,7 +35,7 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.10.129:8080`,
target: `http://127.0.0.1:8080`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment