10.10综合交易所原始源码-管理后台
1
admin
2026-01-06 089bf5d2378b3c4a61d795b2a92bede2c193b771
src/views/main-navbar-customerCentor.vue
New file
@@ -0,0 +1,282 @@
<template>
  <el-dialog
    title="客服个人中心页面"
    :visible.sync="visible"
    width="600px"
    :append-to-body="true">
    <el-form :model="dataForm" ref="dataForm" label-width="100px">
      <el-form-item label="用户名">
        <span>{{ userName }}</span>
      </el-form-item>
      <el-form-item label="当前在线状态" prop="online">
        <el-input  v-model="dataForm.online" disabled></el-input>
      </el-form-item>
      <el-form-item label="最后上线时间" prop="last_online_time">
        <el-input  v-model="dataForm.last_online_time" disabled></el-input>
      </el-form-item>
      <el-form-item label="最后下线时间" prop="last_offline_time">
        <el-input  v-model="dataForm.last_offline_time" disabled></el-input>
      </el-form-item>
      <el-form-item label="再次访问自动回复">
        <el-input  v-model="dataForm.auto_answer"></el-input>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="visible = false">关闭</el-button>
      <el-button type="primary" @click="personalOpen()">{{dataForm.online_state==1 ? "下线" : "上线"}}</el-button>
      <el-button type="primary" @click="personalUpdateAutoAnswer1()">保存</el-button>
    </span>
    <!-- 确认弹窗-start -->
    <el-dialog
      title="验证资金密码"
      :visible.sync="dialogFormVisible"
      :append-to-body="true"
    >
      <el-form
        :model="dataForm2"
        ref="dataForm2"
        @keyup.enter.native="personalUpdateAutoAnswer()"
        label-width="80px"
      >
        <el-form-item
          label="登录人资金密码"
          :label-width="formLabelWidth"
          prop="loginSafeword"
        >
          <el-input
            v-model="dataForm2.loginSafeword"
            type="password"
            placeholder="登录人资金密码"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="personalUpdateAutoAnswer()">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 确认弹窗-end -->
  </el-dialog>
</template>
<script>
  import { clearLoginInfo } from '@/utils'
  import { Debounce } from '@/utils/debounce'
  import { encrypt } from '@/utils/crypto'
  export default {
    data () {
      var validateConfirmPassword = (rule, value, callback) => {
        if (this.dataForm.newPassword !== value) {
          callback(new Error('确认密码与新密码不一致'))
        } else {
          callback()
        }
      }
      return {
        visible: false,
        dataForm: {
          password: '',
          newPassword: '',
          confirmPassword: ''
        },
        dialogFormVisible:false,
        dataForm2:{},
        formLabelWidth: "120px",
      }
    },
    computed: {
      userName: {
        get () { return this.$store.state.user.name }
      },
      mainTabs: {
        get () { return this.$store.state.common.mainTabs },
        set (val) { this.$store.commit('common/updateMainTabs', val) }
      }
    },
    methods: {
      // 初始化
      init () {
        this.personalCustomer();
        this.visible = true
        this.$nextTick(() => {
          this.$refs['dataForm'].resetFields()
        })
      },
      // 表单提交
      dataFormSubmit: Debounce(function () {
        this.$refs['dataForm'].validate((valid) => {
          if (valid) {
            this.$http({
              url: this.$http.adornUrl('/changeLoginPassword'),
              method: 'post',
              data: this.$http.adornData({
                'oldPassword': encrypt(this.dataForm.password),
                'newPassword': encrypt(this.dataForm.newPassword)
              })
            }).then(({data}) => {
              if(data.code == 0){
                this.$message({
                message: '操作成功',
                type: 'success',
                duration: 1500,
                onClose: () => {
                  this.visible = false
                  this.$nextTick(() => {
                    // this.mainTabs = []
                     // clearLoginInfo()
                    // this.$router.replace({ name: 'login' })
                  })
                }
              })
              }else{
                this.$message({
                message:data.msg,
                type: 'error',
                duration: 1500,
                onClose: () => {
                }
              })
              }
            })
          }
        })
      }),
      personalCustomer() {
        this.$http({
          url: this.$http.adornUrl("/normal/adminPersonalCustomerAction!personalCustomer.action"),
          method: "get",
          data: this.$http.adornData({}),
        }).then(({ data }) => {
          if(data.code == 0){
            let kefuInfo = {}
            this.dataForm = data.data;
            if(this.dataForm.online_state == 1){
              this.dataForm.online = "上线"
              kefuInfo.isOnline = true;
            }else{
              this.dataForm.online = "下线"
              kefuInfo.isOnline = false;
            }
            this.$bus.$emit("updateKefuInfo",kefuInfo);
          }else{
            this.$message(data.msg);
          }
        });
      },
      personalOpen(){
        // this.dialogFormVisible = true;
        if(this.dataForm.online_state == 1){
          this.personalOffline();
        }else{
          this.personalOnline();
        }
      },
      personalOnline() {
        this.$http({
          url: this.$http.adornUrl("/normal/adminPersonalCustomerAction!personalOnline.action"),
          method: "get",
          data: this.$http.adornData({}),
        }).then(({ data }) => {
          if(data.code == 0){
            this.personalCustomer();
          }else{
            this.$message(data.msg);
          }
        });
      },
      personalOffline() {
        this.open("下线后将不会收到消息,如有新消息,用户将分配给其他在线客服","是否下线",
          ()=>{
          //
          this.$http({
            url: this.$http.adornUrl("/normal/adminPersonalCustomerAction!personalOffline.action"),
            method: "get",
            data: this.$http.adornData({}),
          }).then(({ data }) => {
            if(data.code == 0){
              this.personalCustomer();
            }else{
              this.$message(data.msg);
            }
          });
          //
        },()=>{});
      },
      open(message,title,yes,cancel) {
        this.$confirm(message, title, {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning',
          center: true
        }).then(() => {
          if(yes){yes()}
          // this.$message({
          //   type: 'success',
          //   message: '删除成功!'
          // });
        }).catch(() => {
          if(cancel){cancel()}
          // this.$message({
          //   type: 'info',
          //   message: '已取消删除'
          // });
        });
      },
      personalUpdateAutoAnswer1(){
        this.dialogFormVisible = true;
      },
      personalUpdateAutoAnswer() {
        if(!this.dataForm2.loginSafeword){
          this.$message({
              message: "资金密码不能为空",
              type: 'error',
              duration: 1500,
              onClose: () => {
                // this.visible = false
                // this.$emit('refreshDataList')
              }
            })
          return
        }
        this.$http({
          url: this.$http.adornUrl("/normal/adminPersonalCustomerAction!personalUpdateAutoAnswer.action"),
          method: "get",
          params: this.$http.adornParams({
            auto_answer:this.dataForm.auto_answer,
            login_safeword:encrypt(this.dataForm2.loginSafeword)
          }),
        }).then(({ data }) => {
          if(data.code == 0){
            this.dialogFormVisible = false;
          }else{
            // this.$message(data.msg);
            this.$message({
              message: data.msg == "AES解密错误" ? "资金密码不正确" : data.msg,
              type: 'error',
              duration: 1500,
              onClose: () => {
                // this.visible = false
                // this.$emit('refreshDataList')
              }
            })
          }
        });
      },
    }
  }
</script>