diff --git a/src/pages/plan/keysList/list.js b/src/pages/plan/keysList/list.js new file mode 100644 index 00000000..d5d21211 --- /dev/null +++ b/src/pages/plan/keysList/list.js @@ -0,0 +1,803 @@ +/* key列表 */ +import React from 'react' +import { Button, Alert } from 'zent' +import './list.less' +import { + Input, + RadioGroup, + CombinedDateRangePicker, + Radio, + Notify, + Switch, + Dropdown, + DropdownPosition, + DropdownClickTrigger, + Icon, + MenuItem, + DropdownContent, + Menu +} from 'zent' +import Grid from '@/components/gird/main.js' +import TabPage from '@/components/tabPage/main.js' +import { + keyCancel, + keyUsage, + keyBatchUsage, + keyBatchCancel, + handelResponse, + getkeyDetailList +} from '@/assets/api.js' +import _ from 'lodash' +import menu from '@/assets/enum.js' + +import UseUploadExcel from '@/components/UseUploadExcel' +import KeysFind from '@/components/keysFind' +export default class acclist extends React.Component { + constructor(props) { + super(props) + this.state = { + dataCount: 0, + page: 1, + limit: 10, + tabList: [ + { title: '全部', index: 0 }, + { title: '可使用', index: 1 }, + { title: '已使用', index: 2 }, + { title: '已完结', index: 3 }, + { title: '已作废', index: 4 } + ], + distdata: [{ title: '士大夫大师傅' }], + filterList: [ + { + id: 0, + label: '状态', + prop: 'status', + menuList: [ + { id: 999, name: '全部' }, + { id: 0, name: '创建中' }, + { id: 2, name: '审核中' }, + { id: 3, name: '待生效' }, + { id: 4, name: '进行中' }, + { id: 5, name: '暂停中' }, + { id: 6, name: '已完结' } + ] + } + ], + tableHeight: 500, + menuList: [{ id: 0, name: '状态', check: false }], + phone_list: [], + email_list: [], + phone: '', + email: '', + email_radio: -1, + phone_radio: -1, + search: '', + audit_visible: false, + + cur_item: null, + selectiondata: [], + plan_id: 0, + grantTotal: 0, + surplusTotal: 0, + usageTotal: 0, + silentTotal: 0, + receive_total: 0, + usage_total: 0, + outdateTotal: 0, + invalidTotal: 0, + multiple: true, + dialogTitle: '', + bachVisible: false, + conditionalQuery: {} //条件查询 + } + } + + //分页 + onPageChange(e) { + this.setState({ page: e }) + + setTimeout(() => { + this.getpageFn() + }, 0) + } + + componentDidMount(e) {} + componentWillMount() { + this.setState({ tableHeight: window.innerHeight - 430 }) + } + + getKeyCodeList(data) { + console.log(data, this.state.conditionalQuery) + let queryParams = _.omitBy( + { ...data, ...this.state.conditionalQuery }, + (value) => { + return _.isNaN(value) || _.isNil(value) + } + ) + let id = sessionStorage.getItem('key_batch_id') + + getkeyDetailList(id, queryParams).then((res) => { + handelResponse( + res, + (req, msg) => { + this.setState({ distdata: req.data }) + this.setState({ dataCount: req.total }) + }, + (err) => {} + ) + }) + } + onCountChange(e) { + this.setState({ page: 1, limit: e }) + setTimeout(() => { + this.getpageFn() + }, 0) + } + getpageFn() { + let data = { + page: this.state.page, + limit: this.state.limit, + key: this.state.key + } + console.log(155, this.state.status) + let status = this.state.status > 0 ? this.state.status : null + if (status) { + data.status = status + } + this.getKeyCodeList(data) + } + + //清空 + clearFn() { + this.refs.plan_list.allChecked(false) + this.setState({ multiple: true }) + this.setState({ selectiondata: [] }) + } + //选中表格的选框 + selection(selection) { + if (selection.length > 0) { + this.setState({ multiple: false }) + } else { + this.setState({ multiple: true }) + } + // this.setState({multiple:false}) + + this.setState({ selectiondata: selection }) + let grantTotal = 0 + let surplusTotal = 0 + let usageTotal = 0 + let receive_total = 0 + let usage_total = 0 + let silent_total = 0 + let invalidTotal = 0 + let outdateTotal = 0 + selection.forEach((item) => { + grantTotal += Number(item.total) + surplusTotal += Number(item.residue) + usageTotal += Number(item.usage) + outdateTotal += Number(item.overdue) + invalidTotal += Number(item.invalid) + + // receive_total+=Number(item.receive_total); + usage_total += Number(item.usage_total) + silent_total += Number(item.silent_total) + }) + this.setState({ + grantTotal, + usageTotal, + invalidTotal, + outdateTotal, + surplusTotal + }) + } + + // 监听组件内部状态的变化: + componentDidUpdate(prevProps, prevState) { + // 参数分别为改变之前的数据状态对象 + if (prevState.search != this.state.search && !this.state.search) { + this.iptsureFn() + } + } + + iptsureFn() { + let status = this.state.status > 0 ? this.state.status : null + this.setState({ page: 1 }) + this.setState({ limit: 10 }) + let data = { + page: 1, + limit: 10, + key: this.state.search + } + if (status) { + data.status = status + } + if (status) { + data.status = status + } + this.getKeyCodeList(data) + } + + onFilterClose(prop) { + let data = {} + data[prop] = null + + this.setState(data) + + let params = { + page: 1, + limit: 10, + key: this.state.search + } + this.getKeyCodeList(params) + } + + tabFn(e) { + let status = e > 0 ? e : null + this.setState({ status: e }) + this.setState({ search: '' }) + this.setState({ page: 1 }) + this.setState({ limit: 10 }) + let params = { + page: 1, + limit: 10, + status: status + } + this.getKeyCodeList(params) + } + menuItemClick(e, key, rowData) { + if (key == 1) { + let formdata = { + key: rowData.key + } + + keyUsage(formdata).then((res) => { + handelResponse( + res, + (req, msg) => { + let data = { + page: 1, + limit: 10 + } + this.setState({ page: 1, limit: 10 }) + this.getKeyCodeList(data) + Notify.success('标记为使用成功') + }, + (err) => { + Notify.error(err) + } + ) + }) + } + if (key == 2) { + let formdata = { + key: rowData.key + } + keyCancel(formdata).then((res) => { + handelResponse( + res, + (req, msg) => { + let data = { + page: 1, + limit: 10 + } + this.setState({ page: 1, limit: 10 }) + this.getKeyCodeList(data) + Notify.success('作废成功') + }, + (err) => { + Notify.error(err) + } + ) + }) + } + if (key == 3) { + sessionStorage.setItem('keyCode', rowData.key) + window.open('#/home/key-log') + } + } + multipleCancel() { + console.log(this.state.selectiondata) + let keys = _.map(this.state.selectiondata, (item) => { + return item.key + }) + + let formdata = { + keys: keys + } + + keyBatchCancel(formdata).then((res) => { + handelResponse( + res, + (req, msg) => { + Notify.success('批量作废成功') + let data = { + page: 1, + limit: 10 + } + this.setState({ page: 1, limit: 10 }) + this.clearFn() + this.getKeyCodeList(data) + }, + (err) => { + Notify.error(err) + } + ) + }) + } + multipleUse() { + let keys = _.map(this.state.selectiondata, (item) => { + return item.key + }) + + let formdata = { + keys: keys + } + + keyBatchUsage(formdata).then((res) => { + handelResponse( + res, + (req, msg) => { + Notify.success('批量标记为使用成功') + let data = { + page: 1, + limit: 10 + } + this.setState({ page: 1, limit: 10 }) + this.clearFn() + this.getKeyCodeList(data) + }, + (err) => { + Notify.error(err) + } + ) + }) + } + + /** + * 批量上传操作 + */ + + // 查询 + bachUploadQuery() { + this.setState({ dialogTitle: '批量上传查询' }) + this.setState({ bachVisible: true }) + } + + // 作废 + bachUploadVoid() {} + + // 标记已使用 + bachUploadTagUse() {} + + // 取消安妮 + bachOnClose() { + this.setState({ bachVisible: false }) + } + + render() { + const { current, pageSize } = this.state + const Column = [ + { + title: 'key码', + name: 'key_code', + prop: 'key_code', + type: 'normal', + width: 'auto' + }, + { + title: '归属营销计划', + width: 'auto', + type: 'normal', + prop: 'plan_title', + name: 'plan_title' + }, + + { + title: '状态', + prop: 'status', + name: 'status', + width: 'auto', + type: 'slot' + }, + { + title: '操作', + name: 'opearo', + prop: 'opearo', + type: 'slot', + width: 'auto' + }, + { + title: '发放总数', + prop: 'total', + name: 'total', + width: 'auto', + type: 'normal' + }, + { + title: '剩余总数', + prop: 'residue', + name: 'residue', + width: 'auto', + type: 'normal' + }, + { + title: '使用总数', + name: 'usage', + prop: 'usage', + type: 'normal', + width: 'auto' + }, + { + title: '失效总数', + name: 'overdue', + prop: 'overdue', + type: 'normal', + width: 'auto' + }, + { + title: '作废总数', + name: 'invalid', + prop: 'invalid', + type: 'normal', + width: 'auto' + }, + { + title: '已完结总数', + name: 'end', + prop: 'end', + type: 'normal', + width: 'auto' + }, + { + title: '更新时间', + name: 'update_time', + prop: 'update_time', + type: 'normal', + width: 'auto' + } + ] + const date = ( + + ) + return ( +
+ +
+ { + this.setState({ conditionalQuery: va }) + setTimeout(() => { + this.iptsureFn(va) + }, 500) + }} + /> +
+
+
+ {/* 批量上传操作 */} + + + + + + +
+ + {/* */} + {/* this.setState({ search: e })} + value={this.state.search} + wordSearch={this.iptsureFn.bind(this)} + icon="search" + placeholder={"请完整输入key"} + countShow={false} + height={"36px"} + width={"260px"} + onClearItem={(e) => { + this.setState({ search: "" }); + let data = { + page: 1, + limit: 10, + }; + this.getKeyCodeList(data); + }} + alignment={"left"} + /> */} +
+
+ {this.state.selectiondata.length > 0 ? ( + + 清空 + + }> + 已选择 + + {this.state.selectiondata.length} + + 发放key总数:{this.state.grantTotal},剩余key总数: + {this.state.surplusTotal},已使用总数:{this.state.usageTotal} + ,已过期总数:{this.state.outdateTotal},已作废总数: + {this.state.invalidTotal} + + ) : null} + { + this.onPageChange(e) + }} + countChange={(e) => { + this.onCountChange(e) + }} + checkChange={this.selection.bind(this)} + ComponentHandler={(com, rowData) => { + if (com == 'dates') { + return ( + + {rowData.begin_time} 至 {rowData.end_time} + + ) + } + + if (com == 'title') { + return ( + { + this.linkTo(rowData) + }}> + {rowData.title} + + ) + } + if (com == 'switch') { + return ( + { + this.onSwitchChange(e, rowData) + }}> + ) + } + if (com == 'status') { + return ( +

+ + + {rowData.status_text} + +

+ ) + } + if (com == 'opearo') { + let str = null + + if (rowData.status == 1) { + str = ( + + + 详情 + + + +
{}}> + {' '} + 更多 {' '} +
+
+ + + this.menuItemClick(e, key, rowData) + }> + 标记成已使用 + 作废 + 日志 + + +
+
+ ) + } else { + str = ( + + + 详情 + + + +
{}}> + {' '} + 更多 {' '} +
+
+ + + this.menuItemClick(e, key, rowData) + }> + + 标记成已使用 + + + 作废 + + 日志 + + +
+
+ ) + } + return str + } + }} + /> + + {this.state.audit_visible ? ( +
+
+
+ { + this.cancel(e) + }} + /> +
发送
+
+ 是否立即发送key以及解压密码? +
+
+
接收手机号
+
+ { + this.onPhoneChange(e) + }}> + {this.state.phone_list.map((item, index) => { + return ( + { + if ( + item == + this.state.phone_list[this.state.phone_radio] + ) { + this.setState({ phone_radio: -1 }) + } + }}> + {item} + + ) + })} + +
+
+
+
接收邮箱
+
+ { + this.onEmailChange(e) + }}> + {this.state.email_list.map((item, index) => { + return ( + { + if ( + item == + this.state.email_list[this.state.email_radio] + ) { + this.setState({ email_radio: -1 }) + } + }}> + {item} + + ) + })} + +
+
+
+ -1}> +
+
+ -1}> +
+ +
+ + +
+
+
+ ) : null} +
+
+ + {/* 批量上传 */} + +
+ ) + } +} diff --git a/src/pages/plan/keysList/list.less b/src/pages/plan/keysList/list.less new file mode 100644 index 00000000..afe4f962 --- /dev/null +++ b/src/pages/plan/keysList/list.less @@ -0,0 +1,7 @@ +.code-table { + border-top: 1px solid #e0e0e0; + padding-bottom: 24px; +} +.zent-btn-disabled{ + background-color: #FFFFFF !important; +} \ No newline at end of file