Authored by xwx

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

Showing 30 changed files with 300 additions and 329 deletions
... ... @@ -350,16 +350,20 @@ layui.define(['xmSelect', 'md5'], function (exports) {
}
});
},
menuXmSelect: function (xmSelectParams, done) {
menuXmSelect: function (xmSelectParams, done, username_, roleId_) {
var username = username_ ? username_ : '';
var roleId = roleId_ ? roleId_ : '';
admin.req({
url: `${obj.domainName}/api-user/menus/findMenus`,
url: `${obj.domainName}/api-user/menus/findMenus?username=` + username + '&roleIds=' + roleId,
success: function (res) {
// 菜单下拉框
var menuList = res.data;
menuList.forEach(item => {
item.disabled = item.isLeaf !== 'Y';
});
// menuList.forEach(item => {
// item.disabled = item.isLeaf !== 'Y';
// });
var menuTree = obj.pidToChildren(menuList, "id", "parentId");
//XuHaoJie 2021/10/21 添加是否是父节点
addProperty(menuTree);
var menuSelect = xmSelect.render(Object.assign({
el: '#',
tips: '=菜单=',
... ... @@ -392,6 +396,19 @@ layui.define(['xmSelect', 'md5'], function (exports) {
}
}
});
//添加是否是父节点的删除
function addProperty(list) {
list.forEach(item => {
if (item.children && item.children.length > 0) {
item['isParent'] = 1;
addProperty(item.children);
} else {
item['isParent'] = 0;
}
return item;
})
}
},
relationTypeXmSelect: function (xmSelectParams, done) {
admin.req({
... ...
... ... @@ -271,7 +271,9 @@ layui.define(['table', 'form', 'laydate', 'laytpl','common','sessions','xmSelect
function loadSelect(pollName,dom){
var url = domainName+'/inspection-report/dataSource/loadSelect?access_token='+accessToken;
$.get(url,function (res) {
$.ajax({url,
async: false,
success(res) {
$(dom).empty();
if(res.success){
let html ='';
... ... @@ -284,7 +286,7 @@ layui.define(['table', 'form', 'laydate', 'laytpl','common','sessions','xmSelect
}
form.render();
}
})
}})
}
function loadJLSelect($dom,pid,type){
$.ajax({
... ...
... ... @@ -110,7 +110,7 @@ layui.define(['table', 'form', 'laydate','treeTable', 'admin', 'layer', 'laytpl'
' <button role-data-menu="' + d.id + '" lay-tips="菜单授权" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-org-btn"><i class="layui-icon layui-icon-menu-fill"></i></button>' +
// ' <button role-data-query-menus="'+d.id+'" role-data-name="'+d.name+'" lay-tips="角色菜单查看" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-org-btn"><i class="layui-icon layui-icon-search"></i></button>'+
' <button role-data-oneKey="' + d.id + '" lay-tips="' + tips + '" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-org-btn"><i class="layui-icon layui-icon-auz"></i></button>' +
' <button data-code="' + d.code + '" lay-tips="配置默认首页" type="button" class="layui-btn layui-btn-xs layui-btn-normal config-default-index"><i class="layui-icon layui-icon-website"></i></button>' +
' <button data-code="' + d.code + '" data-id="'+d.id+'" lay-tips="配置默认首页" type="button" class="layui-btn layui-btn-xs layui-btn-normal config-default-index"><i class="layui-icon layui-icon-website"></i></button>' +
'</div>';
}}
]],
... ... @@ -176,6 +176,7 @@ layui.define(['table', 'form', 'laydate','treeTable', 'admin', 'layer', 'laytpl'
// 配置默认首页
$('.config-default-index').unbind('click').on('click', function () {
var roleCode = $(this).data('code');
var roleId =$(this).data('id');
layer.load(2);
admin.req({
url: domainName + '/api-web/defaultIndex/getDefaultIndex',
... ... @@ -231,8 +232,25 @@ layui.define(['table', 'form', 'laydate','treeTable', 'admin', 'layer', 'laytpl'
common.menuXmSelect({
el: '#slt-menu-tree',
radio: true,
prop: {
name: 'name',
value: 'id',
isParent: 'isParent',
},
clickClose: true,
on(data) {
//XuHaoJie 2021/10/21 添加是否是父节点
//arr: 当前多选已选中的数据
var arr = data.arr;
if (arr && arr.length > 0) {
if (arr[0].isParent == 1) {
layer.msg('父节点不能选', {icon: 7});
setTimeout(function () {
xmSelect.get('#slt-menu-tree', true).setValue([]);
},1000);
return false;
}
}
if (data.arr.length) {
switch (data.arr[0].moduleid) {
case 'index-topo': {
... ... @@ -285,7 +303,7 @@ layui.define(['table', 'form', 'laydate','treeTable', 'admin', 'layer', 'laytpl'
}
}, function (select) {
select.setValue([defaultIndex], null, true);
});
},null,roleId);
function reSetForm() {
... ...
... ... @@ -341,8 +341,25 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
common.menuXmSelect({
el: '#slt-menu-tree',
radio: true,
prop: {
name: 'name',
value: 'id',
isParent: 'isParent',
},
clickClose: true,
on(data) {
//XuHaoJie 2021/10/21 添加是否是父节点
//arr: 当前多选已选中的数据
var arr = data.arr;
if (arr && arr.length > 0) {
if (arr[0].isParent == 1) {
layer.msg('父节点不能选', {icon: 7});
setTimeout(function () {
xmSelect.get('#slt-menu-tree', true).setValue([]);
},1000);
return false;
}
}
if (data.arr.length) {
switch (data.arr[0].moduleid) {
case 'index-topo': {
... ... @@ -395,7 +412,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'upload', 'common', 'sessions',
}
}, function (select) {
select.setValue([defaultIndex], null, true);
});
},username);
function reSetForm() {
... ...
... ... @@ -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);
}
})
... ... @@ -495,6 +498,24 @@ export default {
return localStorage.getItem('lgn') == 'admin';
}
/**
* TODO
* @param item
* @param index
*/
let clickTopNav = (item,index) =>{
let arr = historyNode.value;
// // 删除当前节点后面的路径
// arr.filter(function (v,i) {
// if(i > index){
// arr.splice(i,1);
// }
// })
addHistoryNode(item);
getPage(item.id);
}
/**
* 挂载完
... ... @@ -557,6 +578,7 @@ export default {
showUploadDialogVisible,
historyNode,
clickTopNav,
tagHandleClose,
isAdmin
... ...
... ... @@ -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 () {
... ... @@ -848,7 +855,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'laytpl', 'common', 'view', 'se
}).done(function (response) {
layer.close(loading);
if (response.success) {
layer.msg('添加绑定成功!此次添加了' + insertCount + '个新资源' + (isExistCount > 0 ? ',有' + isExistCount + '个已经存在。' : ''), {icon: 1, time: 5000});
layer.msg('添加绑定成功!此次添加了' + insertCount + '个新资源(父资源)' + (isExistCount > 0 ? ',有' + isExistCount + '个已经存在。' : ''), {icon: 1, time: 5000});
layer.close(addResLayerIndex);
reloadTable(resType,busId);
} else {
... ...
... ... @@ -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
}
})
... ...
<div style="padding-top: 20px;">
<el-divider content-position="left">个人信息</el-divider>
<el-form :model="ruleForm" label-width="120px" :size="$global.elementSize">
<el-row>
<el-col :span="8">
... ...
... ... @@ -69,29 +69,24 @@ export default {
let getFile = (param) =>{
let fileObj = param.file
getBase64(fileObj).then(res => {
proxy.$global.getBase64(fileObj).then(res => {
console.log(res)
});
imageUrl.value = URL.createObjectURL(fileObj)
}
let beforeAvatarUpload = (file) =>{
const isJPG = file.type.indexOf('image/') != -1
if (!isJPG) {
proxy.$global.showMsg('您上传的不是图片文件,请选择图片!','error');
}
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
};
},
}
... ...
... ... @@ -21,9 +21,12 @@
</el-form-item>
</el-form>
</div>
<div style="padding: 3px 6px;text-align: right">
<el-button type="primary" @click="showConfigDialog(true)">配置</el-button>
</div>
<cm-table-page :columns="obj.columns" :dataList="obj.maps" @loaddata="getPage" :showIndex="true"
:showBorder="true" :currentPage="currentPage" :total="total" :loading="false"
:showPage="true" :height="(height - 80)">
:showPage="true" :height="(height - 130)">
<template #default="{row,prop,column}">
<a href="javascript:void(0)" v-if="prop == 'resPositon' || prop == 'cabinetNo'" style="border-bottom: solid 1px blue;margin-bottom: 3px;height: 30px;font-size: 15px;" @click="cellClick(row,prop,column)">{{row[prop]}}</a>
<el-link v-else :underline="false" @click="item.click(scope.row)">{{row[prop]}}</el-link>
... ... @@ -52,4 +55,10 @@
</template>
</cm-dialog>
<cm-dialog :title="dialogDetail.title" width="80%" :showDialogVisible="showConfig" :showFooter="false" @hidedialog="showConfigDialog" :showOkBtn="false" cancelText="关闭">
<template v-slot>
</template>
</cm-dialog>
</div>
... ...
// 获取状态
const configPage = () => {
// 展示配置弹框
let dialogFlg = Vue.ref(false);
let dialogDetail = Vue.ref({
title: '资源属性配置',
});
let showConfigDialog = (flg) => {
dialogFlg.value = flg;
}
return {
showConfig: dialogFlg,
showConfigDialog,
dialogDetail
}
}
export default {
name: 'resIndex',
template: '',
... ... @@ -8,48 +27,39 @@ export default {
},
data() {
return {
props : {
label:'label',
children:'children'
props: {
label: 'label',
children: 'children'
}
}
},
setup() {
const {proxy} = Vue.getCurrentInstance();
let height = Vue.ref(window.innerHeight -10);
let height = Vue.ref(window.innerHeight - 10);
// 树数据
const treeData = Vue.ref([]);
const treeData = Vue.ref([]);
// 表格数据对象
const obj = Vue.ref({});
// 当前点击
const currentNode = Vue.ref({});
// 搜索框内容
const searchForm = Vue.ref({
resName:''
resName: ''
});
// 单元格点及保存的数据
let cellDetail = Vue.ref({});
let cellDetail = Vue.ref({});
// 展示U位弹框
let dialogFlg = Vue.ref(false);
// const dialog = Vue.ref({
// title: '资源类型配置',
// activeName: ''
// });
// const dialogVisible = Vue.ref(false);
//
// // 弹框
// let showDialog = () => {
// dialogVisible.value = true;
// }
let total = Vue.ref(0);
// 获取左侧树结构
let loadTree = () => {
proxy.$http.get("/api-web/v32/res/list/tree", {}, function (res) {
if (res && res.data) {
treeData.value = res.data
treeData.value = res.data
currentNode.value = res.data[0];
loadResList();
... ... @@ -57,17 +67,25 @@ export default {
});
}
let loadResList = () =>{
if(currentNode.value){
proxy.$http.get(`/api-web/v32/res/list/list/${currentNode.value.id}`, {}, function (res) {
let loadResList = () => {
if (currentNode.value) {
// 查询参数
let params = {
page: 1,
limit: 10,
treeNodId: currentNode.value.id,
query: {}
}
proxy.$http.get(`/api-web/v32/res/list`, params, function (res) {
if (res && res.object) {
obj.value = res.object
obj.value = res.object
total.value = res.count;
}
});
}
}
let handleNodeClick =(data) =>{
let handleNodeClick = (data) => {
console.log(data)
currentNode.value = data;
loadResList();
... ... @@ -75,11 +93,11 @@ export default {
// 展示机房或者机柜信息
let showDialog = (flg) =>{
let showDialog = (flg) => {
dialogFlg.value = flg;
}
let cellClick = (row,prop,column) =>{
let cellClick = (row, prop, column) => {
openCabinet(true);
showDialog(true);
cellDetail.value['prop'] = prop;
... ... @@ -87,8 +105,8 @@ export default {
cellDetail.value['title'] = column.label + '详情';
}
let cabinetNoSrc = Vue.ref('');
let openCabinet = (isInit) =>{
if(isInit){
let openCabinet = (isInit) => {
if (isInit) {
cabinetNoSrc.value = "/vue3/src/assets/images/res/img01.jpg"
} else {
cabinetNoSrc.value = "/vue3/src/assets/images/res/img03.jpg"
... ... @@ -104,10 +122,9 @@ export default {
})
// 配置页面
const {showConfig, showConfigDialog, dialogDetail} = configPage()
return {
/*showDialog,
dialogVisible,
dialog*/
currentNode,
treeData,
... ... @@ -122,7 +139,11 @@ export default {
cellClick,
openCabinet,
cabinetNoSrc
cabinetNoSrc,
total,
// 配置页面
showConfig, showConfigDialog, dialogDetail,
}
}
}
... ...