Authored by XuHaoJie

Merge branch 'master' of http://113.200.75.45:82/monitor_v3/hg-monitor-web into master-V32-XuHaoJie

Showing 23 changed files with 151 additions and 282 deletions
... ... @@ -34,7 +34,7 @@
<div style="width: calc(100% - 150px);padding-left: 6px;text-align: left;">
<el-input v-model="keyWord" placeholder="请输入关键字" :size="$global.elementSize"
style="width: 220px;margin-right:10px" clearable/>
<el-button icon="el-icon-search" :size="$global.elementSize" @click="searchFile">
<el-button :size="$global.elementSize" @click="searchFile">
<i class="iconfont icon-sousuo"></i>搜索</el-button>
<el-button :size="$global.elementSize" @click="showUserDialog(true)" v-if="!isView">
<i class="iconfont icon-icon--quanxian"></i>
... ... @@ -44,7 +44,7 @@
<i class="iconfont icon-icon--download"></i>
下载
</el-button>
<el-button :size="$global.elementSize" @click="showFolder(true,true)">
<el-button :size="$global.elementSize" @click="showFolder(true,true)" v-if="!canAddFolder">
<i class="iconfont icon-weidaqiadewenjianjia"></i>
新增文件夹
</el-button>
... ...
... ... @@ -30,7 +30,12 @@ export default {
fileIds: {
type: Array,
default: []
}
},
// 是否展示新建文件按钮
canAddFolder: {
type: Boolean,
default: true
},
},
data() {
... ... @@ -207,9 +212,6 @@ export default {
// 获取表格树
let getPage = (id) => {
let docIds = props.fileIds.length == 0 ? '' : props.fileIds.join(',')
if(docIds == ''){
return;
}
let params = {
id: id,
name: keyWord.value,
... ... @@ -253,7 +255,6 @@ export default {
// 刷新
let reload = (loadTree) => {
//historyNode.value = [];
// 属性tree
setTimeout(function () {
let id = currentNodeData.value.id;
... ... @@ -298,7 +299,9 @@ export default {
proxy.$global.showMsg('放入回收站成功!');
}
reload(true);
// 属性tree
let isUser = !isUserFolder.value;
reload(isUser);
}
})
... ...
... ... @@ -7,24 +7,6 @@
<el-table-column v-for="item in columns" :prop="item.prop" :label="item.label" :sortable="item.sortable == undefined ? false : item.sortable" :align="item.align == undefined ? 'center' : item.align "
:width="item.width">
<!--<template #default="scope" v-if="item.prop =='resName'">
<el-link type="primary" @click="openDetailPage(scope.row)">{{scope.row.resName}}</el-link>
</template>
<template #default="scope" v-else>
<div v-if="typeof(item.render) == 'function'" >
<div v-if="typeof(item.click) == 'function'">
<el-link :type="linkType" :underline="isLink" @click="item.click(scope.row)" v-html="item.render(scope.row)"></el-link>
</div>
<div v-else>
<el-link :type="linkType" :underline="isLink" v-html="item.render(scope.row)"></el-link>
</div>
</div>
<span v-else>
{{scope.row[item.prop]}}
</span>
</template>-->
<template #default="scope">
<slot :row="scope.row" :prop="item.prop" :column="item">
<div v-if="typeof(item.render) == 'function'" >
... ...
... ... @@ -33,10 +33,10 @@ export default {
type: String,
default: '序号'
},
currentPage: {
/*currentPage: {
type: Number,
default: 1
},
},*/
// 分页页码设置
pageSizes: {
type: Array,
... ... @@ -87,38 +87,52 @@ export default {
return {}
},
setup(props, {attrs, slots, emit}) {
let currentPage = Vue.ref(1);
let pageSize = Vue.ref(props.pageSize);
// let sizeArr = props.pageSizes;
// if(sizeArr && sizeArr.length > 0){
// pageSize.value = sizeArr[0]
// }
// console.log('======',pageSize.value);
let callback = () =>{
emit('loaddata',props)
let params = {
page: currentPage.value, limit: pageSize.value
}
emit('loaddata', params)
}
// 每页展示多少条
let handleSizeChange = (val) => {
// console.log(`每页 ${val} 条`)
props.pageSize = val;
//props.pageSize = val;
pageSize.value = val;
callback();
}
// 切换页码
let handleCurrentChange = (val) => {
// console.log(`当前页: ${val}`)
props.currentPage = val;
//props.currentPage = val;
currentPage.value = val;
callback();
}
// 切换页码
let prePage = (val) => {
// console.log(`当前页: ${val}`)
props.currentPage = val - 1;
// props.currentPage = val - 1;
currentPage.value = val;
callback();
}
// 切换页码
let nextPage = (val) => {
// console.log(`当前页: ${val}`)
props.currentPage = val + 1;
// props.currentPage = val + 1;
currentPage.value = val;
callback();
}
... ... @@ -133,6 +147,8 @@ export default {
})
return {
currentPage,
pageSize,
handleSizeChange,
handleCurrentChange,
prePage,
... ...
... ... @@ -94,10 +94,13 @@ global.confirm = (msg,okFunc,cancelFunc) =>{
*/
global.getQueryVariable = (variable) => {
var query = window.location.search.substring(1);
if(query == ''){
query = document.location.href
let arr = query.split('?');
let args = query.split('?');
let arr = [];
if(args && args.length > 1){
arr = args[1].split('&')
}
for (var i = 0; i < arr.length; i++) {
var pair = arr[i].split("=");
if (pair[0] == variable) {
... ...
... ... @@ -3,74 +3,16 @@ import { Set_Count } from './mutation-types.js'
export default Vuex.createStore({
state: {
count: 0,
myObject: {
time: '现在的时间:'
},
myArray: [1,2,2,3,4]
},
getters: {
getAddCount: (state) => {
return state.count + 1
},
getTime: (state) => {
return state.myObject.time + new Date()
},
filterArray: (state) => (id) => {
return state.myArray.filter((item) => item === id)
}
},
mutations: {
// 计数器
setCount(state, num = 1) {
state.count += num
},
[Set_Count](state, num = 1) {
state.count += num
},
// 设置当前时间
setTime(state) {
state.myObject.time = '现在时间:' + new Date()
},
// 设置数组的值
setArray(state, val = 4) {
state.myArray[1] = val
},
reloadArray(state, arr) {
state.myArray.lenth = 0
state.myArray = [...arr]
}
},
actions: {
// 异步获取数组
getArray(context) {
setTimeout(() => {
context.commit('setArray', new Date().valueOf())
}, 10000)
},
// 异步获取数组
getArrayPromise(context) {
return new Promise((resolve, reject) => {
setTimeout(() => {
const time = new Date().valueOf()
resolve(time)
}, 2000)
})
},
// axios
getDat2(context) {
const ajax = axios.get('demo.json')
ajax.then((response) => {
const arr = response.data.company.formItem
console.log('getData - axios - response', arr)
// context.commit('reloadArray', arr)
})
.catch((error) => {
console.log('getData - axios - error', error)
})
return ajax // 直接返回 axios 的promise的实例
}
},
modules: {
}
... ...
... ... @@ -161,7 +161,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
'<button data-id="' + d.busId + '" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal btn-bustype-delete"><i class="layui-icon layui-icon-delete"></i></button>' +
'<button data-id="' + d.busId + '" lay-tips="资源分配" type="button" class="layui-btn layui-btn-xs layui-btn-normal btn-bustype-res-config"><i class="layui-icon layui-icon-menu-fill"></i></button>' +
'<button data-id="' + d.busId + '" lay-tips="授权" type="button" class="layui-btn layui-btn-xs layui-btn-normal btn-bustype-authorize"><i class="layui-icon layui-icon-auz"></i></button>' +
'<button data-id="' + d.busId + '" lay-tips="乙方运维配置" type="button" class="layui-btn layui-btn-xs layui-btn-normal btn-bustype-yf-config"><i class="layui-icon layui-icon-auz"></i></button>' +
'<button data-id="' + d.busId + '" data-code="'+ d.busTypeCode +'" lay-tips="乙方运维配置" type="button" class="layui-btn layui-btn-xs layui-btn-normal btn-bustype-yf-config"><i class="layui-icon layui-icon-set-fill"></i></button>' +
'</div>'
} else {
return '' +
... ... @@ -293,14 +293,16 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
// 乙方运维配置
$('.btn-bustype-yf-config').click(function () {
var busId = $(this).data('id');
var busTypeCode = $(this).data('code');
layer.open({
type: 2
,title: "乙方运维配置"
,closeBtn: true
,closeBtn: false
,area: ['50%', '70%']
,btn: ['关闭']
,shade: 0.8
,id: 'operationMaintenance-config' //设定一个id,防止重复弹出
,content:`/vue3/index.html#/operationMaintenance/config?id=${busId}`
,content:`/vue3/index.html#/operationMaintenance/config?id=${busId}&code=${busTypeCode}`
, success: function (layero, index) {
}
,yes: function(index, layero){
... ... @@ -309,6 +311,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
}
});
$(document).on("closeBusWindow", function(){
layer.closeAll();
});
});
$('.btn-bustype-bind').unbind('click').on('click', function () {
... ...
... ... @@ -3,5 +3,6 @@
:viewTypeName="docTypeName"
:types="[docType]"
:fileIds="docIds"
:canAddFolder="canAddFolder"
@callback="saveOpsLog"></cm-document>
... ...
... ... @@ -31,6 +31,12 @@ export default {
type: String,
default: ''
},
// 是否展示新建文件按钮
canAddFolder: {
type: Boolean,
default: true
},
},
setup(props, {attrs, slots, emit}) {
... ...
... ... @@ -4,6 +4,6 @@
<el-divider content-position="left">项目评价汇总</el-divider>
<cm-table-page :columns="columns" :dataList="dataList" @loaddata="getPage" :showIndex="true"
:showBorder="true" :currentPage="currentPage" :total="total" :loading="false"
:showPage="true" :height="height"></cm-table-page>
:showPage="true" :height="height" :pageSize="pageSize"></cm-table-page>
</div>
</div>
... ...
... ... @@ -5,7 +5,7 @@ export default {
data() {
return {}
},
props:{
props: {
treeNode: {
type: Object,
default: {}
... ... @@ -22,6 +22,10 @@ export default {
type: Number,
default: 0
},
pageSize: {
type: Number,
default: 10
},
},
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
... ... @@ -115,21 +119,21 @@ export default {
// 获取表格数据
let getPage = (obj) => {
if(!props.treeNode.map || !props.treeNode.map.nodeType){
if (!props.treeNode.map || !props.treeNode.map.nodeType) {
return;
}
let params = {
"page":1,
"limit":10,
"page": 1,
"limit": props.pageSize,
"projectId": props.treeNode.map.nodeType.projectId
}
if(obj){
params.page = obj.currentPage;
params.limit = obj.pageSize;
if (obj) {
params.page = obj.page;
params.limit = obj.limit;
}
proxy.$http.post("/api-web/bOpsScore/scoreCollect", params, function (res) {
if (res && res.data) {
dataList.value = res.data;
dataList.value = res.data;
total.value = res.count;
}
});
... ... @@ -139,7 +143,7 @@ export default {
Vue.onMounted(() => {
getPage();
if(props.height && props.height == 0){
if (props.height && props.height == 0) {
props.height = window.innerHeight - 130
}
})
... ...
... ... @@ -4,6 +4,6 @@
<el-divider content-position="left">人员信息汇总</el-divider>
<cm-table-page :columns="columns" :dataList="dataList" @loaddata="getPage" :showIndex="true"
:showBorder="true" :currentPage="currentPage" :total="total" :loading="false"
:showPage="true" :height="height"></cm-table-page>
:showPage="true" :height="height" :pageSize="pageSize"></cm-table-page>
</div>
</div>
... ...
... ... @@ -3,11 +3,9 @@ export default {
template: '',
components: {},
data() {
return {
}
return {}
},
props:{
props: {
treeNode: {
type: Object,
default: {}
... ... @@ -24,6 +22,10 @@ export default {
type: Number,
default: 0
},
pageSize: {
type: Number,
default: 10
},
},
setup(props, {attrs, slots, emit}) {
... ... @@ -40,16 +42,16 @@ export default {
sortable: true,
render: function (row) {
let arr = [];
if(row.phone){
if (row.phone) {
arr.push(row.phone);
}
if(row.tel){
if (row.tel) {
arr.push(row.tel);
}
return arr.join(' / ')
}
},{
}, {
prop: 'email',
label: '电子邮箱',
sortable: true,
... ... @@ -59,9 +61,9 @@ export default {
sortable: true,
width: '120px',
render: function (row) {
if(row.state==1){
if (row.state == 1) {
return "在职";
}else{
} else {
return "<span style='color: red'>离职</span>";
}
}
... ... @@ -71,9 +73,9 @@ export default {
sortable: true,
width: '180px',
render: function (row) {
if(row.personalMessage =="YES"){
if (row.personalMessage == "YES") {
return `<i class="iconfont icon-icon--yes" style="font-size: 22px;margin-right: 10px;"></i><span></span>`;
}else{
} else {
return `<i class="iconfont icon-icon--shanchu" style="font-size: 22px;margin-right: 10px;color:red"></i><span></span>`;
}
}
... ... @@ -84,9 +86,9 @@ export default {
sortable: true,
width: '180px',
render: function (row) {
if(row.personalSecrecyBook =="YES"){
if (row.personalSecrecyBook == "YES") {
return `<i class="iconfont icon-icon--yes" style="font-size: 22px;margin-right: 10px;"></i><span></span>`;
}else{
} else {
return `<i class="iconfont icon-icon--shanchu" style="font-size: 22px;margin-right: 10px;color:red"></i><span></span>`;
}
}
... ... @@ -96,9 +98,9 @@ export default {
sortable: true,
width: '180px',
render: function (row) {
if(row.monthlySummary =="YES"){
if (row.monthlySummary == "YES") {
return `<i class="iconfont icon-icon--yes" style="font-size: 22px;margin-right: 10px;"></i><span></span>`;
}else{
} else {
return `<i class="iconfont icon-icon--shanchu" style="font-size: 22px;margin-right: 10px;color:red"></i><span></span>`;
}
... ... @@ -111,25 +113,28 @@ export default {
// 获取表格数据
let getPage = (obj) => {
if(!props.treeNode.map || !props.treeNode.map.nodeType){
if (!props.treeNode.map || !props.treeNode.map.nodeType) {
return;
}
let isRootNode = props.treeNode.map.nodeType.parent == 'ONE_USER'
let params = {
"page":1,
"limit":10,
"projectId": props.treeNode.map.nodeType.projectId
"page": 1,
"limit": props.pageSize,
"projectId": props.treeNode.map.nodeType.projectId,
"nickname": !isRootNode ? '' : props.treeNode.label
}
if(obj){
params.page = obj.currentPage;
params.limit = obj.pageSize;
if (obj) {
params.page = obj.page;
params.limit = obj.limit;
}
proxy.$http.post("/api-web/bOpsPerson/personCollect", params, function (res) {
if (res && res.data) {
dataList.value = res.data
dataList.value = res.data
total.value = res.count;
} else {
dataList.value = []
dataList.value = []
total.value = 0;
}
});
... ... @@ -137,9 +142,9 @@ export default {
// 挂载完
Vue.onMounted(() => {
//getPage();
getPage();
if(props.height && props.height == 0){
if (props.height && props.height == 0) {
props.height = window.innerHeight - 130
}
})
... ...
... ... @@ -89,9 +89,6 @@ export default {
return isJPG
}
// // 挂载完
Vue.onMounted(() => {
getPage();
... ...
... ... @@ -4,6 +4,6 @@
<el-divider content-position="left">项目资料汇总</el-divider>
<cm-table-page :columns="columns" :dataList="dataList" @loaddata="getPage" :showIndex="true"
:showBorder="true" :currentPage="currentPage" :total="total" :loading="false"
:showPage="false" :height="height"></cm-table-page>
:showPage="false" :height="height" :pageSize="pageSize"></cm-table-page>
</div>
</div>
... ...
... ... @@ -22,6 +22,10 @@ export default {
type: Number,
default: 0
},
pageSize: {
type: Number,
default: 10
},
},
setup(props, {attrs, slots, emit}) {
const {proxy} = Vue.getCurrentInstance();
... ... @@ -70,7 +74,10 @@ export default {
// 获取表格数据
let getPage = () => {
let projectId = props.treeNode.map.nodeType.projectId
let projectId = ''
if(props.treeNode && props.treeNode.map){
projectId = props.treeNode.map.nodeType.projectId;
}
if(!projectId){
return;
}
... ... @@ -85,7 +92,9 @@ export default {
// 挂载完
Vue.onMounted(() => {
if(props.height && props.height == 0){
getPage();
if (props.height && props.height == 0) {
props.height = window.innerHeight - 130
}
})
... ...
import { Set_Count } from './mutation-types.js'
export default Vuex.createStore({
state: {
count: 0,
myObject: {
time: '现在的时间:'
},
myArray: [1,2,2,3,4]
},
getters: {
getAddCount: (state) => {
return state.count + 1
},
getTime: (state) => {
return state.myObject.time + new Date()
},
filterArray: (state) => (id) => {
return state.myArray.filter((item) => item === id)
}
},
mutations: {
// 计数器
setCount(state, num = 1) {
state.count += num
},
[Set_Count](state, num = 1) {
state.count += num
},
// 设置当前时间
setTime(state) {
state.myObject.time = '现在时间:' + new Date()
},
// 设置数组的值
setArray(state, val = 4) {
state.myArray[1] = val
},
reloadArray(state, arr) {
state.myArray.lenth = 0
state.myArray = [...arr]
}
},
actions: {
// 异步获取数组
getArray(context) {
setTimeout(() => {
context.commit('setArray', new Date().valueOf())
}, 10000)
},
// 异步获取数组
getArrayPromise(context) {
return new Promise((resolve, reject) => {
setTimeout(() => {
const time = new Date().valueOf()
resolve(time)
}, 2000)
})
},
// axios
getDat2(context) {
const ajax = axios.get('demo.json')
ajax.then((response) => {
const arr = response.data.company.formItem
console.log('getData - axios - response', arr)
// context.commit('reloadArray', arr)
})
.catch((error) => {
console.log('getData - axios - error', error)
})
return ajax // 直接返回 axios 的promise的实例
}
},
modules: {
}
... ...
const map = () => {
const store = Vuex.useStore()
/**
* 获取count,
* 用computed实现相应
*/
const getCount = () => {
return Vue.computed(() => store.state.count)
}
/**
* 获取count,
** 用 ref 实现相应
*/
const getRefCount = () => {
return Vue.ref(store.state.count)
}
/**
* 获取对象
*/
const getObject = () => {
return store.state.myObject
}
/**
* 获取只读对象
*/
const getReadonlyObject = () => {
return Vue.readonly(store.state.myObject)
}
/**
* 获取数组
*/
const getArray = () => {
return store.state.myArray
}
/**
* 获取只读数组
*/
const getReadonlyArray = () => {
return Vue.readonly(store.state.myArray)
}
/**
* 查询数组
** id:要查询的数据
*/
const filterArray = (id) => {
return Vue.computed(() => store.getters.filterArray(id))
}
return {
getCount,
getRefCount,
getObject,
getReadonlyObject,
getArray,
getReadonlyArray,
filterArray
}
}
export default map
\ No newline at end of file
export const Set_Count = 'set_count'
export const Set_Count_sy = Symbol('set_count')
... ... @@ -21,7 +21,7 @@
</el-form-item>
<el-form-item label="项目负责人" prop="principalName">
<div style="display: flex">
<el-input v-model="form.principalName" :disabled="form.isOps == 0" clearable></el-input>
<el-input v-model="form.principalName" :disabled="form.isOps == 0" readonly="true" clearable></el-input>
<el-button style="margin-left: 5px" @click="showUserDialog(true)" :disabled="form.isOps == 0" >选择</el-button>
</div>
</el-form-item>
... ... @@ -33,7 +33,7 @@
<el-input v-model="form.remark" type="textarea" :disabled="form.isOps == 0" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit('ruleForm')">保存配置</el-button>
<el-button type="primary" size="small" @click="onSubmit('ruleForm')">保存配置</el-button>
</el-form-item>
</el-form>
... ...
... ... @@ -66,6 +66,8 @@ export default {
proxy.$http.post(`/api-web/bOpsProject/saveOrUpdate`, params, function (res) {
if (res && res.code == 0) {
proxy.$global.showMsg("配置成功!");
$(parent.window.document).trigger('closeBusWindow');
}
})
} else {
... ... @@ -77,7 +79,7 @@ export default {
let init = () => {
let busId = proxy.$global.getQueryVariable("id")
//let isOps = proxy.$global.getQueryVariable("isOps")
let code = proxy.$global.getQueryVariable("code")
if (!busId) {
return;
... ...
... ... @@ -19,6 +19,7 @@
:docType="docType"
:docTypeName="docTypeName"
:height="height - 100"
:pageSize="pageSize"
:treeNode="treeNode" :parentNode="parentNode" :projectId="projectId"></component>
</div>
</el-col>
... ...
... ... @@ -41,7 +41,7 @@ export default {
},
setup() {
const {proxy} = Vue.getCurrentInstance()
let height = Vue.ref(window.innerHeight -20);
let height = Vue.ref(window.innerHeight - 20);
let dataSource = Vue.ref([]);
let componentName = Vue.ref('COLLECT_ALL');
// 当前点击节点
... ... @@ -50,6 +50,8 @@ export default {
let projectId = Vue.ref('');
let docType = Vue.ref('');
let docTypeName = Vue.ref('');
let pageSize = Vue.ref(10)
let canAddFolder = Vue.ref(true);
// 搜索
... ... @@ -87,9 +89,25 @@ export default {
let handleNodeClick = (data) => {
let comName = data.map.nodeType.view.code;
let code = data.map.nodeType.code;
if (comName == 'DOCUMENT') {
docType.value = data.map.nodeType.code;
docType.value = code
docTypeName.value = data.label;
// 个人保密协议不展示,新建文件夹按钮
if(code == 'TWO_SPECIFIC'){
canAddFolder.value = false;
} else {
canAddFolder.value = true;
}
}
// 设置展示页数
if (code != 'ROOT_NODE') {
// 全页展示数据条数
pageSize.value = 50;
} else {
// 根接节点展示
pageSize.value = 10;
}
getParent(dataSource.value, data.parentId);
projectId.value = data.map.nodeType.projectId;
... ... @@ -101,6 +119,7 @@ export default {
})
// 搜索
return {
pageSize,
height,
projectId,
treeNode,
... ... @@ -109,7 +128,8 @@ export default {
handleNodeClick,
componentName,
docType,
docTypeName
docTypeName,
canAddFolder
};
},
}
... ...