123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <template>
- <a-modal
- :title="currTitle"
- :width="450"
- :visible="visible"
- :closable="false"
- :maskClosable="closable">
- <template slot="footer">
- <a-button v-if="closable" @click="close">关闭</a-button>
- <a-button type="primary" @click="departOk">确认</a-button>
- </template>
- <a-form>
- <a-form-item
- :labelCol="{span:4}"
- :wrapperCol="{span:20}"
- style="margin-bottom:10px"
- :validate-status="validate_status">
- <a-tooltip placement="topLeft" >
- <template slot="title">
- <span>您隶属于多部门,请选择当前所在部门</span>
- </template>
- <a-avatar style="backgroundColor:#87d068" icon="gold" />
- </a-tooltip>
- <a-select v-model="departSelected" :class="{'valid-error':validate_status=='error'}" placeholder="请选择登录部门" style="margin-left:10px;width: 80%">
- <a-icon slot="suffixIcon" type="gold" />
- <a-select-option
- v-for="d in departList"
- :key="d.id"
- :value="d.orgCode">
- {{ d.departName }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-form>
- </a-modal>
-
- </template>
- <script>
- import { getAction,putAction } from '@/api/manage'
- import Vue from 'vue'
- import store from '@/store/'
- import { USER_INFO } from "@/store/mutation-types"
- export default {
- name: 'DepartSelect',
- props:{
- title:{
- type:String,
- default:"部门选择",
- required:false
- },
- closable:{
- type:Boolean,
- default:false,
- required:false
- },
- username:{
- type:String,
- default:"",
- required:false
- }
- },
- watch:{
- username(val){
- if(val){
- this.loadDepartList()
- }
- }
- },
- data(){
- return {
- currTitle:this.title,
- visible:false,
- departList:[],
- departSelected:"",
- validate_status:"",
- currDepartName:"",
- }
- },
- created(){
- //this.loadDepartList()
- },
- methods:{
- loadDepartList(){
- return new Promise(resolve => {
- let url = "/sys/user/getCurrentUserDeparts"
- this.currDepartName=''
- getAction(url).then(res=>{
- if(res.success){
- let departs = res.result.list
- let orgCode = res.result.orgCode
- if(departs && departs.length>0){
- for(let i of departs){
- if(i.orgCode == orgCode){
- this.currDepartName = i.departName
- break
- }
- }
- }
- this.departSelected = orgCode
- this.departList = departs
- if(this.currDepartName){
- this.currTitle ="部门切换(当前部门 : "+this.currDepartName+")"
- }
- }
- resolve()
- })
- })
- },
- close(){
- this.departClear()
- },
- departOk(){
- if(!this.departSelected){
- this.validate_status='error'
- return false
- }
- let obj = {
- orgCode:this.departSelected,
- username:this.username
- }
- putAction("/sys/selectDepart",obj).then(res=>{
- if(res.success){
- const userInfo = res.result.userInfo;
- Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000);
- store.commit('SET_INFO', userInfo);
- //console.log("---切换组织机构---userInfo-------",store.getters.userInfo.orgCode);
- this.departClear()
- }
- })
- },
- show(){
- //如果组件传值username此处就不用loadDepartList了
- this.loadDepartList().then(()=>{
- this.visible=true
- if(!this.departList || this.departList.length<=0){
- this.$message.warning("您尚未设置部门信息!")
- this.departClear()
- }
- })
- },
- departClear(){
- this.departList=[]
- this.departSelected=""
- this.visible=false
- this.validate_status=''
- this.currDepartName=""
- },
- }
- }
- </script>
- <style scoped>
- .valid-error .ant-select-selection__placeholder{
- color: #f5222d;
- }
- </style>
|