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 = (
+
+ + + {rowData.status_text} + +
+ ) + } + if (com == 'opearo') { + let str = null + + if (rowData.status == 1) { + str = ( + + + 详情 + +