Merge branch 'caozong' of http://114.55.169.15:3000/qiushanhe/dm-manage-web into caozong
commit
0ba4d3fe26
@ -1,8 +1,8 @@ |
||||
# 页面标题 |
||||
VUE_APP_TITLE = 莳松管理系统 |
||||
VUE_APP_TITLE = 开心学车管理系统 |
||||
|
||||
# 生产环境配置 |
||||
ENV = 'production' |
||||
|
||||
# 莳松管理系统/生产环境 |
||||
# 开心学车管理系统/生产环境 |
||||
VUE_APP_BASE_API = '/duima' |
||||
|
@ -1,10 +1,10 @@ |
||||
# 页面标题 |
||||
VUE_APP_TITLE = 莳松管理系统 |
||||
VUE_APP_TITLE = 开心学车管理系统 |
||||
|
||||
NODE_ENV = production |
||||
|
||||
# 测试环境配置 |
||||
ENV = 'staging' |
||||
|
||||
# 莳松管理系统/测试环境 |
||||
# 开心学车管理系统/测试环境 |
||||
VUE_APP_BASE_API = '/stage-api' |
||||
|
@ -0,0 +1,59 @@ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-07 17:14:32 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-10 17:00:57 |
||||
* @Description:教练接口 |
||||
*/ |
||||
import request from '@/utils/request'; |
||||
|
||||
// 查询教练列表
|
||||
export function listCoach(query) { |
||||
return request({ |
||||
url: '/sch/coach/list', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
||||
|
||||
// 查询教练详细
|
||||
export function getCoach(coachId) { |
||||
return request({ |
||||
url: '/sch/coach/' + coachId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
// 新增教练
|
||||
export function addCoach(data) { |
||||
return request({ |
||||
url: '/sch/coach', |
||||
method: 'post', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 修改教练
|
||||
export function updateCoach(data) { |
||||
return request({ |
||||
url: '/sch/coach', |
||||
method: 'put', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 删除教练
|
||||
export function delCoach(coachId) { |
||||
return request({ |
||||
url: '/sch/coach/' + coachId, |
||||
method: 'delete' |
||||
}); |
||||
} |
||||
|
||||
export function getAllCoaches(query){ |
||||
return request({ |
||||
url: '/sch/coach/all', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
@ -0,0 +1,59 @@ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-14 00:31:37 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-15 00:37:52 |
||||
* @Description:
|
||||
*/ |
||||
import request from '@/utils/request' |
||||
|
||||
// 查询关键话术列表
|
||||
export function listSkill(query) { |
||||
return request({ |
||||
url: '/system/skill/list', |
||||
method: 'get', |
||||
params: query |
||||
}) |
||||
} |
||||
|
||||
// 查询关键话术详细
|
||||
export function getSkill(skillId) { |
||||
return request({ |
||||
url: '/system/skill/' + skillId, |
||||
method: 'get' |
||||
}) |
||||
} |
||||
|
||||
|
||||
export function getSkillKey() { |
||||
return request({ |
||||
url: '/system/skill/key', |
||||
method: 'get' |
||||
}) |
||||
} |
||||
|
||||
// 新增关键话术
|
||||
export function addSkill(data) { |
||||
return request({ |
||||
url: '/system/skill', |
||||
method: 'post', |
||||
data: data |
||||
}) |
||||
} |
||||
|
||||
// 修改关键话术
|
||||
export function updateSkill(data) { |
||||
return request({ |
||||
url: '/system/skill', |
||||
method: 'put', |
||||
data: data |
||||
}) |
||||
} |
||||
|
||||
// 删除关键话术
|
||||
export function delSkill(skillId) { |
||||
return request({ |
||||
url: '/system/skill/' + skillId, |
||||
method: 'delete' |
||||
}) |
||||
} |
@ -0,0 +1,51 @@ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-07 17:14:38 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-07 17:14:44 |
||||
* @Description: 线索反馈接口 |
||||
*/ |
||||
import request from '@/utils/request'; |
||||
|
||||
// 查询线索反馈列表
|
||||
export function listFeedback(query) { |
||||
return request({ |
||||
url: '/zs/feedback/list', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
||||
|
||||
// 查询线索反馈详细
|
||||
export function getFeedback(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/' + feedbackId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
// 新增线索反馈
|
||||
export function addFeedback(data) { |
||||
return request({ |
||||
url: '/zs/feedback', |
||||
method: 'post', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 修改线索反馈
|
||||
export function updateFeedback(data) { |
||||
return request({ |
||||
url: '/zs/feedback', |
||||
method: 'put', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 删除线索反馈
|
||||
export function delFeedback(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/' + feedbackId, |
||||
method: 'delete' |
||||
}); |
||||
} |
@ -0,0 +1,74 @@ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-11 20:48:02 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-11 20:57:06 |
||||
* @Description: |
||||
*/ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-10 16:08:39 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-10 16:10:06 |
||||
* @Description: 反馈单 |
||||
*/ |
||||
import request from '@/utils/request'; |
||||
|
||||
// 查询线索反馈列表
|
||||
export function listFeedbackDetail(query) { |
||||
return request({ |
||||
url: '/zs/feedback/detail/list', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
||||
|
||||
// 查询线索反馈详细
|
||||
export function getFeedbackDetail(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/detail/' + feedbackId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
export function getFeedbackDetailInfo(query){ |
||||
return request({ |
||||
url: '/zs/feedback/detail/info', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
||||
|
||||
// 查询线索反馈详细
|
||||
export function getFeedbackDetailByClueId(clueId) { |
||||
return request({ |
||||
url: '/zs/feedback/detail/' + clueId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
// 新增线索反馈
|
||||
export function addFeedbackDetail(data) { |
||||
return request({ |
||||
url: '/zs/feedback/detail', |
||||
method: 'post', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 修改线索反馈
|
||||
export function updateFeedbackDetail(data) { |
||||
return request({ |
||||
url: '/zs/feedback/detail', |
||||
method: 'put', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 删除线索反馈
|
||||
export function delFeedbackDetail(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/detail/' + feedbackId, |
||||
method: 'delete' |
||||
}); |
||||
} |
@ -0,0 +1,59 @@ |
||||
/* |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-10 16:08:39 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-10 16:10:06 |
||||
* @Description: 反馈单 |
||||
*/ |
||||
import request from '@/utils/request'; |
||||
|
||||
// 查询线索反馈列表
|
||||
export function listFeedbackOrder(query) { |
||||
return request({ |
||||
url: '/zs/feedback/order/list', |
||||
method: 'get', |
||||
params: query |
||||
}); |
||||
} |
||||
|
||||
// 查询线索反馈详细
|
||||
export function getFeedbackOrder(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/order/' + feedbackId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
// 查询线索反馈详细
|
||||
export function getFeedbackOrderByClueId(clueId) { |
||||
return request({ |
||||
url: '/zs/feedback/order/' + clueId, |
||||
method: 'get' |
||||
}); |
||||
} |
||||
|
||||
// 新增线索反馈
|
||||
export function addFeedbackOrder(data) { |
||||
return request({ |
||||
url: '/zs/feedback/order', |
||||
method: 'post', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 修改线索反馈
|
||||
export function updateFeedbackOrder(data) { |
||||
return request({ |
||||
url: '/zs/feedback/order', |
||||
method: 'put', |
||||
data: data |
||||
}); |
||||
} |
||||
|
||||
// 删除线索反馈
|
||||
export function delFeedbackOrder(feedbackId) { |
||||
return request({ |
||||
url: '/zs/feedback/order/' + feedbackId, |
||||
method: 'delete' |
||||
}); |
||||
} |
@ -0,0 +1,53 @@ |
||||
import request from '@/utils/request' |
||||
|
||||
// 查询邀约列表
|
||||
export function listInvitation(query) { |
||||
return request({ |
||||
url: '/zs/invitation/list', |
||||
method: 'get', |
||||
params: query |
||||
}) |
||||
} |
||||
|
||||
// 查询邀约详细
|
||||
export function getInvitation(invitationId) { |
||||
return request({ |
||||
url: '/zs/invitation/' + invitationId, |
||||
method: 'get' |
||||
}) |
||||
} |
||||
|
||||
// 查询邀约详细
|
||||
export function getInvitationByClue(query) { |
||||
return request({ |
||||
url: '/zs/invitation/clue', |
||||
method: 'get', |
||||
params: query |
||||
}) |
||||
} |
||||
|
||||
// 新增邀约
|
||||
export function addInvitation(data) { |
||||
return request({ |
||||
url: '/zs/invitation', |
||||
method: 'post', |
||||
data: data |
||||
}) |
||||
} |
||||
|
||||
// 修改邀约
|
||||
export function updateInvitation(data) { |
||||
return request({ |
||||
url: '/zs/invitation', |
||||
method: 'put', |
||||
data: data |
||||
}) |
||||
} |
||||
|
||||
// 删除邀约
|
||||
export function delInvitation(invitationId) { |
||||
return request({ |
||||
url: '/zs/invitation/' + invitationId, |
||||
method: 'delete' |
||||
}) |
||||
} |
@ -0,0 +1,136 @@ |
||||
|
||||
<template> |
||||
<el-dialog title="接待人信息" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="600px" @close="closeDialog"> |
||||
<div> |
||||
<el-form ref="dialogForm" :model="dialogForm" :rules="dataRule" label-position="top" @keyup.enter.native="dialogFormSubmit()"> |
||||
<el-form-item label="所属驾校" prop="schoolId"> |
||||
<el-select v-model="dialogForm.schoolId" filterable placeholder="请选择" value-key="schoolId" clearable size="small" style="width:100%"> |
||||
<el-option v-for="(dict, index) in schoolOptions" :key="index" :label="dict.schoolName" :value="dict.schoolId" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="所属场地" prop="placeId"> |
||||
<el-select v-model="dialogForm.placeId" filterable placeholder="请选择" clearable value-key="placeId" size="small" style="width:100%"> |
||||
<el-option v-for="(dict, index) in placeOptions.filter(item => item.schoolId === dialogForm.schoolId)" :key="index" :label="dict.name" :value="dict.placeId" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="接待人" prop="coachName"> |
||||
<el-input v-model="dialogForm.coachName" placeholder="请输入教练名" /> |
||||
</el-form-item> |
||||
<el-form-item label="联系方式" prop="phone"> |
||||
<el-input v-model="dialogForm.phone" placeholder="请输入联系方式" /> |
||||
</el-form-item> |
||||
<el-form-item label="微信openid" prop="openId"> |
||||
<el-input v-model="dialogForm.openId" placeholder="请输入微信openid" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
|
||||
</div> |
||||
<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 { addCoach, updateCoach } from '@/api/sch/coach'; |
||||
|
||||
export default { |
||||
props: { |
||||
schoolOptions: { |
||||
type: Array, |
||||
default: [] |
||||
}, |
||||
placeOptions: { |
||||
type: Array, |
||||
default: [] |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
visible: false, |
||||
canSubmit: true, |
||||
dialogForm: { |
||||
coachId: null, |
||||
deptId: null, |
||||
schoolId: null, |
||||
placeId: null, |
||||
coachName: null, |
||||
phone: null, |
||||
openId: null |
||||
}, |
||||
dataRule: { |
||||
schoolId: [{ required: true, message: '所属驾校不能为空', trigger: 'blur' }], |
||||
placeId: [{ required: true, message: '场地不能为空', trigger: 'blur' }], |
||||
coachName: [{ required: true, message: '教练名不能为空', trigger: 'blur' }], |
||||
phone: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }] |
||||
|
||||
} |
||||
}; |
||||
}, |
||||
methods: { |
||||
init (info = undefined) { |
||||
// debugger |
||||
this.visible = true; |
||||
this.$nextTick(() => { |
||||
this.resetDialogForm(); |
||||
this.$refs['dialogForm'].resetFields(); |
||||
if (info) { |
||||
this.dialogForm = this.deepClone(info); |
||||
} |
||||
}); |
||||
}, |
||||
resetDialogForm () { |
||||
this.dialogForm = { |
||||
coachId: null, |
||||
deptId: null, |
||||
schoolId: null, |
||||
placeId: null, |
||||
coachName: null, |
||||
phone: null, |
||||
openId: null |
||||
}; |
||||
}, |
||||
closeDialog () { |
||||
this.$emit('update:dialogVisible', false); |
||||
}, |
||||
// 表单提交 |
||||
dialogFormSubmit () { |
||||
this.$refs.dialogForm.validate((valid) => { |
||||
if (valid) { |
||||
this.canSubmit = false; |
||||
|
||||
if (this.dialogForm.coachId) { |
||||
// 校验完成,调接口 |
||||
updateCoach(this.dialogForm) |
||||
.then((resp) => { |
||||
this.canSubmit = true; |
||||
if (resp.code == 200) { |
||||
this.$message.success('保存成功'); |
||||
this.$emit('refreshDataList'); |
||||
this.visible = false; |
||||
} |
||||
}) |
||||
.catch(() => { |
||||
this.canSubmit = true; |
||||
}); |
||||
} else { |
||||
addCoach(this.dialogForm) |
||||
.then((resp) => { |
||||
this.canSubmit = true; |
||||
if (resp.code == 200) { |
||||
this.$message.success('保存成功'); |
||||
this.$emit('refreshDataList'); |
||||
this.visible = false; |
||||
} |
||||
}) |
||||
.catch(() => { |
||||
this.canSubmit = true; |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,159 @@ |
||||
<template> |
||||
<div class="app-container"> |
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px"> |
||||
<el-form-item label="所属驾校" prop="schoolId"> |
||||
<el-select v-model="queryParams.schoolId" filterable placeholder="请选择" value-key="schoolId" clearable size="small"> |
||||
<el-option v-for="(dict, index) in schoolOptions" :key="index" :label="dict.schoolName" :value="dict.schoolId" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="所属场地" prop="placeId"> |
||||
<el-select v-model="queryParams.placeId" filterable placeholder="请选择" clearable value-key="placeId" size="small"> |
||||
<el-option v-for="(dict, index) in placeOptions.filter(item => item.schoolId === queryParams.schoolId)" :key="index" :label="dict.name" :value="dict.placeId" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="接待人" prop="coachName"> |
||||
<el-input v-model="queryParams.coachName" placeholder="请输入" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item label="联系方式" prop="phone"> |
||||
<el-input v-model="queryParams.phone" placeholder="请输入联系方式" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item> |
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
|
||||
<el-row :gutter="10" class="mb8"> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['sch:coach:add']" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddAndUpdate(undefined)">新增</el-button> |
||||
</el-col> |
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" /> |
||||
</el-row> |
||||
|
||||
<el-table v-loading="loading" :data="coachList"> |
||||
<el-table-column type="index" width="55" align="center" /> |
||||
<el-table-column label="所属驾校" align="center" prop="schoolName" /> |
||||
<el-table-column label="所属场地" align="center" prop="placeName" /> |
||||
<el-table-column label="接待人" align="center" prop="coachName" /> |
||||
<el-table-column label="联系方式" align="center" prop="phone" /> |
||||
<el-table-column label="微信openid" align="center" prop="openId" /> |
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
||||
<template slot-scope="scope"> |
||||
<el-button v-hasPermi="['sch:coach:edit']" size="mini" type="text" icon="el-icon-edit" @click="handleAddAndUpdate(scope.row)">修改</el-button> |
||||
<el-button v-hasPermi="['sch:coach:remove']" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> |
||||
|
||||
<!-- 添加或修改教练对话框 --> |
||||
<coach-form v-if="dialogVisible" ref="dialogForm" :dialog-visible="dialogVisible" :school-options="schoolOptions" :place-options="placeOptions" @refreshDataList="getList" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { listCoach, getCoach, delCoach } from '@/api/sch/coach'; |
||||
import CoachForm from './components/CoachForm.vue'; |
||||
import schoolAPi from '@/api/sch/school'; |
||||
import { getAllPlaces } from '@/api/sch/place'; |
||||
|
||||
export default { |
||||
name: 'Coach', |
||||
components: { CoachForm }, |
||||
data () { |
||||
return { |
||||
// 遮罩层 |
||||
loading: true, |
||||
// 选中数组 |
||||
ids: [], |
||||
// 非单个禁用 |
||||
single: true, |
||||
// 非多个禁用 |
||||
multiple: true, |
||||
// 显示搜索条件 |
||||
showSearch: true, |
||||
// 总条数 |
||||
total: 0, |
||||
// 教练表格数据 |
||||
coachList: [], |
||||
// 查询参数 |
||||
queryParams: { |
||||
pageNum: 1, |
||||
pageSize: 10, |
||||
schoolId: null, |
||||
placeId: null, |
||||
coachName: null, |
||||
phone: null |
||||
}, |
||||
dialogVisible: false, |
||||
schoolOptions: [], |
||||
placeOptions: [] |
||||
}; |
||||
}, |
||||
created () { |
||||
this.getSchools(); |
||||
this.getPlaces(); |
||||
this.getList(); |
||||
}, |
||||
methods: { |
||||
/** 查询教练列表 */ |
||||
getList () { |
||||
this.loading = true; |
||||
listCoach(this.queryParams).then(response => { |
||||
this.coachList = response.rows; |
||||
this.total = response.total; |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
// 取消按钮 |
||||
cancel () { |
||||
this.open = false; |
||||
this.reset(); |
||||
}, |
||||
/** 搜索按钮操作 */ |
||||
handleQuery () { |
||||
this.queryParams.pageNum = 1; |
||||
this.getList(); |
||||
}, |
||||
/** 重置按钮操作 */ |
||||
resetQuery () { |
||||
this.resetForm('queryForm'); |
||||
this.handleQuery(); |
||||
}, |
||||
/** 新增或修改按钮操作 */ |
||||
handleAddAndUpdate (item) { |
||||
this.dialogVisible = true; |
||||
this.$nextTick(() => { |
||||
this.$refs.dialogForm.init(item); |
||||
}); |
||||
}, |
||||
/** 删除按钮操作 */ |
||||
handleDelete (row) { |
||||
const coachIds = row.coachId || this.ids; |
||||
this.$modal.confirm('是否确认删除教练编号为"' + coachIds + '"的数据项?').then(function () { |
||||
return delCoach(coachIds); |
||||
}).then(() => { |
||||
this.getList(); |
||||
this.$modal.msgSuccess('删除成功'); |
||||
}).catch(() => { }); |
||||
}, |
||||
/** 导出按钮操作 */ |
||||
handleExport () { |
||||
this.download('system/coach/export', { |
||||
...this.queryParams |
||||
}, `coach_${new Date().getTime()}.xlsx`); |
||||
}, |
||||
getSchools () { |
||||
schoolAPi.allList().then((resp) => { |
||||
this.schoolOptions = resp.data; |
||||
}); |
||||
}, |
||||
getPlaces () { |
||||
getAllPlaces({ status: '0', showInMap: true }).then((resp) => { |
||||
this.placeOptions = resp.data; |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,193 @@ |
||||
<template> |
||||
<div class="app-container"> |
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px"> |
||||
<el-form-item label="关键词" prop="skillKey"> |
||||
<el-input v-model="queryParams.skillKey" placeholder="请输入关键词" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item> |
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
|
||||
<el-row :gutter="10" class="mb8"> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['system:skill:add']" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button> |
||||
</el-col> |
||||
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" /> |
||||
</el-row> |
||||
|
||||
<el-table v-loading="loading" :data="skillList" @selection-change="handleSelectionChange"> |
||||
<el-table-column type="index" width="55" align="center" /> |
||||
<el-table-column label="关键词" align="center" prop="skillKey" /> |
||||
<el-table-column label="话术内容" align="center" prop="content" /> |
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
||||
<template slot-scope="scope"> |
||||
<el-button v-hasPermi="['system:skill:edit']" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button> |
||||
<el-button v-hasPermi="['system:skill:remove']" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> |
||||
|
||||
<!-- 添加或修改关键话术对话框 --> |
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
<el-form-item label="关键词" prop="skillKey"> |
||||
<el-input v-model="form.skillKey" placeholder="请输入关键词" /> |
||||
</el-form-item> |
||||
<el-form-item label="话术内容"> |
||||
<editor v-model="form.content" :min-height="192" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div slot="footer" class="dialog-footer"> |
||||
<el-button type="primary" @click="submitForm">确 定</el-button> |
||||
<el-button @click="cancel">取 消</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { listSkill, getSkill, delSkill, addSkill, updateSkill } from '@/api/system/skill'; |
||||
|
||||
export default { |
||||
name: 'Skill', |
||||
data () { |
||||
return { |
||||
// 遮罩层 |
||||
loading: true, |
||||
// 选中数组 |
||||
ids: [], |
||||
// 非单个禁用 |
||||
single: true, |
||||
// 非多个禁用 |
||||
multiple: true, |
||||
// 显示搜索条件 |
||||
showSearch: true, |
||||
// 总条数 |
||||
total: 0, |
||||
// 关键话术表格数据 |
||||
skillList: [], |
||||
// 弹出层标题 |
||||
title: '', |
||||
// 是否显示弹出层 |
||||
open: false, |
||||
// 查询参数 |
||||
queryParams: { |
||||
pageNum: 1, |
||||
pageSize: 10, |
||||
deptId: null, |
||||
skillKey: null, |
||||
content: null |
||||
}, |
||||
// 表单参数 |
||||
form: {}, |
||||
// 表单校验 |
||||
rules: { |
||||
skillKey: [{ required: true, message: '关键词不能为空', trigger: 'blur' }], |
||||
content: [{ required: true, message: '话术内容不能为空', trigger: 'blur' }] |
||||
} |
||||
}; |
||||
}, |
||||
created () { |
||||
this.getList(); |
||||
}, |
||||
methods: { |
||||
/** 查询关键话术列表 */ |
||||
getList () { |
||||
this.loading = true; |
||||
listSkill(this.queryParams).then(response => { |
||||
this.skillList = response.rows; |
||||
this.total = response.total; |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
// 取消按钮 |
||||
cancel () { |
||||
this.open = false; |
||||
this.reset(); |
||||
}, |
||||
// 表单重置 |
||||
reset () { |
||||
this.form = { |
||||
skillId: null, |
||||
deptId: null, |
||||
skillKey: null, |
||||
content: null |
||||
}; |
||||
this.resetForm('form'); |
||||
}, |
||||
/** 搜索按钮操作 */ |
||||
handleQuery () { |
||||
this.queryParams.pageNum = 1; |
||||
this.getList(); |
||||
}, |
||||
/** 重置按钮操作 */ |
||||
resetQuery () { |
||||
this.resetForm('queryForm'); |
||||
this.handleQuery(); |
||||
}, |
||||
// 多选框选中数据 |
||||
handleSelectionChange (selection) { |
||||
this.ids = selection.map(item => item.skillId); |
||||
this.single = selection.length !== 1; |
||||
this.multiple = !selection.length; |
||||
}, |
||||
/** 新增按钮操作 */ |
||||
handleAdd () { |
||||
this.reset(); |
||||
this.open = true; |
||||
this.title = '添加关键话术'; |
||||
}, |
||||
/** 修改按钮操作 */ |
||||
handleUpdate (row) { |
||||
this.reset(); |
||||
const skillId = row.skillId || this.ids; |
||||
getSkill(skillId).then(response => { |
||||
this.form = response.data; |
||||
this.open = true; |
||||
this.title = '修改关键话术'; |
||||
}); |
||||
}, |
||||
/** 提交按钮 */ |
||||
submitForm () { |
||||
this.$refs['form'].validate(valid => { |
||||
if (valid) { |
||||
if (this.form.skillId != null) { |
||||
updateSkill(this.form).then(response => { |
||||
this.$modal.msgSuccess('修改成功'); |
||||
this.open = false; |
||||
this.getList(); |
||||
}); |
||||
} else { |
||||
addSkill(this.form).then(response => { |
||||
this.$modal.msgSuccess('新增成功'); |
||||
this.open = false; |
||||
this.getList(); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
/** 删除按钮操作 */ |
||||
handleDelete (row) { |
||||
const skillIds = row.skillId || this.ids; |
||||
this.$modal.confirm('是否确认删除关键话术编号为"' + skillIds + '"的数据项?').then(function () { |
||||
return delSkill(skillIds); |
||||
}).then(() => { |
||||
this.getList(); |
||||
this.$modal.msgSuccess('删除成功'); |
||||
}).catch(() => { }); |
||||
}, |
||||
/** 导出按钮操作 */ |
||||
handleExport () { |
||||
this.download('system/skill/export', { |
||||
...this.queryParams |
||||
}, `skill_${new Date().getTime()}.xlsx`); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -1,136 +1,136 @@ |
||||
export const defaultColumns = [{ |
||||
key: 0, |
||||
prop: 'createTime', |
||||
label: '创建时间', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 1, |
||||
prop: 'source', |
||||
label: '线索来源', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 2, |
||||
prop: 'name', |
||||
label: '姓名', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 3, |
||||
prop: 'phone', |
||||
label: '联系方式', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 4, |
||||
prop: 'weChat', |
||||
label: '微信号', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 5, |
||||
prop: 'address', |
||||
label: '位置', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 6, |
||||
prop: 'requirement', |
||||
label: '学员诉求', |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 7, |
||||
prop: 'licenseType', |
||||
label: '咨询车型', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 8, |
||||
prop: 'followTime', |
||||
label: '下次跟进时间', |
||||
width: 120, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 9, |
||||
prop: 'firstFollowUserName', |
||||
label: '首次跟进人员', |
||||
width: 120, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 10, |
||||
prop: 'followUserName', |
||||
label: '跟进人员', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 11, |
||||
prop: 'recentLook', |
||||
label: '是否近期看场地', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 12, |
||||
prop: 'offlineReceiverName', |
||||
label: '线下接待人员', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 13, |
||||
prop: 'clueMemo', |
||||
label: '备注', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 14, |
||||
prop: 'goodName', |
||||
label: '商品名称', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 15, |
||||
prop: 'amountReceived', |
||||
label: '订单实收', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 16, |
||||
prop: 'writeOffTime', |
||||
label: '核销时间', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
} |
||||
key: 0, |
||||
prop: 'createTime', |
||||
label: '创建时间', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 1, |
||||
prop: 'source', |
||||
label: '线索来源', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 2, |
||||
prop: 'name', |
||||
label: '姓名', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 3, |
||||
prop: 'phone', |
||||
label: '联系方式', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 4, |
||||
prop: 'weChat', |
||||
label: '微信号', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 5, |
||||
prop: 'address', |
||||
label: '位置', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 6, |
||||
prop: 'requirement', |
||||
label: '学员诉求', |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 7, |
||||
prop: 'licenseType', |
||||
label: '咨询车型', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 8, |
||||
prop: 'followTime', |
||||
label: '下次跟进时间', |
||||
width: 120, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 9, |
||||
prop: 'firstFollowUserName', |
||||
label: '首次跟进人员', |
||||
width: 120, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 10, |
||||
prop: 'followUserName', |
||||
label: '跟进人员', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 11, |
||||
prop: 'recentLook', |
||||
label: '是否近期看场地', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 12, |
||||
prop: 'offlineReceiverName', |
||||
label: '线下接待人员', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: false |
||||
}, |
||||
{ |
||||
key: 13, |
||||
prop: 'clueMemo', |
||||
label: '备注', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 14, |
||||
prop: 'goodName', |
||||
label: '商品名称', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 15, |
||||
prop: 'amountReceived', |
||||
label: '订单实收', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
}, |
||||
{ |
||||
key: 16, |
||||
prop: 'writeOffTime', |
||||
label: '核销时间', |
||||
width: 140, |
||||
visible: true, |
||||
overflow: true |
||||
} |
||||
]; |
||||
|
@ -0,0 +1,112 @@ |
||||
<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"> |
||||
<el-row> |
||||
<el-col :span="24"> |
||||
<el-form-item label="场地" prop="newPlaceList"> |
||||
<span v-if="oldForm.placeNames">{{ oldForm.placeNames }}</span> |
||||
|
||||
<el-select v-model="dialogForm.newPlaceList" filterable multiple placeholder="请选择" clearable style="width: 100%;"> |
||||
<el-option v-for="dict in placeOptions" :key="dict.placeId" :label="dict.name" :value="dict.placeId" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</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 { getCluePlaceList, saveCluePlace } from '@/api/zs/clue'; |
||||
import { getAllPlaces } from '@/api/sch/place'; |
||||
|
||||
export default { |
||||
name: 'DistributeFormDialog', |
||||
|
||||
data () { |
||||
return { |
||||
visible: false, |
||||
canSubmit: true, |
||||
dialogForm: {}, |
||||
oldForm: {}, |
||||
rules: { |
||||
newPlaceList: { |
||||
required: true, |
||||
message: '场地不能为空不能为空', |
||||
trigger: 'blur' |
||||
} |
||||
}, |
||||
placeOptions: [] |
||||
}; |
||||
}, |
||||
methods: { |
||||
init (info = undefined) { |
||||
this.getPlaces(); |
||||
this.visible = true; |
||||
this.$nextTick(() => { |
||||
this.resetDialogForm(); |
||||
this.$refs['dialogForm'].resetFields(); |
||||
if (info) { |
||||
this.dialogForm.clueId = info; |
||||
// 查询该线索的分发情况 |
||||
this.getDistributePlaces(info); |
||||
} |
||||
}); |
||||
}, |
||||
resetDialogForm () { |
||||
this.dialogForm = { |
||||
oldPlaceList: [], |
||||
newPlaceList: [], |
||||
placeIdList: [], |
||||
clueId: undefined |
||||
}; |
||||
this.oldForm = {}; |
||||
}, |
||||
closeDialog () { |
||||
this.$emit('update:dialog.batchUpdateVisible', false); |
||||
}, |
||||
getDistributePlaces (clueId) { |
||||
getCluePlaceList({ clueId: clueId }).then(resp => { |
||||
if (resp.code == 200) { |
||||
this.oldForm = resp.data; |
||||
this.dialogForm.oldPlaceList = this.oldForm.placeIdList; |
||||
if (this.oldForm.placeIdList && this.oldForm.placeIdList) { |
||||
this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1); |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
// 表单提交 |
||||
dialogFormSubmit () { |
||||
this.$refs.dialogForm.validate((valid) => { |
||||
if (valid) { |
||||
this.canSubmit = false; |
||||
this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList); |
||||
// 校验完成,调接口 |
||||
saveCluePlace(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> |
||||
|
@ -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> |
||||
|
||||
|
@ -0,0 +1,70 @@ |
||||
<!-- |
||||
* @Author: riverQiu |
||||
* @Date: 2023-10-14 13:21:37 |
||||
* @LastEditors: riverQiu |
||||
* @LastEditTime: 2023-10-15 00:55:44 |
||||
* @Description: |
||||
--> |
||||
<template> |
||||
<el-dialog title="话术" :close-on-click-modal="false" append-to-body :visible.sync="visible" width="700px" height="700"> |
||||
<div> |
||||
<!-- 搜索框 --> |
||||
<el-select v-model="skillId" placeholder="请选择关键词" filterable style="width: 90%;" @change="selectKey"> |
||||
<el-option v-for="item in keyOptions" :key="item.skillId" :label="item.skillKey" :value="item.skillId" /> |
||||
</el-select> <!-- 常用关键词 --> |
||||
|
||||
<!-- 话术内容 --> |
||||
<el-card class="box-card"> |
||||
|
||||
<div class="text item"> |
||||
<span v-html="content" /> |
||||
</div> |
||||
</el-card> |
||||
</div> |
||||
</el-dialog> |
||||
</template> |
||||
<script> |
||||
import { getSkillKey, getSkill } from '@/api/system/skill'; |
||||
export default { |
||||
name: 'SkillDialog', |
||||
data () { |
||||
return { |
||||
visible: false, |
||||
loading: true, |
||||
keyOptions: [], |
||||
content: undefined, |
||||
skillId: undefined |
||||
}; |
||||
}, |
||||
methods: { |
||||
init () { |
||||
this.visible = true; |
||||
this.getSkillKeyOption(); |
||||
}, |
||||
getSkillKeyOption () { |
||||
getSkillKey().then((resp) => { |
||||
if (resp && resp.code === 200) { |
||||
this.keyOptions = resp.data; |
||||
} |
||||
}); |
||||
}, |
||||
selectKey (item) { |
||||
if (item) { |
||||
getSkill(item).then((resp) => { |
||||
if (resp && resp.code === 200) { |
||||
this.content = resp.data.content; |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.box-card { |
||||
width: 500px; |
||||
min-height: 100px; |
||||
} |
||||
</style> |
||||
|
@ -0,0 +1,122 @@ |
||||
<template> |
||||
<div class="app-container" style="width:90%;margin:auto;"> |
||||
<!-- 添加或修改线索反馈对话框 --> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
<el-form-item label="学员姓名"> |
||||
<span>{{ order.stuName }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="联系方式"> |
||||
<span>{{ order.phone }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="地址"> |
||||
<span>{{ order.address }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="接待人"> |
||||
<span>{{ order.coachName }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="到场状态" prop="arrivalStatus"> |
||||
<el-radio-group v-model="form.arrivalStatus" size="small" :disabled="type != 'JDR'"> |
||||
<el-radio :label="1">未到场</el-radio> |
||||
<el-radio :label="2">到场未成交</el-radio> |
||||
<el-radio :label="3">到场已成交</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="备注" prop="remark"> |
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :disabled="type != 'JDR'" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div v-if="type === 'JDR'" style="text-align: center;"> |
||||
<div style="text-align: center;"> |
||||
<el-button type="primary" @click="submitForm">提 交</el-button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { getFeedbackDetailInfo, addFeedbackDetail, updateFeedbackDetail } from '@/api/zs/feedbackDetail'; |
||||
|
||||
import { getFeedbackOrder } from '@/api/zs/feedbackOrder'; |
||||
|
||||
export default { |
||||
name: 'Follow', |
||||
data () { |
||||
return { |
||||
// 遮罩层 |
||||
loading: true, |
||||
// 表单参数 |
||||
form: {}, |
||||
// 表单校验 |
||||
rules: { |
||||
}, |
||||
order: {}, |
||||
orderId: undefined, |
||||
type: undefined |
||||
}; |
||||
}, |
||||
created () { |
||||
console.log(this.$route.query.no); |
||||
this.type = this.$route.query.type; |
||||
this.reset(); |
||||
this.getFeedbackOrder(this.$route.query.no); |
||||
this.getFeedbackDetailInfo(this.$route.query.no); |
||||
}, |
||||
methods: { |
||||
/** 查询线索反馈表单 */ |
||||
getFeedbackOrder (orderId) { |
||||
this.loading = true; |
||||
getFeedbackOrder(orderId).then(response => { |
||||
this.order = response.data; |
||||
if (this.order.clueId) { |
||||
this.form.clueId = this.order.clueId; |
||||
} |
||||
if (this.order.coachId) { |
||||
this.form.coachId = this.order.coachId; |
||||
} |
||||
if (this.order.orderId) { |
||||
this.form.orderId = this.order.orderId; |
||||
} |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
/** 查询线索反馈表单 */ |
||||
getFeedbackDetailInfo (orderId) { |
||||
this.loading = true; |
||||
getFeedbackDetailInfo({ orderId: orderId, feedbackType: 2 }).then(response => { |
||||
if (response.data) { |
||||
this.form = response.data; |
||||
} |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
// 表单重置 |
||||
reset () { |
||||
this.form = { |
||||
feedbackId: null, |
||||
clueId: null, |
||||
feedbackType: 2, |
||||
coachId: null, |
||||
arrivalStatus: 1, |
||||
remark: null |
||||
}; |
||||
this.resetForm('form'); |
||||
}, |
||||
/** 提交按钮 */ |
||||
submitForm () { |
||||
this.$refs['form'].validate(valid => { |
||||
if (valid) { |
||||
if (this.form.feedbackId != null) { |
||||
updateFeedbackDetail(this.form).then(response => { |
||||
this.$modal.msgSuccess('提交成功'); |
||||
}); |
||||
} else { |
||||
addFeedbackDetail(this.form).then(response => { |
||||
this.$modal.msgSuccess('提交成功'); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,126 @@ |
||||
<template> |
||||
<div class="app-container" style="width:90%;margin:auto;"> |
||||
<!-- 添加或修改线索反馈对话框 --> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
<el-form-item label="学员姓名"> |
||||
<span>{{ order.stuName }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="联系方式"> |
||||
<span>{{ order.phone }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="地址"> |
||||
<span>{{ order.address }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="接待人" prop="coachId"> |
||||
<span>{{ order.coachName }}</span> |
||||
</el-form-item> |
||||
<el-form-item label="是否联系" prop="isContact"> |
||||
<el-radio-group v-model="form.isContact" size="small" :disabled="type != 'JDR'"> |
||||
<el-radio :label="1">是</el-radio> |
||||
<el-radio :label="0">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="到场时间" prop="arrivalTime"> |
||||
<el-date-picker v-model="form.arrivalTime" :disabled="type != 'JDR'" clearable type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" placeholder="请选择到场时间" /> |
||||
</el-form-item> |
||||
<el-form-item label="备注" prop="remark"> |
||||
<el-input v-model="form.remark" :disabled="type != 'JDR'" type="textarea" placeholder="请输入内容" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div v-if="type === 'JDR'" style="text-align: center;"> |
||||
<div style="text-align: center;"> |
||||
<el-button type="primary" @click="submitForm">提 交</el-button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { getFeedbackDetailInfo, addFeedbackDetail, updateFeedbackDetail } from '@/api/zs/feedbackDetail'; |
||||
|
||||
import { getFeedbackOrder } from '@/api/zs/feedbackOrder'; |
||||
|
||||
export default { |
||||
name: 'Follow', |
||||
data () { |
||||
return { |
||||
// 遮罩层 |
||||
loading: true, |
||||
// 表单参数 |
||||
form: {}, |
||||
// 表单校验 |
||||
rules: { |
||||
}, |
||||
order: {}, |
||||
orderId: undefined, |
||||
type: undefined |
||||
}; |
||||
}, |
||||
created () { |
||||
console.log(this.$route.query.no); |
||||
this.type = this.$route.query.type; |
||||
this.reset(); |
||||
this.getFeedbackOrder(this.$route.query.no); |
||||
this.getFeedbackDetailInfo(this.$route.query.no); |
||||
}, |
||||
methods: { |
||||
/** 查询线索反馈表单 */ |
||||
getFeedbackOrder (orderId) { |
||||
this.loading = true; |
||||
getFeedbackOrder(orderId).then(response => { |
||||
this.order = response.data; |
||||
if (this.order.clueId) { |
||||
this.form.clueId = this.order.clueId; |
||||
} |
||||
if (this.order.coachId) { |
||||
this.form.coachId = this.order.coachId; |
||||
} |
||||
if (this.order.orderId) { |
||||
this.form.orderId = this.order.orderId; |
||||
} |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
/** 查询线索反馈表单 */ |
||||
getFeedbackDetailInfo (orderId) { |
||||
this.loading = true; |
||||
getFeedbackDetailInfo({ orderId: orderId, feedbackType: 1 }).then(response => { |
||||
if (response.data) { |
||||
this.form = response.data; |
||||
} |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
// 表单重置 |
||||
reset () { |
||||
this.form = { |
||||
feedbackId: null, |
||||
clueId: null, |
||||
feedbackType: 1, |
||||
coachId: null, |
||||
feedbackTime: null, |
||||
isContact: 0, |
||||
arrivalTime: null, |
||||
remark: null |
||||
}; |
||||
this.resetForm('form'); |
||||
}, |
||||
/** 提交按钮 */ |
||||
submitForm () { |
||||
this.$refs['form'].validate(valid => { |
||||
if (valid) { |
||||
if (this.form.feedbackId != null) { |
||||
updateFeedbackDetail(this.form).then(response => { |
||||
this.$modal.msgSuccess('提交成功'); |
||||
}); |
||||
} else { |
||||
addFeedbackDetail(this.form).then(response => { |
||||
this.$modal.msgSuccess('提交成功'); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,253 @@ |
||||
<template> |
||||
<div class="app-container"> |
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px"> |
||||
<el-form-item label="线索id" prop="clueId"> |
||||
<el-input v-model="queryParams.clueId" placeholder="请输入线索id" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item label="教练id" prop="coachId"> |
||||
<el-input v-model="queryParams.coachId" placeholder="请输入教练id" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item label="反馈时间" prop="feedbackTime"> |
||||
<el-date-picker v-model="queryParams.feedbackTime" clearable type="date" value-format="yyyy-MM-dd" placeholder="请选择反馈时间" /> |
||||
</el-form-item> |
||||
<el-form-item label="是否联系" prop="isContact"> |
||||
<el-input v-model="queryParams.isContact" placeholder="请输入是否联系" clearable @keyup.enter.native="handleQuery" /> |
||||
</el-form-item> |
||||
<el-form-item label="到场时间" prop="arrivalTime"> |
||||
<el-date-picker v-model="queryParams.arrivalTime" clearable type="date" value-format="yyyy-MM-dd" placeholder="请选择到场时间" /> |
||||
</el-form-item> |
||||
<el-form-item> |
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
|
||||
<el-row :gutter="10" class="mb8"> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['system:feedback:add']" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button> |
||||
</el-col> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['system:feedback:edit']" type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate">修改</el-button> |
||||
</el-col> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['system:feedback:remove']" type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete">删除</el-button> |
||||
</el-col> |
||||
<el-col :span="1.5"> |
||||
<el-button v-hasPermi="['system:feedback:export']" type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button> |
||||
</el-col> |
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" /> |
||||
</el-row> |
||||
|
||||
<el-table v-loading="loading" :data="feedbackList" @selection-change="handleSelectionChange"> |
||||
<el-table-column type="selection" width="55" align="center" /> |
||||
<el-table-column label="${comment}" align="center" prop="feedbackId" /> |
||||
<el-table-column label="线索id" align="center" prop="clueId" /> |
||||
<el-table-column label="反馈类型 1 跟进反馈 2 到场负反馈" align="center" prop="feedbackType" /> |
||||
<el-table-column label="教练id" align="center" prop="coachId" /> |
||||
<el-table-column label="反馈内容" align="center" prop="content" /> |
||||
<el-table-column label="反馈时间" align="center" prop="feedbackTime" width="180"> |
||||
<template slot-scope="scope"> |
||||
<span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span> |
||||
</template>00000000000000000000000 |
||||
</el-table-column> |
||||
<el-table-column label="是否联系" align="center" prop="isContact" /> |
||||
<el-table-column label="到场时间" align="center" prop="arrivalTime" width="180"> |
||||
<template slot-scope="scope"> |
||||
<span>{{ parseTime(scope.row.arrivalTime, '{y}-{m}-{d}') }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="到场状态" align="center" prop="arrivalStatus" /> |
||||
<el-table-column label="备注" align="center" prop="remark" /> |
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> |
||||
<template slot-scope="scope"> |
||||
<el-button v-hasPermi="['system:feedback:edit']" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button> |
||||
<el-button v-hasPermi="['system:feedback:remove']" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> |
||||
|
||||
<!-- 添加或修改线索反馈对话框 --> |
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
||||
<el-form-item label="线索id" prop="clueId"> |
||||
<el-input v-model="form.clueId" placeholder="请输入线索id" /> |
||||
</el-form-item> |
||||
<el-form-item label="教练id" prop="coachId"> |
||||
<el-input v-model="form.coachId" placeholder="请输入教练id" /> |
||||
</el-form-item> |
||||
<el-form-item label="反馈内容"> |
||||
<editor v-model="form.content" :min-height="192" /> |
||||
</el-form-item> |
||||
<el-form-item label="反馈时间" prop="feedbackTime"> |
||||
<el-date-picker v-model="form.feedbackTime" clearable type="date" value-format="yyyy-MM-dd" placeholder="请选择反馈时间" /> |
||||
</el-form-item> |
||||
<el-form-item label="是否联系" prop="isContact"> |
||||
<el-input v-model="form.isContact" placeholder="请输入是否联系" /> |
||||
</el-form-item> |
||||
<el-form-item label="到场时间" prop="arrivalTime"> |
||||
<el-date-picker v-model="form.arrivalTime" clearable type="date" value-format="yyyy-MM-dd" placeholder="请选择到场时间" /> |
||||
</el-form-item> |
||||
<el-form-item label="备注" prop="remark"> |
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div slot="footer" class="dialog-footer"> |
||||
<el-button type="primary" @click="submitForm">确 定</el-button> |
||||
<el-button @click="cancel">取 消</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { listFeedback, getFeedback, delFeedback, addFeedback, updateFeedback } from '@/api/zs/feedback'; |
||||
|
||||
export default { |
||||
name: 'Feedback', |
||||
data () { |
||||
return { |
||||
// 遮罩层 |
||||
loading: true, |
||||
// 选中数组 |
||||
ids: [], |
||||
// 非单个禁用 |
||||
single: true, |
||||
// 非多个禁用 |
||||
multiple: true, |
||||
// 显示搜索条件 |
||||
showSearch: true, |
||||
// 总条数 |
||||
total: 0, |
||||
// 线索反馈表格数据 |
||||
feedbackList: [], |
||||
// 弹出层标题 |
||||
title: '', |
||||
// 是否显示弹出层 |
||||
open: false, |
||||
// 查询参数 |
||||
queryParams: { |
||||
pageNum: 1, |
||||
pageSize: 10, |
||||
clueId: null, |
||||
feedbackType: null, |
||||
coachId: null, |
||||
content: null, |
||||
feedbackTime: null, |
||||
isContact: null, |
||||
arrivalTime: null, |
||||
arrivalStatus: null |
||||
}, |
||||
// 表单参数 |
||||
form: {}, |
||||
// 表单校验 |
||||
rules: { |
||||
} |
||||
}; |
||||
}, |
||||
created () { |
||||
this.getList(); |
||||
}, |
||||
methods: { |
||||
/** 查询线索反馈列表 */ |
||||
getList () { |
||||
this.loading = true; |
||||
listFeedback(this.queryParams).then(response => { |
||||
this.feedbackList = response.rows; |
||||
this.total = response.total; |
||||
this.loading = false; |
||||
}); |
||||
}, |
||||
// 取消按钮 |
||||
cancel () { |
||||
this.open = false; |
||||
this.reset(); |
||||
}, |
||||
// 表单重置 |
||||
reset () { |
||||
this.form = { |
||||
feedbackId: null, |
||||
clueId: null, |
||||
feedbackType: null, |
||||
coachId: null, |
||||
content: null, |
||||
feedbackTime: null, |
||||
isContact: null, |
||||
arrivalTime: null, |
||||
arrivalStatus: 0, |
||||
remark: null |
||||
}; |
||||
this.resetForm('form'); |
||||
}, |
||||
/** 搜索按钮操作 */ |
||||
handleQuery () { |
||||
this.queryParams.pageNum = 1; |
||||
this.getList(); |
||||
}, |
||||
/** 重置按钮操作 */ |
||||
resetQuery () { |
||||
this.resetForm('queryForm'); |
||||
this.handleQuery(); |
||||
}, |
||||
// 多选框选中数据 |
||||
handleSelectionChange (selection) { |
||||
this.ids = selection.map(item => item.feedbackId); |
||||
this.single = selection.length !== 1; |
||||
this.multiple = !selection.length; |
||||
}, |
||||
/** 新增按钮操作 */ |
||||
handleAdd () { |
||||
this.reset(); |
||||
this.open = true; |
||||
this.title = '添加线索反馈'; |
||||
}, |
||||
/** 修改按钮操作 */ |
||||
handleUpdate (row) { |
||||
this.reset(); |
||||
const feedbackId = row.feedbackId || this.ids; |
||||
getFeedback(feedbackId).then(response => { |
||||
this.form = response.data; |
||||
this.open = true; |
||||
this.title = '修改线索反馈'; |
||||
}); |
||||
}, |
||||
/** 提交按钮 */ |
||||
submitForm () { |
||||
this.$refs['form'].validate(valid => { |
||||
if (valid) { |
||||
if (this.form.feedbackId != null) { |
||||
updateFeedback(this.form).then(response => { |
||||
this.$modal.msgSuccess('修改成功'); |
||||
this.open = false; |
||||
this.getList(); |
||||
}); |
||||
} else { |
||||
addFeedback(this.form).then(response => { |
||||
this.$modal.msgSuccess('新增成功'); |
||||
this.open = false; |
||||
this.getList(); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
/** 删除按钮操作 */ |
||||
handleDelete (row) { |
||||
const feedbackIds = row.feedbackId || this.ids; |
||||
this.$modal.confirm('是否确认删除线索反馈编号为"' + feedbackIds + '"的数据项?').then(function () { |
||||
return delFeedback(feedbackIds); |
||||
}).then(() => { |
||||
this.getList(); |
||||
this.$modal.msgSuccess('删除成功'); |
||||
}).catch(() => { }); |
||||
}, |
||||
/** 导出按钮操作 */ |
||||
handleExport () { |
||||
this.download('system/feedback/export', { |
||||
...this.queryParams |
||||
}, `feedback_${new Date().getTime()}.xlsx`); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
@ -0,0 +1,104 @@ |
||||
<template> |
||||
<!-- 结算对话框 --> |
||||
<el-dialog v-if="visible" v-loading="signLoading" title="结算" :visible.sync="visible" width="600px" append-to-body :close-on-click-modal="false" style> |
||||
<el-form ref="modalForm" :model="modalForm" :rules="modalRules" label-width="110px" > |
||||
<el-row> |
||||
|
||||
<!-- <el-col :span="24"> |
||||
<el-form-item label="学员姓名" prop="name"> |
||||
<el-input v-model="modalForm.name" :disabled="modalForm.clueId != undefined" /> |
||||
</el-form-item> |
||||
</el-col> --> |
||||
<el-col :span="24"> |
||||
<el-form-item label="结算金额" prop="settlementMoney"> |
||||
<el-input v-model="modalForm.settlementMoney" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<span slot="footer"> |
||||
<el-button @click="visible = false">取 消</el-button> |
||||
<el-button type="primary" :disabled="!canSubmit" @click="handleSubmit">提 交</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import { updateSign } from '@/api/zs/sign'; |
||||
import { validateMoney } from '@/utils/validate'; |
||||
|
||||
export default { |
||||
name: 'SettlementDialog', |
||||
data() { |
||||
return { |
||||
admin: localStorage.getItem('admin'), |
||||
preUrl: process.env.VUE_APP_BASE_API, |
||||
userId: localStorage.getItem('userId'), |
||||
visible: false, |
||||
signLoading: false, |
||||
modalForm: {}, |
||||
modalRules: { |
||||
settlementMoney: [{ required: true, message: '结算金额不为空', trigger: 'blur' }, |
||||
{ required: true, validator: validateMoney, trigger: 'blur' }] |
||||
}, |
||||
}; |
||||
}, |
||||
methods: { |
||||
init(info = undefined) { |
||||
this.canSubmit = true; |
||||
this.$nextTick(() => { |
||||
this.resetForm('modalForm'); |
||||
if (info && info.signId) { |
||||
this.modalForm = {... info} |
||||
} |
||||
this.visible = true; |
||||
}); |
||||
}, |
||||
// 重置表单 |
||||
resetForm() { |
||||
this.modalForm = { |
||||
signId: undefined, |
||||
settlementMoney: undefined, |
||||
}; |
||||
}, |
||||
handleSubmit() { |
||||
// 保存结算表 |
||||
this.$refs.modalForm.validate((valid) => { |
||||
if (valid) { |
||||
this.canSubmit = false; |
||||
updateSign(this.modalForm).then((resp) => { |
||||
if (resp.code == 200) { |
||||
this.$message.success('提交成功'); |
||||
this.visible = false; |
||||
this.$emit('refreshDataList'); |
||||
} else { |
||||
this.canSubmit = true; |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
|
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
.demo-image__item { |
||||
width: 100px; |
||||
height: 100px; |
||||
display: inline-block; |
||||
} |
||||
|
||||
.image-list-item { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.el-upload--picture-card { |
||||
width: 100px !important; |
||||
height: 100px !important; |
||||
} |
||||
</style> |
||||
|
||||
|
Loading…
Reference in new issue