邀约
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="login">
|
||||
<div class="login-form">
|
||||
<h3 class="title">莳松管理系统</h3>
|
||||
<h3 class="title">开心学车管理系统</h3>
|
||||
<el-tabs v-model="activeName" type="card">
|
||||
<el-tab-pane label="微信扫码" name="wx" style="height:200px">
|
||||
<wxlogin v-if="!code && activeName === 'wx'" appid="wx203f734baa9c9845" :scope="'snsapi_login'" :theme="'black'" redirect_uri="https://xueche.ahduima.com/login" :href="href">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="register">
|
||||
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
|
||||
<h3 class="title">莳松管理系统</h3>
|
||||
<h3 class="title">开心学车管理系统</h3>
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
|
||||
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
|
||||
|
||||
@@ -196,7 +196,7 @@ export default {
|
||||
createTime: { required: true, message: '创建时间不为空', trigger: 'blur,change' },
|
||||
consultTime: { required: true, message: '咨询时间不为空', trigger: 'blur,change' },
|
||||
source: { required: true, message: '线索来源不为空', trigger: 'blur,change' },
|
||||
address: { required: true, message: '位置不为空', trigger: 'blur' },
|
||||
// address: { required: true, message: '位置不为空', trigger: 'blur' },
|
||||
intentionState: { required: true, message: '意向状态不为空', trigger: 'blur,change' }
|
||||
},
|
||||
userOptions: [], // 跟进人员
|
||||
|
||||
143
src/views/zs/clue/components/InvitationFormDialog.vue
Normal file
143
src/views/zs/clue/components/InvitationFormDialog.vue
Normal file
@@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<el-dialog title="邀约" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="600px" @close="closeDialog">
|
||||
<el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px" :disabled="dialogForm.invitationId != undefined">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="dialogForm.name" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系方式" prop="phone">
|
||||
<el-input v-model="dialogForm.phone" placeholder="请输入联系方式" />
|
||||
</el-form-item>
|
||||
<el-form-item label="场地" prop="placeId">
|
||||
<el-select v-model="dialogForm.placeId" filterable placeholder="请选择" clearable style="width: 100%;" @change="getCoaChes">
|
||||
<el-option v-for="dict in placeOptions" :key="dict.placeId" :label="dict.name" :value="dict.placeId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="约定时间" prop="invitationTime">
|
||||
<el-date-picker clearable
|
||||
v-model="dialogForm.invitationTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm"
|
||||
format="yyyy-MM-dd HH:mm"
|
||||
placeholder="请选择约定时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="dialogForm.remark" type="textarea" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button plain @click="(visible = false)">取消</el-button>
|
||||
<el-button v-jclick type="primary" :disabled="!canSubmit" @click="dialogFormSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { addInvitation, getInvitationByClue } from '@/api/zs/invitation';
|
||||
import { getAllPlaces } from '@/api/sch/place';
|
||||
|
||||
export default {
|
||||
name: 'InvitationFormDialog',
|
||||
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
canSubmit: true,
|
||||
dialogForm: {
|
||||
invitationId: undefined,
|
||||
clueId: undefined,
|
||||
name: undefined,
|
||||
phone: undefined,
|
||||
address: undefined,
|
||||
placeId: undefined,
|
||||
invitationTime: undefined,
|
||||
remark: undefined
|
||||
},
|
||||
rules: {
|
||||
name: { required: true, message: '姓名不能为空', trigger: 'blur'},
|
||||
phone: { required: true, message: '姓名不能为空', trigger: 'blur'},
|
||||
placeId: { required: true, message: '场地不能为空', trigger: 'blur'},
|
||||
placeId: { required: true, message: '场地不能为空', trigger: 'blur'},
|
||||
invitationTime: { required: true, message: '约定时间不能为空', trigger: 'blur'}
|
||||
|
||||
},
|
||||
placeOptions:[]
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
init(info = undefined) {
|
||||
this.visible = true;
|
||||
this.getPlaces()
|
||||
this.$nextTick(() => {
|
||||
this.resetDialogForm();
|
||||
this.$refs['dialogForm'].resetFields();
|
||||
if (info) {
|
||||
this.dialogForm = {
|
||||
invitationId: undefined,
|
||||
clueId: info.clueId,
|
||||
name: info.name,
|
||||
phone: info.phone,
|
||||
address: info.address,
|
||||
placeId: undefined,
|
||||
invitationTime: undefined,
|
||||
remark: undefined
|
||||
};
|
||||
if(info.clueId){
|
||||
getInvitationByClue({clueId:info.clueId}).then(resp => {
|
||||
if(resp.data){
|
||||
this.dialogForm = resp.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
resetDialogForm() {
|
||||
this.dialogForm = {
|
||||
invitationId:undefined,
|
||||
clueId: undefined,
|
||||
name: undefined,
|
||||
phone: undefined,
|
||||
address: undefined,
|
||||
placeId: undefined,
|
||||
invitationTime: undefined,
|
||||
remark: undefined
|
||||
};
|
||||
},
|
||||
closeDialog() {
|
||||
this.$emit('update:dialog.batchUpdateVisible', false);
|
||||
},
|
||||
async getInvitationInfo(clueId){
|
||||
l
|
||||
},
|
||||
// 表单提交
|
||||
dialogFormSubmit() {
|
||||
this.$refs.dialogForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.canSubmit = false;
|
||||
// 校验完成,调接口
|
||||
addInvitation(this.dialogForm)
|
||||
.then((resp) => {
|
||||
this.canSubmit = true;
|
||||
if (resp.code == 200) {
|
||||
this.$message.success('邀约成功');
|
||||
this.$emit('refreshDataList');
|
||||
this.visible = false;
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.canSubmit = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
getPlaces () {
|
||||
getAllPlaces({ status: '0' }).then((resp) => {
|
||||
this.placeOptions = resp.data;
|
||||
});
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
<!-- <el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 ) && scope.row.source == '抖音直播'" v-hasPermi="['zs:clue:edit']" type="text" style="color: red;" @click.native.stop="handleDYAddandUpdate(scope.row)">编辑</el-button> -->
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 )" v-hasPermi="['zs:clue:edit']" type="text" style="color: red;" @click.native.stop="handleAddandUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 )" v-hasPermi="['zs:clue:distribute']" type="text" @click.native.stop="handleDistribute(scope.row)">分发</el-button>
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 )" v-hasPermi="['zs:clue:invitation']" type="text" @click.native.stop="handleInvitation(scope.row)">邀约</el-button>
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 ) && scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" style="color: #26a69a" @click.native.stop="handleSign(scope.row)">已登记</el-button>
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 ) && !scope.row.state" v-hasPermi="['zs:clue:sign']" type="text" @click.native.stop="handleSign(scope.row)">未登记</el-button>
|
||||
<el-button v-if="(admin == 'true' || scope.row.followUser2.indexOf(userId) != -1 )" v-hasPermi="['zs:clue:remove']" type="text" @click.native.stop="handleDelete(scope.row)">删除</el-button>
|
||||
@@ -67,7 +68,8 @@
|
||||
<DYClueFormDialog ref="DYClueFormDialog" @refreshDataList="_getTableList" />
|
||||
<!-- 关键话术 -->
|
||||
<SkillDialog ref="SkillDialog" />
|
||||
|
||||
<!-- 邀约弹窗 -->
|
||||
<InvitationFormDialog ref="InvitationDialog" @refreshDataList="_getTableList"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -82,6 +84,7 @@ import ZhuangDanDialog from './components/ZhuangDanDialog.vue';
|
||||
import MemoFormDialog from './components/MemoFormDialog.vue';
|
||||
import DYClueFormDialog from './components/DYClueFormDialog.vue';
|
||||
import SkillDialog from './components/SkillDialog.vue';
|
||||
import InvitationFormDialog from './components/InvitationFormDialog.vue';
|
||||
|
||||
import { defaultColumns } from './columns.js';
|
||||
import { getClueList, deleteClue, getClueCountBadge, discardClue, getSign, getConsultRecord } from '@/api/zs/clue';
|
||||
@@ -90,7 +93,7 @@ export default {
|
||||
name: 'Clue',
|
||||
components: {
|
||||
SearchForm, BatchUpdateDialog, PublicDialog, UploadDialog, SignFormDialog, DistributeFormDialog, ZhuangDanDialog, MemoFormDialog,
|
||||
DYClueFormDialog, SkillDialog
|
||||
DYClueFormDialog, SkillDialog,InvitationFormDialog
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name == 'ClueForm') {
|
||||
@@ -131,11 +134,12 @@ export default {
|
||||
无效线索: '#afaeb0'
|
||||
},
|
||||
feedbackTagColorMap: {
|
||||
0: '待分发',
|
||||
1: '待跟进',
|
||||
2: '已跟进',
|
||||
3: '已到场',
|
||||
4: '退单'
|
||||
0: '待邀约',
|
||||
1: '待分发',
|
||||
2: '待跟进',
|
||||
3: '已跟进',
|
||||
4: '已到场',
|
||||
5: '退单'
|
||||
},
|
||||
options: undefined,
|
||||
clueInfo: undefined,
|
||||
@@ -320,6 +324,13 @@ export default {
|
||||
this.$refs.memoDialog.init(row);
|
||||
});
|
||||
}
|
||||
},
|
||||
//邀约
|
||||
handleInvitation(item){
|
||||
this.$nextTick(() => {
|
||||
this.$refs.InvitationDialog.init(item)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user