caozong
zcxee 12 months ago
parent 2c0bc99c03
commit 6c71bccd83
  1. 2
      src/permission.js
  2. 5
      src/router/index.js
  3. 14
      src/views/question/index.vue
  4. 116
      src/views/zs/clue/components/DistributeFormDialog copy.vue
  5. 67
      src/views/zs/clue/components/DistributeFormDialog.vue
  6. 180
      src/views/zs/feedback/first.vue
  7. 2
      src/views/zs/feedback/index.vue

@ -16,7 +16,7 @@ NProgress.configure({
showSpinner: false showSpinner: false
}); });
const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question']; const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question', '/clue/feedback'];
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start(); NProgress.start();

@ -53,6 +53,11 @@ export const constantRoutes = [{
component: () => import('@/views/question'), component: () => import('@/views/question'),
hidden: true hidden: true
}, },
{
path: '/clue/feedback',
component: () => import('@/views/zs/feedback/first'),
hidden: true
},
{ {
path: '/404', path: '/404',
component: () => import('@/views/error/404'), component: () => import('@/views/error/404'),

@ -81,7 +81,7 @@ export default {
components: { components: {
QuestionForm, QuestionAddForm QuestionForm, QuestionAddForm
}, },
data() { data () {
return { return {
// //
loading: false, loading: false,
@ -98,12 +98,12 @@ export default {
dialogAddVisible: false dialogAddVisible: false
}; };
}, },
created() { created () {
// this.getList(); // this.getList();
}, },
methods: { methods: {
/** 查询文件列表 */ /** 查询文件列表 */
getList() { getList () {
this.loading = true; this.loading = true;
searchQuestion(this.queryParams).then(response => { searchQuestion(this.queryParams).then(response => {
this.tableList = response.data; this.tableList = response.data;
@ -113,7 +113,7 @@ export default {
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery () {
if (this.queryParams.question) { if (this.queryParams.question) {
this.getList(); this.getList();
} else { } else {
@ -121,17 +121,17 @@ export default {
} }
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery () {
this.queryParams.question = ''; this.queryParams.question = '';
this.handleQuery(); this.handleQuery();
}, },
handleEdit(item) { handleEdit (item) {
this.dialogVisible = true; this.dialogVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.dialogForm.init(item); this.$refs.dialogForm.init(item);
}); });
}, },
handleAdd(item) { handleAdd (item) {
this.dialogAddVisible = true; this.dialogAddVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.dialogAddForm.init(item); this.$refs.dialogAddForm.init(item);

@ -0,0 +1,116 @@
<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>

@ -3,14 +3,19 @@
<el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px"> <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="场地" prop="newPlaceList"> <el-form-item label="场地" prop="placeId">
<span v-if="oldForm.placeNames">{{oldForm.placeNames}}</span> <el-select v-model="dialogForm.placeId" filterable placeholder="请选择" clearable style="width: 100%;">
<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-option v-for="dict in placeOptions" :key="dict.placeId" :label="dict.name" :value="dict.placeId" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24">
<el-form-item label="教练" prop="coachId">
<el-select v-model="dialogForm.coachId" filterable placeholder="请选择" clearable style="width: 100%;">
<el-option v-for="dict in coachOptions" :key="dict.coachId" :label="dict.coachName" :value="dict.coachId" />
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -19,74 +24,68 @@
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { getCluePlaceList, saveCluePlace } from '@/api/zs/clue'; import { getCluePlaceList, saveCluePlace } from '@/api/zs/clue';
import { getAllPlaces } from '@/api/sch/place'; import { getAllPlaces } from '@/api/sch/place';
export default { export default {
name: 'DistributeFormDialog', name: 'DistributeFormDialog',
data() { data () {
return { return {
visible: false, visible: false,
canSubmit: true, canSubmit: true,
dialogForm: {}, dialogForm: {},
oldForm: {}, oldForm: {},
rules: { rules: {
newPlaceList: { placeId: { required: true, message: '场地不能为空', trigger: 'blur, change' },
required: true, coachId: { required: true, message: '教练不能为空', trigger: 'blur, change' }
message: '场地不能为空不能为空',
trigger: 'blur'
}
}, },
placeOptions: [] placeOptions: []
}; };
}, },
methods: { methods: {
init(info = undefined) { init (info = undefined) {
this.getPlaces() this.getPlaces();
this.visible = true; this.visible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.resetDialogForm(); this.resetDialogForm();
this.$refs['dialogForm'].resetFields(); this.$refs['dialogForm'].resetFields();
if (info) { if (info) {
this.dialogForm.clueId = info; this.dialogForm.clueId = info;
//线 // 线
this.getDistributePlaces(info); this.getDistributePlaces(info);
} }
}); });
}, },
resetDialogForm() { resetDialogForm () {
this.dialogForm = { this.dialogForm = {
oldPlaceList: [], placeId: undefined,
newPlaceList: [], clueId: undefined,
placeIdList: [], coachId: undefined
clueId: undefined
}; };
this.oldForm = {} this.oldForm = {};
}, },
closeDialog() { closeDialog () {
this.$emit('update:dialog.batchUpdateVisible', false); this.$emit('update:dialog.batchUpdateVisible', false);
}, },
getDistributePlaces(clueId) { getDistributePlaces (clueId) {
getCluePlaceList({ clueId: clueId }).then(resp => { getCluePlaceList({ clueId: clueId }).then(resp => {
if (resp.code == 200) { if (resp.code == 200) {
this.oldForm = resp.data this.oldForm = resp.data;
this.dialogForm.oldPlaceList = this.oldForm.placeIdList; this.dialogForm.oldPlaceList = this.oldForm.placeIdList;
if (this.oldForm.placeIdList && this.oldForm.placeIdList) { if (this.oldForm.placeIdList && this.oldForm.placeIdList) {
this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1) this.placeOptions = this.placeOptions.filter(item => this.oldForm.placeIdList.indexOf(item.placeId) == -1);
} }
} }
});
})
}, },
// //
dialogFormSubmit() { dialogFormSubmit () {
this.$refs.dialogForm.validate((valid) => { this.$refs.dialogForm.validate((valid) => {
if (valid) { if (valid) {
this.canSubmit = false; this.canSubmit = false;
this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList) this.dialogForm.placeIdList = this.dialogForm.oldPlaceList.concat(this.dialogForm.newPlaceList);
// //
saveCluePlace(this.dialogForm) saveCluePlace(this.dialogForm)
.then((resp) => { .then((resp) => {
@ -103,14 +102,12 @@ export default {
} }
}); });
}, },
getPlaces() { getPlaces () {
getAllPlaces({ status: '0' }).then((resp) => { getAllPlaces({ status: '0' }).then((resp) => {
this.placeOptions = resp.data; this.placeOptions = resp.data;
}); });
}, }
} }
}; };
</script> </script>

@ -0,0 +1,180 @@
<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="学员姓名" prop="clueId">
<el-input v-model="form.clueId" placeholder="请输入线索id" />
</el-form-item>
<el-form-item label="联系方式" 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="是否联系" 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>
</div>
</template>
<script>
import { addFeedback, updateFeedback } from '@/api/zs/feedback';
export default {
name: 'First',
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>

@ -48,7 +48,7 @@
<el-table-column label="反馈时间" align="center" prop="feedbackTime" width="180"> <el-table-column label="反馈时间" align="center" prop="feedbackTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span>
</template> </template>00000000000000000000000
</el-table-column> </el-table-column>
<el-table-column label="是否联系" align="center" prop="isContact" /> <el-table-column label="是否联系" align="center" prop="isContact" />
<el-table-column label="到场时间" align="center" prop="arrivalTime" width="180"> <el-table-column label="到场时间" align="center" prop="arrivalTime" width="180">

Loading…
Cancel
Save