什么玩意

# -*- coding:gb2312 -*-

from tkinter import ttk
from tkinter import *
from tkinter import messagebox
import sqlite3
import os

class JXC(object):
    def __init__(self):
        self.db_path = os.path.join(os.path.dirname(__file__), 'jxc.db')
        #print(self.db_path)
        self.conn = self.get_conn()
        self.create_table()
        self.buyIndex = 1
        self.sellIndex = 1
        '''初始顶层框架'''
        self.top = Tk()
        self.top.title('简易进销存 1.0')
        self.top.geometry('1366x768')
        #self.top.geometry('960x720')
        self.top.resizable(0, 0)

        """设置主页标签(简易进销存)"""
        self.startLabel = Label(self.top, text='简易进销存 ', font=('Arial', 16, 'bold'))
        self.startLabel.pack(fill=X, expand=0)

        """设置选项Buton """
        self.optFrm = Frame(self.top, height=10)
        self.optFrm.pack()
        self.introduceBtn = Button(self.optFrm, text='使用说明', width=10, command=self.showStartFrm)
        self.introduceBtn.grid(row=0, column=0, columnspan=15)
        self.buyBtn = Button(self.optFrm, text='添加进货', width=10, command=self.showBuyFrm)
        self.buyBtn.grid(row=0, column=15, columnspan=15)
        self.sellBtn = Button(self.optFrm, text='添加出货', width=10, command=self.showSellFrm)
        self.sellBtn.grid(row=0, column=30, columnspan=15)
        self.SearchBtn = Button(self.optFrm, text='查询页面', width=10, command=self.showSearchFrm)
        self.SearchBtn.grid(row=0, column=45, columnspan=15)

        """使用说明Frame"""
        self.startFrm = Frame(self.top)
        """添加进货Frame"""
        self.buyFrm = Frame(self.top)
        """添加进货Frame"""
        self.sellFrm = Frame(self.top)
        """查询按钮Frame"""
        self.SearchFrm = Frame(self.top)
    #--------------------------------------------------
    """显示不同页面信息"""
    def showStartFrm(self):
        self.startFrm.pack(fill='both', expand=1)
        self.buyFrm.pack_forget()
        self.sellFrm.pack_forget()
        self.SearchFrm.pack_forget()
    def showBuyFrm(self):
        self.startFrm.pack_forget()
        self.buyFrm.pack(fill='both', expand=1)
        self.sellFrm.pack_forget()
        self.SearchFrm.pack_forget()
    def showSellFrm(self):
        self.startFrm.pack_forget()
        self.buyFrm.pack_forget()
        self.sellFrm.pack(fill='both', expand=1)
        self.SearchFrm.pack_forget()
    def showSearchFrm(self):
        self.startFrm.pack_forget()
        self.buyFrm.pack_forget()
        self.sellFrm.pack_forget()
        self.SearchFrm.pack(fill='both', expand=1)

    #-----------------------------------------------------
    """设置使用说明页面信息及功能"""
    def setStartSubFrm(self):
        illustrationText = """
使用说明


添加进货

在添加进货页面操作,上方填写相应的进货信息(不需要填写的内容可以为空,物品名称不能为空),下方表格显示新添加的购货信息


添加销售

在添出货货页面操作,上方填写相应的出货信息(不需要填写的内容可以为空,物品名称不能为空),下方表格显示新添加的出货信息

查询页面

可以输入相应的查询条件(不需要的条件可以为空),输入条件后点击查询流水进行查询
不输入任何查询条件,点击查询流水可以查询历来的流水信息
点击查询库存按钮可以查询库存信息
点击清除查找条件可以清除输入的查找条件


        """
        self.illustrLabel = Label(self.startFrm, text=illustrationText, font=('Arial', 14, 'bold'))
        self.illustrLabel.pack()

    #-----------------------------------------------------
    """设置添加进货页面信息及功能"""
    def setBuySubFrm(self):
        option = [ '物品名称', '物品编号','订单日期', '进货价格', '进货数量', '进货厂商']
        labelText = ['添加新的进货订货单', '已添加的进货订单']
        self.subBuyFrmUp = Frame(self.buyFrm)
        self.subBuyFrmUp.pack(fill=X, expand=0)
        self.subBuyFrmDown = Frame(self.buyFrm)
        self.subBuyFrmDown.pack(fill=X, expand=0)
        self.addBuyInfoLabel = Label(self.subBuyFrmUp, text=labelText[0], font=('Arial', 14, 'bold'), bg='gray')
        self.addBuyInfoLabel.pack(fill=X, expand=0)
        self.subBuyFrmUpOperate = Frame(self.subBuyFrmUp)
        self.subBuyFrmUpOperate.pack()
        self.showBuyInfoLabel = Label(self.subBuyFrmDown, text=labelText[1], font=('Arial', 14, 'bold'), bg='gray')
        self.showBuyInfoLabel.pack(fill=X, expand=0)
        self.subBuyFrmDownShow = Frame(self.subBuyFrmDown)
        self.subBuyFrmDownShow.pack(fill=X, expand=0)
        """添加进货页面的标签"""
        self.dateBuyLabel = Label(self.subBuyFrmUpOperate, text=option[0], font=('Arial', 12), width=15)
        self.dateBuyLabel.grid(row=0, column=0, columnspan=15)
        self.itemBuyLabel = Label(self.subBuyFrmUpOperate, text=option[1], font=('Arial', 12), width=15)
        self.itemBuyLabel.grid(row=1, column=0, columnspan=15)
        self.identBuyLabel = Label(self.subBuyFrmUpOperate, text=option[2], font=('Arial', 12), width=15)
        self.identBuyLabel.grid(row=2, column=0, columnspan=15)
        self.priBuyLabel = Label(self.subBuyFrmUpOperate, text=option[3], font=('Arial', 12), width=15)
        self.priBuyLabel.grid(row=3, column=0, columnspan=15)
        self.numBuyLabel = Label(self.subBuyFrmUpOperate, text=option[4], font=('Arial', 12), width=15)
        self.numBuyLabel.grid(row=4, column=0, columnspan=15)
        self.whereBuyLabel = Label(self.subBuyFrmUpOperate, text=option[5], font=('Arial', 12), width=15)
        self.whereBuyLabel.grid(row=5, column=0, columnspan=15)
        """添加进货页面的输入框"""
        self.dateBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[0], font=('Arial', 12), width=25)
        self.dateBuyEntry.grid(row=0, column=15, columnspan=15)
        self.itemBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[1], font=('Arial', 12), width=25)
        self.itemBuyEntry.grid(row=1, column=15, columnspan=15)
        self.identBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[2], font=('Arial', 12), width=25)
        self.identBuyEntry.grid(row=2, column=15, columnspan=15)
        self.priBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[3], font=('Arial', 12), width=25)
        self.priBuyEntry.grid(row=3, column=15, columnspan=15)
        self.numBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[4], font=('Arial', 12), width=25)
        self.numBuyEntry.grid(row=4, column=15, columnspan=15)
        self.whereBuyEntry = Entry(self.subBuyFrmUpOperate, text=option[5], font=('Arial', 12), width=25)
        self.whereBuyEntry.grid(row=5, column=15, columnspan=15)
        """添加进货页面的清楚和保存按钮"""
        self.clcBuyBtn = Button(self.subBuyFrmUpOperate, text='清除', activebackground='gray', command=self.clearBuyEntry)
        self.clcBuyBtn.grid(row=7, column=15, columnspan=5)
        self.saveBuyBtn = Button(self.subBuyFrmUpOperate, text='保存', activebackground='gray', command=self.showBuyInfo)
        self.saveBuyBtn.grid(row=7, column=26, columnspan=5)
        """显示新添加的内容"""
        self.treeBuy = ttk.Treeview(self.subBuyFrmDownShow, height=20)
        self.treeBuy['column'] = tuple(option)
        self.treeBuy.heading("#0", text='订单序号')
        self.treeBuy.column("#0", minwidth=0, width=140)
        for item in option:
            self.treeBuy.column(item, minwidth=0, width=140)
            self.treeBuy.heading(item, text=item)
        self.treeBuy.pack(fill=X, expand=0)
    def getBuyInput(self):
        newInput = []
        newInput.append(self.dateBuyEntry.get())
        newInput.append(self.itemBuyEntry.get())
        newInput.append(self.identBuyEntry.get())
        newInput.append(self.priBuyEntry.get())
        newInput.append(self.numBuyEntry.get())
        newInput.append(self.whereBuyEntry.get())
        for i in range(len(newInput)):
            if newInput[i] == '':
                newInput[i] = None
        return tuple(newInput)
    def clearBuyEntry(self):
        self.itemBuyEntry.delete(0, END)
        self.identBuyEntry.delete(0, END)
        self.priBuyEntry.delete(0, END)
        self.numBuyEntry.delete(0, END)
        self.whereBuyEntry.delete(0, END)
        self.dateBuyEntry.delete(0, END)
    def showBuyInfo(self):
        val = messagebox.askyesno('警告', '保存该订单信息?')
        if val:
            messagebox.showinfo('提示', '订单信息保存成功!')
            order = self.getBuyInput()
            self.clearBuyEntry()
            self.updateTree(self.treeBuy, order)
            self.save_data(order, True)

    #-----------------------------------------------------
    """设置添加出货页面信息及功能"""
    def setSellSubFrm(self):
        option = ['物品名称', '物品编号','订单日期',  '销售价格', '销售数量', '客户信息']
        labelText = ['添加新的销售订货单', '已添加的销售订单']
        self.subSellFrmUp = Frame(self.sellFrm)
        self.subSellFrmUp.pack(fill=X, expand=0)
        self.subSellFrmDown = Frame(self.sellFrm)
        self.subSellFrmDown.pack(fill=X, expand=0)
        self.addSellInfoLabel = Label(self.subSellFrmUp, text=labelText[0], font=('Arial', 14, 'bold'), bg='gray')
        self.addSellInfoLabel.pack(fill=X, expand=0)
        self.subSellFrmUpOperate = Frame(self.subSellFrmUp)
        self.subSellFrmUpOperate.pack()
        self.showSellInfoLabel = Label(self.subSellFrmDown, text=labelText[1], font=('Arial', 14, 'bold'), bg='gray')
        self.showSellInfoLabel.pack(fill=X, expand=0)
        self.subSellFrmDownShow = Frame(self.subSellFrmDown)
        self.subSellFrmDownShow.pack(fill=X, expand=0)
        """添加出货页面的标签"""
        self.dateSellLabel = Label(self.subSellFrmUpOperate, text=option[0], font=('Arial', 12), width=15)
        self.dateSellLabel.grid(row=0, column=0, columnspan=15)
        self.itemSellLabel = Label(self.subSellFrmUpOperate, text=option[1], font=('Arial', 12), width=15)
        self.itemSellLabel.grid(row=1, column=0, columnspan=15)
        self.identSellLabel = Label(self.subSellFrmUpOperate, text=option[2], font=('Arial', 12), width=15)
        self.identSellLabel.grid(row=2, column=0, columnspan=15)
        self.priSellLabel = Label(self.subSellFrmUpOperate, text=option[3], font=('Arial', 12), width=15)
        self.priSellLabel.grid(row=3, column=0, columnspan=15)
        self.numSellLabel = Label(self.subSellFrmUpOperate, text=option[4], font=('Arial', 12), width=15)
        self.numSellLabel.grid(row=4, column=0, columnspan=15)
        self.whereSellLabel = Label(self.subSellFrmUpOperate, text=option[5], font=('Arial', 12), width=15)
        self.whereSellLabel.grid(row=5, column=0, columnspan=15)
        """添加出货页面的输入框"""
        self.dateSellEntry = Entry(self.subSellFrmUpOperate, text=option[0], font=('Arial', 12), width=25)
        self.dateSellEntry.grid(row=0, column=15, columnspan=15)
        self.itemSellEntry = Entry(self.subSellFrmUpOperate, text=option[1], font=('Arial', 12), width=25)
        self.itemSellEntry.grid(row=1, column=15, columnspan=15)
        self.identSellEntry = Entry(self.subSellFrmUpOperate, text=option[2], font=('Arial', 12), width=25)
        self.identSellEntry.grid(row=2, column=15, columnspan=15)
        self.priSellEntry = Entry(self.subSellFrmUpOperate, text=option[3], font=('Arial', 12), width=25)
        self.priSellEntry.grid(row=3, column=15, columnspan=15)
        self.numSellEntry = Entry(self.subSellFrmUpOperate, text=option[4], font=('Arial', 12), width=25)
        self.numSellEntry.grid(row=4, column=15, columnspan=15)
        self.whereSellEntry = Entry(self.subSellFrmUpOperate, text=option[5], font=('Arial', 12), width=25)
        self.whereSellEntry.grid(row=5, column=15, columnspan=15)
        """添加出货页面的清楚和保存按钮"""
        self.clcSellBtn = Button(self.subSellFrmUpOperate, text='清除', activebackground='gray',
                                 command=self.clearSellEntry)
        self.clcSellBtn.grid(row=7, column=15, columnspan=5)
        self.saveSellBtn = Button(self.subSellFrmUpOperate, text='保存', activebackground='gray',
                                  command=self.showSellInfo)
        self.saveSellBtn.grid(row=7, column=26, columnspan=5)
        """显示出货页面新添加的内容"""
        self.treeSell = ttk.Treeview(self.subSellFrmDownShow, height=20)
        self.treeSell['column'] = tuple(option)
        self.treeSell.heading("#0", text='订单序号')
        self.treeSell.column("#0", minwidth=0, width=140)
        for item in option:
            self.treeSell.column(item, minwidth=0, width=140)
            self.treeSell.heading(item, text=item)
        self.treeSell.pack(fill=X, expand=0)
    def getSellInput(self):
        newInput = []
        newInput.append(self.dateSellEntry.get())
        newInput.append(self.itemSellEntry.get())
        newInput.append(self.identSellEntry.get())
        newInput.append(self.priSellEntry.get())
        newInput.append(self.numSellEntry.get())
        newInput.append(self.whereSellEntry.get())
        for i in range(len(newInput)):
            if newInput[i] == '':
                newInput[i] = None
        return tuple(newInput)
    def clearSellEntry(self):
        self.itemSellEntry.delete(0, END)
        self.identSellEntry.delete(0, END)
        self.priSellEntry.delete(0, END)
        self.numSellEntry.delete(0, END)
        self.whereSellEntry.delete(0, END)
        self.dateSellEntry.delete(0, END)
    def showSellInfo(self):
        val = messagebox.askyesno('警告', '保存该订单信息?')
        if val:
            messagebox.showinfo('提示', '订单信息保存成功!')
            order = self.getSellInput()
            self.clearSellEntry()
            self.updateTree(self.treeSell, order)
            self.save_data(order,False)
    #-----------------------------------------------------
    """设置查询页面信息及功能"""
    def setSearchFrm(self):
        self.SearchUpFrm = Frame(self.SearchFrm)
        self.SearchUpFrm.pack(fill=X, expand=0)
        self.SearchDownFrm = Frame(self.SearchFrm)
        self.SearchDownFrm.pack(fill=X, expand=0)
        #-----------------------------------------------------------------------
        self.SearchUpInfoLabel1 = Label(self.SearchUpFrm, text='物品名称',font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel1.grid(row=0, column=0, columnspan=2)
        self.SearchUpEntry1 = Entry(self.SearchUpFrm)
        self.SearchUpEntry1.grid(row=0, column=2, columnspan=5)

        self.SearchUpInfoLabel2 = Label(self.SearchUpFrm, text='物品编号',font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel2.grid(row=0, column=8, columnspan=2)
        self.SearchUpEntry2 = Entry(self.SearchUpFrm)
        self.SearchUpEntry2.grid(row=0, column=10, columnspan=5)

        self.SearchUpInfoLabel3 = Label(self.SearchUpFrm, text='查询日期',font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel3.grid(row=0, column=16, columnspan=2)
        self.SearchUpEntry31 = Entry(self.SearchUpFrm)
        self.SearchUpEntry31.grid(row=0, column=18, columnspan=5)
        self.SearchUpInfoLabel3 = Label(self.SearchUpFrm, text='---', font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel3.grid(row=0, column=23, columnspan=1)
        self.SearchUpEntry32 = Entry(self.SearchUpFrm)
        self.SearchUpEntry32.grid(row=0, column=24, columnspan=5)

        self.SearchUpInfoLabel4 = Label(self.SearchUpFrm, text='进货厂商',font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel4.grid(row=0, column=32, columnspan=2)
        self.SearchUpEntry4 = Entry(self.SearchUpFrm)
        self.SearchUpEntry4.grid(row=0, column=34, columnspan=5)

        self.SearchUpInfoLabel5 = Label(self.SearchUpFrm, text='出货厂商',font=('Arial', 14, 'bold'))
        self.SearchUpInfoLabel5.grid(row=0, column=40, columnspan=2)
        self.SearchUpEntry5 = Entry(self.SearchUpFrm)
        self.SearchUpEntry5.grid(row=0, column=42, columnspan=5)

        self.SearchUpInfoBtn1 = Button(self.SearchUpFrm, text='查询流水', activebackground='gray', command=self.search_statement_fun)
        self.SearchUpInfoBtn1.grid(row=2, column=5, columnspan=5)
        self.SearchUpInfoBtn1 = Button(self.SearchUpFrm, text='清除查找条件', activebackground='gray', command=self.clearSearchBtn)
        self.SearchUpInfoBtn1.grid(row=2, column=17, columnspan=5)
        self.SearchUpInfoBtn2 = Button(self.SearchUpFrm, text='查询库存', activebackground='gray', command=self.search_stockList_fun)
        self.SearchUpInfoBtn2.grid(row=2, column=30, columnspan=5)

        self.treeSearchStatement = ttk.Treeview(self.SearchDownFrm, height=30)
        optionStatement = ['物品名称', '物品编号', '日期','进货价格', '进货数量', '进货厂商', '销售价格', '销售数量', '客户信息']
        self.treeSearchStatement['column'] = optionStatement
        self.treeSearchStatement.heading("#0", text='序号')
        self.treeSearchStatement.column("#0", minwidth=0, width=96)
        for item in optionStatement:
            self.treeSearchStatement.heading(item, text=item)
            self.treeSearchStatement.column(item, minwidth=0, width=96)

        self.treeSearchStock = ttk.Treeview(self.SearchDownFrm, height=30)
        optionStock = ['物品名称', '物品编号', '库存数量']
        self.treeSearchStock['column'] = optionStock
        self.treeSearchStock.heading("#0", text='序号')
        self.treeSearchStock.column("#0", minwidth=0, width=96)
        for item in optionStock:
            self.treeSearchStock.heading(item, text=item)
            self.treeSearchStock.column(item, minwidth=0, width=96)
    def getSearchInput(self):
        newInput = []
        newInput.append(self.SearchUpEntry1.get())
        newInput.append(self.SearchUpEntry2.get())
        newInput.append(self.SearchUpEntry31.get())
        newInput.append(self.SearchUpEntry32.get())
        newInput.append(self.SearchUpEntry4.get())
        newInput.append(self.SearchUpEntry5.get())
        for i in range(len(newInput)):
            if newInput[i] == '':
                newInput[i] = None
        return tuple(newInput)
    def search_statement_fun(self):
        itemList = self.getSearchInput()
        searchList = []
        if itemList.count(None)==len(itemList):
            sql = "SELECT * FROM statementList"
        else:
            sql = "SELECT * FROM statementList WHERE "
            if None != itemList[0]:
                sql += '物品名称=? and '
                searchList.append(itemList[0])
            if None != itemList[1]:
                sql += '物品编号=? and '
                searchList.append(itemList[1])
            if None != itemList[2]:
                sql += '日期>=? and '
                searchList.append(itemList[2])
            if None != itemList[3]:
                sql += '日期<=? and '
                searchList.append(itemList[3])
            if None != itemList[4]:
                sql += '进货厂商=? and '
                searchList.append(itemList[4])
            if None != itemList[5]:
                sql += '出货厂商=? and '
                searchList.append(itemList[5])
            sql = sql+'id>=1 '
            print(sql)
        cu = self.get_cursor()
        #print(searchList)
        cu.execute(sql,tuple(searchList))
        results = cu.fetchall()
        self.treeSearchStatement.pack(fill=X, expand=0)
        self.treeSearchStock.pack_forget()
        items = self.treeSearchStatement.get_children()
        [self.treeSearchStatement.delete(item) for item in items]
        index = 0
        print('--'*20)
        for row in results:
            index += 1
            print(row)
            self.treeSearchStatement.insert('', index,text=index , values=row[1:])
        cu.close()
    def search_stockList_fun(self):
        sql = "SELECT * FROM stockList"
        cu = self.get_cursor()
        cu.execute(sql)
        results = cu.fetchall()
        self.treeSearchStatement.pack_forget()
        self.treeSearchStock.pack(fill=X, expand=0)
        items = self.treeSearchStock.get_children()
        [self.treeSearchStock.delete(item) for item in items]
        index = 0
        for row in results:
            print(row)
            index += 1
            self.treeSearchStock.insert('', index, text=index, values=row)
        cu.close()
    def clearSearchBtn(self):
        self.SearchUpEntry1.delete(0, END)
        self.SearchUpEntry2.delete(0, END)
        self.SearchUpEntry31.delete(0, END)
        self.SearchUpEntry32.delete(0, END)
        self.SearchUpEntry4.delete(0, END)
        self.SearchUpEntry5.delete(0, END)

    def updateTree(self,root,order):
        if root == self.treeBuy:
            root.insert('',self.buyIndex,text=self.buyIndex,values=order)
            self.buyIndex += 1
        elif root == self.treeSell:
            root.insert('',self.sellIndex,text=self.sellIndex,values=order)
            self.buyIndex += 1

    def get_conn(self):
        return sqlite3.connect(self.db_path)
    def get_cursor(self):
        if self.conn is not None:
            return self.conn.cursor()
    def create_table(self):
        cu = self.get_cursor()
        statementSql = """CREATE TABLE IF NOT EXISTS statementList (
            'id' integer PRIMARY KEY AUTOINCREMENT,
            '物品名称' varchar(40) NOT NULL,
            '物品编号' varchar(40) ,
            '日期' varchar(40) ,
            '进货价格' int(40) ,
            '进货数量' int(40) ,
            '进货厂商' varchar(40) ,
            '出货价格' int(40) ,
            '出货数量' int(40) ,
            '出货厂商' varchar(40)
            )"""
        cu.execute(statementSql)
        stockSql = """CREATE TABLE IF NOT EXISTS stockList (
            '物品名称' varchar(40) PRIMARY KEY NOT NULL UNIQUE,
            '物品编号' varchar(40) ,
            '库存数量' int(40) default 0
            )"""
        cu.execute(stockSql)
        cu.close()
        self.conn.commit()
    def save_data(self,data,INorOutFlag):
        cu = self.get_cursor()
        if data[0] != None:
            if INorOutFlag:
                sql = """INSERT INTO statementList 
                    (物品名称,物品编号,日期,进货价格,进货数量,进货厂商)
                    VALUES(?,?,?,?,?,?)"""
            else:
                sql = """INSERT INTO statementList 
                    (物品名称,物品编号,日期,出货价格,出货数量,出货厂商)
                    VALUES(?,?,?,?,?,?)"""
            cu.execute(sql, data)
            self.update_stockList(cu, data,INorOutFlag)
            cu.close()
            self.conn.commit()
    def update_stockList(self, cu, data,InOrOutFlag):
        if data[0] != None:
            try:
                insertSql = "INSERT INTO stockList VALUES (?,?,?)"
                dataUsed = (data[0], data[1], data[4])
                cu.execute(insertSql, dataUsed)
            except sqlite3.IntegrityError:
                if InOrOutFlag:
                    updateSql = "UPDATE stockList SET 库存数量=库存数量+? WHERE 物品名称=?"
                else:
                    updateSql = "UPDATE stockList SET 库存数量=库存数量-? WHERE 物品名称=?"
                dataUsed = (data[4], data[0])
                cu.execute(updateSql, dataUsed)

    def start(self):
        self.setSearchFrm()
        self.setStartSubFrm()
        self.setBuySubFrm()
        self.setSellSubFrm()
        self.showStartFrm()
        self.top.mainloop()

def main():
    jxc = JXC()
    jxc.start()


if __name__ == '__main__':
    main()

 

posted @ 2018-03-16 00:07  v_keys  阅读(358)  评论(0编辑  收藏  举报