Merge pull request 'dj' (#293) from dj into master
Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/293
This commit is contained in:
@@ -38,15 +38,7 @@ export const getProjectOption = () => {
|
||||
method: "get"
|
||||
});
|
||||
};
|
||||
export const getAllocationCollect = (allocationId) => {
|
||||
return request({
|
||||
url: '/workflow/mosr/cost/allocation/collect',
|
||||
method: "post",
|
||||
params:{
|
||||
allocationId:allocationId
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const editAllocation = (data) => {
|
||||
return request({
|
||||
url: '/workflow/mosr/cost/allocation/edit',
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount"
|
||||
v-if="localFormData.isSpecialFund!==null||localFormData.isSpecialFund">
|
||||
v-if="localFormData.specialFundAmount">
|
||||
<span>{{ localFormData.specialFundAmount }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -203,10 +203,15 @@ const getList = async () => {
|
||||
localData.loading = true
|
||||
try {
|
||||
const {code, data, msg} = await requestList(api, queryParmas)
|
||||
|
||||
if (code === 1000) {
|
||||
localData.list = data.rows
|
||||
localData.total = data.total
|
||||
if(data.rows){
|
||||
localData.list = data.rows
|
||||
}else {
|
||||
localData.list = data
|
||||
}
|
||||
if(data.total){
|
||||
localData.total = data.total
|
||||
}
|
||||
localData.loading = false
|
||||
} else {
|
||||
ElNotification({
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<expense-detail/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分摊汇总" name="second" v-loading="loading">
|
||||
<fvTable v-if="showTable" ref="tableRef" :tableConfig="tableConfig" :data="collectList">
|
||||
<fvTable v-if="showTable" ref="tableRef" :tableConfig="tableConfig">
|
||||
<template #empty>
|
||||
<el-empty description="暂无数据"/>
|
||||
</template>
|
||||
@@ -52,7 +52,7 @@ import OperationRender from '@/views/workflow/common/OperationRender.vue'
|
||||
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue'
|
||||
import {ElNotification} from "element-plus";
|
||||
import {useProcessStore} from '@/stores/processStore.js';
|
||||
import {getAllocationDetail,getAllocationCollect} from "@/api/expense-manage";
|
||||
import {getAllocationDetail} from "@/api/expense-manage";
|
||||
|
||||
const processStore = useProcessStore()
|
||||
const route = useRoute()
|
||||
@@ -62,7 +62,6 @@ const auditOpinion = ref('')
|
||||
const shareProcessViewer = ref(true)
|
||||
const showTable = ref(true)
|
||||
const loading = ref(false)
|
||||
const collectList = ref([])
|
||||
const activeName = ref('first')
|
||||
const tableConfig = reactive({
|
||||
columns: [
|
||||
@@ -112,7 +111,11 @@ const tableConfig = reactive({
|
||||
label: '摘要',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
],
|
||||
api:'/workflow/mosr/cost/allocation/collect',
|
||||
params:{
|
||||
allocationId:route.query.id
|
||||
}
|
||||
})
|
||||
const getDetail = async () => {
|
||||
const id = route.query.id
|
||||
@@ -139,30 +142,9 @@ const getDetail = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
const getDetailCollect = async () => {
|
||||
loading.value = true
|
||||
showTable.value = false
|
||||
const {code, data, msg} = await getAllocationCollect(route.query.id)
|
||||
if (code === 1000) {
|
||||
collectList.value = data
|
||||
nextTick(() => {
|
||||
loading.value = false
|
||||
showTable.value = true
|
||||
})
|
||||
}else {
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: msg,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}
|
||||
const handleClick = (tab) => {
|
||||
console.log('tab',tab.index)
|
||||
if (tab.index==0) {
|
||||
getDetail()
|
||||
}else {
|
||||
getDetailCollect()
|
||||
}
|
||||
}
|
||||
getDetail()
|
||||
|
||||
@@ -2,33 +2,33 @@
|
||||
<div v-loading="loading" class="add-block">
|
||||
<baseTitle title="需求征集信息录入"></baseTitle>
|
||||
<el-form :model="formData" inline class="query-form" ref="demandForm" :rules="rules">
|
||||
<el-form-item label="名称" prop="requirementName">
|
||||
<el-input v-model="formData.requirementName" placeholder="请输入名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属公司" prop="companyIds">
|
||||
<el-tree-select v-model="formData.companyIds" :data="companyOption" style="width: 100%;"
|
||||
filterable clearable :check-strictly="true" multiple/>
|
||||
</el-form-item>
|
||||
<el-form-item label="征集类型" prop="collectType">
|
||||
<el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in typeOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="deadline">
|
||||
<el-config-provider>
|
||||
<el-date-picker
|
||||
v-model="formData.deadline"
|
||||
type="date"
|
||||
placeholder="截止时间"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-config-provider>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="requirementName">
|
||||
<el-input v-model="formData.requirementName" placeholder="请输入名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属公司" prop="companyIds">
|
||||
<el-tree-select v-model="formData.companyIds" :data="companyOption" style="width: 100%;"
|
||||
filterable clearable :check-strictly="true" multiple/>
|
||||
</el-form-item>
|
||||
<el-form-item label="征集类型" prop="collectType">
|
||||
<el-select v-model="formData.collectType" placeholder="征集类型" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in typeOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="deadline">
|
||||
<el-config-provider>
|
||||
<el-date-picker
|
||||
v-model="formData.deadline"
|
||||
type="date"
|
||||
placeholder="截止时间"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-config-provider>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="是否专项资金" prop="isSpecialFund">
|
||||
@@ -53,8 +53,13 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<baseTitle title="征集说明"></baseTitle>
|
||||
<Tinymce v-if="showTinymce" image-url="/notice/file" file-url="/notice/file"
|
||||
v-model:value="formData.collectExplain" />
|
||||
<el-input
|
||||
v-model="formData.collectExplain"
|
||||
style="width:100%"
|
||||
:rows="5"
|
||||
type="textarea"
|
||||
placeholder="请输入征集说明"
|
||||
/>
|
||||
<baseTitle title="申请文件"></baseTitle>
|
||||
<file-upload v-if="checkFormPrem('fileList')" @getFile="getFile"/>
|
||||
<fvTable style="width: 100%;max-height: 300px;" v-if="showTable"
|
||||
@@ -67,13 +72,11 @@
|
||||
<div class="approval-record">
|
||||
<baseTitle title="流程"></baseTitle>
|
||||
<process-diagram-viewer mode="view" v-if="processDiagramViewer"/>
|
||||
<!-- <div class="process" id="approvalRecord">-->
|
||||
<!-- <process-tree ref="processTree" mode="view" id-name="approvalRecord"/>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="oper-page-btn">
|
||||
<el-button color="#DED0B2" v-if="routerName==='Requirement/add'" @click="handleSubmit(demandForm)">提交</el-button>
|
||||
<el-button color="#DED0B2" v-else @click="handleResubmit">重新提交</el-button>
|
||||
<el-button @click="handleBack">返回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -91,7 +94,7 @@ import {
|
||||
} from "@/api/project-demand/index.js";
|
||||
import FileUpload from "@/components/FileUpload.vue";
|
||||
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
|
||||
import {ElMessage, ElMessageBox, ElNotification} from "element-plus";
|
||||
import {ElMessageBox, ElNotification} from "element-plus";
|
||||
import {useRoute, useRouter} from 'vue-router'
|
||||
import {getSubCompOpt} from '@/api/user/user.js'
|
||||
import {useTagsView} from '@/stores/tagsview.js'
|
||||
@@ -110,7 +113,7 @@ const formData = ref({
|
||||
deadline: '',
|
||||
collectExplain: '',
|
||||
fileList: [],
|
||||
isSpecialFund:false
|
||||
isSpecialFund: false
|
||||
})
|
||||
const showTinymce = ref(true)
|
||||
const routerName = ref(router.currentRoute.value.name)
|
||||
@@ -172,10 +175,12 @@ const tableConfig = reactive({
|
||||
return (
|
||||
<div>
|
||||
<el-button type="primary" link onClick={() => handleDownload(row)}>下载</el-button>
|
||||
<popover-delete name={row.originalFileName} type={'文件'} btnType={'danger'}
|
||||
perm={['mosr:requirement:del']}
|
||||
onDelete={() => handleDelete(row)}/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
// <el-button type="primary" size="large" link onClick={() => handleDelete(row)}>删除</el-button>
|
||||
}
|
||||
]
|
||||
})
|
||||
@@ -183,7 +188,7 @@ const tableConfig = reactive({
|
||||
const checkFormPrem = (formKey) => {
|
||||
if (formPermMap.value.hasOwnProperty(formKey)) {
|
||||
let formItem = formPermMap.value[formKey];
|
||||
return formItem.perm === 'EDIT'
|
||||
return formItem.perm === 'EDIT'
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
@@ -203,9 +208,10 @@ const compositeParam = (item) => {
|
||||
let tag = ''
|
||||
if (!formData.value.collectType && routerName.value === 'Requirement/add') {
|
||||
tag = '需求征集'
|
||||
}else if(!formData.value.collectType &&routerName.value === 'Requirement/edit'){
|
||||
} else if (!formData.value.collectType && routerName.value === 'Requirement/edit') {
|
||||
tag = '需求征集'
|
||||
}if (formData.value.collectType) {
|
||||
}
|
||||
if (formData.value.collectType) {
|
||||
tag = formData.value.collectType
|
||||
}
|
||||
return {
|
||||
@@ -250,7 +256,7 @@ const init = async () => {
|
||||
nextTick(() => {
|
||||
processDiagramViewer.value = true
|
||||
})
|
||||
}else {
|
||||
} else {
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: res.msg,
|
||||
@@ -277,15 +283,15 @@ const submitParam = (item) => {
|
||||
requirementName: item.requirementName,
|
||||
fileList: files,
|
||||
deploymentId: processInstanceData.value.deploymentId,
|
||||
isSpecialFund:item.isSpecialFund,
|
||||
specialFund:item.specialFund
|
||||
isSpecialFund: item.isSpecialFund,
|
||||
specialFund: item.specialFund
|
||||
}
|
||||
}
|
||||
const handleSubmit = async (instance) => {
|
||||
if (!instance) return
|
||||
instance.validate(async (valid) => {
|
||||
if (!valid) return
|
||||
const {msg,code} = await addRequirement(submitParam(formData.value))
|
||||
const {msg, code} = await addRequirement(submitParam(formData.value))
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: msg,
|
||||
@@ -338,28 +344,16 @@ const handleBack = () => {
|
||||
history.back()
|
||||
}
|
||||
const handleDelete = (row) => {
|
||||
ElMessageBox.confirm(`确认删除名称为${row.originalFileName}的表格吗?`, '系统提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteFile(row.fileId).then(res => {
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: res.msg,
|
||||
type: res.code === 1000 ? 'success' : 'error'
|
||||
})
|
||||
if (res.code === 1000) {
|
||||
formData.value.fileList.splice(formData.value.fileList.findIndex((item) => item.id === row.fileId), 1);
|
||||
}
|
||||
});
|
||||
}).catch(() => {
|
||||
deleteFile(row.fileId).then(res => {
|
||||
ElNotification({
|
||||
title: '提示',
|
||||
message: '用户取消删除! ',
|
||||
type: 'warning'
|
||||
message: res.msg,
|
||||
type: res.code === 1000 ? 'success' : 'error'
|
||||
})
|
||||
})
|
||||
if (res.code === 1000) {
|
||||
formData.value.fileList.splice(formData.value.fileList.findIndex((item) => item.id === row.fileId), 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
@@ -376,9 +370,11 @@ onMounted(async () => {
|
||||
:deep(.el-empty__description) {
|
||||
margin-top: 0;
|
||||
}
|
||||
:deep(.el-table--fit ){
|
||||
height: 300px!important;
|
||||
|
||||
:deep(.el-table--fit ) {
|
||||
height: 300px !important;
|
||||
}
|
||||
|
||||
.add-block {
|
||||
//display: flex;
|
||||
//justify-content: space-between;
|
||||
|
||||
@@ -8,25 +8,25 @@
|
||||
<el-input v-model="formData.projectName" placeholder="请输入项目名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="是否专项资金" prop="isSpecialFund">
|
||||
<el-col :span="5" v-if="!route.query.id">
|
||||
<el-form-item label="是否专项资金" prop="isSpecialFund" >
|
||||
<el-radio-group v-model="formData.isSpecialFund">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-col :span="formData.isSpecialFund?(!route.query.id?6:12):6">
|
||||
<el-form-item label="专项资金" prop="specialFund" v-if="formData.isSpecialFund">
|
||||
<!-- <span>{{ getSpecialFundName(formData.specialFund) }}</span>-->
|
||||
<el-select v-model="formData.specialFund" placeholder="请选择专项资金" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in specialFundOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<span v-if="route.query.id">{{ getSpecialFundName(formData.specialFund) }}</span>
|
||||
<el-select v-else v-model="formData.specialFund" placeholder="请选择专项资金" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in specialFundOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -180,37 +180,37 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="发明专利(项)" prop="inventionPatent">
|
||||
<el-input v-model="formData.inventionPatent" clearable></el-input>
|
||||
<el-input-number v-model="formData.inventionPatent" placeholder="请输入发明专利" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="实用性新型专利(项)" prop="newPatent">
|
||||
<el-input v-model="formData.newPatent" clearable></el-input>
|
||||
<el-input-number v-model="formData.newPatent" placeholder="请输入实用性新型专利" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="软件著作权(项)" prop="softwareCopyright">
|
||||
<el-input v-model="formData.softwareCopyright" clearable></el-input>
|
||||
<el-input-number v-model="formData.softwareCopyright" placeholder="请输入软件著作权" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="著作权(项)" prop="copyright">
|
||||
<el-input v-model="formData.copyright" clearable></el-input>
|
||||
<el-input-number v-model="formData.copyright" placeholder="请输入著作权" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="其他(项)" prop="other">
|
||||
<el-input v-model="formData.other" clearable></el-input>
|
||||
<el-input-number v-model="formData.other" placeholder="请输入其他" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="经济概算(元)" prop="economicEstimate">
|
||||
<el-input v-model="formData.economicEstimate" clearable></el-input>
|
||||
<el-input-number v-model="formData.economicEstimate" placeholder="请输入经济概算" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="其中申请公司总部科技创新专项资金(元)" prop="specialFundAmount" v-if="formData.isSpecialFund">
|
||||
<el-input v-model="formData.specialFundAmount" clearable></el-input>
|
||||
<el-input-number v-model="formData.specialFundAmount" placeholder="请输入专项资金" :controls="false"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
@@ -229,16 +229,12 @@
|
||||
@getAttachment="getAttachment"
|
||||
@getOtherFile="getOtherFile" :showFileList="true" :formData="formData"
|
||||
:preview="name === 'Summary/edit'"/>
|
||||
<!-- <fvForm :schema="schame" @getInstance="getInstance"></fvForm>-->
|
||||
<div class="approval-record">
|
||||
<baseTitle title="流程"></baseTitle>
|
||||
<process-diagram-viewer mode="view" v-if="processDiagramViewer"/>
|
||||
<!-- <div class="process" id="approvalRecord">-->
|
||||
<!-- <process-tree ref="processTree" mode="view" id-name="approvalRecord"/>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="oper-page-btn">
|
||||
<!-- <el-button type="info" @click="staging">存为草稿</el-button>-->
|
||||
<!-- <el-button type="info" @click="staging">存为草稿</el-button>-->
|
||||
<el-button color="#DED0B2" v-if="name==='Summary/add'" @click="handleSubmit(summaryForm)">发布</el-button>
|
||||
<el-button color="#DED0B2" v-else @click="handleResubmit">重新发布</el-button>
|
||||
</div>
|
||||
@@ -274,6 +270,7 @@ const showTable = ref(true)
|
||||
const otherFileList = ref([])
|
||||
const file = ref({})
|
||||
const formData = ref({
|
||||
isSpecialFund: false,
|
||||
industryUniversityResearch: '0',
|
||||
governmentDeclaration: '0',
|
||||
})
|
||||
@@ -417,7 +414,7 @@ const handleSubmit = debounce(async (instance) => {
|
||||
// }
|
||||
let params = {
|
||||
...formData.value,
|
||||
isSpecialFund: formData.value.isSpecialFund? formData.value.isSpecialFund : false,
|
||||
isSpecialFund: formData.value.isSpecialFund ? formData.value.isSpecialFund : false,
|
||||
deploymentId: deploymentId.value,
|
||||
fileList: otherFiles,
|
||||
singleFile: singleFile,
|
||||
@@ -472,7 +469,7 @@ const handleResubmit = debounce(() => {
|
||||
//todo requirementId
|
||||
let params = {
|
||||
...formData.value,
|
||||
isSpecialFund: formData.value.isSpecialFund? formData.value.isSpecialFund : false,
|
||||
isSpecialFund: formData.value.isSpecialFund ? formData.value.isSpecialFund : false,
|
||||
deploymentId: deploymentId.value,
|
||||
fileList: otherFiles,
|
||||
singleFile: singleFile,
|
||||
@@ -560,5 +557,13 @@ const staging = async () => {
|
||||
.detail-block {
|
||||
overflow: hidden;
|
||||
padding-bottom: 30px;
|
||||
|
||||
:deep(.el-input-number) {
|
||||
width: 100%;
|
||||
|
||||
.el-input__inner {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,69 +1,67 @@
|
||||
<template>
|
||||
<el-dialog custom-class="custom-dialog" class="border" :border="false" closeFree width="600px"
|
||||
<el-dialog custom-class="custom-dialog" class="border" :border="false" closeFree width="1000px" style="height: 676px"
|
||||
:title="title" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="true"
|
||||
:destroy-on-close="true">
|
||||
<div>
|
||||
<div class="picker">
|
||||
<div class="candidate" v-loading="loading">
|
||||
<el-input v-model="filterText" @change="getList(1)"
|
||||
clearable placeholder="输入部门/昵称进行搜索">
|
||||
<template #append>
|
||||
<el-button @click="getList(1)">搜索</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
<!-- 人员选择 -->
|
||||
<el-empty :image-size="100" description="似乎没有数据" v-show="dataList.length === 0"/>
|
||||
<el-scrollbar style="height:340px">
|
||||
<div class="tree">
|
||||
<el-tree :data="dataList" ref="tree" :props="defaultProps" empty-text="" node-key="value"
|
||||
:default-expanded-keys="expandedKeys" lazy accordion
|
||||
@node-click="handleChange" @node-expand="handleChange"
|
||||
>
|
||||
<template #default="{ node, data }">
|
||||
<div class="tree-node">
|
||||
<div v-if="data.type === 0" style="display: flex;align-items: center;padding: 3px 0">
|
||||
<el-icon>
|
||||
<UserFilled/>
|
||||
</el-icon>
|
||||
{{ node.label }}
|
||||
</div>
|
||||
<div v-else-if="data.type ===1">
|
||||
<el-icon>
|
||||
<UserFilled/>
|
||||
</el-icon>
|
||||
{{ node.label }}
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-icon>
|
||||
<FolderOpened/>
|
||||
</el-icon>
|
||||
{{ node.label }}
|
||||
</div>
|
||||
<div class="picker">
|
||||
<div class="candidate" v-loading="loading">
|
||||
<el-input v-model="filterText" @change="getList(1)"
|
||||
clearable placeholder="输入部门/昵称进行搜索">
|
||||
<template #append>
|
||||
<el-button @click="getList(1)">搜索</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
<!-- 人员选择 -->
|
||||
<el-empty :image-size="100" description="似乎没有数据" v-show="dataList.length === 0"/>
|
||||
<el-scrollbar style="height:90%;">
|
||||
<div class="tree">
|
||||
<el-tree :data="dataList" ref="tree" :props="defaultProps" empty-text="" node-key="value"
|
||||
:default-expanded-keys="expandedKeys" lazy accordion
|
||||
@node-click="handleChange" @node-expand="handleChange">
|
||||
<template #default="{ node, data }">
|
||||
<div class="tree-node">
|
||||
<div v-if="data.type === 0" style="display: flex;align-items: center;padding: 3px 0">
|
||||
<el-icon>
|
||||
<UserFilled/>
|
||||
</el-icon>
|
||||
{{ node.label }}-{{ data.companyName }}
|
||||
</div>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="selected">
|
||||
<div class="count">
|
||||
<span>已选 {{ selectList.length }} 项</span>
|
||||
<span @click="clearSelected">清空</span>
|
||||
<div v-else-if="data.type ===1">
|
||||
<el-icon>
|
||||
<UserFilled/>
|
||||
</el-icon>
|
||||
{{ node.label }}
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-icon>
|
||||
<FolderOpened/>
|
||||
</el-icon>
|
||||
{{ node.label }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-tree>
|
||||
</div>
|
||||
<div class="org-items" style="height: 350px;">
|
||||
<el-empty :image-size="100" description="请点击左侧列表选择数据" v-show="selectList.length === 0"/>
|
||||
<div v-for="(selectItem, selectIndex) in selectList" :key="selectIndex" class="org-item">
|
||||
<!-- <el-avatar :src="selectItem.avatar" style="margin-right: 5px;"></el-avatar>-->
|
||||
{{ selectItem.name }}
|
||||
<i class="el-icon-close" @click="noSelected(selectItem)"></i>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="selected">
|
||||
<div class="count">
|
||||
<span>已选 {{ selectList.length }} 项</span>
|
||||
<span @click="clearSelected">清空</span>
|
||||
</div>
|
||||
<div class="org-items">
|
||||
<el-empty :image-size="100" description="请点击左侧列表选择数据" v-show="selectList.length === 0"/>
|
||||
<div v-for="(selectItem, selectIndex) in selectList" :key="selectIndex" class="org-item">
|
||||
{{ selectItem.name }}-{{ selectItem.companyName }}
|
||||
<el-icon @click="noSelected(selectItem)" size="20" style="margin-left: 10px;cursor: pointer;">
|
||||
<CircleClose/>
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer">
|
||||
<div class="footer">
|
||||
<el-button size="mini" @click="visible = false">取 消</el-button>
|
||||
<el-button size="mini" type="primary" @click="selectConfirm">确 定</el-button>
|
||||
<el-button size="mini" color="#DED0B2" @click="selectConfirm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -109,14 +107,11 @@ const defaultProps = {
|
||||
value: "value",
|
||||
label: "name",
|
||||
children: "children",
|
||||
// isLeaf:(data, node) =>
|
||||
// {
|
||||
// console.log('data, node',data, node)
|
||||
// if (node.level === 2) {
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
|
||||
isLeaf: (data) => {
|
||||
if (data.type === 0) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
};
|
||||
const emit = defineEmits();
|
||||
|
||||
@@ -200,7 +195,6 @@ const showUserPicker = () => {
|
||||
getList();
|
||||
};
|
||||
const handleChange = (item, data) => {
|
||||
console.log('item', item, data)
|
||||
selectItem = item;
|
||||
if (isSearch.value && item.type !== 0) {
|
||||
filterText.value = ""
|
||||
@@ -283,116 +277,109 @@ defineExpose({
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
$containWidth: 264px;
|
||||
$containWidth: 480px;
|
||||
:deep(.tree) {
|
||||
.el-tree {
|
||||
.el-tree-node {
|
||||
.el-tree-node__children {
|
||||
.el-tree-node {
|
||||
.el-tree-node__content {
|
||||
//height: 45px !important;
|
||||
.tree-node {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-tree-node__content {
|
||||
height: 34px;
|
||||
|
||||
.tree-node {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-tree-node {
|
||||
.is-leaf + .el-checkbox .el-checkbox__inner {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.el-checkbox .el-checkbox__inner {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-node {
|
||||
div {
|
||||
.el-avatar {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
//.el-tree-node {
|
||||
// .is-leaf + .el-checkbox .el-checkbox__inner {
|
||||
// display: inline-block;
|
||||
// }
|
||||
//
|
||||
// .el-checkbox .el-checkbox__inner {
|
||||
// display: none;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
.el-dialog__body {
|
||||
padding: 10px 20px;
|
||||
.footer {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.picker {
|
||||
height: 402px;
|
||||
height: 560px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
|
||||
.candidate {
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.candidate, .selected {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
width: $containWidth;
|
||||
height: 400px;
|
||||
border: 1px solid #e8e8e8;
|
||||
}
|
||||
|
||||
.selected {
|
||||
border-left: none;
|
||||
right: 0;
|
||||
top: 0;
|
||||
|
||||
.count {
|
||||
width: calc(var($containWidth) - 20px);
|
||||
padding: 10px;
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
margin-bottom: 5px;
|
||||
|
||||
& > span:nth-child(2) {
|
||||
float: right;
|
||||
color: #c75450;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.org-items {
|
||||
overflow-y: auto;
|
||||
height: 350px;
|
||||
|
||||
.el-icon-close {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
cursor: pointer;
|
||||
font-size: larger;
|
||||
}
|
||||
display: inline-block;
|
||||
width: $containWidth;
|
||||
height: 98%;
|
||||
border: 1px solid #e8e8e8;
|
||||
|
||||
.org-item {
|
||||
margin: 0 5px;
|
||||
border-radius: 5px;
|
||||
position: relative;
|
||||
padding: 7px 5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
:deep(.el-input) {
|
||||
height: 40px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
|
||||
> span {
|
||||
margin-left: 5px;
|
||||
.el-input__inner, .el-input-group__append {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.selected {
|
||||
right: 0;
|
||||
top: 0;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
width: 450px;
|
||||
height: 98%;
|
||||
border: 1px solid #e8e8e8;
|
||||
|
||||
.count {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
display: inline-block;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
margin-bottom: 5px;
|
||||
font-size: 16px;
|
||||
|
||||
> span:nth-child(2) {
|
||||
float: right;
|
||||
color: #c75450;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.org-items {
|
||||
overflow-y: auto;
|
||||
height: 90%;
|
||||
|
||||
.el-icon-close {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
cursor: pointer;
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.org-item {
|
||||
margin: 0 5px;
|
||||
border-radius: 5px;
|
||||
position: relative;
|
||||
padding: 7px 5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
|
||||
&:hover {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
|
||||
> span {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.el-scrollbar .el-scrollbar__wrap {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<el-button size="mini" icon="Plus" type="primary" @click="showSysRolePicker" round>
|
||||
选择人员
|
||||
</el-button>
|
||||
<user-picker title="请选择系统角色" :multiple="false" ref="sysRolePicker" :v-model="assignedUser" @ok="selectedUser"/>
|
||||
<user-picker title="请选择人员" :multiple="false" ref="sysRolePicker" :v-model="assignedUser" @ok="selectedUser"/>
|
||||
<!-- <ellipsis :row="3" :user-info="assignedUser"/>-->
|
||||
<role-items v-model="assignedUser"/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user