This commit is contained in:
linfso 2024-10-29 14:35:06 +08:00
parent 0edff7cc87
commit 96bf5ac2e0
6 changed files with 144 additions and 44 deletions

View File

@ -9,6 +9,16 @@ export function parseAddress(content) {
})
}
export function getKefuSsoToken() {
return request({
url: '/emis/common/getKefuSsoToken',
method: 'get',
params: {}
})
}
// 获取app信息
export function getLastAppVersion() {
return request({

View File

@ -25,11 +25,13 @@
</div>
<div class="right-menu">
<!-- 消息通知 -->
<div class="right-menu-item hover-effect" style="padding: 0 20px;">
<top-notice/>
</div>
<!-- 国际化 -->
<el-dropdown class="right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper" >
@ -88,6 +90,21 @@
</el-dropdown>
</div>
<div >
<!-- 在线客服 -->
<div style="position:fixed; top:60px;right:30px;cursor:pointer" @click="showOnlineKefu">
<span class="kf-agent" title="在线客服">
<img src="" alt="" style="display: none;">
</span>
</div>
<el-dialog title="在线客服" :visible.sync="openOnlineKefu" width="80%" class="kf-panel" append-to-body>
<div style="padding:0px;height:500px">
<iframe frameborder="0" :src="rlKefuURL" width="100%" height="100%" />
</div>
</el-dialog>
</div>
<div class="kf_dialog_center">
<el-dialog title="联系客服" :visible.sync="openKfView" width="400px" append-to-body>
<div style="padding:30px">
@ -142,7 +159,7 @@ import SitePrepaidRechargeForm from '@/views/emis/emisSitePrepaidRecharge/emisSi
import resetPwd from "@/views/system/user/profile/resetPwd";
import { getLastAppVersion } from "@/api/emis/emisCommon"
import { getLastAppVersion,getKefuSsoToken } from "@/api/emis/emisCommon"
import QrCodeImage from '@/components/QrCodeImage'
@ -171,6 +188,10 @@ export default {
needRstPwd:false,
openRstPwd:false,
rlKefuURL:null,
openOnlineKefu:false,
needRecharge:false,
needRechargeWarning:false,
@ -230,6 +251,21 @@ export default {
this.user = response.data;
this.openRstPwd=true;
});
},
showOnlineKefu(){
getKefuSsoToken().then(res=>{
if(res.code==200){
this.rlKefuURL="https://ykf.7moor.com?token="+res.data;
this.openOnlineKefu=true;
}else{
this.$modal.msgError("token fail");
}
}).catch(error => {
this.$modal.msgError(error);
});
},
goToRecharge(){
this.openPrepaidRecharge=true;
@ -237,9 +273,9 @@ export default {
},
// 初始化客服
initKFClient(){
qimoClientId = {userId: this.empCode, nickName:this.empName,agent:'8001',customField: {}, priority: false}
// console.log(qimoClientId);
// this.insertJsScript('https://ykf-weixin01.7moor.com/javascripts/7moorInit.js?accessId=0c6a3ec0-020b-11ef-a016-bf340ef083f1&autoShow=true&language=ZHCN');
qimoClientId = {userId: this.empCode, nickName:this.empName,agent:'8000',customField: {}, priority: false}
console.log(qimoClientId);
this.insertJsScript('https://ykf-weixin01.7moor.com/javascripts/7moorInit.js?accessId=0c6a3ec0-020b-11ef-a016-bf340ef083f1&autoShow=true&language=ZHCN');
},
toggleSideBar() {
this.$store.dispatch('app/toggleSideBar')
@ -370,6 +406,28 @@ export default {
</script>
<style lang="scss" scoped>
.kf-panel > .el-dialog .el-dialog__body {
margin: 0px!important;
}
.kf-agent {
display: inline-block;
float: left;
width: 40px;
height: 40px;
border-radius: 50%;
background: url(data:image/png;base64,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) no-repeat 50% 50%;
background-size: 30px auto;
overflow: hidden
}
.kf-agent img {
width: 32px;
height: 32px;
background-color: var(--color-text-white)
}
.navbar {
height: 50px;
overflow: hidden;

View File

@ -3,32 +3,48 @@
<el-form ref="form" size="mini" :model="form" :rules="rules" label-width="80px">
<el-row :gutter="0" type='flex'>
<el-col :span="6" :xs="6" style="border-right: 1px solid #f3f3f3;padding-right: 5px;">
<el-col :span="24">
<el-form-item label="方案名称" prop="quoteName">
<el-input v-model="form.quoteName" placeholder="请输入方案名称" />
</el-form-item>
</el-col>
<!-- <el-col :span="24">
<el-form-item label="所属国家" prop="country">
<CountryPicker :placeholder="$t('所属国家')" v-model="form.country" ></CountryPicker>
</el-form-item>
</el-col> -->
<el-col :span="24">
<el-form-item label="开始日期" prop="startDate">
<el-date-picker
style="width:100%"
clearable
v-model="form.startDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
default-time = "00:00:00"
placeholder="请选择开始日期"
@change="onStartDateChange"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="方案名称" prop="quoteName">
<el-input v-model="form.quoteName" placeholder="请输入方案名称" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="提成类型" prop="feeType" >
<el-select v-model="form.feeType" placeholder="提成类型" style="width:100%">
<el-option
v-for="dict in dict.type.emis_commission_fee_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="起始国" prop="fromCountry">
<CountryPicker :placeholder="$t('起始国')" v-model="form.fromCountry" ></CountryPicker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="目的国" prop="country">
<CountryPicker1 :placeholder="$t('起始国')" v-model="form.country" ></CountryPicker1>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="开始日期" prop="startDate">
<el-date-picker
style="width:100%"
clearable
v-model="form.startDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
default-time = "00:00:00"
placeholder="请选择开始日期"
@change="onStartDateChange"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="结束日期" prop="endDate">
<el-date-picker
@ -171,6 +187,9 @@ import { mapGetters } from 'vuex'
import {addDateTimeByDay,dateToStr} from '@/utils/custom'
import CountryPicker from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import CountryPicker1 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import EmisSiteSimplePicker from '@/views/emis/EmisBaseTools/EmisSiteSimplePicker.vue';
import EmisStaffListPicker from '@/views/emis/EmisBaseTools/EmisStaffListPicker.vue';
@ -187,10 +206,11 @@ export default {
}
},
components: {
CountryPicker,EmisSiteSimplePicker,EcqExpressionPanel,
CountryPicker,CountryPicker1,EmisSiteSimplePicker,EcqExpressionPanel,
EmisStaffListPicker
},
dicts: ['emis_price_type','emis_fee_type','sys_currency_type','emis_commission_post','emis_biz_shipping_method'],
dicts: ['emis_price_type','emis_fee_type','sys_currency_type',
'emis_commission_post','emis_biz_shipping_method','emis_commission_fee_type'],
data() {
return {
emisCommissionQuoteOptions: [],

View File

@ -90,9 +90,13 @@
border stripe
size="mini"
:data="emisCommissionQuoteList"
storageName="emisCommissionQuoteList_main_240702"
:showSearch.sync="showSearch"
:queryParams="queryParams"
:total="total"
@queryTable="getList"
@selection-change="handleSelectionChange"
@sort-change="handleSortChange"
@ -147,23 +151,30 @@
</div>
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="$t('方案名称')" align="center" prop="quoteName" min-width="100" />
<el-table-column :label="$t('方案名称')" align="left" prop="quoteName" min-width="200" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('提成费用类型')" align="center" prop="feeType" min-width="150" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_commission_fee_type" :value="scope.row.feeType"/>
</template>
</el-table-column>
<el-table-column :label="$t('计算类型')" align="center" prop="calcType" min-width="100" >
<template slot-scope="scope">
<div v-if="scope.row.calcType == 1" style="color:red;">
<span class="el-tag el-tag--info">按票计算</span>
<div v-if="scope.row.calcType == 1" >
<span>按票计算</span>
</div>
<div v-if="scope.row.calcType == 2" style="color:red;">
<span class="el-tag">重量计算</span>
<div v-if="scope.row.calcType == 2" >
<span>重量计算</span>
</div>
<div v-if="scope.row.calcType == 3" style="color:green;">
<span class="el-tag el-tag--success el-tag--light">体积计算</span>
<div v-if="scope.row.calcType == 3" >
<span>体积计算</span>
</div>
<div v-if="scope.row.calcType == 4" >
<span class="el-tag el-tag--warning el-tag--light">包裹数</span>
<span>包裹数</span>
</div>
</template>
</el-table-column>
<el-table-column :label="$t('起始国')" align="center" prop="fromCountryName" min-width="100" />
<el-table-column :label="$t('目的国')" align="center" prop="countryName" min-width="100" />
<el-table-column :label="$t('岗位类型')" align="center" prop="postType" min-width="100" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_commission_post" :value="scope.row.postType"/>
@ -206,7 +217,8 @@ import emisCommissionQuoteForm from '@/views/emis/emisCommissionQuote/emisCommis
export default {
name: "emisCommissionQuote",
components: { elDateSimplePicker,emisCommissionQuoteForm },
dicts: ['emis_biz_shipping_method'],
dicts: ['emis_price_type','emis_fee_type','sys_currency_type',
'emis_commission_post','emis_biz_shipping_method','emis_commission_fee_type'],
data() {
return {
// 遮罩层

View File

@ -27,7 +27,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成本日期" prop="tradeDate">
<el-form-item label="成本产生日期" prop="tradeDate" label-width="120px">
<el-date-picker
style="width:100%"
clearable

View File

@ -42,8 +42,8 @@ export default {
newPassword: [
{ required: true, message: "新密码不能为空", trigger: "blur" },
{ min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" },
{ pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/, message: '密码需要6到20位之间字母数字组合', trigger: ['blur', 'change'] },
{ pattern: /^(?=.*[a-z])(?=.*\d)[^]{6,20}$/, message: '密码需要6到20位之间包含字母数字组合', trigger: ['blur', 'change'] },
// { pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/, message: '密码需要6到20位之间字母数字组合', trigger: ['blur', 'change'] },
],
confirmPassword: [
{ required: true, message: "确认密码不能为空", trigger: "blur" },