You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
392 lines
16 KiB
Plaintext
392 lines
16 KiB
Plaintext
11 months ago
|
<template>
|
||
|
<div>
|
||
|
<el-card class="box-card">
|
||
|
<!--搜索条件-->
|
||
|
<search-form
|
||
|
size='mini'
|
||
|
labelWidth = '80px'
|
||
|
:toolbarData = "toolbarData"
|
||
|
:searchForm = "searchForm"
|
||
|
:searchHandle="searchHandle"
|
||
|
@on-toolbarData-change="ChangeToolbarData">
|
||
|
</search-form>
|
||
|
<!--Table表格-->
|
||
|
<el-table :data="tableData" border
|
||
|
:header-cell-style="{background:'#f5f7fab5',color:'#777'}"
|
||
|
@row-dblclick="RowSelect">
|
||
|
<el-table-column label="序号" align="center" width="80">
|
||
|
<template slot-scope="scope">
|
||
|
{{scope.$index+1+pagesize*(currentPage-1)}}
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column v-for="item in tableColumnData" :key="item.field" :label="item.text" :prop="item.field" :width="item.width" :show-overflow-tooltip='true'>
|
||
|
</el-table-column>
|
||
|
</el-table>
|
||
|
<!--分页-->
|
||
|
<el-pagination
|
||
|
style="float:right;margin: 20px 0px;"
|
||
|
@size-change="handleSizeChange"
|
||
|
@current-change="handleCurrentChange"
|
||
|
:current-page="currentPage"
|
||
|
:page-sizes="[5,10,15,20]"
|
||
|
:page-size="pagesize"
|
||
|
layout="total,sizes, prev, pager, next"
|
||
|
:total="total">
|
||
|
</el-pagination>
|
||
|
<!--弹出窗-->
|
||
|
<el-dialog :title="title" :visible.sync="dialogFormVisible" :before-close="handleClose">
|
||
|
<En ></En>
|
||
|
</el-dialog>
|
||
|
</el-card>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import SearchForm from './searchForm.vue';
|
||
|
import {AtParaToJson} from '@/wf/api/Gener.js';
|
||
|
export default {
|
||
|
name: "search",
|
||
|
components:{
|
||
|
SearchForm,
|
||
|
},
|
||
|
|
||
|
data(){
|
||
|
return{
|
||
|
params:{},//URL传过来的参数
|
||
|
tableData: [],
|
||
|
total: 0, // 总数
|
||
|
currentPage: 1, // 当前页
|
||
|
pagesize:5,//一页显示的行数
|
||
|
tableColumnData:[],
|
||
|
|
||
|
//页面配置信息
|
||
|
cfg:{},
|
||
|
ur:{},//用户配置信息
|
||
|
foramtFunc:"",//字段格式化函数
|
||
|
fontSize:13,
|
||
|
enPK:"No",
|
||
|
attrs:[],
|
||
|
|
||
|
//查询条件
|
||
|
searchForm:[], //查询字段
|
||
|
searchHandle:[],//执行的方法
|
||
|
toolbarData:{},//查询字段的值
|
||
|
|
||
|
//查询类的信息
|
||
|
ensName:'',
|
||
|
webuser:{},
|
||
|
mapBase:{},
|
||
|
dialogFormVisible:false,//弹出框显示
|
||
|
}
|
||
|
|
||
|
},
|
||
|
created(){
|
||
|
this.params = this.$store.getters.getData;
|
||
|
this.ensName=this.params.EnsName;
|
||
|
this.webuser = this.$store.getters.getWebUser;
|
||
|
//获取配置信息
|
||
|
var en = new this.Entity("BP.Sys.EnCfg");
|
||
|
en.No = this.ensName;
|
||
|
en.RetrieveFromDBSources();
|
||
|
this.cfg=en;
|
||
|
//获取用户注册信息
|
||
|
en = new this.Entity("BP.Sys.UserRegedit");
|
||
|
en.MyPK = this.webuser.No + "_" + this.ensName + "_SearchAttrs";
|
||
|
en.RetrieveFromDBSources();
|
||
|
this.ur = en;
|
||
|
this.fontSize = this.cfg.FontSize==null || this.cfg.FontSize==undefined ||this.cfg.FontSize==""?13:this.cfg.FontSize;
|
||
|
this.foramtFunc = this.cfg.ForamtFunc==null?"":this.cfg.ForamtFunc;
|
||
|
//查询条件
|
||
|
this.InitToolBar();
|
||
|
var searchData = this.SearchData();
|
||
|
//显示的列
|
||
|
this.InitTableColumn(searchData);
|
||
|
|
||
|
},
|
||
|
methods:{
|
||
|
InitToolBar(){
|
||
|
var handler = new this.HttpHandler("BP.WF.HttpHandler.WF_Comm");
|
||
|
handler.AddJson(this.params); //增加参数.
|
||
|
//获得map基本信息.
|
||
|
this.mapBase = handler.DoMethodReturnJSON("Search_MapBaseInfo");
|
||
|
this.title = this.mapBase.EnDesc;
|
||
|
//获得查询信息,包含了查询数据表.
|
||
|
var data = handler.DoMethodReturnJSON("Search_SearchAttrs");
|
||
|
var searchFields = this.mapBase.SearchFields;
|
||
|
searchFields=searchFields==null||searchFields==undefined||searchFields==""?"":searchFields;
|
||
|
//指定字段查询为空时,默认是关键字查询
|
||
|
if (searchFields == "") {
|
||
|
var keyLabel = this.cfg.KeyLabel;
|
||
|
keyLabel=keyLabel == null || keyLabel == undefined || keyLabel == ""?"关键字":keyLabel;
|
||
|
this.searchForm.push({type:'Input', label:keyLabel, prop:"SearchKey", width:'140px'});
|
||
|
this.toolbarData.SearchKey=this.ur.SearchKey;
|
||
|
}else{
|
||
|
var strs = searchFields.split("@");
|
||
|
var fieldV = "";
|
||
|
for (var i = 0; i < strs.length; i++) {
|
||
|
if (strs[i] == "")
|
||
|
continue;
|
||
|
|
||
|
var str = strs[i].split("=");
|
||
|
if (str.length < 2 || str[0] == "" || str[1] == "")
|
||
|
continue;
|
||
|
|
||
|
fieldV = this.ur.GetPara(str[1]);
|
||
|
if (fieldV == null || fieldV == undefined)
|
||
|
fieldV = "";
|
||
|
this.searchForm.push({type:'Input', label:str[0], prop:str[1], width:'180px'});
|
||
|
this.toolbarData[str[1]]=fieldV;
|
||
|
}
|
||
|
}
|
||
|
//时间段的查询
|
||
|
if (this.mapBase.DTSearchWay != "0"){
|
||
|
if (this.mapBase.DTSearchWay == "1"){
|
||
|
this.searchForm.push({type:'Date', label: this.mapBase.DTSearchLable, prop:"DTFrom", width:'130px'});
|
||
|
this.searchForm.push({type:'Date', label: "到", prop:"DTTo", width:'130px'});
|
||
|
}else{
|
||
|
this.searchForm.push({type:'DateTime', label: this.mapBase.DTSearchLable, prop:"DTFrom", width:'150px'});
|
||
|
this.searchForm.push({type:'DateTime', label: "到", prop:"DTTo", width:'150px'});
|
||
|
}
|
||
|
this.toolbarData.DTFrom = this.ur.DTFrom;
|
||
|
this.toolbarData.DTTo = this.ur.DTTo;
|
||
|
}
|
||
|
//下拉框的查询
|
||
|
var attrs = data.Attrs;
|
||
|
var json = AtParaToJson(this.ur.Vals);
|
||
|
for (var k = 0; k < attrs.length; k++){
|
||
|
var selectVal = json[attrs[k].Field];
|
||
|
if (selectVal == undefined || selectVal == "")
|
||
|
selectVal = "all";
|
||
|
|
||
|
var options = this.InitDDLOperation(data,attrs[k]);
|
||
|
//暂时不处理级联关系
|
||
|
this.searchForm.push( {type:'Select',label:attrs[k].Name,prop:attrs[k].Field,width:attrs[k].Width+"px",options:options,props:{label:'Name',value:'No'}});
|
||
|
this.toolbarData[attrs[k].Field]=selectVal;
|
||
|
}
|
||
|
|
||
|
//操作按钮
|
||
|
this.searchHandle.push({label:'查询',type:'primary',handle:()=>this.Search()});
|
||
|
//增加自定义按钮
|
||
|
var btnLab1 = this.cfg.BtnLab1;
|
||
|
var btnLab2 = this.cfg.BtnLab2;
|
||
|
|
||
|
handler = new this.HttpHandler("BP.WF.HttpHandler.WF_MyFlow");
|
||
|
handler.AddUrlData();
|
||
|
data = handler.DoMethodReturnString("MyFlow_IsCanStartThisFlow");
|
||
|
|
||
|
if(data.indexOf('err@') != -1){
|
||
|
btnLab1=undefined;
|
||
|
}
|
||
|
if (btnLab1 != null && btnLab1 != undefined && btnLab1 != "")
|
||
|
this.searchHandle.push({label:btnLab1,type:'primary',handle:()=>''});
|
||
|
|
||
|
if (btnLab2 != null && btnLab2 != undefined && btnLab2 != "")
|
||
|
this.searchHandle.push({label:btnLab2,type:'primary',handle:()=>''});
|
||
|
|
||
|
if (this.mapBase.IsInsert.toString().toLowerCase() == "true")
|
||
|
this.searchHandle.push({label:"新建",type:'primary',handle:()=>this.New()});
|
||
|
|
||
|
if (this.cfg.IsGroup!=undefined && this.cfg.IsGroup.toString() == "1")
|
||
|
this.searchHandle.push({label:"分析",type:'primary',handle:()=>this.ToGroup()});
|
||
|
|
||
|
if (this.cfg.IsImp!=undefined && this.cfg.IsImp.toString().toLowerCase() == "true")
|
||
|
this.searchHandle.push({label:"导入",type:'primary',handle:()=>this.Imp()});
|
||
|
|
||
|
if (this.webuser.No == "admin")
|
||
|
this.searchHandle.push({label:"设置",type:'primary',handle:()=>this.Setting()});
|
||
|
},
|
||
|
InitTableColumn(searchData){
|
||
|
this.attrs = searchData.Attrs;
|
||
|
//var dtMs = searchData.dtM;
|
||
|
var sysMapData = searchData["Sys_MapData"][0];
|
||
|
sysMapData = new this.Entity("BP.Sys.MapData", sysMapData); //把他转化成entity.
|
||
|
this.enPK = sysMapData.GetPara("PK");
|
||
|
if (this.attrs == undefined) {
|
||
|
this.$message.error('没有取得属性.');
|
||
|
return;
|
||
|
}
|
||
|
this.attrs.forEach(attr =>{
|
||
|
if (attr.UIVisible == 0
|
||
|
|| attr.KeyOfEn == "OID"
|
||
|
|| attr.KeyOfEn == "WorkID"
|
||
|
|| attr.KeyOfEn == "NodeID"
|
||
|
|| attr.KeyOfEn == "MyNum"
|
||
|
|| attr.KeyOfEn == "MyPK")
|
||
|
return true;
|
||
|
var width = attr.Width;
|
||
|
if (width < 60) width = 60;
|
||
|
if (attr.KeyOfEn == "Title") width = 230;
|
||
|
if (attr.UIContralType == 1) {
|
||
|
if (width == null || width == "" || width == undefined)
|
||
|
width = 180;
|
||
|
this.tableColumnData.push({
|
||
|
field: attr.KeyOfEn+"Text",
|
||
|
text: attr.Name,
|
||
|
fixed: false,
|
||
|
width: width+"px",
|
||
|
|
||
|
});
|
||
|
return true;
|
||
|
}
|
||
|
if (attr.UIContralType == 2) {
|
||
|
this.tableColumnData.push({
|
||
|
field: attr.KeyOfEn,
|
||
|
text: attr.Name,
|
||
|
width: width+"px"
|
||
|
});
|
||
|
return true;
|
||
|
}
|
||
|
if (width == null || width == "" || width == undefined)
|
||
|
width = 100;
|
||
|
|
||
|
this.tableColumnData.push({
|
||
|
field: attr.KeyOfEn,
|
||
|
text: attr.Name,
|
||
|
width: width+"px"
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
|
||
|
},
|
||
|
Search(){
|
||
|
console.log("进入Search") ;
|
||
|
var ur = new this.Entity("BP.Sys.UserRegedit");
|
||
|
ur.MyPK = this.webuser.No + "_" + this.ensName + "_SearchAttrs";
|
||
|
ur.FK_Emp = this.webuser.No;
|
||
|
ur.CfgKey = "SearchAttrs";
|
||
|
ur.FK_MapData = this.ensName;
|
||
|
ur.SearchKey = this.toolbarData.SearchKey; //关键字
|
||
|
ur.DTFrom = this.toolbarData.DTFrom; //时间从
|
||
|
ur.DTTo = this.toolbarData.DTTo;//时间到
|
||
|
var str = "";
|
||
|
this.searchForm.forEach(item=>{
|
||
|
if(item.type=="Input" && item.prop!="SearchKey")
|
||
|
ur.SetPara(item.prop, this.toolbarData[item.prop]);
|
||
|
if(item.type=="Select"){
|
||
|
str += "@" + item.prop + "=" + this.toolbarData[item.prop];
|
||
|
}
|
||
|
|
||
|
});
|
||
|
ur.Vals = str;
|
||
|
ur.Save();
|
||
|
this.ur = ur;
|
||
|
this.currentPage=1;
|
||
|
this.SearchData();
|
||
|
|
||
|
},
|
||
|
SearchData(){
|
||
|
var handler = new this.HttpHandler("BP.WF.HttpHandler.WF_Comm");
|
||
|
handler.AddJson(this.params);
|
||
|
handler.AddPara("PageIdx", this.currentPage);
|
||
|
handler.AddPara("PageSize", this.pagesize);
|
||
|
var data = handler.DoMethodReturnString("Search_SearchIt");
|
||
|
if (data.indexOf('err@') == 0) {
|
||
|
this.$message.error(data);
|
||
|
console.log(data);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
data = JSON.parse(data);
|
||
|
var en = new this.Entity("BP.Sys.UserRegedit");
|
||
|
en.MyPK = this.webuser.No + "_" + this.ensName + "_SearchAttrs";
|
||
|
en.RetrieveFromDBSources();
|
||
|
this.ur = en;
|
||
|
var count = this.ur.GetPara("RecCount");
|
||
|
count= count==null||count==undefined || count==""?0:parseInt(count);
|
||
|
this.total =count;
|
||
|
//初始化数据
|
||
|
this.tableData=data["DT"];
|
||
|
return data;
|
||
|
},
|
||
|
RowSelect(row){//选中一行
|
||
|
var paras=this.params;
|
||
|
paras[this.enPK]=row[this.enPK];
|
||
|
this.attrs.forEach(attr=>{
|
||
|
if (attr.UIContralType == 1)
|
||
|
paras[attr.KeyOfEn]=row[attr.KeyOfEn];
|
||
|
});
|
||
|
this.OpenEn(row[this.enPK], paras,row);
|
||
|
},
|
||
|
New(){ //新建
|
||
|
this.OpenEn("",this.params);
|
||
|
},
|
||
|
Imp(){//导入
|
||
|
|
||
|
},
|
||
|
Setting(){
|
||
|
this.dialogFormVisible = true;
|
||
|
|
||
|
},
|
||
|
handleSizeChange(val) {
|
||
|
this.pagesize = val;
|
||
|
this.currentPage=1;
|
||
|
this.SearchData();
|
||
|
console.log(`每页 ${val} 条`);
|
||
|
},
|
||
|
handleCurrentChange(val) {
|
||
|
this.currentPage = val;
|
||
|
this.SearchData();
|
||
|
console.log(`当前页: ${val}`);
|
||
|
},
|
||
|
ChangeToolbarData(val){
|
||
|
this.toolbarData = val;
|
||
|
},
|
||
|
InitDDLOperation(frmData, mapAttr){
|
||
|
var ens = frmData[mapAttr.Field];
|
||
|
if (ens == null) {
|
||
|
ens = [{ 'IntKey': 0, 'Lab': '否' }, { 'IntKey': 1, 'Lab': '是' }];
|
||
|
}
|
||
|
var arry=[];
|
||
|
arry.push({'No':'all','Name':'全部'});
|
||
|
ens.forEach(en=>{
|
||
|
if(en.No==undefined)
|
||
|
arry.push({'No':en.IntKey+"",'Name':en.Lab});
|
||
|
else
|
||
|
arry.push({'No':en.No,'Name':en.Name});
|
||
|
});
|
||
|
return arry;
|
||
|
},
|
||
|
OpenEn(pkval,paras,row){
|
||
|
var url = this.cfg.UrlExt;
|
||
|
var urlOpenType = this.cfg.SearchUrlOpenType;
|
||
|
paras.PKVal = pkval;
|
||
|
if (urlOpenType == undefined || urlOpenType == 0 || urlOpenType == 1)
|
||
|
paras.EnName = this.mapBase.EnName;
|
||
|
if (urlOpenType == 2||urlOpenType == 3)
|
||
|
paras.FK_MapData=this.ensName;
|
||
|
if (urlOpenType == 9) {
|
||
|
if (url.indexOf('FrmID') != -1){
|
||
|
paras.WorkID=pkval;
|
||
|
paras.OID=pkval;
|
||
|
}else{
|
||
|
paras.EnName = this.mapBase.EnName ;
|
||
|
}
|
||
|
if(url.indexOf("@")!=-1 && url.indexOf("?")!=-1 && row!=undefined){
|
||
|
url=url.substr(url.indexOf("?")+1);
|
||
|
var items=url.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+", "g"));// eslint-disable-line
|
||
|
var key="";
|
||
|
items.forEach(item=>{
|
||
|
var strs=item.split("=");
|
||
|
key=strs[0];
|
||
|
if(key.indexOf("@")!=-1){
|
||
|
key = key.substr(1);
|
||
|
paras[key]=row[key];
|
||
|
}else{
|
||
|
paras[key]=strs[1];
|
||
|
}
|
||
|
|
||
|
})
|
||
|
}
|
||
|
|
||
|
}
|
||
|
//弹出显示页面
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
|
||
|
</style>
|