<style>
 @import url('../../assets/css/financia/accountingWork.css');

</style>
<template>
    <div class="page_accountingWork">
        <div class="query-box">
           <ul>
               <li>
                <span>
                    <em>{{$t('fnc.liucheng')}}</em>
                    <el-select class="w200"
                    filterable
                    v-model="msg.TemplateId"
                    :placeholder="$t('pub.pleaseSel')"
                    >
                    <el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
                    <el-option
                        v-for="(item,index) in SingleList"
                        :label="item.Name"
                        :value="item.Id"
                        :key="index+50000"
                    ></el-option>
                    </el-select>
                </span>
                <span>
                    <em>{{$t('advmanager.v_line')}}</em>
                    <el-select class="w200"
                    filterable
                    v-model="msg.LineID"
                    :placeholder="$t('pub.pleaseSel')"
                    >
                    <el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
                    <el-option
                        v-for="(item,index) in LineList"
                        :label="item.LineName"
                        :value="item.LineID"
                        :key="index+60000"
                    ></el-option>
                    </el-select>
                </span>
                </li>
               <li>
                    <button class="normalBtn" @click="getList" >{{$t('pub.searchBtn')}}</button>
                    <button class="normalBtn" @click="addShow=true,text=$t('pub.addBtn')" >{{$t('pub.addBtn')}}</button>
                    <el-tooltip class="item" effect="dark" :content="$t('fnc.qhpaiban')" placement="top-end">
                        <i v-if="transitionShow" class="iconfont icon-biaoge" @click="switchMethod(1)"></i>
                        <i v-if="transitionShow2" class="iconfont icon-icon-ssan" @click="switchMethod(2)"></i>
                    </el-tooltip>
               </li>
           </ul>
        </div>
        <div>
            <p class="_cashierWorl_tit">{{$t('tips.accWorkTips')}}</p>
            <div class="cm_content _scrollbar" :class="addShow==true?'_edHeight':''">
                <table class="po_content singeRowTable" style="border:1px solid #E6E6E6;" cellspacing="0" cellpadding="0" v-loading="loading" v-if="transitionShow2">
                    <tr>
                        <th>{{$t('fnc.w_ckmingcheng')}}</th>
                        <th>{{$t('system.query_company')}}</th>
                        <th>{{$t('fnc.w_ywrenyuan')}}</th>
                        <th>{{$t('fnc.liucheng')}}</th>
                        <th>{{$t('advmanager.v_line')}}</th>
                        <th>{{$t('fnc.w_fzfangxiang')}}</th>
                        <th>{{$t('system.table_operation')}}</th>
                    </tr>
                    <tr v-for="(item,index) in dataList" :key="index">
                        <td>{{item.Name}}</td>
                        <td>{{item.BName}}</td>
                        <td>
                            <span v-for="(i,ix) in item.emList">{{i.emName}} <span v-if="ix!=item.emList.length-1">,</span> </span>
                        </td>
                        <td>
                            <span v-for="(i,ix) in item.TemplateList" :key="ix+5000">{{i.Name}} <span v-if="ix!=item.TemplateList.length-1">,</span> </span>
                        </td>
                        <td>
                            <span v-for="(i,ix) in item.LineList" :key="ix+7000">{{i.Name}} <span v-if="ix!=item.LineList.length-1">,</span> </span>
                        </td>
                        <td>
                            <span v-if="item.Direct==1">{{$t('fnc.shoukuan')}}</span>
                            <span v-else-if="item.Direct==2">{{$t('fnc.zhikuan')}}</span>
                            <span v-else>{{$t('fnc.shouzhi')}}</span>
                        </td>
                        <td>
                            <el-row>
                                <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start">
                                    <el-button type="primary" class="iconfont icon-bianji-smal" circle @click="editCurency(item.ID),text=$t('pub.updateMsg')"></el-button>
                                </el-tooltip>
                                <el-tooltip class="item" effect="dark" :content="$t('fnc.w_djxinxi')" placement="top-start">
                                    <el-button type="danger" class="iconfont icon-img-rili" circle @click="goUrlDetail('CashierWorkDetail',2,item.Name,item.ID,item.BranchId)"></el-button>
                                </el-tooltip>
                                <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start">
                                    <el-button type="danger" class="iconfont icon-img_delete_small" circle @click="financeinfoRemove(item.ID,item.ID)"></el-button>
                                </el-tooltip>
                            </el-row>
                        </td>
                    </tr>
                </table>
                <div v-if="transitionShow" class="clearfix">
                    <div class="po_content_list_item" v-for="(item,index) in dataList" :key="index">
                        <div class="po_content_list_item_top">
                            <span class="_item_top_name">{{item.Name}}</span>
                            <span class="_item_top_icon">
                                <i class="iconfont icon-rizhi1" @click="goUrlDetail('CashierWorkDetail',1,item.Name,item.ID,item.BranchId)"></i>
                                <i class="iconfont icon-bianji-smal" @click="editCurency(item.ID),text=$t('system.table_edit')"></i>
                                <i class="iconfont icon-img_delete_small" @click="financeinfoRemove(item.ID)"></i>
                            </span>
                        </div>
                        <div class="po_content_list_item_bottom">
                            <p>
                                <span>{{$t('fnc.w_ywrenyuan')}}</span>
                                <template v-if="item.emList.length>0">
                                    <span v-if="item.emList.length==1">
                                        {{item.emList[0].emName}}
                                    </span>
                                    <div v-else>
                                        <el-popover
                                            placement="bottom"
                                            popper-class="CashierWork_tripDetails"
                                            trigger="click">
                                            <div class="">
                                                <span class="_all_name" v-for="(i,io) in item.emList">{{i.emName}}</span>
                                            </div>
                                            <span slot="reference" @click=""  class="_underline">{{item.emList[0].emName}} {{$t('fnc.w_gong')}}({{item.emList.length}}){{$t('hotel.hotel_people')}}</span>
                                        </el-popover>
                                    </div>
                                </template>
                                <template v-else>
                                    <span>{{$t('fnc.no')}}</span>
                                </template>

                            </p>
                        </div>
                    </div>
                </div>
                <div class="noData" v-show="noData">
                    {{$t('system.content_noData')}}
                </div>
                <div>
                    <el-pagination
                        background
                        @current-change="handleCurrentChange"
                        :current-page.sync="currentPage"
                        layout="total,prev, pager, next, jumper"
                        :page-size=msg.pageSize
                        :total=total>
                    </el-pagination>
                </div>
            </div>
            <div class="_vMG_edit" :class="addShow==true?'edHeight':''">
                <el-row class="_margin_bottom_20">
                    <el-col :span="20">
                        <p class="_tit">{{text}}{{$t('fnc.w_chuangkou')}}</p>
                    </el-col>
                    <el-col :span="4" class="_add_saveBtn">
                        <button type="button" class="normalBtn" @click="submitForm('addMsg',1)">{{$t('pub.saveBtn')}}</button>
                        <button class="hollowFixedBtn" type="button" @click="cancelEdit(),resetForm('addMsg'),addShow=false">{{$t('pub.cancelBtn')}}</button>
                    </el-col>
                </el-row>
                <el-form class=" clearfix" :model="addMsg" ref="addMsg" :rules="rules" label-width="100px">
                    <el-row>
                        <el-col :span="4">
                            <el-form-item :label="$t('system.query_airName')+':'" prop="Name">
                                <el-input v-model="addMsg.Name"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="4">
                            <el-form-item :label="$t('fnc.ssuogongsi')+':'" prop="BranchId">
                                <el-select  filterable v-model='addMsg.BranchId'>
                                    <el-option v-for='item in CompanyList'
                                        :label='item.BName'
                                        :value='item.Id'
                                        :key='item.Id'
                                        :disabled="item.disabled">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                            <el-form-item :label="$t('fnc.w_ywrenyuan')+':'" prop="listArr">
                                <el-select
                                    v-model="addMsg.listArr"
                                    filterable
                                    remote
                                    multiple
                                    reserve-keyword
                                    :placeholder="$t('pub.pleaseImport')"
                                    :remote-method="remoteMethod"
                                    @change="$forceUpdate()"
                                    @remove-tag="removeTag"
                                    :loading="loading2">
                                    <el-option
                                        v-for="(item,index) in searchList"
                                        :key="index+60000"
                                        :label="item.name"
                                        :value="item.empId">
                                        <span style="float: left">{{ item.name }}</span>
                                        <span style="float: right; color: #8492a6; font-size: 13px">{{ item.postName }}</span>
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                            <el-form-item :label="$t('fnc.liucheng')">
                                <el-select
                                    v-model="addMsg.TemplateListArr"
                                    filterable
                                    multiple
                                    collapse-tags
                                    @change="$forceUpdate()"
                                    :placeholder="$t('pub.pleaseImport')">
                                    <el-option
                                        v-for="(item,index) in SingleList"
                                        :key="index+200"
                                        :label="item.Name"
                                        :value="item.Id">
                                        <!-- <span style="float: left">{{ item.name }}</span>
                                        <span style="float: right; color: #8492a6; font-size: 13px">{{ item.postName }}</span> -->
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5">
                            <el-form-item :label="$t('advmanager.v_line')">
                                <el-select
                                    v-model="addMsg.LineListArr"
                                    filterable
                                    multiple
                                    collapse-tags
                                    @change="$forceUpdate()"
                                    :placeholder="$t('pub.pleaseImport')">
                                    <el-option
                                        v-for="(item,index) in LineList"
                                        :key="index+700"
                                        :label="item.LineName"
                                        :value="item.LineID">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                       <el-col :span="6">
                            <el-form-item :label="$t('fnc.w_fzfangxiang')" prop="Direct">
                                <el-radio v-model="addMsg.Direct" :label="1">{{$t('fnc.w_shou')}}</el-radio>
                                <el-radio v-model="addMsg.Direct" :label="2">{{$t('fnc.w_zhi')}}</el-radio>
                                <el-radio v-model="addMsg.Direct" :label="3">{{$t('fnc.shouzhi')}}</el-radio>
                            </el-form-item>
                        </el-col>
                        <!-- <el-col :span="12">
                            <el-form-item label="适用费用"  class="_treeselect">
                                <treeselect
                                    class=""
                                    v-model="CostIdS"
                                    value-consists-of="LEAF_PRIORITY"
                                    :placeholder="$t('pub.pleaseSel')"
                                    :multiple="true"
                                    :options="CostTypeList"
                                    noChildrenText=''
                                    :normalizer="normalizer"/>
                            </el-form-item>
                        </el-col> -->
                    </el-row>
                </el-form>
            </div>
        </div>
    </div>
</template>
<script>
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
	components: { Treeselect },
    data(){
        return{
            msg:{
                pageIndex:1,
                pageSize:15,
                TemplateId:'',
            },
            addMsg:{
                ID:0,
                Name:'',
                accountant_list:[],
                emList:[],
                TemplateList:[],
                listArr:[],
                BranchId:'',
                Direct:'',
                LineList:[]
            },
            type:-1,
            addShow:false,
            loading:false,
            loading2:false,
            noData:false,
            zhiChe:false,
            shouChe:false,
            total:0,
            currentPage: 1,
            text:'',
            dataList:[],
            searchList:[],
            AccList:[],
            CompanyList:[],
            rules: {//表单必填验证
                Name: [
                    { required: true, message: this.$t('rule.qtxckmingcheng'), trigger: 'blur' }
                ],
                listArr: [
                    {type: 'array', required: true, editCurencymessage: this.$t('rule.qxzywuyuan'), trigger: 'blur' }
                ],BranchId:[
                    { required: true, message: this.$t('rule.company'), trigger: 'change' }
                ],Direct:[
                    { required: true, message: this.$t('rule.qxzsyfangxiang'), trigger: 'change' }
                ]
            },
            AccListProps: {
                value:'Num',
                label:'Name',
                children: 'children'
            },
            selectVal:[],
            transitionShow:false,
            transitionShow2:true,
            contenWidth:0,
            contenHeight:0,
            tableSize:0,
            shouList:[],
            shouListLoading:false,
            CostTypeList:[],
            normalizer(node) {
				return {
					id: node.ID,
					label: node.Name,
					children: node.ChildList,
				}
            },
            CostIdS:[],
            getCompanyMsg:{
                RB_Group_Id:'0',
                Status:'0',
            },
            SingleList:[],
            LineList:[],
        }
    },created(){
        let userInfo = this.getLocalStorage();
        let allH,allW,cH,cW;
        allH = document.documentElement.clientHeight;
        allW = document.documentElement.clientWidth;
        cW = allW-90;
        cH = allH-187; //255 = 50 40 21 36 40
        this.contenWidth = cW;
        this.contenHeight = cH;
        this.msg.pageSize = parseInt(cH/40)-1;
        this.tableSize = this.msg.pageSize = parseInt(cH/45);
        this.getCompanyMsg.RB_Group_Id = userInfo.RB_Group_id;    //集团ID
        this.getSingleList();
        this.getLineList();
    },methods:{
        getSingleList(){  // 获取费用类型
			this.apipost('FinancialFlowTemplate_post_GetSingleList',{},res=>{
				if(res.data.resultCode==1){
                    this.SingleList=res.data.data;
                }else{}
			},err=>{})
		},
        getLineList(){
            this.apipost("line_post_GetAllList", {}, res => {
                if (res.data.resultCode == 1) {
                this.LineList = res.data.data;
                } else {
                this.$message.error(res.data.message);
                }
            });
        },
        switchMethod(t){
            this.msg.pageIndex = 1;
            if(t===1){
                this.transitionShow = false;
                this.transitionShow2 = true;
                this.msg.pageSize = this.tableSize;
                this.getList();
            }else if(t===2){
                this.transitionShow = true;
                this.transitionShow2 = false;
                // 宽 235 高 206
                let cont = parseInt(this.contenWidth/235) * parseInt(this.contenHeight/120);
                this.msg.pageSize = cont;
                this.getList();
            }
        },
        getCostTypeList(){  // 获取费用类型
			this.apipost('Financial_post_GetTreeList',{Type:3},res=>{
				if(res.data.resultCode==1){
						this.CostTypeList=res.data.data;
                }else{}
			},err=>{})
		},
        goUrlDetail(path,type,name,id,bid){
            this.$router.push({name:path,query:{WindowType:type,name:name,id:id,bid:bid,blank:'y',tab:this.$t('objFill.kuaijickdjxx')}})
        },
        removeTag(id){
            this.addMsg.emList.forEach((x,index)=>{
                if(x.EmId === id){
                    this.addMsg.emList.splice(index,1)
                }
            })
        },
        mergeArray(list3, list1){
            for (var i = 0 ; i < list3.length ; i ++ ){
                for(var j = 0 ; j < list1.length ; j ++ ){
                    if (list3[i].EmId === list1[j].EmId){
                        list3.splice(i,1);
                    }
                }
            }
            for(var i = 0; i <list1.length; i++){
                list3.push(list1[i]);
            }
            return list3;
        },
        addCashierWork(){ // 提交保存
            let emList = this.addMsg.listArr;
            let arr = [];
            emList.forEach(x=>{
                let obj = {
                    'EmId':x,
                    'ID':0,
                    'WindowId':0
                }
                arr.push(obj);
            })
            let list4 = this.mergeArray(arr,this.addMsg.emList);
            let TemplateListArr=this.addMsg.TemplateListArr;
            let newArr=[];

            TemplateListArr.forEach(item=>{
                this.SingleList.forEach(val=>{
                    let obj={};
                    if(item==val.Id){
                        obj.Id=val.Id;
                        obj.Name=val.Name;
                        newArr.push(obj);
                    }
                })
            })
            let LineListArr=this.addMsg.LineListArr;
            let lineArr =[];
            LineListArr.forEach(item=>{
                this.LineList.forEach(val=>{
                    let obj={};
                    if(item==val.LineID){
                        obj.Id=val.LineID;
                        obj.Name=val.LineName;
                        lineArr.push(obj);
                    }
                })
            })

            this.addMsg.emList = list4;
            this.addMsg.TemplateList = newArr;
            this.addMsg.LineList = lineArr;
            this.apipost('Window_post_SetAccountant',this.addMsg,r=>{
                if(r.data.resultCode==1){
                    this.$message.success(r.data.message);
                    this.getList();
                    this.addShow = false;
                    this.cancelEdit();
                    // this.CostIdS = [];
                }else{
                    this.$message.error(r.data.message);
                }
            },null)
        },
        submitForm(addMsg) {//提交创建、修改表单
            this.$refs[addMsg].validate((valid) => {
                if (valid) {
                    this.addCashierWork();
                } else {
                    return false;
                }
            });
        },
        financeinfoRemove(id){  // 删除
            this.$confirm(this.$t('tips.qrscchuangkou'), this.$t('tips.tips'), {
                confirmButtonText: this.$t('pub.sureBtn'),
                cancelButtonText: this.$t('pub.cancelBtn'),
                type: 'warning'
            }).then(() => {
                this.apipost('Window_post_RemoveAccountant',{ID:id}, res => {
                    if(res.data.resultCode == 1) {
                        this.getList()
                        this.$message.success(res.data.message);
                    } else {
                        this.$message.error(res.data.message);
                    }
                }, err => {})
            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: this.$t('hotel.hotel_HasBeenCancelled')
                });
            });
        },
        remoteMethod(query) {
            if (query !== ''||this.addShow) {
                this.loading2 = true;
                this.apipost("admin_Get_Chat_All_SelectEmpName",{ EmName:query },res => {
                    if (res.data.resultCode == 1) {
                        this.searchList = res.data.data;
                        this.loading2 = false;
                    }
                },err => {});
            } else {
                this.searchList = [];
                this.loading2 = false;
            }
        },
        getList(){
            this.loading = true;
            this.apipost('Window_post_GetAccountantPageList',this.msg, res => {
                    if(res.data.resultCode == 1) {
                        this.dataList = res.data.data.pageData;
                        this.total = res.data.data.count;
                        if(this.total>0){
                            this.noData =false;
                        }else{
                            this.noData =true;
                        }
                    } else {
                        this.$message.error(res.data.message);
                    }
                    this.loading = false;
            }, err => {this.loading = false;})
        },
        editCurency(id){  //   修改  根据id 获取信息
            this.apipost('Window_post_GetAccountant',{ID:id}, res => {
                if(res.data.resultCode == 1) {
                    let data = res.data.data;
                    // data.CostList.forEach(x=>{
                    //     this.CostIdS.push(x.CostTypeId);
                    // })
                    this.addMsg = data;
                    this.addMsg.listArr = [];
                    this.addMsg.TemplateListArr = [];
                    this.addMsg.LineListArr=[];
                    if(data.emList&&data.emList.length>0){
                        data.emList.forEach(x=>{
                            this.remoteMethod(x.emName);
                            this.addMsg.listArr.push(x.EmId)
                        })
                    }
                    if(data.TemplateList&&data.TemplateList.length>0){
                        data.TemplateList.forEach(x=>{
                            this.addMsg.TemplateListArr.push(x.Id)
                        })
                    }
                    if(data.LineList&&data.LineList.length>0){
                        data.LineList.forEach(x=>{
                            this.addMsg.LineListArr.push(x.Id)
                        })
                    }
                    this.addMsg.accountant_list = [];
                    this.addShow = true;
                } else {
                    this.$message.error(res.data.message);
                }
            }, err => {})
        },
        handleCurrentChange(val) {
            this.msg.pageIndex = val;
            this.getList();
        },
        cancelEdit(){  // 取消修改、新增
            this.addMsg = {
                ID:0,
                Name:'',
                accountant_list:[],
                emList:[],
                listArr:[],
                TemplateListArr:[],
                TemplateList:[],
                BranchId:'',
                Direct:'',
                LineList:[],
                LineListArr:[]
            }
            this.CostIdS = [];
            this.searchList = [];
        },
        resetForm(formName) {//弹出框取消 初始化谈框内表单
            this.$refs[formName].resetFields();
        },
        getCompanyList(){ //获取公司列表
            this.apipost('admin_get_BranchGetList',this.getCompanyMsg,res=>{
                if(res.data.resultCode==1){
					let data = res.data.data
					this.CompanyList=res.data.data;
                }else{}
            },err=>{})
		},
    },mounted(){
        this.getList();
        this.getCostTypeList();
        this.getCompanyList();
    }
}
</script>