import React from 'react'; import './index.less'; import Page from '@src/containers/Page'; import Block from '@src/components/Block'; import FilterLayout from '@src/layouts/FilterLayout'; import ActionLayout from '@src/layouts/ActionLayout'; import TableLayout from '@src/layouts/TableLayout'; import { getMap, formatDate, bindSearch, formatTreeData } from '@src/services/Tools'; import { asyncSMessage, asyncForm } from '@src/services/AsyncTools'; import { FaqChannel, SystemSelect } from '../../../../Constant'; import { System } from '../../../stores/system'; import { Course } from '../../../stores/course'; const FaqChannelMap = getMap(FaqChannel, 'value', 'label'); const SystemSelectMap = getMap(SystemSelect, 'value', 'label'); export default class extends Page { init() { this.actionList = [{ key: 'add', type: 'primary', name: '创建', }]; this.formF = null; this.itemList = [{ key: 'id', type: 'hidden', }, { key: 'channel', type: 'cascader', name: '频道', select: formatTreeData(FaqChannel, 'value', 'label', 'parent'), placeholder: '请选择', onChange: (value) => { this.changeSearch(this.itemList, this.formF, value.join('-'), null, 2); }, }, { key: 'position', type: 'select', name: '位置', select: [], placeholder: '请选择', }, { key: 'content', type: 'textarea', name: '用户留言', }, { key: 'answer', type: 'textarea', name: '编辑回复', }]; this.filterF = null; this.filterForm = [{ key: 'channel', type: 'cascader', allowClear: true, name: '频道', select: formatTreeData(FaqChannel, 'value', 'label', 'parent'), placeholder: '请选择', onChange: (value) => { this.changeSearch(this.filterForm, this, value.join('-'), null); }, }, { key: 'position', type: 'select', allowClear: true, name: '位置', number: true, select: [], placeholder: '请选择', }, { key: 'isSystem', type: 'select', allowClear: true, number: true, name: '来源', select: SystemSelect, }]; this.columns = [{ title: '频道', dataIndex: 'channel', render: (text, record) => { return FaqChannelMap[record.channel]; }, }, { title: '位置', dataIndex: 'positionDetail.title', }, { title: '创建时间', sorter: true, dataIndex: 'createTime', render: (text) => { return formatDate(text); }, }, { title: '来源', dataIndex: 'isSystem', render: (text) => { return SystemSelectMap[text]; }, }, { title: '操作', dataIndex: 'handler', render: (text, record) => { return
{( { this.editAction(record); }}>编辑 )}
; }, }]; this.changeSearch(this.filterForm, this, this.state.search.channel, this.state.search.position); this.state.search.channel = this.state.search.channel ? this.state.search.channel.split('-') : ''; } changeSearch(list, component, key, value, index = 1) { if (key === 'course-video' || key === 'course_data') { bindSearch(list, 'position', component, (search) => { if (key === 'course-video') { return Course.list(Object.assign({ courseModule: 'video' }, search)); } return Course.listData(search); }, (row) => { return { title: row.title, value: row.id, }; }, value ? Number(value) : null, null); list[index].disabled = false; } else { list[index].disabled = true; } } initData() { System.listFAQ(Object.assign({ isSpecial: true }, this.state.search)).then(result => { this.setTableData(result.list, result.total); }); } addAction() { asyncForm('创建', this.itemList, {}, data => { data.isShow = 1; data.isSystem = 1; data.isSpecial = 1; return System.addFAQ(data).then(() => { asyncSMessage('添加成功!'); this.refresh(); }); }).then(component => { this.formF = component; }); } editAction(row) { asyncForm('编辑', this.itemList, row, data => { return System.editFAQ(data).then(() => { asyncSMessage('编辑成功!'); this.refresh(); }); }).then(component => { this.formF = component; this.changeSearch(this.filterForm, this, row.channel, row.position, 2); }); } show(row, isShow) { System.editFAQ({ id: row.id, isShow }).then(() => { asyncSMessage('编辑成功!'); this.refresh(); }); } renderView() { return { this.filterF = ref; }} itemList={this.filterForm} data={this.state.search} onChange={data => { data.channel = data.channel.join('-'); this.search(data); }} /> this.onAction(key)} /> this.tableChange(pagination, filters, sorter)} onSelect={(keys, rows) => this.tableSelect(keys, rows)} selectedKeys={this.state.selectedKeys} /> ; } }