123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <template>
- <div>
- <el-input :placeholder="attrs.placeholder" :value="userValue.userName" @clear="clearValue" size="small" class="myinpuy-with-select" clearable>
- <el-button slot="append" icon="el-icon-more" @click="value = true"></el-button>
- </el-input>
- <vxe-modal v-model="value" id="userDialogModal" v-loading="load" width="900px" height="80%" @show="show" show-zoom resize transfer show-footer>
- <template #title>
- <span>选择用户</span>
- </template>
- <template #default>
- <module-view :propConfig="config" ref="view" @pagination="getList" @onRefresh="getList" @resert="queryList" @search="queryList" />
- </template>
- <template #footer>
- <div class="btn">
- <el-button plain size="small" @click="value = false">取消</el-button>
- <el-button type="primary" size="small" @click="confirm">确定</el-button>
- </div>
- </template>
- </vxe-modal>
- </div>
-
- </template>
- <script lang="ts">
- import { Component, Prop, Vue, Watch } from "vue-property-decorator";
- import { listUser } from '@/api/system/user'
- import VueViews from '@/benyun/compVue/VueViews'
- @Component
- export default class UserModal extends VueViews {
- value=false;
- load=false;
- isSearch=false
- timeNum = 0;
- userValue:any={};
- config:any={
- attr:{
- calculateH:true
- },
- search:{
- attr:{
- size:'small',
- },
- columns:[
- [{
- span:10,
- label:'用户名称',
- prop:'userName',
- component:'by-input',
- labelWidth:'120px',
- compConfig:{
- attr:{
- clearable:true
- }
- }
- },{
- span:10,
- label:'部门',
- prop:'deptId',
- component:'select-tree',
- labelWidth:'120px',
- compConfig:{
- attr:{
- clearable:true,
- retConfig:{
- deptId:'id',
- deptName:'label'
- },
- label:'label',
- },
- request:{
- url:'/system/dept/treeselect',
- method:"GET"
- }
- }
- }]
- ]
- },
- tool:{
- tools:{
- search:true,
- refresh:true
- }
- },
- table:{
- attr:{
- size:'mini',
- radio:true,
- seq:true,
- align:'center',
- triggerRowCheck:'row',
- pageSize:10
- },
- columns:[{
- title:'用户名称',
- field:'userName'
- },{
- title:'用户昵称',
- field:'nickName'
- },{
- title:'部门',
- field:'deptName',
- formatField:(row:any) =>{
- if(row.dept?.deptName){
- return row.dept.deptName
- }else{
- return '';
- }
- }
- }]
- }
- }
- @Watch('propValue')
- propValueChange(v:any){
- this.setValue(v);
- }
- mounted(){
-
- }
- //分页
- pagination(){
- if(this.isSearch){
- this.queryList();
- }else{
- this.getList()
- }
- }
- show(){
- this.getList();
- }
- //列表请求(只有分页,不包含搜素条件)
- getList(){
- if(!this.$refs.view){
- if(this.timeNum > 5){
- return
- }
- setTimeout(()=>{
- this.getList()
- },500)
- this.timeNum ++;
- return
- }
- this.isSearch = false;
- let data = (this.$refs.view as any).getPage();
- delete data.total;
- this.requestList(data);
- }
- //列表请求(包含分页和搜素条件)
- queryList(){
- this.isSearch = true;
- let data = (this.$refs.view as any).getQuery();
- delete data.total;
- this.requestList(data);
- }
- requestList(data:any){
- this.load = true;
- listUser(data).then((res:any) => {
- this.load = false;
- (this.$refs.view as any).setTableValue(res.rows);
- let page = {
- total: res.data.total //总条数
- };
- (this.$refs.view as any).setPage(page)
- }).catch(()=>{
- this.load = false;
- })
- }
- //获取已选中表格数据
- getSelectdata(){
- let data:Array<any>=[];
- if(this.$refs.view){
- data = (this.$refs.view as any).getSelectData()
- }
- return data;
- }
- //确定
- confirm(){
- let data:Array<any>=this.getSelectdata();
- if(data.length == 0){
- this.$message('请选择用户!')
- return
- }
- this.userValue.userId = data[0].userId;
- this.userValue.userName = data[0].userName;
- this.value = false;
- this.onChange();
- }
- onChange(){
- this.$emit('onChange',this.userValue);
- }
- setValue(v:any){
- this.userValue.userName = v;
- if(this.parentValue){
- this.userValue.userId = this.parentValue.userId;
- }
- }
- // 清空数据
- clearValue(){
- this.userValue = {};
- }
- }
- </script>
- <style lang="scss" scoped>
- </style>
|