提交 4afa62a5 编写于 作者: guangjun.yang's avatar guangjun.yang

Merge branch 'dev-coop-phase3-0830' into release

...@@ -21,6 +21,8 @@ const nameList = r => require.ensure([], () => r(require('../views/learning/name ...@@ -21,6 +21,8 @@ const nameList = r => require.ensure([], () => r(require('../views/learning/name
const dataAlignment = r => require.ensure([], () => r(require('../views/learning/data-alignment.vue')), 'data-alignment') const dataAlignment = r => require.ensure([], () => r(require('../views/learning/data-alignment.vue')), 'data-alignment')
const exportDownload = r => require.ensure([], () => r(require('../views/learning/export-download.vue')), 'export-download') const exportDownload = r => require.ensure([], () => r(require('../views/learning/export-download.vue')), 'export-download')
const itemShield = r => require.ensure([], () => r(require('../views/education/item-shield.vue')), 'item-shield')
export default [{ export default [{
path: '/', path: '/',
component: App, component: App,
...@@ -77,6 +79,10 @@ export default [{ ...@@ -77,6 +79,10 @@ export default [{
path: '/export-download', path: '/export-download',
component: exportDownload component: exportDownload
}, },
{
path: '/item-shield',
component: itemShield,
},
{ {
path: '/msg-push', path: '/msg-push',
component: msgPush, component: msgPush,
......
...@@ -235,4 +235,21 @@ html,body{ ...@@ -235,4 +235,21 @@ html,body{
.el-radio-button__orig-radio:checked+.el-radio-button__inner { .el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #449284 !important; background-color: #449284 !important;
border-color: #449284 !important; border-color: #449284 !important;
}
//popover组件的特殊处理
.el-popover {
::-webkit-scrollbar
{
width: 4px;
height: 10px;
background-color: #D8D8D8;
}
::-webkit-scrollbar-thumb {
background-color: #D8D8D8;
}
.more-text {
padding: 0 5px 0 5px;
max-height: 55px;
overflow-y: scroll;
}
} }
\ No newline at end of file
import fetch from '../fetch';
import { getBaseUrl } from '@/utils/index';
export const uploadExcel = (data,projectId) => {
// return utils.checkAuth(()=>{
return fetch({
headers: {
'Content-Type': 'application/json;charset=UTF-8',
sysCode: 12,
token: localStorage.getItem('storageToken'),
},
url: getBaseUrl('portal/portalProjectOrRole/importRoleFile?projectId='+projectId),
method: 'post',
data: data,
description: '上传excel文件',
})
// })
}
\ No newline at end of file
...@@ -30,6 +30,7 @@ export const envConfig = { ...@@ -30,6 +30,7 @@ export const envConfig = {
reportUrl: 'https://dev-sc-report.yunqueyi.com/', reportUrl: 'https://dev-sc-report.yunqueyi.com/',
// reportUrl: 'https://test1-sc-report.yunqueyi.com/', // reportUrl: 'https://test1-sc-report.yunqueyi.com/',
// reportUrl: 'https://uat-sc-report.yunqueyi.com/', // reportUrl: 'https://uat-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
}, },
dev: { dev: {
baseUrl: 'https://dev-sc.yunqueyi.com/', baseUrl: 'https://dev-sc.yunqueyi.com/',
...@@ -45,6 +46,7 @@ export const envConfig = { ...@@ -45,6 +46,7 @@ export const envConfig = {
workApiUrl: 'https://dev-work.yunqueyi.com/web', workApiUrl: 'https://dev-work.yunqueyi.com/web',
workApiSrc: 'https://dev-work.yunqueyi.com', workApiSrc: 'https://dev-work.yunqueyi.com',
reportUrl: 'https://dev-sc-report.yunqueyi.com/', reportUrl: 'https://dev-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
}, },
test: { test: {
baseUrl: 'https://test1-sc.yunqueyi.com/', baseUrl: 'https://test1-sc.yunqueyi.com/',
...@@ -60,6 +62,7 @@ export const envConfig = { ...@@ -60,6 +62,7 @@ export const envConfig = {
workApiUrl: 'https://test1-work.yunqueyi.com/web', workApiUrl: 'https://test1-work.yunqueyi.com/web',
workApiSrc: 'https://test1-work.yunqueyi.com', workApiSrc: 'https://test1-work.yunqueyi.com',
reportUrl: 'https://test1-sc-report.yunqueyi.com/', reportUrl: 'https://test1-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
}, },
test2: { test2: {
baseUrl: 'https://test2-work.yunqueyi.com/sc/', baseUrl: 'https://test2-work.yunqueyi.com/sc/',
...@@ -74,6 +77,7 @@ export const envConfig = { ...@@ -74,6 +77,7 @@ export const envConfig = {
workApiUrl: 'https://test2-work.yunqueyi.com/web', workApiUrl: 'https://test2-work.yunqueyi.com/web',
workApiSrc: 'https://test2-work.yunqueyi.com', workApiSrc: 'https://test2-work.yunqueyi.com',
reportUrl: 'https://test2-sc-report.yunqueyi.com/', reportUrl: 'https://test2-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
}, },
uat: { uat: {
baseUrl: 'https://uat-sc.yunqueyi.com/', baseUrl: 'https://uat-sc.yunqueyi.com/',
...@@ -89,6 +93,7 @@ export const envConfig = { ...@@ -89,6 +93,7 @@ export const envConfig = {
workApiUrl: 'https://uat-work.yunqueyi.com/web', workApiUrl: 'https://uat-work.yunqueyi.com/web',
workApiSrc: 'https://uat-work.yunqueyi.com', workApiSrc: 'https://uat-work.yunqueyi.com',
reportUrl: 'https://uat-sc-report.yunqueyi.com/', reportUrl: 'https://uat-sc-report.yunqueyi.com/',
excelUrl: 'https://test-file.yunqueyi.com/File/template/portal/',
}, },
pro: { pro: {
baseUrl: 'https://sc.yunqueyi.com/', baseUrl: 'https://sc.yunqueyi.com/',
...@@ -104,5 +109,6 @@ export const envConfig = { ...@@ -104,5 +109,6 @@ export const envConfig = {
workApiUrl: 'https://work.yunqueyi.com/web', workApiUrl: 'https://work.yunqueyi.com/web',
workApiSrc: 'https://work.yunqueyi.com', workApiSrc: 'https://work.yunqueyi.com',
reportUrl: 'https://sc-report.yunqueyi.com/', reportUrl: 'https://sc-report.yunqueyi.com/',
excelUrl: 'https://file.yunqueyi.com/File/template/portal/',
} }
} }
...@@ -236,5 +236,39 @@ const vueFilter = { ...@@ -236,5 +236,39 @@ const vueFilter = {
let time = value +'分钟'; let time = value +'分钟';
return time; return time;
}, },
shieldStatus: (value) => {
if(value == 0) {
return '已屏蔽';
} else if(value == 1) {
return '未屏蔽';
}
},
shieldButton: (value) => {
if(value == 0) {
return '取消屏蔽';
} else if(value == 1) {
return '屏蔽';
}
},
areaText: (value) => {
let text = '-';
if(value.regions.length == 0) {
text = '-'
} else if(value.regions.length == 1) {
text = value.regions[0];
} else if(value.regions.length > 1){
let len = value.regions.length;
text = value.regions[0]+'('+len+')';
}
return text;
},
areaList: (value) => {
let list = '';
for(let i=0; i<value.length ; i++) {
list += value[i]+'、';
}
list = list.substring(0, list.length - 1);
return list
},
} }
export default vueFilter export default vueFilter
\ No newline at end of file
...@@ -210,4 +210,9 @@ function getConfigByEnvType(urlType) { ...@@ -210,4 +210,9 @@ function getConfigByEnvType(urlType) {
// 获取report服务器域名地址 // 获取report服务器域名地址
export function getReportUrl(url) { export function getReportUrl(url) {
return getConfigByEnvType('reportUrl') + url return getConfigByEnvType('reportUrl') + url
}
// 获取SC服务器域名地址
export function getExeclUrl(url) {
return getConfigByEnvType('excelUrl') + url
} }
\ No newline at end of file
...@@ -285,6 +285,7 @@ export function isOverlap(startA, endA, startB, endB) { ...@@ -285,6 +285,7 @@ export function isOverlap(startA, endA, startB, endB) {
} }
export function setRegionOption(data) { export function setRegionOption(data) {
let option = []; let option = [];
option[0] = {id: 0, value: 0, label: "全部", leaf: true};
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
let obj = data[i]; let obj = data[i];
obj.label = data[i].provinceName; obj.label = data[i].provinceName;
...@@ -483,11 +484,20 @@ export function getSearchType(formData,checkAll) { ...@@ -483,11 +484,20 @@ export function getSearchType(formData,checkAll) {
let type = 0; let type = 0;
if (formData.region.length == 1 || formData.region.length == 2) { if (formData.region.length == 1 || formData.region.length == 2) {
type = formData.region.length; type = formData.region.length;
if(formData.region.length == 1 && formData.region[0] == 0) {
type = 6;
}
} else if (formData.region.length == 3) { } else if (formData.region.length == 3) {
if (formData.organization.length == 0 || checkAll === true) { if (formData.organization.length == 0 || checkAll === true) {
type = 3; type = 3;
} else { } else {
type = 4 type = 4;
}
} else if (formData.region.length == 4) {
if (formData.organization.length == 0 || checkAll === true) {
type = 5;
} else {
type = 4;
} }
} }
return type; return type;
...@@ -578,4 +588,39 @@ export function getComponent(data) { ...@@ -578,4 +588,39 @@ export function getComponent(data) {
list.push(data[i].value); list.push(data[i].value);
} }
return list; return list;
}
export function getSimpleCheckedNodes(store) {
const checkedNodes = [];
const traverse = function(node) {
const childNodes = node.root ? node.root.childNodes : node.childNodes;
childNodes.forEach(child => {
if (child.checked) {
checkedNodes.push(child.data);
}
if (child.indeterminate) {
traverse(child);
}
});
};
traverse(store)
return checkedNodes;
}
export function setSelectedKeys(checkedKeys,halfCheckedKeys) {
let selected = [];
for(let i=0;i<checkedKeys.length;i++) {
let obj = {
key: checkedKeys[i].id,
type: 1,
};
selected.push(obj);
}
for(let j=0;j<halfCheckedKeys.length;j++) {
let obj = {
key: halfCheckedKeys[j],
type: 2,
};
selected.push(obj);
}
return selected;
} }
\ No newline at end of file
...@@ -2024,19 +2024,25 @@ export default { ...@@ -2024,19 +2024,25 @@ export default {
console.log(this.$refs.tree.getCheckedKeys()); console.log(this.$refs.tree.getCheckedKeys());
}, },
onChecked() { onChecked() {
let cData = [], // let cData = [],
oldData = (this.treeData.length && this.treeData.slice()) || [], // oldData = (this.treeData.length && this.treeData.slice()) || [],
checkedKeys = this.$refs.tree.getCheckedKeys(), // checkedKeys = this.$refs.tree.getCheckedKeys(),
halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(), // halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(),
savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map( // savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map(
key => { // key => {
return { type: 1, key: key }; // return { type: 1, key: key };
} // }
), // ),
savedHalfCheckedKeys = halfCheckedKeys.map(key => { // savedHalfCheckedKeys = halfCheckedKeys.map(key => {
return { type: 2, key: key }; // return { type: 2, key: key };
}), // }),
allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys); // allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys);
//重构归并树
let checkedTree = operationData.getSimpleCheckedNodes(this.$refs.tree.store);
let halfCheckedTree = this.$refs.tree.getHalfCheckedKeys()
let allSelectedKeys = operationData.setSelectedKeys(checkedTree,halfCheckedTree);
//重构内容
this.allSelectedKeys = allSelectedKeys; this.allSelectedKeys = allSelectedKeys;
this.initCheckList(allSelectedKeys); this.initCheckList(allSelectedKeys);
...@@ -2046,20 +2052,27 @@ export default { ...@@ -2046,20 +2052,27 @@ export default {
this.updatedTree = true; this.updatedTree = true;
}, },
getTreeCheck() { getTreeCheck() {
let cData = [], // let cData = [],
oldData = (this.treeData.length && this.treeData.slice()) || [], // oldData = (this.treeData.length && this.treeData.slice()) || [],
checkedKeys = this.$refs.tree.getCheckedKeys(), // checkedKeys = this.$refs.tree.getCheckedKeys(),
halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(), // halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(),
savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map( // savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map(
key => { // key => {
return { type: 1, key: key }; // return { type: 1, key: key };
} // }
), // ),
savedHalfCheckedKeys = halfCheckedKeys.map(key => { // savedHalfCheckedKeys = halfCheckedKeys.map(key => {
return { type: 2, key: key }; // return { type: 2, key: key };
}), // }),
allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys); // allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys);
// console.log('allSelectedKeys值:',allSelectedKeys) // // console.log('allSelectedKeys值:',allSelectedKeys)
//重构归并树
let checkedTree = operationData.getSimpleCheckedNodes(this.$refs.tree.store);
let halfCheckedTree = this.$refs.tree.getHalfCheckedKeys()
let allSelectedKeys = operationData.setSelectedKeys(checkedTree,halfCheckedTree);
vm.allSelectedKeys = allSelectedKeys;
//重构内容
return allSelectedKeys; return allSelectedKeys;
}, },
// 递归删除列表中所有子节点 // 递归删除列表中所有子节点
...@@ -2427,6 +2440,7 @@ export default { ...@@ -2427,6 +2440,7 @@ export default {
//设定的行政范围内容 //设定的行政范围内容
getScope(type) { getScope(type) {
let scope = ""; let scope = "";
let noChangeTree = this.getTreeCheck();
if (type == "administrative") { if (type == "administrative") {
for (let i = 0; i < this.tagsRegion.length; i++) { for (let i = 0; i < this.tagsRegion.length; i++) {
scope += this.tagsRegion[i].key; scope += this.tagsRegion[i].key;
...@@ -2445,7 +2459,7 @@ export default { ...@@ -2445,7 +2459,7 @@ export default {
} }
} }
} else { } else {
let noChangeTree = this.getTreeCheck(); // let noChangeTree = this.getTreeCheck();
console.log('noChangeTree值',noChangeTree); console.log('noChangeTree值',noChangeTree);
if(noChangeTree.length > 0) { if(noChangeTree.length > 0) {
for (let i = 0; i < noChangeTree.length; i++) { for (let i = 0; i < noChangeTree.length; i++) {
...@@ -2456,7 +2470,7 @@ export default { ...@@ -2456,7 +2470,7 @@ export default {
} }
} else { } else {
//选全国项目 //选全国项目
if(this.tagsRegion[0].key == '000') { if(this.tagsRegion.length > 0 && this.tagsRegion[0].key == '000') {
scope = '000:1'; scope = '000:1';
console.log(this.tagsRegion,'scope',scope); console.log(this.tagsRegion,'scope',scope);
} }
......
<template>
<div class="item-shield">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond"></bread-crumb>
<div class="component-content screenSet" id="screenSet">
<el-radio-group v-model="shieldType" @change="changeType">
<el-radio-button label="1">屏蔽机构</el-radio-button>
<el-radio-button label="2">屏蔽人员</el-radio-button>
</el-radio-group>
<el-button class="complete" type="primary" size="small" @click="complete">完成</el-button>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form :model="formInline" ref="formInline" label-width="75px" class="form-inline">
<el-col :span="6">
<el-form-item label="所属机构:">
<el-input size="small" v-model="formInline.organizationName" placeholder="请输入机构名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="姓名:">
<el-input size="small" v-model="formInline.userName" placeholder="请输入人员名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="状态:">
<el-select size="small" v-model="formInline.status" placeholder="请选择状态">
<el-option
v-for="(item, index) in statusList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6" style="padding:0;text-align:right;padding-right:10px;">
<el-button type="primary" size="small" @click="searchList()">搜索</el-button>
</el-col>
</el-form>
</el-row>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="userName" label="人员名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="hospitalName" label="所属医院" align="center"></el-table-column>
<el-table-column prop="departmentName" label="所属科室" align="center" min-width="100"></el-table-column>
<el-table-column prop="province" label="所属省份" align="center"></el-table-column>
<el-table-column prop="city" label="所属城市" align="center"></el-table-column>
<el-table-column prop="county" label="所属区县" align="center"></el-table-column>
<el-table-column fixed="right" label="状态" width="200" align="center">
<template slot-scope="scope">{{ scope.row.status | shieldStatus }}</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="changeStatus(scope.row)"
>{{ scope.row.status | shieldButton }}</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="formInline.pageNo"
:page-sizes="[10, 20, 30, 100]"
:page-size="formInline.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
</div>
</div>
</template>
<script>
import BreadCrumb from "../../components/breadcrumb.vue";
import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
let vm = null;
export default {
components: {
BreadCrumb
},
data() {
return {
curmbFirst: "教培项目",
curmbSecond: "屏蔽",
shieldType: 1,
formInline: {
organizationName: "",
userName: "",
status: "",
pageNo: 1,
pageSize: 10
},
statusList: [
{
label: "屏蔽",
value: 0
},
{
label: "取消屏蔽",
value: 1
}
],
tableData: [],
totalRows: 0,
};
},
computed: {
...mapGetters(["_token"])
},
created() {
vm = this;
this.search();
window.onbeforeunload = function(e) {
let pathname = location.href.split("/");
pathname = pathname[pathname.length - 1];
// console.log(pathname);
if (pathname == "item-shield") {
e = e || window.event;
if (e) {
e.returnValue = "关闭提示";
}
return "关闭提示";
}
};
},
// 挂载到Dom完成时
mounted: function() {
window.onbeforeunload = function(e) {
let pathname = location.href.split('/');
pathname = pathname[pathname.length-1];
console.log(pathname);
if(pathname == 'item-shield') {
e = e || window.event;
if (e) {
e.returnValue = "数据不会保存";
}
return "数据不会保存";
}
};
commonUtil.resizeHeight();
},
beforeRouteLeave(to, from, next) {
const answer = window.confirm(
"Do you really want to leave? you have unsaved changes!"
);
if (answer) {
next();
} else {
next(false);
}
},
destroyed() {
},
methods: {
searchList() {
this.formInline.pageNo = 1;
this.search();
},
search() {
vm.tableData = [
{
userName: "云小鹊",
hospitalName: "测试医院",
departmentName: "呼吸科",
province: "上海市",
city: "上海市",
county: "浦东新区",
status: 0
}
];
},
// 屏蔽/取消屏蔽
changeStatus() {
vm.tableData[0].status = 1;
},
//改变
changeType(value) {
console.log(value);
},
complete() {
console.log('完成');
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.formInline.pageSize = val;
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.formInline.pageNo = val;
this.search();
},
}
};
</script>
<style lang="scss">
.item-shield {
.component-content {
padding: 10px;
background: #fff;
.complete {
float: right;
}
}
}
</style>
\ No newline at end of file
...@@ -54,6 +54,9 @@ ...@@ -54,6 +54,9 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="姓名:">
<el-input v-model="formData.doctorName" placeholder="请输入人员名称"></el-input>
</el-form-item>
</el-form> </el-form>
<div class="form-button"> <div class="form-button">
<el-button @click="searchData()" type="primary">查询</el-button> <el-button @click="searchData()" type="primary">查询</el-button>
...@@ -137,6 +140,7 @@ export default { ...@@ -137,6 +140,7 @@ export default {
formData: { formData: {
achievementStatus: "", achievementStatus: "",
status: 1, status: 1,
doctorName: '',
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
}, },
...@@ -261,6 +265,7 @@ export default { ...@@ -261,6 +265,7 @@ export default {
status: vm.formData.status, status: vm.formData.status,
ids: operationData.getIds(vm.formInline,vm.organizationList,checkAll), ids: operationData.getIds(vm.formInline,vm.organizationList,checkAll),
type: operationData.getSearchType(vm.formInline,checkAll), type: operationData.getSearchType(vm.formInline,checkAll),
doctorName: vm.formData.doctorName,
pageNo: vm.formData.pageNo, pageNo: vm.formData.pageNo,
pageSize: vm.formData.pageSize, pageSize: vm.formData.pageSize,
}; };
...@@ -317,6 +322,7 @@ export default { ...@@ -317,6 +322,7 @@ export default {
{ {
achievementStatus: "", achievementStatus: "",
status: 1, status: 1,
doctorName: '',
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
} }
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
@change="changeOrganization" @change="changeOrganization"
multiple multiple
collapse-tags collapse-tags
:disabled="formInline.region.length !== 3" :disabled="formInline.region.length < 3"
style="width:330px" style="width:330px"
> >
<el-option <el-option
...@@ -182,6 +182,15 @@ export default { ...@@ -182,6 +182,15 @@ export default {
console.log("newData", newData); console.log("newData", newData);
resolve(newData); resolve(newData);
}); });
} else if (node.level == 3) {
let req = {
countyId: node.data.value
};
vm.GET("basic-data/position/towns", req).then(res => {
let newData = vm.setMoreOption(res.data.townList, "towns");
console.log("newData", newData);
resolve(newData);
});
} }
} }
}, },
...@@ -297,6 +306,10 @@ export default { ...@@ -297,6 +306,10 @@ export default {
} else if (type == "counties") { } else if (type == "counties") {
obj.label = data[i].countyName; obj.label = data[i].countyName;
obj.value = data[i].countyId; obj.value = data[i].countyId;
// obj.leaf = true;
} else if (type == "towns") {
obj.label = data[i].townName;
obj.value = data[i].townId;
obj.leaf = true; obj.leaf = true;
} }
option.push(obj); option.push(obj);
......
...@@ -154,7 +154,7 @@ export default { ...@@ -154,7 +154,7 @@ export default {
}); });
}, },
getTableData(data) { getTableData(data) {
if (vm.formInline.region.length == 3 && vm.organizationNum == 1) { if (vm.formInline.region.length >= 3 && vm.organizationNum == 1) {
vm.showTable = true; vm.showTable = true;
vm.finishDetail = data.hospitalPeopleList; vm.finishDetail = data.hospitalPeopleList;
} else { } else {
......
...@@ -2,15 +2,42 @@ ...@@ -2,15 +2,42 @@
<div class="item-role-wrap"> <div class="item-role-wrap">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond" :curmbThird="curmbThird"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond" :curmbThird="curmbThird"></bread-crumb>
<div class="component-content screenSet" id="screenSet"> <div class="component-content screenSet" id="screenSet">
<div class="header-title">查询条件</div> <div class="header-title">
查询条件
<el-upload
v-if="activeUser == 'L1'"
class="upload-excel"
action="#"
accept=".xlsx"
multiple
:limit="1"
:before-upload="beforeUpload"
>
<el-button size="small">导入角色权限</el-button>
<el-button class="down-button" slot="tip" size="small" @click="download('model')">下载导入模板</el-button>
</el-upload>
</div>
<el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;"> <el-row :gutter="30" class="row" type="flex" style="margin-top: 10px;">
<el-form :model="formInline" ref="formInline" label-width="75px" class="form-inline"> <el-form :model="formInline" ref="formInline" label-width="75px" class="form-inline">
<el-col :span="5"> <el-col :span="6">
<el-form-item label="所属机构:">
<!-- <el-select size="small" v-model="formInline.organizationName" placeholder="请选择所属机构">
<el-option
v-for="(item, index) in organizationList"
:key="index"
:label="item"
:value="item"
></el-option
</el-select>-->
<el-input size="small" v-model="formInline.organizationName" placeholder="请输入机构名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="姓名:"> <el-form-item label="姓名:">
<el-input size="small" v-model="formInline.userName" placeholder="请输入名称"></el-input> <el-input size="small" v-model="formInline.userName" placeholder="请输入人员名称"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="6">
<el-form-item label="角色:"> <el-form-item label="角色:">
<el-select size="small" v-model="formInline.projeceRole" placeholder="请选择角色"> <el-select size="small" v-model="formInline.projeceRole" placeholder="请选择角色">
<el-option <el-option
...@@ -22,19 +49,8 @@ ...@@ -22,19 +49,8 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5">
<el-form-item label="所属机构:"> <!-- <el-col :span="5">
<el-select size="small" v-model="formInline.organizationName" placeholder="请选择所属机构">
<el-option
v-for="(item, index) in organizationList"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="所属科室:"> <el-form-item label="所属科室:">
<el-select size="small" v-model="formInline.departmentsName" placeholder="请选择所属科室"> <el-select size="small" v-model="formInline.departmentsName" placeholder="请选择所属科室">
<el-option <el-option
...@@ -45,8 +61,8 @@ ...@@ -45,8 +61,8 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>-->
<el-col :span="4" style="padding:0;text-align:right;padding-right:10px;"> <el-col :span="6" style="padding:0;text-align:right;padding-right:10px;">
<el-button type="primary" size="small" @click="searchList()">查询</el-button> <el-button type="primary" size="small" @click="searchList()">查询</el-button>
<el-button <el-button
type="default" type="default"
...@@ -58,40 +74,80 @@ ...@@ -58,40 +74,80 @@
</el-form> </el-form>
</el-row> </el-row>
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="userId" label="用户ID" align="center"></el-table-column> <!-- <el-table-column prop="userId" label="用户ID" align="center"></el-table-column> -->
<el-table-column prop="userName" label="姓名" align="center"></el-table-column> <el-table-column prop="userName" label="姓名" align="center"></el-table-column>
<el-table-column prop="countyName" label="所属区县" align="center"></el-table-column>
<el-table-column prop="organizationName" label="所属机构" align="center"></el-table-column>
<el-table-column prop="departmentsName" label="科室" align="center"></el-table-column>
<el-table-column prop="projeceRole" label="角色" align="center"> <el-table-column prop="projeceRole" label="角色" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.projeceRole | projeceRoleType }}</span> <span>{{ scope.row.projeceRole | projeceRoleType }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="organizationName" label="所属机构" align="center"></el-table-column> <el-table-column prop="area" label="负责区域" align="center">
<el-table-column prop="departmentsName" label="科室" align="center"></el-table-column> <template slot-scope="scope">
<el-table-column fixed="right" label="操作" width="300" align="center"> <span v-if="scope.row.projeceRole == 'L2'">全部地区</span>
<span v-if="scope.row.projeceRole == 'L0'">-</span>
<span v-if="scope.row.projeceRole == 'L3' && scope.row.regions.length == 0">-</span>
<span
v-if="scope.row.projeceRole == 'L3' && scope.row.regions.length == 1"
>{{ scope.row.regions[0] }}</span>
<el-popover
v-if="scope.row.projeceRole == 'L3' && scope.row.regions.length > 1"
placement="bottom"
title
width="200"
trigger="hover"
class="more-text"
>
<p class="more-text">{{ scope.row.regions | areaList }}</p>
<p slot="reference">{{ scope.row | areaText }}</p>
</el-popover>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="350" align="left">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="primary" class="button-text"
type="text"
size="small" size="small"
v-show="showButton(scope.row,'L2')" v-show="showButton(scope.row,'L2')"
@click="openDialog(scope.row,'L2')" @click="openDialog(scope.row,'L2')"
>升级项目负责人</el-button> >升级项目负责人</el-button>
<el-button <el-button
type="primary" class="button-text"
type="text"
size="small" size="small"
v-show="showButton(scope.row,'L3')" v-show="showButton(scope.row,'L3')"
@click="openDialog(scope.row,'L3')" @click="openDialog(scope.row,'L3')"
>升级次级负责人</el-button> >升级次级负责人</el-button>
<el-button <el-button
type="primary" class="button-text"
type="text"
size="small"
v-show="showButton(scope.row,'L3_2')"
@click="openDialog(scope.row,'L3_2')"
>降为次级负责人</el-button>
<el-button
class="button-text"
type="text"
size="small" size="small"
v-show="showButton(scope.row,'L0')" v-show="showButton(scope.row,'L0')"
@click="openDialog(scope.row,'L0')" @click="openDialog(scope.row,'L0')"
>降为普通用户</el-button> >降为普通用户</el-button>
<el-button
class="button-text"
type="text"
size="small"
v-show="showAppend(scope.row.projeceRole)"
@click="addArea(scope.row)"
:disabled="activeUser !== 'L1'"
>追加区域权限</el-button>
</template> </template>
</el-table-column> </el-table-column>
<div slot="empty"> <div slot="empty">
<div class="table-empty"> <div class="table-empty">
<img src="../../assets/image/no-content1.png"> <img src="../../assets/image/no-content1.png" />
<p>没有查询到相关结果</p> <p>没有查询到相关结果</p>
</div> </div>
</div> </div>
...@@ -114,15 +170,16 @@ ...@@ -114,15 +170,16 @@
<span class="user-name">"{{ dialog.name }}"</span> <span class="user-name">"{{ dialog.name }}"</span>
{{ dialog.option }}吗?" {{ dialog.option }}吗?"
</p> </p>
<p v-else >该用户为此机构仅有的次级负责人,确认需要降级吗?</p> --> <p v-else >该用户为此机构仅有的次级负责人,确认需要降级吗?</p>-->
<p v-if="numL3 <= 1 && scopeRow.projeceRole == 'L3'" class="dialog-p"> <p
该用户为此机构仅有的次级负责人,确认需要降级吗? v-if="numL3 <= 1 && scopeRow.projeceRole == 'L3'"
</p> class="dialog-p"
>该用户为此机构仅有的次级负责人,确认需要降级吗?</p>
<p v-else> <p v-else>
确认将{{ dialog.role }} 确认将{{ dialog.role }}
<span class="user-name">"{{ dialog.name }}"</span> <span class="user-name">"{{ dialog.name }}"</span>
{{ dialog.option }}吗?" {{ dialog.option }}吗?
</p> </p>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
...@@ -132,14 +189,104 @@ ...@@ -132,14 +189,104 @@
</el-dialog> </el-dialog>
<el-dialog title :visible.sync="dialogFull" width="30%" center> <el-dialog title :visible.sync="dialogFull" width="30%" center>
<p class="dialog-p"> <p class="dialog-p">
无法操作,项目负责人已满 添加数量已达上限,不可继续添加
<span class="user-name">5人</span> <!-- <span class="user-name">5人</span> -->
</p> </p>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="default" size="small" @click="dialogFull = false">取消</el-button> <el-button type="default" size="small" @click="dialogFull = false">取消</el-button>
<el-button type="primary" size="small" @click="dialogFull = false">确定</el-button> <el-button type="primary" size="small" @click="dialogFull = false">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
title="导入成功"
:visible.sync="dialogSuccess"
width="30%"
class="dialog-success"
center
>
<p>
本次成功导入
<span class="upload-text">{{ updateNum }}条</span> 数据
</p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="dialogSuccess = false">关闭</el-button>
</span>
</el-dialog>
<el-dialog title="导入失败" :visible.sync="dialogFail" width="30%" class="dialog-fail" center>
<div class="fail-type" v-if="failType == 1">
<p>表格不符合格式要求,请修正后再次导入</p>
<p class="fail-notice">仅支持一次导入5000条数据</p>
</div>
<div class="fail-type" v-if="failType == 2">
<p>
<span class="fail-num">{{ failNum }}条</span> 数据不符合格式要求,请修正后再次导入
</p>
<p class="fail-notice">仅支持xlsx格式的文件</p>
<p class="fail-link" @click="download('fail')">下载错误数据></p>
</div>
<span slot="footer" class="dialog-footer">
<el-button class="fail-close" size="small" @click="dialogFail = false">取消</el-button>
<el-upload
class="upload-button"
action="#"
accept=".xlsx"
multiple
:limit="1"
:before-upload="beforeUpload"
>
<el-button
stype="position: absolute;top: -14px;"
type="primary"
size="small"
@click="updateAgain()"
>重新导入</el-button>
</el-upload>
</span>
</el-dialog>
<el-dialog title="追加区域权限" :visible.sync="dialogArea" width="70%" class="dialog-area" center>
<el-col class="area-choose" :span="15">
<el-tree
default-expand-all
:data="treeData"
show-checkbox
node-key="id"
ref="tree"
highlight-current
:props="defaultProps"
@check="onChecked"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span>
<el-button
type="text"
icon="el-icon-caret-bottom"
size="small"
@click="() => append(data,node)"
></el-button>
</span>
</span>
</el-tree>
</el-col>
<el-col class="area-choose" :span="8">
<p class="area-p">
<i class="el-icon-bottom"></i>
追加下列区域的学情报告查看权限 已选择({{ tagsRegion.length }})
</p>
<el-tag
v-for="tag in tagsRegion"
:key="tag.name"
closable
:type="tag.type"
@close="handleCloseTree(tag)"
>{{tag.name}}</el-tag>
</el-col>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="dialogArea = false">取消</el-button>
<el-button type="primary" size="small" @click="updateAttachRegion()">确认</el-button>
</span>
</el-dialog>
</div> </div>
</div> </div>
</template> </template>
...@@ -147,7 +294,10 @@ ...@@ -147,7 +294,10 @@
import BreadCrumb from "../../components/breadcrumb.vue"; import BreadCrumb from "../../components/breadcrumb.vue";
import { create } from "domain"; import { create } from "domain";
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from '../../utils/utils' import * as commonUtil from "../../utils/utils";
import { getExeclUrl } from "@/utils/index";
import { uploadExcel } from "@/utils/education/educationApi";
import * as operationData from "../../utils/operation";
let vm = null; let vm = null;
export default { export default {
components: { components: {
...@@ -182,9 +332,13 @@ export default { ...@@ -182,9 +332,13 @@ export default {
departmentsList: [], departmentsList: [],
organizationList: [], organizationList: [],
roleList: [ roleList: [
// {
// label: "内部管理员",
// value: "L1"
// },
{ {
label: "内部管理员", label: "全部",
value: "L1" value: ""
}, },
{ {
label: "项目负责人", label: "项目负责人",
...@@ -210,7 +364,28 @@ export default { ...@@ -210,7 +364,28 @@ export default {
}, },
dialogFull: false, dialogFull: false,
scopeRow: {}, scopeRow: {},
activeUser: '', activeUser: "",
updateNum: 0,
dialogSuccess: false,
failType: 2,
failNum: 0,
failExcelUrl: "",
dialogFail: false,
defaultProps: {
children: "children",
label: "label",
isLeaf: "isLeaf"
},
treeData: [],
dialogArea: false,
tagsRegion: [],
doctorId: "",
allSelectedKeys: [],
attachRegionId: "",
creator: false,
hospitalMasterAdmin: false,
}; };
}, },
created() { created() {
...@@ -222,6 +397,87 @@ export default { ...@@ -222,6 +397,87 @@ export default {
commonUtil.resizeHeight(); commonUtil.resizeHeight();
}, },
methods: { methods: {
updateAgain() {
vm.dialogFail = false;
},
download(type) {
let downloadUrl = "";
if (type == "model") {
downloadUrl = getExeclUrl(
"%E6%95%99%E5%9F%B9%E9%A1%B9%E7%9B%AE%E8%A7%92%E8%89%B2%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx"
);
} else if (type == "fail") {
downloadUrl = vm.failExcelUrl;
}
console.log("下载", type, downloadUrl);
setTimeout(() => {
window.open(downloadUrl);
}, 500);
},
beforeUpload(file) {
vm.dialogFail = false;
console.log(file);
let arr = file.type.split("/");
let ext = "." + arr[1];
let name = file.name;
let reader = new FileReader();
reader.onload = function(e) {
let fileJson = {
fileName: file.name,
file: e.target.result.substr(e.target.result.indexOf("base64,") + 7),
ext: ext
};
let fileArray = [
{
type: "",
base64: fileJson
}
];
let req = {
fileArray: fileArray
};
let projectId = vm.formInline.portalProjectId;
console.log("req", req);
let reqStr = JSON.stringify(req);
console.log("reqStr", reqStr);
openLoading(vm);
uploadExcel(reqStr, projectId).then(res => {
setTimeout(function() {
closeLoading(vm);
if (res.code == "000000") {
if (res.data.success == true) {
//导入成功
vm.dialogSuccess = true;
vm.updateNum = res.data.total;
vm.queryRoleList();
} else {
if (res.data.outCount == true) {
//导入数据超5000
vm.failType = 1;
vm.dialogFail = true;
vm.failNum = res.data.total;
vm.failExcelUrl = res.data.url;
} else {
//导入失败
// setTimeout(function() {
vm.failType = 2;
vm.dialogFail = true;
vm.failNum = res.data.total;
vm.failExcelUrl = res.data.url;
// }, 800);
}
}
} else {
//接口失败
vm.$message.error(res.message);
}
console.log(res);
}, 1000);
});
};
reader.readAsDataURL(file);
},
searchList() { searchList() {
this.formInline.pageNo = 1; this.formInline.pageNo = 1;
this.queryRoleList(); this.queryRoleList();
...@@ -244,7 +500,8 @@ export default { ...@@ -244,7 +500,8 @@ export default {
vm.tableData = res.data.projectRoleInfoModels; vm.tableData = res.data.projectRoleInfoModels;
vm.totalRows = res.data.total; vm.totalRows = res.data.total;
vm.activeUser = res.data.activeUser; vm.activeUser = res.data.activeUser;
console.log('activeUser',vm.activeUser); vm.creator = res.data.creator;
vm.hospitalMasterAdmin = res.data.hospitalMasterAdmin;
//this.roleList = setRoleList(res.data.roleList); //this.roleList = setRoleList(res.data.roleList);
this.organizationList = res.data.organizationList; this.organizationList = res.data.organizationList;
this.departmentsList = res.data.departmentsList; this.departmentsList = res.data.departmentsList;
...@@ -263,15 +520,17 @@ export default { ...@@ -263,15 +520,17 @@ export default {
nowL: this.scopeRow.projeceRole nowL: this.scopeRow.projeceRole
}; };
vm.GET("portal/portalProjectOrRole/roleLevelUpdate", req).then(res => { vm.GET("portal/portalProjectOrRole/roleLevelUpdate", req).then(res => {
this.dialog.show = false; vm.dialog.show = false;
if (res.code == "000000") { if (res.code == "000000") {
console.log(res); console.log(res);
this.queryRoleList(); vm.queryRoleList();
vm.$message({
message: "设置成功!",
type: "success"
});
} else {
this.$message.error(res.message);
} }
vm.$message({
type: 'info',
message: res.message,
})
}); });
}, },
handleSizeChange(val) { handleSizeChange(val) {
...@@ -302,10 +561,10 @@ export default { ...@@ -302,10 +561,10 @@ export default {
//按钮展示情况 //按钮展示情况
showButton(row, projeceRole) { showButton(row, projeceRole) {
let flag = false; let flag = false;
if(vm.activeUser == "L1") { if (vm.activeUser == "L1") {
//当前内部管理员 //当前内部管理员
if (row.projeceRole == "L2") { if (row.projeceRole == "L2") {
if (projeceRole == "L0") { if (projeceRole == "L0" || projeceRole == "L3_2") {
flag = true; flag = true;
} }
} else if (row.projeceRole == "L3") { } else if (row.projeceRole == "L3") {
...@@ -319,25 +578,62 @@ export default { ...@@ -319,25 +578,62 @@ export default {
} }
} else if (vm.activeUser == "L2") { } else if (vm.activeUser == "L2") {
//当前项目负责人 //当前项目负责人
if (row.projeceRole == "L3") { //新规则
if (projeceRole == "L2" || projeceRole == "L0") { if (vm.creator == true) {
flag = true; //项目负责人是:项目创建者
if (row.projeceRole == "L3") {
if (projeceRole == "L2" || projeceRole == "L0") {
flag = true;
}
} else if (row.projeceRole == "L0") {
if (projeceRole == "L2" || projeceRole == "L3") {
flag = true;
}
} else if (row.projeceRole == "L2") {
//创建项目项目管理员可以修改其他项目管理员
if (projeceRole == "L0" || projeceRole == "L3_2") {
flag = true;
}
} }
} else if (row.projeceRole == "L0") { } else {
if (projeceRole == "L2" || projeceRole == "L3") { //不是项目创建者
flag = true; if (row.projeceRole == "L3") {
if (projeceRole == "L0") {
flag = true;
}
} else if (row.projeceRole == "L0") {
if (projeceRole == "L3") {
flag = true;
}
} }
} }
} else if (vm.activeUser == "L3") { } else if (vm.activeUser == "L3") {
//当前次级负责人 //当前次级负责人
if (row.projeceRole == "L0") { //新规则
if (projeceRole == "L3") { if (vm.hospitalMasterAdmin == true) {
flag = true; //次级负责人是:构主管理员
if (row.projeceRole == "L3") {
if (projeceRole == "L0") {
flag = true;
}
} else if (row.projeceRole == "L0") {
if (projeceRole == "L3") {
flag = true;
}
} }
} }
} }
return flag; return flag;
}, },
showAppend(projeceRole) {
let flag = false;
if (vm.activeUser == "L1" || vm.activeUser == "L1") {
if (projeceRole == "L3") {
flag = true;
}
}
return flag;
},
//打开弹出框 //打开弹出框
openDialog(row, projeceRole) { openDialog(row, projeceRole) {
console.log(row); console.log(row);
...@@ -349,10 +645,15 @@ export default { ...@@ -349,10 +645,15 @@ export default {
this.dialog.name = row.userName; this.dialog.name = row.userName;
this.scopeRow = row; this.scopeRow = row;
this.scopeRow.updateL = projeceRole; this.scopeRow.updateL = projeceRole;
if (projeceRole == "L3_2") {
this.scopeRow.updateL = "L3";
}
if (row.projeceRole == "L2") { if (row.projeceRole == "L2") {
this.dialog.role = "项目负责人"; this.dialog.role = "项目负责人";
if (projeceRole == "L0") { if (projeceRole == "L0") {
this.dialog.option = "降级为普通用户"; this.dialog.option = "降级为普通用户";
} else if (projeceRole == "L3_2") {
this.dialog.option = "降级为次级负责人";
} }
} else if (row.projeceRole == "L3") { } else if (row.projeceRole == "L3") {
this.dialog.role = "次级负责人"; this.dialog.role = "次级负责人";
...@@ -369,6 +670,278 @@ export default { ...@@ -369,6 +670,278 @@ export default {
this.dialog.option = "升级为次级负责人"; this.dialog.option = "升级为次级负责人";
} }
} }
},
addArea(row) {
vm.dialogArea = true;
vm.treeData = [];
vm.tagsRegion = [];
vm.getAdministrative(row);
},
getAdministrative(row) {
vm.doctorId = row.userId;
// let req = {
// projectId: vm.formInline.portalProjectId
// };
let req = {
projectId: vm.formInline.portalProjectId,
doctorId: row.userId
};
openLoading(vm);
vm.GET("portal/portalProjectOrRole/getAttachRegion", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
let administrativeAll = res.data.administrativeAll;
let administrative = res.data.administrative;
this.treeData = [];
this.treeData[0] = administrativeAll;
this.setTreeData(administrative);
vm.attachRegionId = res.data.attachRegionId;
}
});
},
//初始化范围树
setTreeData(administrative) {
let treeIdList = [];
let checkList = [];
for (let i = 0; i < administrative.length; i++) {
treeIdList.push(administrative[i].id);
checkList[i] = {};
checkList[i].name = administrative[i].label;
checkList[i].key = administrative[i].id;
}
//console.log(treeIdList);
this.$refs.tree.setCheckedKeys(treeIdList);
this.tagsRegion = checkList;
},
initCheckList(allSelectedKeys) {
this.tagsRegion = [];
// console.log(allSelectedKeys);
// console.log(this.$refs.tree.getCheckedNodes());
let nodeData = this.$refs.tree.getCheckedNodes();
for (let i = 0; i < nodeData.length; i++) {
for (let j = 0; j < allSelectedKeys.length; j++) {
if (
allSelectedKeys[j].type == 1 &&
nodeData[i].id == allSelectedKeys[j].key
) {
let tagObj = {};
tagObj.name = nodeData[i].label;
tagObj.key = nodeData[i].id;
this.tagsRegion.push(tagObj);
}
}
}
},
onChecked() {
// let cData = [],
// oldData = (this.treeData.length && this.treeData.slice()) || [],
// checkedKeys = this.$refs.tree.getCheckedKeys(),
// halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(),
// savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map(
// key => {
// return { type: 1, key: key };
// }
// ),
// savedHalfCheckedKeys = halfCheckedKeys.map(key => {
// return { type: 2, key: key };
// }),
// allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys);
// vm.allSelectedKeys = allSelectedKeys;
console.log(
"getHalfCheckedKeys():",
this.$refs.tree.getHalfCheckedKeys()
);
console.log(
"getSimpleCheckedNodes():",
operationData.getSimpleCheckedNodes(this.$refs.tree.store)
);
let checkedTree = operationData.getSimpleCheckedNodes(
this.$refs.tree.store
);
let halfCheckedTree = this.$refs.tree.getHalfCheckedKeys();
vm.allSelectedKeys = operationData.setSelectedKeys(
checkedTree,
halfCheckedTree
);
console.log("vm.allSelectedKeys", vm.allSelectedKeys);
vm.initCheckList(vm.allSelectedKeys);
},
getTreeCheck() {
// let cData = [],
// oldData = (this.treeData.length && this.treeData.slice()) || [],
// checkedKeys = this.$refs.tree.getCheckedKeys(),
// halfCheckedKeys = this.$refs.tree.getHalfCheckedKeys(),
// savedCheckedKeys = this.handlerCheckedData(oldData, checkedKeys).map(
// key => {
// return { type: 1, key: key };
// }
// ),
// savedHalfCheckedKeys = halfCheckedKeys.map(key => {
// return { type: 2, key: key };
// }),
// allSelectedKeys = savedCheckedKeys.concat(savedHalfCheckedKeys);
let checkedTree = operationData.getSimpleCheckedNodes(
this.$refs.tree.store
);
let halfCheckedTree = this.$refs.tree.getHalfCheckedKeys();
let allSelectedKeys = operationData.setSelectedKeys(
checkedTree,
halfCheckedTree
);
vm.allSelectedKeys = allSelectedKeys;
return allSelectedKeys;
},
// // 递归删除列表中所有子节点
// delSubKeysByNode(node, checkedKeys) {
// let idIndex;
// if (node.children && node.children.length) {
// if (node.children && node.children.length) {
// node.children.forEach(elm => {
// idIndex = checkedKeys.findIndex(id => {
// return id === elm.id;
// });
// if (idIndex > -1) {
// checkedKeys.splice(idIndex, 1);
// }
// if (elm.children && elm.children.length) {
// this.delSubKeysByNode(elm, checkedKeys);
// }
// });
// }
// }
// },
// // 去除子节点
// handlerCheckedData(oldData, checkedKeys) {
// oldData.forEach(element => {
// for (let i = 0; i < checkedKeys.length; i++) {
// // 如果此节点被选中,则删除所有子节点
// if (element.id === checkedKeys[i]) {
// this.delSubKeysByNode(element, checkedKeys);
// } else {
// if (element.children && element.children.length) {
// this.handlerCheckedData(element.children, checkedKeys);
// }
// }
// }
// });
// return checkedKeys;
// },
//添加子节点
append(data, node) {
console.log("data:", data);
console.log("node:", node);
if (data.children.length == 0) {
//let id = data.id + "add";
let statusValue = 0;
if (node.checked == true) {
statusValue = 1;
}
let req = {
id: data.id,
status: statusValue,
disabled: data.disabled
};
vm.GET("portal/scope/v1/administrative/children", req).then(res => {
if (res.code == "000000") {
let administrative = res.data.administrative;
//console.log(administrative);
data.children = administrative;
this.appendCheck(administrative, node.checked);
}
});
}
},
//子节点选中
appendCheck(administrative, checked) {
//console.log(checked,administrative)
let checkList = [];
checkList = this.$refs.tree.getCheckedKeys();
if (checked) {
for (let i = 0; i < administrative.length; i++) {
checkList.push(administrative[i].id);
// console.log(checkList);
}
}
this.$nextTick(function() {
this.$refs.tree.setCheckedKeys(checkList);
});
},
//通过key设置tree
setCheckedKeys(tagsRegion) {
console.log(tagsRegion);
let treeKeyList = [];
for (let index = 0; index < tagsRegion.length; index++) {
treeKeyList[index] = tagsRegion[index].key;
}
console.log(treeKeyList);
this.$refs.tree.setCheckedKeys(treeKeyList);
},
//删除label节点 同步树结构
handleCloseTree(tag) {
this.tagsRegion.splice(this.tagsRegion.indexOf(tag), 1);
this.setCheckedKeys(this.tagsRegion);
},
//设定的行政范围内容
getScope(type) {
let scope = "";
let noChangeTree = this.getTreeCheck();
console.log("this.allSelectedKeys", this.allSelectedKeys);
if (this.allSelectedKeys.length > 0) {
for (let i = 0; i < this.allSelectedKeys.length; i++) {
scope +=
this.allSelectedKeys[i].key + ":" + this.allSelectedKeys[i].type;
if (i < this.allSelectedKeys.length - 1) {
scope += "|";
}
}
} else {
// let noChangeTree = this.getTreeCheck();
console.log("noChangeTree值", noChangeTree);
if (noChangeTree.length > 0) {
for (let i = 0; i < noChangeTree.length; i++) {
scope += noChangeTree[i].key + ":" + noChangeTree[i].type;
if (i < noChangeTree.length - 1) {
scope += "|";
}
}
} else {
//选全国项目
if (this.tagsRegion.length > 0 && this.tagsRegion[0].key == "000") {
scope = "000:1";
console.log(this.tagsRegion, "scope", scope);
}
}
}
//console.log(scope);
return scope;
},
updateAttachRegion() {
let req = {
attachRegionId: vm.attachRegionId,
doctorId: vm.doctorId,
projectId: vm.formInline.portalProjectId,
scopeOfAdministrative: vm.getScope()
};
console.log("req", req);
vm.POST(
"portal/portalProjectOrRole/insertOrUpdateAttachRegion",
req
).then(res => {
if (res.code == "000000") {
vm.$message({
message: "设置成功",
type: "success"
});
vm.dialogArea = false;
vm.queryRoleList();
} else {
vm.$message.error(res.message);
}
});
} }
} }
}; };
...@@ -382,10 +955,30 @@ export default { ...@@ -382,10 +955,30 @@ export default {
margin-left: 30px; margin-left: 30px;
} }
.header-title { .header-title {
position: relative;
padding: 10px 12px; padding: 10px 12px;
font-size: 12px; font-size: 12px;
color: #449284; color: #449284;
border-bottom: 1px solid #efefef; border-bottom: 1px solid #efefef;
.upload-excel {
position: absolute;
top: -2px;
right: 27px;
float: right;
}
.down-button {
margin-left: 10px;
}
}
.button-text {
color: #449284;
}
.user-name {
color: #449284;
}
.more-text {
max-height: 40px;
overflow-y: scroll;
} }
.dialog-p { .dialog-p {
text-align: center; text-align: center;
...@@ -393,6 +986,90 @@ export default { ...@@ -393,6 +986,90 @@ export default {
color: #449284; color: #449284;
} }
} }
.dialog-success {
p {
text-align: center;
.upload-text {
color: #449284;
}
}
}
.dialog-fail {
.fail-close {
margin-left: -70px;
}
.upload-button {
position: absolute;
float: right;
width: 80px;
bottom: 20px;
right: 120px;
}
.fail-type {
p {
margin-top: 10px;
}
.fail-num {
color: #db3f52;
}
.fail-notice {
color: #e3e3e3;
font-size: 13px;
}
.fail-link {
text-align: center;
color: #449284;
cursor: pointer;
}
}
}
.dialog-area {
.el-tree-node__expand-icon {
display: none;
}
.el-dialog {
height: 700px;
.el-dialog__body {
overflow: hidden;
.area-choose {
padding: 10px 0 0 10px;
height: 515px;
overflow-y: scroll;
border: 1px solid #dddddd;
.el-icon-caret-bottom {
color: #449284;
}
.area-p {
color: #449284;
margin-bottom: 10px;
}
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #449284;
border-color: #449284;
}
.is-checked .el-checkbox__inner {
background-color: #449284;
border-color: #449284;
}
}
}
}
.el-tag {
margin: 0 10px 10px 0;
border: 1.3px solid #48a8fe;
color: #1e92fe;
background-color: #e7f6fe;
.el-icon-close {
width: 13px;
height: 13px;
line-height: 13px;
font-size: 12px;
background-color: #0486fe;
border-radius: 50%;
color: #d4edfe;
}
}
}
.table-empty { .table-empty {
img { img {
width: 100px; width: 100px;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册