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.
		
		
		
		
		
			
		
			
				
					
					
						
							322 lines
						
					
					
						
							9.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							322 lines
						
					
					
						
							9.1 KiB
						
					
					
				
								<template>
							 | 
						|
								  <div class="aui-wrapper aui-page__login">
							 | 
						|
								
							 | 
						|
								    <div class="aui-content__wrapper">
							 | 
						|
								      <main class="aui-content">
							 | 
						|
								        <div class="login-header">
							 | 
						|
								          <h2 class="login-brand">{{ $t('brand.work') }}</h2>
							 | 
						|
								        </div>
							 | 
						|
								        <div class="login-body">
							 | 
						|
								          <h3 class="login-title">{{ $t('login.title') }}</h3>
							 | 
						|
								          <el-form :model="dataForm"
							 | 
						|
								                   :rules="dataRule"
							 | 
						|
								                   ref="dataForm"
							 | 
						|
								                   @keyup.enter.native="dataFormSubmitHandle()"
							 | 
						|
								                   status-icon>
							 | 
						|
								            <!-- <el-form-item>
							 | 
						|
								              <el-select v-model="$i18n.locale"
							 | 
						|
								                         class="w-percent-100">
							 | 
						|
								                <el-option v-for="(val, key) in i18nMessages"
							 | 
						|
								                           :key="key"
							 | 
						|
								                           :label="val._lang"
							 | 
						|
								                           :value="key"></el-option>
							 | 
						|
								              </el-select>
							 | 
						|
								            </el-form-item> -->
							 | 
						|
								            <el-form-item prop="phone">
							 | 
						|
								              <el-input v-model="dataForm.phone"
							 | 
						|
								                        placeholder="手机号">
							 | 
						|
								                <span slot="prefix"
							 | 
						|
								                      class="el-input__icon">
							 | 
						|
								                  <svg class="icon-svg"
							 | 
						|
								                       aria-hidden="true">
							 | 
						|
								                    <use xlink:href="#icon-user"></use>
							 | 
						|
								                  </svg>
							 | 
						|
								                </span>
							 | 
						|
								              </el-input>
							 | 
						|
								            </el-form-item>
							 | 
						|
								            <el-form-item prop="password">
							 | 
						|
								              <el-input v-model="dataForm.password"
							 | 
						|
								                        type="password"
							 | 
						|
								                        :placeholder="$t('login.password')">
							 | 
						|
								                <span slot="prefix"
							 | 
						|
								                      class="el-input__icon">
							 | 
						|
								                  <svg class="icon-svg"
							 | 
						|
								                       aria-hidden="true">
							 | 
						|
								                    <use xlink:href="#icon-lock"></use>
							 | 
						|
								                  </svg>
							 | 
						|
								                </span>
							 | 
						|
								              </el-input>
							 | 
						|
								            </el-form-item>
							 | 
						|
								            <el-form-item prop="captcha">
							 | 
						|
								              <el-row :gutter="20">
							 | 
						|
								                <el-col :span="14">
							 | 
						|
								                  <el-input v-model="dataForm.captcha"
							 | 
						|
								                            :placeholder="$t('login.captcha')">
							 | 
						|
								                    <span slot="prefix"
							 | 
						|
								                          class="el-input__icon">
							 | 
						|
								                      <svg class="icon-svg"
							 | 
						|
								                           aria-hidden="true">
							 | 
						|
								                        <use xlink:href="#icon-safetycertificate"></use>
							 | 
						|
								                      </svg>
							 | 
						|
								                    </span>
							 | 
						|
								                  </el-input>
							 | 
						|
								                </el-col>
							 | 
						|
								                <el-col :span="10"
							 | 
						|
								                        class="login-captcha">
							 | 
						|
								                  <img :src="captchaPath"
							 | 
						|
								                       @click="getCaptcha()">
							 | 
						|
								                </el-col>
							 | 
						|
								              </el-row>
							 | 
						|
								            </el-form-item>
							 | 
						|
								            <el-form-item>
							 | 
						|
								              <el-button type="primary"
							 | 
						|
								                         @click="dataFormSubmitHandle()"
							 | 
						|
								                         class="w-percent-100">{{ $t('login.title') }}</el-button>
							 | 
						|
								            </el-form-item>
							 | 
						|
								
							 | 
						|
								          </el-form>
							 | 
						|
								          <div class="div_tip">
							 | 
						|
								            <p class="p_tip">
							 | 
						|
								              {{ '请使用小程序端的账号密码登录'}}
							 | 
						|
								            </p>
							 | 
						|
								
							 | 
						|
								          </div>
							 | 
						|
								        </div>
							 | 
						|
								        <div class="login-footer">
							 | 
						|
								          <p>
							 | 
						|
								            <a href="https://demo.cloud.renren.io/renren-cloud"
							 | 
						|
								               target="_blank">{{ $t('login.demo') }}</a>
							 | 
						|
								          </p>
							 | 
						|
								          <!-- 2020 © renren.io -->
							 | 
						|
								          <p><a href="https://www.renren.io/"
							 | 
						|
								               target="_blank">{{ $t('login.copyright') }}</a></p>
							 | 
						|
								        </div>
							 | 
						|
								      </main>
							 | 
						|
								    </div>
							 | 
						|
								    <c-dialog :showFooter='false'
							 | 
						|
								              :title="'选择客户'"
							 | 
						|
								              :isNest="false"
							 | 
						|
								              :visible="diaVisible"
							 | 
						|
								              :dialogHeight="0.8"
							 | 
						|
								              :width="30"
							 | 
						|
								              :top="'120px'"
							 | 
						|
								              @cancel="diaCancel">
							 | 
						|
								      <!-- <div class="div_total"> -->
							 | 
						|
								      <div v-for="(item,index) in tableData"
							 | 
						|
								           :key=index
							 | 
						|
								           class="div_row">
							 | 
						|
								        <span @click="selectCustomer(item)"
							 | 
						|
								              class="span_name">{{item.customerName}}</span>
							 | 
						|
								      </div>
							 | 
						|
								
							 | 
						|
								      <!-- </div> -->
							 | 
						|
								      <!-- <el-table v-loading="tableLoading"
							 | 
						|
								                :data="tableData"
							 | 
						|
								                border
							 | 
						|
								                style="width: 100%;">
							 | 
						|
								
							 | 
						|
								        <el-table-column prop="customerName"
							 | 
						|
								                         label="客户名称"
							 | 
						|
								                         header-align="left"
							 | 
						|
								                         align="left"
							 | 
						|
								                         width="300"></el-table-column>
							 | 
						|
								        <el-table-column label="操作"
							 | 
						|
								                         fixed="right"
							 | 
						|
								                         header-align="right"
							 | 
						|
								                         align="right">
							 | 
						|
								          <template slot-scope="scope">
							 | 
						|
								            <el-button size="small"
							 | 
						|
								                       @click="selectCustomer(scope.row)">选择</el-button>
							 | 
						|
								
							 | 
						|
								          </template>
							 | 
						|
								        </el-table-column>
							 | 
						|
								      </el-table> -->
							 | 
						|
								    </c-dialog>
							 | 
						|
								  </div>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								import Cookies from 'js-cookie'
							 | 
						|
								import CDialog from '@c/CDialog'
							 | 
						|
								import debounce from 'lodash/debounce'
							 | 
						|
								import { messages } from '@/i18n'
							 | 
						|
								import { getUUID } from '@/utils'
							 | 
						|
								import { Loading } from 'element-ui' // 引入Loading服务
							 | 
						|
								
							 | 
						|
								let loading // 加载动画
							 | 
						|
								export default {
							 | 
						|
								  data () {
							 | 
						|
								    return {
							 | 
						|
								      i18nMessages: messages,
							 | 
						|
								      captchaPath: '',
							 | 
						|
								      dataForm: {
							 | 
						|
								        customerId: '',
							 | 
						|
								        app: 'gov',
							 | 
						|
								        client: 'web',
							 | 
						|
								        username: '',
							 | 
						|
								        phone: '',
							 | 
						|
								        password: '',
							 | 
						|
								        uuid: '',
							 | 
						|
								        captcha: ''
							 | 
						|
								      },
							 | 
						|
								      // 客户列表相关
							 | 
						|
								      diaVisible: false,
							 | 
						|
								      tableLoading: false,
							 | 
						|
								      tableData: []
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								  components: {
							 | 
						|
								    CDialog
							 | 
						|
								  },
							 | 
						|
								  computed: {
							 | 
						|
								    dataRule () {
							 | 
						|
								      return {
							 | 
						|
								        phone: [
							 | 
						|
								          { required: true, message: '手机号不能为空', trigger: 'blur' }
							 | 
						|
								        ],
							 | 
						|
								        password: [
							 | 
						|
								          { required: true, message: '密码不能为空', trigger: 'blur' }
							 | 
						|
								        ],
							 | 
						|
								        captcha: [
							 | 
						|
								          { required: true, message: '验证码不能为空', trigger: 'blur' }
							 | 
						|
								        ]
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								  created () {
							 | 
						|
								    this.getCaptcha()
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  methods: {
							 | 
						|
								    // 获取验证码
							 | 
						|
								    getCaptcha () {
							 | 
						|
								      this.dataForm.uuid = getUUID()
							 | 
						|
								      this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}`
							 | 
						|
								    },
							 | 
						|
								    // 表单提交
							 | 
						|
								    dataFormSubmitHandle () {
							 | 
						|
								      this.$refs['dataForm'].validate((valid, messageObj) => {
							 | 
						|
								        if (!valid) {
							 | 
						|
								          app.util.validateRule(messageObj)
							 | 
						|
								        }
							 | 
						|
								        this.startLoading()
							 | 
						|
								        // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/epmetuser/customerstaff/customerlist'
							 | 
						|
								        const url = '/epmetuser/customerstaff/customerlist'
							 | 
						|
								        const params = {
							 | 
						|
								          phone: this.dataForm.phone
							 | 
						|
								        }
							 | 
						|
								        window.app.ajax.post(url, params,
							 | 
						|
								          (data, rspMsg) => {
							 | 
						|
								
							 | 
						|
								            if (data.length === 0) {//没有客户,提示无法登录
							 | 
						|
								              this.$message.error('账号不存在')
							 | 
						|
								              this.endLoading()
							 | 
						|
								            } else if (data.length === 1) {
							 | 
						|
								              this.selectCustomer(data[0])
							 | 
						|
								            } else {
							 | 
						|
								              this.endLoading()
							 | 
						|
								              this.diaVisible = true
							 | 
						|
								              this.$nextTick(() => {
							 | 
						|
								                this.tableData = data
							 | 
						|
								              })
							 | 
						|
								            }
							 | 
						|
								          },
							 | 
						|
								          (rspMsg, data) => {
							 | 
						|
								            this.endLoading()
							 | 
						|
								            this.$message.error(rspMsg)
							 | 
						|
								          })
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								      })
							 | 
						|
								    },
							 | 
						|
								    //选择客户
							 | 
						|
								    selectCustomer (row) {
							 | 
						|
								      localStorage.setItem('customerId', row.customerId)
							 | 
						|
								      localStorage.setItem('customerName', row.customerName)
							 | 
						|
								      this.startLoading()
							 | 
						|
								      // const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/auth/govweb/login'
							 | 
						|
								      const url = '/auth/govweb/login'
							 | 
						|
								      this.dataForm.customerId = row.customerId
							 | 
						|
								
							 | 
						|
								      this.$http.post(url, this.dataForm).then(({ data: res }) => {
							 | 
						|
								        if (res.code !== 0) {
							 | 
						|
								          this.getCaptcha()
							 | 
						|
								          return this.$message.error(res.msg)
							 | 
						|
								        }
							 | 
						|
								        this.diaVisible = false
							 | 
						|
								
							 | 
						|
								        localStorage.setItem('userType', 'work')
							 | 
						|
								
							 | 
						|
								        Cookies.set('token', res.data.token)
							 | 
						|
								        this.$router.replace({ name: 'home' })
							 | 
						|
								      }).catch(() => { })
							 | 
						|
								      this.endLoading()
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								    // 取消
							 | 
						|
								    diaCancel () {
							 | 
						|
								
							 | 
						|
								      this.diaVisible = false
							 | 
						|
								    },
							 | 
						|
								    // 开启加载动画
							 | 
						|
								    startLoading () {
							 | 
						|
								      loading = Loading.service({
							 | 
						|
								        lock: true, // 是否锁定
							 | 
						|
								        text: '正在加载……', // 加载中需要显示的文字
							 | 
						|
								        background: 'rgba(0,0,0,.7)' // 背景颜色
							 | 
						|
								      })
							 | 
						|
								    },
							 | 
						|
								    // 结束加载动画
							 | 
						|
								    endLoading () {
							 | 
						|
								      // clearTimeout(timer);
							 | 
						|
								      if (loading) {
							 | 
						|
								        loading.close()
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								</script>
							 | 
						|
								<style scoped>
							 | 
						|
								.div_tip {
							 | 
						|
								  float: left;
							 | 
						|
								}
							 | 
						|
								.p_tip {
							 | 
						|
								  color: rgb(255, 80, 80);
							 | 
						|
								}
							 | 
						|
								.div_total {
							 | 
						|
								  height: 80%;
							 | 
						|
								  width: 100%;
							 | 
						|
								  text-align: center;
							 | 
						|
								}
							 | 
						|
								.el-dialog__body {
							 | 
						|
								  width: 500px;
							 | 
						|
								  padding: 0px 0px 0px 20px;
							 | 
						|
								}
							 | 
						|
								.div_row {
							 | 
						|
								  height: 50px;
							 | 
						|
								  text-align: center;
							 | 
						|
								  line-height: 50px;
							 | 
						|
								
							 | 
						|
								  /* width: 100px; */
							 | 
						|
								  /* background-color: rgb(241, 241, 241); */
							 | 
						|
								}
							 | 
						|
								.div_row:hover {
							 | 
						|
								  color: rgb(2, 119, 173);
							 | 
						|
								  font-weight: bold;
							 | 
						|
								  text-decoration: underline;
							 | 
						|
								}
							 | 
						|
								.i_icon {
							 | 
						|
								  width: 15px;
							 | 
						|
								  height: 15px;
							 | 
						|
								  margin-right: 10px;
							 | 
						|
								  float: left;
							 | 
						|
								}
							 | 
						|
								.span_name {
							 | 
						|
								  font-size: 18px;
							 | 
						|
								  cursor: pointer;
							 | 
						|
								  /* color: rgb(37, 156, 235); */
							 | 
						|
								}
							 | 
						|
								</style>
							 | 
						|
								
							 |