You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
549 lines
29 KiB
549 lines
29 KiB
<template>
|
|
<div v-if="pageType === 1" class="category-summary-style" ref="parent">
|
|
<a-spin :spinning="isLoading" tip="正在加载数据,请稍候..." size="large" style="position: absolute;top: 50%;left: 50%">
|
|
</a-spin>
|
|
<template v-if="!isLoadingForm">
|
|
<div v-if="formList.length === 0" style="line-height: 23rem;font-size: 1.5rem;text-align: center">
|
|
对不起,当前没有启用的类目,请先在系统设置中进行类目设置
|
|
</div>
|
|
<template v-else>
|
|
<div class="title-line-outer">
|
|
<div class="title-line-inner">
|
|
<FormList v-if="!isLoadingForm && formList.length > 0" type="horizontal" :list="formList" @formChange="onFormChange" :selectedData="selectedForm"/>
|
|
</div>
|
|
</div>
|
|
<div class="title-line-outer">
|
|
<div class="title-line-inner">
|
|
<a-button type="link" :disabled="isLoading" style="color:#31a8fa" @click="onShowSearchColumn">
|
|
高级筛选
|
|
<a-icon type="filter" style="font-size: 1rem"></a-icon>
|
|
</a-button>
|
|
<a-button type="link" :disabled="isLoading || (categoryInfoData.field_list && categoryInfoData.field_list.length) === 3" style="color:#31a8fa" @click="onShowFieldFilter">
|
|
显示字段
|
|
<a-icon type="eye" style="font-size: 1rem"></a-icon>
|
|
</a-button>
|
|
<a-button class="left-top-add-btn-style" style="right: 8rem" type="primary" :disabled="!(!isLoading && categoryInfoData.value_ids && categoryInfoData.value_ids !== '')" @click="exportInfo('all')">
|
|
导出全部
|
|
</a-button>
|
|
<a-button class="left-top-add-btn-style" type="primary" :disabled="!(!isLoading && categoryInfoData.value_ids && categoryInfoData.value_ids !== '')" @click="exportInfo('select')">
|
|
批量导出
|
|
</a-button>
|
|
</div>
|
|
</div>
|
|
<div class="table-container-style">
|
|
<a-table :rowSelection ="{fixed:true,selectedRowKeys:selectedRows,onChange:selectedRowsChange}"
|
|
:columns="getColumns" :dataSource="categoryInfoData.form_data_list" rowKey="value_id" :scroll="{x:true}" :pagination="false">
|
|
<span slot="dictionary" slot-scope="value"><!--字典类型字段-->
|
|
{{getDictionaryValue(value)}}
|
|
</span>
|
|
<span slot="associate" slot-scope="value"><!--字典类型字段-->
|
|
{{getDictionaryValue(value)}}
|
|
</span>
|
|
<span slot="img" slot-scope="value" style="display:flex;justify-items: center;justify-content: center"><!--图片-->
|
|
<ShowAttachment v-if="value && value !== '' && value !== '[]' && Array.isArray(JSON.parse(value))" :type="2" :img="getImg(value)" :file-list="getFileList(value)"
|
|
picture-width="8rem" picture-height="4.5rem" :badge-count="getBadgeCount(value)"/>
|
|
</span>
|
|
<span slot="attachment" slot-scope="value"><!--附件类型字段-->
|
|
<ShowAttachment v-if="value && value !== '' && value !== '[]' && Array.isArray(JSON.parse(value))" :type="1" :file-list="getFileList(value)" :badge-count="getBadgeCount(value)"/>
|
|
</span>
|
|
<span slot="editor" slot-scope="value" v-html="value"></span><!--//附件类型字段-->
|
|
<span slot="depart_person" slot-scope="value"><!--部门人员类型字段-->
|
|
{{getDeptPersonValue(value)}}
|
|
</span>
|
|
<template slot="operate" slot-scope="value,record">
|
|
<i class="office-operate-search operate-style" title="查看" @click="view(record)" style="font-size: 1rem;cursor: pointer;color:#31a8fa "></i>
|
|
</template>
|
|
</a-table>
|
|
</div>
|
|
<a-pagination :current="pageNumber" :pageSize="pageSize" :hideOnSinglePage="true" :total="totalRow" class="pagination-style" @change="pageChange"/>
|
|
<ModalPanel add-child-type="slot" modal-title="显示类目" :show="showFieldFilter" modalWidth="60%" @callback="modalCallback">
|
|
<FieldFilter :all-field="allColumn" :selected-field="tableColumn" ref="fieldFilter"/>
|
|
</ModalPanel>
|
|
<ModalPanel add-child-type="slot" modal-title="高级筛选" :show="showSearchColumn" modalWidth="60%" @callback="onSearchColumnCallback" :destroyOnClose="false">
|
|
<SearchColumnPanel ref="searchColumnPanel" :columnList="columnList"/>
|
|
</ModalPanel>
|
|
</template>
|
|
</template>
|
|
</div>
|
|
<edit-and-view-form v-else :pageType="3" :dataNumType="selectedForm.data_num_type" :dataInfo="formData" :showOperateList="false"
|
|
@back="returnBack" :form_id="selectedForm.form_id" :businessType="4" :person-info="personInfo"/>
|
|
</template>
|
|
|
|
<script>
|
|
import {Button,Spin,Icon,Pagination,Table,Modal} from 'ant-design-vue'
|
|
import FormList from '../commonComponents/formList/FormList'
|
|
import InterfaceConfig from './interfaceConfig'
|
|
import ShowAttachment from '../../../components/common/showAttachment/ShowAttachment'
|
|
import CommonOperate from '../utils/commonOperate'
|
|
import ModalPanel from '../../../components/common/modal/ModalPanel'
|
|
import FieldFilter from '../commonComponents/fieldFilter/FieldFilter'
|
|
import _ from 'lodash'
|
|
import SearchColumnPanel from './SearchColumnPanel'
|
|
import ManagementInterfaceConfig from '../teacherInfoManagement/interfaceConfig'
|
|
import EditAndViewForm from '../formCommon/EditAndViewForm'
|
|
import StaticParams from "../../../global-llibs/staticParams"
|
|
export default {
|
|
name: "CategorySummary",
|
|
props:["isAdmin"],
|
|
data:function(){
|
|
return {
|
|
selectedPersonId:"",
|
|
isLoading:true,
|
|
isLoadingForm:true,
|
|
selectedForm:{},
|
|
formList:[],
|
|
selectedPersonObj:{},
|
|
categoryInfoData:{},
|
|
tableColumn:[],
|
|
allColumn:[],
|
|
pageNumber:1,
|
|
pageSize:10,
|
|
totalRow:0,
|
|
selectedRows:[],
|
|
showFieldFilter:false,
|
|
showSearchColumn:false,
|
|
pageType:1,
|
|
personInfo:null,
|
|
formData:null,
|
|
columnList:[],
|
|
columnList_resource:[]
|
|
}
|
|
},
|
|
components:{
|
|
AButton:Button,
|
|
ASpin:Spin,
|
|
FormList,
|
|
AIcon:Icon,
|
|
APagination:Pagination,
|
|
ATable:Table,
|
|
ShowAttachment,
|
|
ModalPanel,
|
|
FieldFilter,
|
|
SearchColumnPanel,
|
|
EditAndViewForm
|
|
},
|
|
computed:{
|
|
getColumns:function(){
|
|
let ary = [];
|
|
// if (this.fieldsList && this.fieldsList.length > 0){
|
|
ary.push({title:"序号",customRender:(text,record,index)=>{return index + 1},fixed:'left',align:'center',width:60})
|
|
ary.push({title:"教师编号",dataIndex:"workers_no",fixed:'left',align:'center',width:100})
|
|
ary.push({title:"教师姓名",dataIndex:"person_name",fixed:'left',align:'center',width:150})
|
|
ary.push( {title:"单位(部门)",customRender:(text,record,)=>
|
|
{return record.org_name + (record.dept_name && record.dept_name !== "" && record.dept_name !== record.org_name?
|
|
"(" + record.dept_name + ")":"")},fixed:'left',align:'center',width:200})
|
|
this.tableColumn.forEach((field)=>{
|
|
let type = parseInt(field.field_type)
|
|
if (parseInt(field.field_input_type) !== 2 && type !== 20 && type < 200 && type !== 11){
|
|
//字典填充类型的单行文本、文本标签、子表单及布局字段不能出现在表头中
|
|
let obj = {title:field.field_name,dataIndex:field.column_name,align:'center'};
|
|
if ([3,4,6,15,25,26].some((num)=>{return type === num})){//字典类型的
|
|
obj.scopedSlots = {"customRender":"dictionary"}
|
|
}else if (type === 9){//附件类型
|
|
obj.scopedSlots = {"customRender":"img"}
|
|
}else if (type === 10){//附件类型
|
|
obj.scopedSlots = {"customRender":"attachment"}
|
|
}else if (type === 11){//富文本
|
|
obj.scopedSlots = {"customRender":"editor"}
|
|
}else if ([17,18].some((num)=>{return type === num})){//部门 人员
|
|
obj.scopedSlots = {"customRender":"depart_person"}
|
|
}else if(27 === type){
|
|
obj.scopedSlots = {"customRender":"associate"}
|
|
}
|
|
ary.push(obj)
|
|
}
|
|
})
|
|
ary.push({title:"操作",scopedSlots:{customRender:"operate"},fixed:'right',align:'center'})
|
|
// }
|
|
|
|
return ary
|
|
}
|
|
},
|
|
methods:{
|
|
returnBack:function(){
|
|
this.pageType = 1;
|
|
},
|
|
view:function(record){
|
|
let params = {
|
|
org_id:this.BaseConfig.person_info_my.bureau_id,
|
|
system_id:10,
|
|
form_id:this.selectedForm.form_id,
|
|
value_id:record.value_id,
|
|
teacher_id:record.person_id
|
|
}
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
url:ManagementInterfaceConfig.getTeacherInfoByValueId.url,
|
|
method:ManagementInterfaceConfig.getTeacherInfoByValueId.method,
|
|
params:params,
|
|
isTestLogin:ManagementInterfaceConfig.getTeacherInfoByValueId.isTestLogin
|
|
}],(data)=>{
|
|
let result = data[0].data;
|
|
if (result.code === 2000){
|
|
this.formData = result.data;
|
|
this.personInfo = {
|
|
person_id:this.formData.form_data_list[0].person_id,
|
|
org_name:this.formData.form_data_list[0].org_name,
|
|
dept_name:this.formData.form_data_list[0].dept_name,
|
|
person_name:this.formData.form_data_list[0].person_name,
|
|
workers_no: this.formData.form_data_list[0].workers_no?this.formData.form_data_list[0].workers_no:"",
|
|
dept_id:this.formData.form_data_list[0].dept_id,
|
|
}
|
|
this.pageType = 2;
|
|
}
|
|
})
|
|
},
|
|
onShowSearchColumn:function(){
|
|
this.showSearchColumn = true;
|
|
},
|
|
onSearchColumnCallback:function(type){
|
|
if(type[0] === "ok"){
|
|
this.pageNumber = 1;
|
|
this.getDataList();
|
|
}else{
|
|
this.columnList = _.cloneDeep(this.columnList_resource);
|
|
}
|
|
this.showSearchColumn = false;
|
|
},
|
|
onShowFieldFilter:function(){
|
|
this.showFieldFilter = true;
|
|
},
|
|
modalCallback:function(type){
|
|
if(type[0] === "ok"){
|
|
let ary = [];
|
|
if (this.$refs.fieldFilter){
|
|
this.$refs.fieldFilter.all.forEach((item)=>{
|
|
if (item.selected === true){
|
|
ary.push(item);
|
|
}
|
|
});
|
|
}
|
|
if (ary.length === 0){
|
|
this.$refs.fieldFilter.showTips("至少选择一个显示字段");
|
|
return;
|
|
}else{
|
|
this.tableColumn = ary;
|
|
}
|
|
}
|
|
this.showFieldFilter = false
|
|
},
|
|
/*
|
|
* 获取字典类型字段值
|
|
* */
|
|
getDictionaryValue:function(value){
|
|
return CommonOperate.getDictionaryValue(value);
|
|
},
|
|
getDeptPersonValue:function(value){
|
|
return CommonOperate.getDeptPersonValue(value);
|
|
},
|
|
getBadgeCount:function(value){
|
|
let ary = JSON.parse(value);
|
|
return ary.length > 1?ary.length:0;
|
|
},
|
|
getFileList:function(value){
|
|
return JSON.parse(value);
|
|
},
|
|
getImg:function(value){
|
|
return JSON.parse(value)[0];
|
|
},
|
|
|
|
selectedRowsChange:function(selectedRows){
|
|
this.selectedRows = selectedRows;
|
|
},
|
|
pageChange:function(page){
|
|
this.pageNumber = page;
|
|
this.getDataList();
|
|
},
|
|
exportInfo:function(type){
|
|
if (type === 'select' && this.selectedRows.length === 0){
|
|
Modal.warning({
|
|
title:"批量导出类目信息",
|
|
content:"请选择需要导出类目信息的人员",
|
|
okText:"我知道了",
|
|
centered:true
|
|
});
|
|
return;
|
|
}
|
|
|
|
let field_ids = [];
|
|
this.tableColumn.forEach((item)=>{
|
|
field_ids.push(item.field_id)
|
|
});
|
|
|
|
|
|
let url = this.BaseConfig.url_path_action + "/intellioa/java/teacher/downloadTeacherInfoByFormId?org_id=" + this.BaseConfig.person_info_my.bureau_id
|
|
+ "&system_id=10&value_ids=" + (type === 'select'?this.selectedRows.join(","):this.categoryInfoData.value_ids) + "&form_id="+this.selectedForm.form_id +
|
|
"&field_ids=" + field_ids.join(",");
|
|
|
|
// let url = "http://10.10.14.199/dsideal_yy/ypt/intellioa/java/teacher/downloadTeacherInfoByFormId?org_id=" + this.BaseConfig.person_info_my.bureau_id
|
|
// + "&system_id=10&value_ids=" + (type === 'select'?this.selectedRows.join(","):this.categoryInfoData.value_ids) + "&form_id="+this.selectedForm.form_id +
|
|
// "&field_ids=" + field_ids.join(",");
|
|
|
|
window.location.href = url;
|
|
},
|
|
|
|
onFormChange:function(form){
|
|
this.pageNumber = 1;
|
|
this.selectedForm = form;
|
|
this.tableColumn = [];
|
|
this.allColumn = [];
|
|
this.getSearchColumnList()
|
|
},
|
|
getDataList:function() {
|
|
this.isLoading = true;
|
|
let params = {
|
|
org_id:this.BaseConfig.person_info_my.bureau_id,
|
|
system_id:10,
|
|
form_id:this.selectedForm.form_id,
|
|
page_number:this.pageNumber,
|
|
page_size:this.pageSize
|
|
};
|
|
if (this.$refs.searchColumnPanel){
|
|
let com = this.$refs.searchColumnPanel;
|
|
|
|
if (com.dept_id && com.dept_id.length > 0 && com.dept_id.every((id)=>{return id !== "all"})){//部门选择
|
|
params.dept_ids = com.dept_id.join(",");
|
|
}
|
|
|
|
if (com.selectedPerson && com.selectedPerson.length > 0 && com.selectedPerson.every((person)=>{return person.person_id !== "all"})){
|
|
//人员选择
|
|
let ary = [];
|
|
com.selectedPerson.forEach((item)=>{
|
|
ary.push(item.person_id)
|
|
});
|
|
params.person_ids = ary.join(",");
|
|
}
|
|
|
|
if (this.columnList && this.columnList.length > 0){//自定义的高级搜索字段
|
|
let search_json = [];
|
|
this.columnList.forEach((column)=>{
|
|
let type = parseInt(column.field_type);
|
|
let value = "";
|
|
if (type === 1 || type === 2){//单行/多行文本
|
|
if (column.column_value && StaticParams.trim(column.column_value) !== ""){
|
|
search_json.push({
|
|
column_name:column.column_name,
|
|
compare_type:2,
|
|
column_value:StaticParams.trim(column.column_value)
|
|
})
|
|
}
|
|
}else if ([3,4,6].some((t)=>{return t === type})){
|
|
if (column.column_value && this.TypesCheck.isArray(column.column_value) && column.column_value.length > 0){
|
|
//单选 多选 下拉选
|
|
column.column_value.forEach((item,index)=>{
|
|
value += item + "!" + column.json.props.datas.filter((data)=>{return data.dic_code === item})[0].dic_value
|
|
if (index < column.column_value.length - 1){
|
|
value += "+"
|
|
}
|
|
})
|
|
|
|
search_json.push({
|
|
column_name:column.column_name,
|
|
compare_type:3,
|
|
column_value:value
|
|
})
|
|
}
|
|
}else if (type === 5){//日期时间组件
|
|
let obj = {
|
|
column_name:column.column_name,
|
|
}
|
|
if(column.column_value_start && StaticParams.trim(column.column_value_start) !== ""){//时间左值存在
|
|
if(column.column_value_end && StaticParams.trim(column.column_value_end) !== ""){//时间右值也存在
|
|
if (column.column_value_start === column.column_value_end){
|
|
obj.compare_type = 4;
|
|
obj.column_value = column.column_value_start;
|
|
}else{
|
|
obj.compare_type = 5;
|
|
obj.column_value = (column.column_value_start < column.column_value_end ?
|
|
column.column_value_start:column.column_value_end) + "," + (column.column_value_start < column.column_value_end ?
|
|
column.column_value_end:column.column_value_start);
|
|
}
|
|
}else{
|
|
obj.compare_type = 4;
|
|
obj.column_value = column.column_value_start;
|
|
}
|
|
}else if (column.column_value_end && StaticParams.trim(column.column_value_end) !==" "){//时间右值存在
|
|
obj.compare_type = 4;
|
|
obj.column_value = column.column_value_end;
|
|
}
|
|
|
|
if (obj.column_value){
|
|
search_json.push(obj)
|
|
}
|
|
}else if ([12,13,14].some((t)=>{return t === type})){
|
|
//计数器、评价、滑块
|
|
let obj = {
|
|
column_name:column.column_name,
|
|
}
|
|
if(column.column_value_start && column.column_value_start !==""){//数值左值存在
|
|
if(column.column_value_end && column.column_value_end !==""){//数值右值也存在
|
|
if (column.column_value_start === column.column_value_end){
|
|
obj.compare_type = 8;
|
|
obj.column_value = column.column_value_start;
|
|
}else{
|
|
obj.compare_type = 7;
|
|
obj.column_value = (column.column_value_start < column.column_value_end ?
|
|
column.column_value_start:column.column_value_end) + "," + (column.column_value_start < column.column_value_end ?
|
|
column.column_value_end:column.column_value_start);
|
|
}
|
|
}else{
|
|
obj.compare_type = 8;
|
|
obj.column_value = column.column_value_start;
|
|
}
|
|
}else if (column.column_value_end && column.column_value_end !==""){//数值右值存在
|
|
obj.compare_type = 8;
|
|
obj.column_value = column.column_value_end;
|
|
}
|
|
|
|
if (obj.column_value){
|
|
search_json.push(obj)
|
|
}
|
|
}else if([15,25,26].some((t)=>{return t === type})){
|
|
//地域、学段学科、专业
|
|
if(column.json.props.value && this.TypesCheck.isArray(column.json.props.value) && column.json.props.value.length > 0){
|
|
column.json.props.value.forEach((item,index)=>{
|
|
item.forEach((child,childIndex)=>{
|
|
value += child + "!" + column.json.props.value_name[index][childIndex]
|
|
if (childIndex < item.length - 1){
|
|
value += ","
|
|
}
|
|
})
|
|
if(index < column.json.props.value.length - 1){
|
|
value += "+"
|
|
}
|
|
});
|
|
|
|
search_json.push({
|
|
column_name:column.column_name,
|
|
compare_type:3,
|
|
column_value:value
|
|
})
|
|
}
|
|
}else if (type === 17 || type === 18){//部门选择 人员选择组件
|
|
if(column.json.props.value && this.TypesCheck.isArray(column.json.props.value) && column.json.props.value.length > 0){
|
|
column.json.props.value.forEach((item,index)=>{
|
|
if (type === 17){
|
|
value += item.id + "!" + item.name
|
|
}else{
|
|
value += item.person_id + "!" + item.person_name
|
|
}
|
|
|
|
if (index < column.json.props.value.length - 1){
|
|
value += "+"
|
|
}
|
|
|
|
});
|
|
|
|
search_json.push({
|
|
column_name:column.column_name,
|
|
compare_type:6,
|
|
column_value:value
|
|
})
|
|
}
|
|
}
|
|
})
|
|
if (search_json.length > 0){
|
|
params.search_json = JSON.stringify(search_json);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
this.InterfaceConfig.callInterface([{
|
|
url:InterfaceConfig.getTeacherInfoListBySearchColumn.url,
|
|
method:InterfaceConfig.getTeacherInfoListBySearchColumn.method,
|
|
params:params,
|
|
isTestLogin:InterfaceConfig.getTeacherInfoListBySearchColumn.isTestLogin
|
|
}],(data)=>{
|
|
let result = data[0].data;
|
|
if (result.code === 2000){
|
|
this.selectedRows = [];
|
|
this.totalRow = result.data.total_row;
|
|
this.categoryInfoData = result.data;
|
|
if (this.tableColumn.length === 0){
|
|
this.tableColumn = _.cloneDeep(result.data.field_list);
|
|
this.tableColumn.splice(0,3);
|
|
this.tableColumn.forEach((item)=>{
|
|
item.form_id = item.field_id;
|
|
item.form_name = item.field_name;
|
|
});
|
|
|
|
this.allColumn = _.cloneDeep(this.tableColumn);
|
|
}
|
|
this.isLoading = false;
|
|
}
|
|
});
|
|
},
|
|
getSearchColumnList:function () {
|
|
this.InterfaceConfig.callInterface([{
|
|
url:InterfaceConfig.getTeacherSearchColumnListByFormId.url,
|
|
method:InterfaceConfig.getTeacherSearchColumnListByFormId.method,
|
|
params:{
|
|
org_id:this.BaseConfig.person_info_my.bureau_id,
|
|
system_id:10,
|
|
form_id:this.selectedForm.form_id,
|
|
},
|
|
isTestLogin:InterfaceConfig.getTeacherSearchColumnListByFormId.isTestLogin
|
|
}],(data)=>{
|
|
let result = data[0].data;
|
|
if (result.code === 2000){
|
|
this.columnList_resource = result.data.field_list;
|
|
this.columnList_resource.forEach((item)=>{
|
|
item.json = JSON.parse(item.field_json);
|
|
let field_type = parseInt(item.field_type);
|
|
if ([3,4,6].some((type)=>{return type === field_type})){
|
|
item.column_value = [];
|
|
}else if([5,12,13,14].some((type)=>{return type === field_type})){
|
|
item.column_value_start = null;
|
|
item.column_value_end = null;
|
|
}else if([15,25,26,17,18].some((type)=>{return type === field_type})){
|
|
if (field_type === 17 || field_type === 18){
|
|
item.json.props.is_multiple_choice = true;
|
|
}else{
|
|
item.json.props.value_name = [];
|
|
}
|
|
item.json.props.value = [];
|
|
}else{
|
|
item.column_value = "";
|
|
}
|
|
});
|
|
this.columnList = _.cloneDeep(this.columnList_resource);
|
|
this.getDataList();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
mounted() {
|
|
this.InterfaceConfig.callInterface([{
|
|
url:"intellioa/teacher/informationManagement/getSystemFunctionList",
|
|
method:"get",
|
|
params:{
|
|
org_id:this.BaseConfig.person_info_my.bureau_id,
|
|
system_id:10,
|
|
person_id:this.BaseConfig.userInfo.person_id_cookie
|
|
},
|
|
isTestLogin:true
|
|
}],(data)=>{
|
|
let result = data[0].data
|
|
if (result.code === 2000){
|
|
this.isLoadingForm = false;
|
|
this.formList = this.isAdmin === true ? result.data.all_form_list:result.data.view_form_list
|
|
if (this.formList.length > 0){
|
|
this.selectedForm = this.formList[0];
|
|
this.getSearchColumnList();
|
|
}else{
|
|
this.isLoading = false;
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.category-summary-style{
|
|
height: 100%;
|
|
overflow: auto;
|
|
}
|
|
</style>
|