|
|
|
|
import sys
|
|
|
|
|
from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox
|
|
|
|
|
import pymysql
|
|
|
|
|
from PyQt5.Qt import *
|
|
|
|
|
from PyQt5.QtCore import Qt
|
|
|
|
|
localConfig = {
|
|
|
|
|
'host': 'localhost',
|
|
|
|
|
'port': 3306,
|
|
|
|
|
'user': 'root',
|
|
|
|
|
'passwd': '92183ttnn',
|
|
|
|
|
'db': 'dbdesign',
|
|
|
|
|
'charset': 'utf8',
|
|
|
|
|
'cursorclass' : pymysql.cursors.DictCursor # 数据库操纵指针
|
|
|
|
|
}#数据库配置连接
|
|
|
|
|
import xlwt
|
|
|
|
|
import matplotlib
|
|
|
|
|
matplotlib.use("Qt5Agg") # 声明使用QT5
|
|
|
|
|
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
|
|
|
|
from matplotlib.figure import Figure
|
|
|
|
|
import datetime
|
|
|
|
|
import os
|
|
|
|
|
sys.path.append('D:\mysql\bin')
|
|
|
|
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
|
|
|
import time
|
|
|
|
|
from ui.ModifyPwd import Ui_MpwdWindow
|
|
|
|
|
from ui.report import Ui_ReportWindow
|
|
|
|
|
from PyQt5.QtGui import QPixmap
|
|
|
|
|
from PyQt5.QtWidgets import QMainWindow,QMessageBox,QTableWidgetItem,QVBoxLayout, QLabel,QPushButton
|
|
|
|
|
from ui.staff import Ui_StaffWindow
|
|
|
|
|
from ui.room import Ui_RoomWindow
|
|
|
|
|
# from dao.dbOpRoom import Room
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
localConfig = {
|
|
|
|
|
'host': 'localhost',
|
|
|
|
|
'port': 3306,
|
|
|
|
|
'user': 'root',
|
|
|
|
|
'passwd': '92183ttnn',
|
|
|
|
|
'db': 'dbdesign',
|
|
|
|
|
'charset': 'utf8',
|
|
|
|
|
'cursorclass' : pymysql.cursors.DictCursor # 数据库操纵指针
|
|
|
|
|
}#数据库配置连接
|
|
|
|
|
def _initStaff():
|
|
|
|
|
global staff
|
|
|
|
|
staff = Staff()
|
|
|
|
|
return staff
|
|
|
|
|
def get_staff():#员工账户
|
|
|
|
|
global staff
|
|
|
|
|
return staff
|
|
|
|
|
|
|
|
|
|
class Staff:
|
|
|
|
|
"""
|
|
|
|
|
员工操作类
|
|
|
|
|
"""
|
|
|
|
|
def __init__(self, config=localConfig):
|
|
|
|
|
self.db = pymysql.connect(host=config['host'],port=config['port'],user=config['user'],
|
|
|
|
|
passwd=config['passwd'],db=config['db'],charset=config['charset'],
|
|
|
|
|
cursorclass=config['cursorclass'])
|
|
|
|
|
self.cursor = self.db.cursor()
|
|
|
|
|
self.cursor.execute("SELECT VERSION()")
|
|
|
|
|
data = self.cursor.fetchone()
|
|
|
|
|
print("Database version : %s " % data['VERSION()'])
|
|
|
|
|
self.username = None
|
|
|
|
|
self.password = None
|
|
|
|
|
self.srole = None
|
|
|
|
|
self.sid = None
|
|
|
|
|
self.sname = None
|
|
|
|
|
self.ssex = None
|
|
|
|
|
self.stime = None
|
|
|
|
|
self.sidcard = None
|
|
|
|
|
self.sphone = None
|
|
|
|
|
|
|
|
|
|
def userLogin(self, username, password):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("select * from staff")
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
for row in data:
|
|
|
|
|
if row['susername'] == username and row['spassword'] == password:
|
|
|
|
|
self.username = username
|
|
|
|
|
self.password = password
|
|
|
|
|
self.sid = row['sid']
|
|
|
|
|
self.sname = row['sname']
|
|
|
|
|
self.ssex = row['ssex']
|
|
|
|
|
self.stime = row['stime']
|
|
|
|
|
self.srole = row['srole']
|
|
|
|
|
self.sidcard = row['sidcard']
|
|
|
|
|
self.sphone = row['sphone']
|
|
|
|
|
return row['srole']
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def modifyPasswd(self, sid, newPasswd, oldPasswd):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("select * from staff where sid=%s ", (sid))
|
|
|
|
|
data = self.cursor.fetchall()[0]
|
|
|
|
|
if data['spassword'] == oldPasswd:
|
|
|
|
|
self.cursor.execute("update staff set spassword=%s where sid=%s ",(newPasswd, sid))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
self.password = newPasswd
|
|
|
|
|
print("ok")
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
print("no")
|
|
|
|
|
return False
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def addStaff(self,sid,sname,ssex,stime,susername,spassword,srole,sidcard,sphone):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into staff values(%s,%s,%s,%s,%s,%s,%s,%s,%s)",(sid,sname,ssex,stime,susername,spassword,srole,sidcard,sphone))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "该员工已存在!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def showAllStaff(self,sname):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("select * from staff where sname like %s",(sname))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
return data
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def deleteStaff(self,sid,sname,sidcard):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("delete from staff where sid=%s and sname=%s and sidcard=%s",(sid,sname,sidcard))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "没有相关员工信息!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def delStaff(self,sid):
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("delete from staff where sid=%s",(sid))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def modifyStaff(self, row, column, value):
|
|
|
|
|
|
|
|
|
|
SQL_COLUMN = ['sid','sname','ssex','stime','susername','spassword','srole','sidcard','sphone']
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("select * from staff")
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
rid_selected = data[row]['rid']
|
|
|
|
|
sql = "update room set " + SQL_COLUMN[column] + "='" + value + "'where rid='" + rid_selected +"'"
|
|
|
|
|
self.cursor.execute(sql)
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Room:
|
|
|
|
|
"""客房信息操作类"""
|
|
|
|
|
def __init__(self,config=localConfig):
|
|
|
|
|
self.db = pymysql.connect(host=config['host'],port=config['port'],user=config['user'],
|
|
|
|
|
passwd=config['passwd'],db=config['db'],charset=config['charset'],
|
|
|
|
|
cursorclass=config['cursorclass'])
|
|
|
|
|
self.cursor = self.db.cursor()
|
|
|
|
|
self.cursor.execute("SELECT VERSION()")
|
|
|
|
|
data = self.cursor.fetchone()
|
|
|
|
|
print("Database version : %s " % data['VERSION()'])
|
|
|
|
|
self.staff = get_staff()
|
|
|
|
|
|
|
|
|
|
def showAllRoom(self):
|
|
|
|
|
self.cursor.execute("select * from room")
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
def showRoom(self,rtype,rstate,rstorey,rstarttime,rendtime,price_bottom,price_up):
|
|
|
|
|
"""根据条件检索房间"""
|
|
|
|
|
print(rstarttime, rendtime)
|
|
|
|
|
if rstate == 0:
|
|
|
|
|
self.cursor.execute("select * from room where rtype like %s and rstorey like %s and rprice between %s and %s",
|
|
|
|
|
(rtype,rstorey,int(price_bottom),int(price_up)))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
return data1
|
|
|
|
|
elif rstate == 1:
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select rid from room where rtype like %s and rstorey like %s and rprice between %s and %s",
|
|
|
|
|
(rtype, rstorey, int(price_bottom), int(price_up)))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
list_data = []
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
crid = data[i]['rid']
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime))
|
|
|
|
|
data2 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime))
|
|
|
|
|
data3 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime))
|
|
|
|
|
data4 = self.cursor.fetchall()
|
|
|
|
|
if data1 == () and data2 == () and data3 == () and data4 == ():
|
|
|
|
|
list_data.append(crid)
|
|
|
|
|
ret = []
|
|
|
|
|
for i in range(len(list_data)):
|
|
|
|
|
rid_ret = list_data[i]
|
|
|
|
|
self.cursor.execute("select * from room where rid=%s",(rid_ret))
|
|
|
|
|
ret = ret + self.cursor.fetchall()
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
def addRoom(self,rid,rtype,rstorey,rprice,rdesc,rpic):
|
|
|
|
|
"""增加房间"""
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into room values(%s,%s,%s,%s,%s,%s)",(rid,rtype,rstorey,rprice,rdesc,rpic))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "房间号已存在!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def delRoom(self,rid):
|
|
|
|
|
"""表格上直接删除"""
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("delete from room where rid=%s",(rid))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def modifyRoom(self, row, column, value):
|
|
|
|
|
"""表格上直接修改"""
|
|
|
|
|
# 字典方法得到要修改的列
|
|
|
|
|
SQL_COLUMN = ['rid','rtype','rstorey','rprice','rdesc']
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("select * from room")
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
rid_selected = data[row]['rid']
|
|
|
|
|
sql = "update room set " + SQL_COLUMN[column] + "='" + value + "'where rid='" + rid_selected +"'"
|
|
|
|
|
self.cursor.execute(sql)
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def singleCheckinDB(self,cname,cid,cphone,cage,csex,crid,cendtime,remark):
|
|
|
|
|
"""个人入住"""
|
|
|
|
|
# 查询预定表和入住表,判断该房间是否能租出去
|
|
|
|
|
starttime = datetime.date.today()
|
|
|
|
|
self.cursor.execute("select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
,(crid,starttime,starttime,cendtime,cendtime,starttime,cendtime,starttime,cendtime))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime))
|
|
|
|
|
data2 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime))
|
|
|
|
|
data3 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime))
|
|
|
|
|
data4 = self.cursor.fetchall()
|
|
|
|
|
if data1 != () or data2 != () or data3 != () or data4 != ():
|
|
|
|
|
QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
self.cursor.execute("select * from client where cid=%s",(cid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
self.cursor.execute("insert into client(cname,cid,cphone,cage,csex,register_sid,accomodation_times) "
|
|
|
|
|
"values(%s,%s,%s,%s,%s,%s,%s)",(cname,cid,cphone,cage,csex,self.staff.sid,0))
|
|
|
|
|
self.cursor.execute("select * from room where rid=%s",(crid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有对应房间号!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
perPrice = data[0]['rprice']
|
|
|
|
|
totalPrice = int(perPrice) * int((cendtime-starttime).days)
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into checkin_client values(%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(crid,cid,starttime,cendtime,totalPrice,self.staff.sid,remark))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "相关客户已入住,请勿重复插入", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def teamCheckinDB(self,tname,tid,tphone,ttrid,tendtime,tremark):
|
|
|
|
|
"""团体入住"""
|
|
|
|
|
tstarttime = datetime.date.today()
|
|
|
|
|
for trid in re.split(',|,| ', ttrid):
|
|
|
|
|
print(trid)
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<=%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
print(data1)
|
|
|
|
|
self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and ((A.end_time>%s and A.start_time<%s) "
|
|
|
|
|
"or (A.end_time>%s and A.start_time<%s) or (A.start_time<=%s and A.end_time>=%s) or (A.start_time>=%s and A.end_time<=%s))"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data2 = self.cursor.fetchall()
|
|
|
|
|
print(data2)
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data3 = self.cursor.fetchall()
|
|
|
|
|
print(data3)
|
|
|
|
|
self.cursor.execute("select * from booking_team as A where (A.rid=%s) and ((A.end_time>%s and A.start_time<%s) "
|
|
|
|
|
"or (A.end_time>%s and A.start_time<%s) or (A.start_time<=%s and A.end_time>=%s) or (A.start_time>=%s and A.end_time<=%s))"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data4 = self.cursor.fetchall()
|
|
|
|
|
print(data4)
|
|
|
|
|
if data1 != () or data2 != () or data3 != () or data4 != ():
|
|
|
|
|
QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
try:
|
|
|
|
|
for i in re.split(',|,| ', ttrid):
|
|
|
|
|
self.cursor.execute("select * from team where tid=%s", (tid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
self.cursor.execute("insert into team(tname,tid,tphone,check_in_sid,accomodation_times) values(%s,%s,%s,%s,%s)",
|
|
|
|
|
(tname, tid, tphone, self.staff.sid, 0))
|
|
|
|
|
|
|
|
|
|
self.cursor.execute("select * from room where rid=%s",(i))
|
|
|
|
|
perPrice = self.cursor.fetchall()[0]['rprice']
|
|
|
|
|
starttime = datetime.date.today()
|
|
|
|
|
totalPrice = int(perPrice) * int((tendtime - starttime).days)
|
|
|
|
|
self.cursor.execute("insert into checkin_team values(%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(i, tid, starttime, tendtime, totalPrice, self.staff.sid, tremark))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def reserveToCheckinC(self,cid,rid):
|
|
|
|
|
"""个人预约订单入住"""
|
|
|
|
|
# 先查找预约表
|
|
|
|
|
starttime = datetime.date.today()
|
|
|
|
|
self.cursor.execute("select * from booking_client where cid=%s and rid=%s and start_time=%s",(cid,rid,starttime))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有对应预约或者预约入住时间未到!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
# 再从预约表中获取相关信息
|
|
|
|
|
endtime = data[0]['end_time']
|
|
|
|
|
remark = data[0]['remark']
|
|
|
|
|
# 下面计算房价
|
|
|
|
|
self.cursor.execute("select * from room where rid=%s",(rid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有对应房间号!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
perPrice = data[0]['rprice']
|
|
|
|
|
totalPrice = int(perPrice) * int((endtime-starttime).days)
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into checkin_client values(%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(rid,cid,starttime,endtime,totalPrice,self.staff.sid,remark))
|
|
|
|
|
self.cursor.execute("delete from booking_client where cid=%s and rid=%s and start_time=%s",(cid,rid,starttime))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def reserveToCheckinT(self,tid,rrid):
|
|
|
|
|
"""团队预定入住"""
|
|
|
|
|
starttime = datetime.date.today()
|
|
|
|
|
for rid in re.split(',|,| ', rrid):
|
|
|
|
|
print(rid)
|
|
|
|
|
self.cursor.execute("select * from booking_team where tid=%s and rid=%s and start_time=%s",
|
|
|
|
|
(tid, rid, starttime))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
print(data)
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "%s房间没有对应预约或者预约入住时间未到!"%rid, QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
# 再从预约表中获取相关信息
|
|
|
|
|
endtime = data[0]['end_time']
|
|
|
|
|
remark = data[0]['remark']
|
|
|
|
|
# 下面计算房价
|
|
|
|
|
self.cursor.execute("select * from room where rid=%s", (rid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有%s房间号!"%rid, QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
perPrice = data[0]['rprice']
|
|
|
|
|
totalPrice = int(perPrice) * int((endtime - starttime).days)
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into checkin_team values(%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(rid, tid, starttime, endtime, totalPrice, self.staff.sid, remark))
|
|
|
|
|
self.cursor.execute("delete from booking_team where tid=%s and rid=%s and start_time=%s",
|
|
|
|
|
(tid, rid, starttime))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def reserveCDB(self,cname,cid,cphone,cage,csex,crid,cstarttime,cendtime,cremark):
|
|
|
|
|
"""个人预约"""
|
|
|
|
|
starttime = datetime.date.today()
|
|
|
|
|
self.cursor.execute("select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime))
|
|
|
|
|
data2 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime))
|
|
|
|
|
data3 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime))
|
|
|
|
|
data4 = self.cursor.fetchall()
|
|
|
|
|
if data1 != () or data2 != () or data3 != () or data4 != ():
|
|
|
|
|
QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
self.cursor.execute("select * from client where cid=%s",(cid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"insert into client(cname,cid,cphone,cage,csex,register_sid,accomodation_times) values(%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(cname, cid, cphone, cage, csex, self.staff.sid, 0))
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into booking_client(cid,rid,start_time,end_time,remark) values(%s,%s,%s,%s,%s)",
|
|
|
|
|
(cid,crid,cstarttime,cendtime,cremark))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "相关预约信息已存在!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def reserveTDB(self,tname,tid,tphone,ttrid,tstarttime,tendtime,tremark):
|
|
|
|
|
"""团体预约"""
|
|
|
|
|
for trid in re.split(',|,| ', ttrid):
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data1 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data2 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data3 = self.cursor.fetchall()
|
|
|
|
|
self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s "
|
|
|
|
|
"or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)"
|
|
|
|
|
, (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime))
|
|
|
|
|
data4 = self.cursor.fetchall()
|
|
|
|
|
if data1 != () or data2 != () or data3 != () or data4 != ():
|
|
|
|
|
QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
self.cursor.execute("select * from team where tid=%s", (tid))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"insert into team(tname,tid,tphone,check_in_sid,accomodation_times) values(%s,%s,%s,%s,%s)",
|
|
|
|
|
(tname, tid, tphone, self.staff.sid, 0))
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("insert into booking_team(tid,rid,start_time,end_time,remark) values(%s,%s,%s,%s,%s)",
|
|
|
|
|
(tid, trid, tstarttime, tendtime, tremark))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "相关预约信息已存在!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def cancelReserveCDB(self,cancel_cid,cancel_rid):
|
|
|
|
|
"""个人取消预约"""
|
|
|
|
|
self.cursor.execute("select * from booking_client where cid=%s and rid=%s",(cancel_cid,cancel_rid))
|
|
|
|
|
if self.cursor.fetchall() == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有相关预约信息!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
try:
|
|
|
|
|
self.cursor.execute("delete from booking_client where cid=%s and rid=%s",(cancel_cid,cancel_rid))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
QMessageBox().information(None, "提示", "没有相关预约信息!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def cancelReserveTDB(self,cancel_tid,cancel_rid):
|
|
|
|
|
"""团体取消预约"""
|
|
|
|
|
try:
|
|
|
|
|
for r in re.split(',|,| ', cancel_rid):
|
|
|
|
|
self.cursor.execute("select * from booking_team where tid=%s and rid=%s", (cancel_tid, r))
|
|
|
|
|
if self.cursor.fetchall() == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "%s房间没有预约!"%r, QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
self.cursor.execute("delete from booking_team where tid=%s and rid=%s",(cancel_tid,r))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def checkoutDB(self,flag, id,rid,payType,remark):
|
|
|
|
|
"""两种方式退房"""
|
|
|
|
|
try:
|
|
|
|
|
if flag == '个人':
|
|
|
|
|
self.cursor.execute("select * from checkin_client where rid=%s and cid=%s",(rid,id))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有相关入住信息!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
rid_out = data[0]['rid']
|
|
|
|
|
cid_out = data[0]['cid']
|
|
|
|
|
stime_out = data[0]['start_time']
|
|
|
|
|
etime_out = data[0]['end_time']
|
|
|
|
|
money = data[0]['total_price']
|
|
|
|
|
self.cursor.execute("insert into hotelorder(id,ordertype,start_time,end_time,rid,pay_type,money,remark,register_sid) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
(cid_out,flag,stime_out,etime_out,rid_out,payType,money,remark,self.staff.sid))
|
|
|
|
|
self.cursor.execute("delete from checkin_client where rid=%s and cid=%s",(rid_out,cid_out))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
QMessageBox().information(None, "提示", "本次需要支付%s" %money, QMessageBox.Yes)
|
|
|
|
|
elif flag == '团队':
|
|
|
|
|
sum = 0
|
|
|
|
|
for r in re.split(',|,| ',rid):
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"select * from checkin_team where rid=%s and tid=%s", (r, id))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data == ():
|
|
|
|
|
QMessageBox().information(None, "提示", "没有相关入住信息!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
rid_out = data[0]['rid']
|
|
|
|
|
tid_out = data[0]['tid']
|
|
|
|
|
stime_out = data[0]['start_time']
|
|
|
|
|
etime_out = data[0]['end_time']
|
|
|
|
|
money = data[0]['total_price']
|
|
|
|
|
self.cursor.execute(
|
|
|
|
|
"insert into hotelorder(id,ordertype,start_time,end_time,rid,pay_type,money,remark,register_sid) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)"
|
|
|
|
|
, (tid_out, flag, stime_out, etime_out, rid_out, payType, money, remark,self.staff.sid))
|
|
|
|
|
self.cursor.execute("delete from checkin_team where rid=%s and tid=%s", (rid_out, tid_out))
|
|
|
|
|
self.db.commit()
|
|
|
|
|
sum = sum + int(money)
|
|
|
|
|
QMessageBox().information(None, "提示", "本次需要支付%s" %str(sum), QMessageBox.Yes)
|
|
|
|
|
return True
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(e)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Chart:
|
|
|
|
|
def __init__(self,config=localConfig):
|
|
|
|
|
self.db = pymysql.connect(host=config['host'], port=config['port'], user=config['user'],
|
|
|
|
|
passwd=config['passwd'], db=config['db'], charset=config['charset'],
|
|
|
|
|
cursorclass=config['cursorclass'])
|
|
|
|
|
self.cursor = self.db.cursor()
|
|
|
|
|
self.cursor.execute("SELECT VERSION()")
|
|
|
|
|
data = self.cursor.fetchone()
|
|
|
|
|
print("Database version : %s " % data['VERSION()'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def toExcel(self,path, table_name):
|
|
|
|
|
"""
|
|
|
|
|
导出到excel表
|
|
|
|
|
"""
|
|
|
|
|
sql = "select * from " + table_name
|
|
|
|
|
self.cursor.execute(sql)
|
|
|
|
|
path = str(path)
|
|
|
|
|
fields = [field[0] for field in self.cursor.description]
|
|
|
|
|
all_data = self.cursor.fetchall()
|
|
|
|
|
# 写入excel
|
|
|
|
|
book = xlwt.Workbook()
|
|
|
|
|
sheet = book.add_sheet('sheet1')
|
|
|
|
|
for col, field in enumerate(fields):
|
|
|
|
|
sheet.write(0, col, field)
|
|
|
|
|
row = 1
|
|
|
|
|
for i in range(len(all_data)):
|
|
|
|
|
data = all_data[i].values()
|
|
|
|
|
for col, field in enumerate(data):
|
|
|
|
|
sheet.write(row, col, field)
|
|
|
|
|
row += 1
|
|
|
|
|
book.save(path+"/%s.xls" % table_name)
|
|
|
|
|
|
|
|
|
|
def getRevenue(self):
|
|
|
|
|
"""
|
|
|
|
|
获取营业额
|
|
|
|
|
"""
|
|
|
|
|
list_revenue = []
|
|
|
|
|
list_date = []
|
|
|
|
|
for i in range(7):
|
|
|
|
|
data = ()
|
|
|
|
|
sum = 0
|
|
|
|
|
delta = datetime.timedelta(days=i)
|
|
|
|
|
date = datetime.date.today()
|
|
|
|
|
date_selected = date - delta
|
|
|
|
|
str_date = str(date_selected)
|
|
|
|
|
list_date.append(str_date[5:])
|
|
|
|
|
self.cursor.execute("select money from hotelorder where end_time=%s",(date_selected))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
if data != ():
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
sum = sum + int(data[i]['money'])
|
|
|
|
|
list_revenue.append(sum)
|
|
|
|
|
print(list_revenue)
|
|
|
|
|
print(list_date)
|
|
|
|
|
list_date.reverse()
|
|
|
|
|
return list_date, list_revenue
|
|
|
|
|
|
|
|
|
|
def getOccupy(self):
|
|
|
|
|
"""
|
|
|
|
|
获取入住率/出租率
|
|
|
|
|
"""
|
|
|
|
|
list_occupy = []
|
|
|
|
|
list_date = []
|
|
|
|
|
self.cursor.execute("select count(*) from room")
|
|
|
|
|
totalRoomCount = self.cursor.fetchall()[0]['count(*)']
|
|
|
|
|
print(totalRoomCount)
|
|
|
|
|
for i in range(7):
|
|
|
|
|
data = ()
|
|
|
|
|
occupyRate = 0.0
|
|
|
|
|
delta = datetime.timedelta(days=i)
|
|
|
|
|
date = datetime.date.today()
|
|
|
|
|
date_selected = date - delta
|
|
|
|
|
str_date = str(date_selected)
|
|
|
|
|
list_date.append(str_date[5:])
|
|
|
|
|
self.cursor.execute("select distinct rid from hotelorder where end_time>=%s and start_time<=%s",
|
|
|
|
|
(date_selected,date_selected))
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
print(data)
|
|
|
|
|
if data != ():
|
|
|
|
|
occupyRate = float(len(data) / totalRoomCount)
|
|
|
|
|
list_occupy.append(occupyRate)
|
|
|
|
|
print(list_occupy)
|
|
|
|
|
list_date.reverse()
|
|
|
|
|
return list_date, list_occupy
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getClientStatics(self):
|
|
|
|
|
"""
|
|
|
|
|
获取客户相关数据
|
|
|
|
|
"""
|
|
|
|
|
list_clientStatics = []
|
|
|
|
|
self.cursor.execute("select * from hotelorder where ordertype='个人'")
|
|
|
|
|
num_client = len(self.cursor.fetchall())
|
|
|
|
|
self.cursor.execute("select distinct id from hotelorder where ordertype='团队'")
|
|
|
|
|
num_team = len(self.cursor.fetchall())
|
|
|
|
|
list_ret = []
|
|
|
|
|
list_ret.append(num_client)
|
|
|
|
|
list_ret.append(num_team)
|
|
|
|
|
return list_ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getStaffStatics(self):
|
|
|
|
|
"""
|
|
|
|
|
获取员工相关数据
|
|
|
|
|
"""
|
|
|
|
|
self.cursor.execute("select register_sid,count(*) from hotelorder group by register_sid")
|
|
|
|
|
data = self.cursor.fetchall()
|
|
|
|
|
list_clientNum = []
|
|
|
|
|
list_clientSta = []
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
list_clientNum.append(data[i]['register_sid'])
|
|
|
|
|
list_clientSta.append(data[i]['count(*)'])
|
|
|
|
|
print(list_clientNum)
|
|
|
|
|
print(list_clientSta)
|
|
|
|
|
return list_clientNum, list_clientSta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Figure_Canvas(FigureCanvas):
|
|
|
|
|
def __init__(self, width=5, height=4, dpi=100):
|
|
|
|
|
self.fig = Figure(figsize=(width, height), dpi=dpi)
|
|
|
|
|
# 在父类中激活Figure窗口
|
|
|
|
|
super(Figure_Canvas, self).__init__(self.fig)
|
|
|
|
|
# 第三步:创建一个子图,用于绘制图形用,111表示子图编号
|
|
|
|
|
self.axes = self.fig.add_subplot(111)
|
|
|
|
|
|
|
|
|
|
class Ui_LoginWindow(object):
|
|
|
|
|
def setupUi(self, MainWindow):
|
|
|
|
|
MainWindow.setObjectName("同福客栈")
|
|
|
|
|
MainWindow.resize(800, 600)
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
MainWindow.setFont(font)
|
|
|
|
|
icon = QtGui.QIcon()
|
|
|
|
|
icon.addPixmap(QtGui.QPixmap("../../../../../../../../pictures/酒店.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
MainWindow.setWindowIcon(icon)
|
|
|
|
|
MainWindow.setStyleSheet("\n"
|
|
|
|
|
"*{\n"
|
|
|
|
|
"font-size:24px;\n"
|
|
|
|
|
"font-family:Century Gothic;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QFrame{\n"
|
|
|
|
|
"background:rgba(0,0,0,0.8);\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"#centralwidget{\n"
|
|
|
|
|
"border-image:url(D:/pictures/login4.jpg) strectch;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"\n"
|
|
|
|
|
"#toolButton{\n"
|
|
|
|
|
"background:red;\n"
|
|
|
|
|
"border-radius:60px;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QLabel{\n"
|
|
|
|
|
"color:white;\n"
|
|
|
|
|
"background:transparent;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QPushButton{\n"
|
|
|
|
|
"background:red;;\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QPushButton:hover{\n"
|
|
|
|
|
"background:#333;\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"background:#49ebff;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QLineEdit{\n"
|
|
|
|
|
"background:transparent;\n"
|
|
|
|
|
"border:none;\n"
|
|
|
|
|
"color:#717072;\n"
|
|
|
|
|
"border-bottom:1px solid #717072;\n"
|
|
|
|
|
"}")
|
|
|
|
|
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.centralwidget.setFont(font)
|
|
|
|
|
self.centralwidget.setFocusPolicy(QtCore.Qt.WheelFocus)
|
|
|
|
|
self.centralwidget.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
|
|
|
|
|
self.centralwidget.setObjectName("centralwidget")
|
|
|
|
|
self.frame = QtWidgets.QFrame(self.centralwidget)
|
|
|
|
|
self.frame.setGeometry(QtCore.QRect(140, 80, 491, 461))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.frame.setFont(font)
|
|
|
|
|
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
|
|
|
|
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
|
|
|
|
|
self.frame.setObjectName("frame")
|
|
|
|
|
self.label = QtWidgets.QLabel(self.frame)
|
|
|
|
|
self.label.setGeometry(QtCore.QRect(180, 70, 151, 41))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.label.setFont(font)
|
|
|
|
|
self.label.setObjectName("label")
|
|
|
|
|
self.lineEdit_user = QtWidgets.QLineEdit(self.frame)
|
|
|
|
|
self.lineEdit_user.setGeometry(QtCore.QRect(70, 160, 361, 31))
|
|
|
|
|
self.lineEdit_user.setText("")
|
|
|
|
|
self.lineEdit_user.setObjectName("lineEdit_user")
|
|
|
|
|
self.lineEdit_password = QtWidgets.QLineEdit(self.frame)
|
|
|
|
|
self.lineEdit_password.setGeometry(QtCore.QRect(70, 260, 361, 31))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.lineEdit_password.setFont(font)
|
|
|
|
|
self.lineEdit_password.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
|
|
|
|
|
self.lineEdit_password.setLocale(QtCore.QLocale(QtCore.QLocale.Chinese, QtCore.QLocale.China))
|
|
|
|
|
self.lineEdit_password.setText("")
|
|
|
|
|
self.lineEdit_password.setEchoMode(QtWidgets.QLineEdit.Password)
|
|
|
|
|
self.lineEdit_password.setObjectName("lineEdit_password")
|
|
|
|
|
self.pushButton = QtWidgets.QPushButton(self.frame)
|
|
|
|
|
self.pushButton.setGeometry(QtCore.QRect(30, 370, 421, 51))
|
|
|
|
|
palette = QtGui.QPalette()
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(81, 182, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
|
|
|
self.pushButton.setPalette(palette)
|
|
|
|
|
self.pushButton.setStyleSheet("background-color: rgb(81, 182, 255);\n"
|
|
|
|
|
"QPalette pal = startBtn.palette(); \n"
|
|
|
|
|
"pal.setColor(QPalette::ButtonText, Qt::red);\n"
|
|
|
|
|
"startBtn.setPalette(pal); \n"
|
|
|
|
|
"startBtn.setStyleSheet(\"background-color:green\"); ")
|
|
|
|
|
self.pushButton.setObjectName("pushButton")
|
|
|
|
|
self.label_2 = QtWidgets.QLabel(self.frame)
|
|
|
|
|
self.label_2.setGeometry(QtCore.QRect(70, 120, 121, 31))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.label_2.setFont(font)
|
|
|
|
|
self.label_2.setObjectName("label_2")
|
|
|
|
|
self.label_3 = QtWidgets.QLabel(self.frame)
|
|
|
|
|
self.label_3.setGeometry(QtCore.QRect(70, 220, 121, 31))
|
|
|
|
|
self.label_3.setObjectName("label_3")
|
|
|
|
|
self.toolButton = QtWidgets.QToolButton(self.centralwidget)
|
|
|
|
|
self.toolButton.setGeometry(QtCore.QRect(330, 20, 121, 121))
|
|
|
|
|
palette = QtGui.QPalette()
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(116, 197, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
|
|
|
self.toolButton.setPalette(palette)
|
|
|
|
|
self.toolButton.setStyleSheet("background-color: rgb(116, 197, 255);")
|
|
|
|
|
self.toolButton.setLocale(QtCore.QLocale(QtCore.QLocale.Chinese, QtCore.QLocale.China))
|
|
|
|
|
self.toolButton.setText("")
|
|
|
|
|
icon1 = QtGui.QIcon()
|
|
|
|
|
icon1.addPixmap(QtGui.QPixmap("../../../../../../pictures/院徽.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
self.toolButton.setIcon(icon1)
|
|
|
|
|
self.toolButton.setIconSize(QtCore.QSize(150, 150))
|
|
|
|
|
self.toolButton.setObjectName("toolButton")
|
|
|
|
|
self.forgetPasswd = QtWidgets.QToolButton(self.centralwidget)
|
|
|
|
|
self.forgetPasswd.setGeometry(QtCore.QRect(660, 560, 111, 31))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("Century Gothic")
|
|
|
|
|
font.setPointSize(-1)
|
|
|
|
|
self.forgetPasswd.setFont(font)
|
|
|
|
|
self.forgetPasswd.setStyleSheet("border:none;\n"
|
|
|
|
|
"background:rgba(0,0,0,0.8)\n"
|
|
|
|
|
"")
|
|
|
|
|
self.forgetPasswd.setObjectName("forgetPasswd")
|
|
|
|
|
self.label_4 = QtWidgets.QLabel(self.centralwidget)
|
|
|
|
|
self.label_4.setGeometry(QtCore.QRect(660, 560, 121, 31))
|
|
|
|
|
palette = QtGui.QPalette()
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(57, 209, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.LinkVisited, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(57, 209, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.LinkVisited, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(57, 209, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.LinkVisited, brush)
|
|
|
|
|
self.label_4.setPalette(palette)
|
|
|
|
|
self.label_4.setObjectName("label_4")
|
|
|
|
|
MainWindow.setCentralWidget(self.centralwidget)
|
|
|
|
|
|
|
|
|
|
self.retranslateUi(MainWindow)
|
|
|
|
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
|
|
|
|
|
|
|
|
|
def retranslateUi(self, MainWindow):
|
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
|
|
|
MainWindow.setWindowTitle(_translate("MainWindow", "同福客栈"))
|
|
|
|
|
self.label.setText(_translate("MainWindow", "Now Login!"))
|
|
|
|
|
self.lineEdit_user.setPlaceholderText(_translate("MainWindow", "username"))
|
|
|
|
|
self.lineEdit_password.setPlaceholderText(_translate("MainWindow", "password"))
|
|
|
|
|
self.pushButton.setText(_translate("MainWindow", "登 录"))
|
|
|
|
|
self.label_2.setText(_translate("MainWindow", "账户名"))
|
|
|
|
|
self.label_3.setText(_translate("MainWindow", "密码"))
|
|
|
|
|
self.forgetPasswd.setText(_translate("MainWindow", "忘记密码"))
|
|
|
|
|
self.label_4.setText(_translate("MainWindow", "忘记密码?"))#登录页
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Ui_HomeWindow(object):
|
|
|
|
|
def setupUi(self, MainWindow):
|
|
|
|
|
MainWindow.setObjectName("同福客栈")
|
|
|
|
|
MainWindow.resize(800, 600)
|
|
|
|
|
MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
|
|
|
|
|
icon = QtGui.QIcon()
|
|
|
|
|
icon.addPixmap(QtGui.QPixmap("../../../../../pictures/酒店.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
MainWindow.setWindowIcon(icon)
|
|
|
|
|
MainWindow.setStyleSheet("QMainWindow{\n"
|
|
|
|
|
"border-radius:15px\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QWidget{\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"#frame{\n"
|
|
|
|
|
"background: #e1e9ed;}\n"
|
|
|
|
|
"QToolButton{\n"
|
|
|
|
|
"background:#EAF7FF;\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"QToolButton:hover{\n"
|
|
|
|
|
"background:#EAF7FF;\n"
|
|
|
|
|
"border-radius:15px;\n"
|
|
|
|
|
"background:#49ebff;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"#label{\n"
|
|
|
|
|
"text-align:center;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"#welcome{\n"
|
|
|
|
|
"text-align:center;\n"
|
|
|
|
|
"}\n"
|
|
|
|
|
"#toolButton_7\n"
|
|
|
|
|
"{\n"
|
|
|
|
|
"background:#e1e9ed;\n"
|
|
|
|
|
"}")
|
|
|
|
|
MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded)
|
|
|
|
|
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
|
|
|
|
self.centralwidget.setObjectName("centralwidget")
|
|
|
|
|
self.chartbutton = QtWidgets.QToolButton(self.centralwidget)
|
|
|
|
|
self.chartbutton.setGeometry(QtCore.QRect(530, 340, 200, 120))
|
|
|
|
|
self.chartbutton.setMinimumSize(QtCore.QSize(200, 120))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("幼圆")
|
|
|
|
|
font.setBold(True)
|
|
|
|
|
font.setWeight(75)
|
|
|
|
|
self.chartbutton.setFont(font)
|
|
|
|
|
icon1 = QtGui.QIcon()
|
|
|
|
|
icon1.addPixmap(QtGui.QPixmap("../../../../pictures/chart.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
self.chartbutton.setIcon(icon1)
|
|
|
|
|
self.chartbutton.setIconSize(QtCore.QSize(70, 70))
|
|
|
|
|
self.chartbutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
|
|
|
|
|
self.chartbutton.setObjectName("chartbutton")
|
|
|
|
|
self.roombutton = QtWidgets.QToolButton(self.centralwidget)
|
|
|
|
|
self.roombutton.setGeometry(QtCore.QRect(40, 340, 200, 120))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("幼圆")
|
|
|
|
|
font.setBold(True)
|
|
|
|
|
font.setWeight(75)
|
|
|
|
|
self.roombutton.setFont(font)
|
|
|
|
|
icon2 = QtGui.QIcon()
|
|
|
|
|
icon2.addPixmap(QtGui.QPixmap("../../../../pictures/coffee.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
self.roombutton.setIcon(icon2)
|
|
|
|
|
self.roombutton.setIconSize(QtCore.QSize(80, 80))
|
|
|
|
|
self.roombutton.setPopupMode(QtWidgets.QToolButton.InstantPopup)
|
|
|
|
|
self.roombutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
|
|
|
|
|
self.roombutton.setObjectName("roombutton")
|
|
|
|
|
self.staffbutton = QtWidgets.QToolButton(self.centralwidget)
|
|
|
|
|
self.staffbutton.setGeometry(QtCore.QRect(290, 340, 200, 120))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("幼圆")
|
|
|
|
|
font.setBold(True)
|
|
|
|
|
font.setWeight(75)
|
|
|
|
|
self.staffbutton.setFont(font)
|
|
|
|
|
icon3 = QtGui.QIcon()
|
|
|
|
|
icon3.addPixmap(QtGui.QPixmap("../../../../pictures/staff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
self.staffbutton.setIcon(icon3)
|
|
|
|
|
self.staffbutton.setIconSize(QtCore.QSize(80, 80))
|
|
|
|
|
self.staffbutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
|
|
|
|
|
self.staffbutton.setObjectName("staffbutton")
|
|
|
|
|
self.frame = QtWidgets.QFrame(self.centralwidget)
|
|
|
|
|
self.frame.setGeometry(QtCore.QRect(0, 0, 800, 180))
|
|
|
|
|
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
|
|
|
|
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
|
|
|
|
|
self.frame.setObjectName("frame")
|
|
|
|
|
self.welcome = QtWidgets.QLabel(self.frame)
|
|
|
|
|
self.welcome.setGeometry(QtCore.QRect(40, 10, 751, 51))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("幼圆")
|
|
|
|
|
font.setPointSize(12)
|
|
|
|
|
self.welcome.setFont(font)
|
|
|
|
|
self.welcome.setText("")
|
|
|
|
|
self.welcome.setAlignment(QtCore.Qt.AlignCenter)
|
|
|
|
|
self.welcome.setObjectName("welcome")
|
|
|
|
|
self.toolButton_7 = QtWidgets.QToolButton(self.frame)
|
|
|
|
|
self.toolButton_7.setGeometry(QtCore.QRect(370, 70, 71, 71))
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setPointSize(9)
|
|
|
|
|
self.toolButton_7.setFont(font)
|
|
|
|
|
self.toolButton_7.setText("")
|
|
|
|
|
icon4 = QtGui.QIcon()
|
|
|
|
|
icon4.addPixmap(QtGui.QPixmap("../../../../pictures/hotel.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
|
|
|
self.toolButton_7.setIcon(icon4)
|
|
|
|
|
self.toolButton_7.setIconSize(QtCore.QSize(100, 100))
|
|
|
|
|
self.toolButton_7.setObjectName("toolButton_7")
|
|
|
|
|
self.modifyPwd = QtWidgets.QToolButton(self.frame)
|
|
|
|
|
self.modifyPwd.setGeometry(QtCore.QRect(710, 150, 81, 21))
|
|
|
|
|
self.modifyPwd.setStyleSheet("background:#e1e9ed")
|
|
|
|
|
self.modifyPwd.setObjectName("modifyPwd")
|
|
|
|
|
self.label = QtWidgets.QLabel(self.centralwidget)
|
|
|
|
|
self.label.setGeometry(QtCore.QRect(310, 540, 181, 41))
|
|
|
|
|
palette = QtGui.QPalette()
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(195, 210, 217))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(225, 232, 236))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(130, 140, 145))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(225, 232, 236))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(195, 210, 217))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(225, 232, 236))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(130, 140, 145))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(225, 232, 236))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(225, 232, 236))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(130, 140, 145))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(97, 105, 108))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(195, 210, 217))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
|
|
|
|
|
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
|
|
|
|
|
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
|
|
|
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
|
|
|
|
|
self.label.setPalette(palette)
|
|
|
|
|
font = QtGui.QFont()
|
|
|
|
|
font.setFamily("幼圆")
|
|
|
|
|
self.label.setFont(font)
|
|
|
|
|
self.label.setObjectName("label")
|
|
|
|
|
MainWindow.setCentralWidget(self.centralwidget)
|
|
|
|
|
|
|
|
|
|
self.retranslateUi(MainWindow)
|
|
|
|
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
|
|
|
|
|
|
|
|
|
def retranslateUi(self, MainWindow):
|
|
|
|
|
_translate = QtCore.QCoreApplication.translate
|
|
|
|
|
MainWindow.setWindowTitle(_translate("MainWindow", "同福客栈"))
|
|
|
|
|
self.chartbutton.setText(_translate("MainWindow", "维护与报表"))
|
|
|
|
|
self.roombutton.setText(_translate("MainWindow", "客房管理"))
|
|
|
|
|
self.staffbutton.setText(_translate("MainWindow", "员工管理"))
|
|
|
|
|
self.modifyPwd.setText(_translate("MainWindow", "修改密码"))
|
|
|
|
|
self.label.setText(_translate("MainWindow", "酒店管理系统"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LoginPage(QMainWindow, Ui_LoginWindow):#将其设置为 main control 页面跳转
|
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
|
super(LoginPage, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
self.pushButton.clicked.connect(self.display)
|
|
|
|
|
self.forgetPasswd.clicked.connect(self.forgetPwd)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def display(self):
|
|
|
|
|
username = self.lineEdit_user.text()
|
|
|
|
|
password = self.lineEdit_password.text()
|
|
|
|
|
global staff
|
|
|
|
|
staff = _initStaff()
|
|
|
|
|
role = staff.userLogin(username,password)
|
|
|
|
|
# 登录成功,返回权限,1为前台,2为管理员
|
|
|
|
|
if role:
|
|
|
|
|
# from mainControl import Homepage
|
|
|
|
|
self.Mainwindow = HomePage()
|
|
|
|
|
self.close()
|
|
|
|
|
self.Mainwindow.show()
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "账号或密码错误!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def forgetPwd(self):
|
|
|
|
|
from service.forgetPwd import fpWindow
|
|
|
|
|
self.fpWindow = fpWindow()
|
|
|
|
|
self.close()
|
|
|
|
|
self.fpWindow.show()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HomePage(QMainWindow, Ui_HomeWindow):
|
|
|
|
|
def __init__(self,parent=None):
|
|
|
|
|
"""
|
|
|
|
|
传入staff全局变量
|
|
|
|
|
:param parent:
|
|
|
|
|
"""
|
|
|
|
|
super(HomePage, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
self.staff = get_staff()
|
|
|
|
|
print(self.staff.sname[0])
|
|
|
|
|
self.welcome.setText(self.staff.sname + ',你好。你的权限为:' + self.staff.srole + '。今天是' + time.strftime("%Y-%m-%d", time.localtime()))
|
|
|
|
|
self.staffbutton.clicked.connect(self.gotoStaff)
|
|
|
|
|
self.roombutton.clicked.connect(self.gotoRoom)
|
|
|
|
|
# self.clientbutton.clicked.connect(self.gotoClient)
|
|
|
|
|
# self.orderbutton.clicked.connect(self.gotoOrder)
|
|
|
|
|
self.chartbutton.clicked.connect(self.gotoChart)
|
|
|
|
|
self.modifyPwd.clicked.connect(self.modifyPasswd)
|
|
|
|
|
|
|
|
|
|
def modifyPasswd(self):
|
|
|
|
|
|
|
|
|
|
self.mpWindow = mpWindow()
|
|
|
|
|
self.close()
|
|
|
|
|
self.mpWindow.show()
|
|
|
|
|
|
|
|
|
|
def gotoChart(self):
|
|
|
|
|
|
|
|
|
|
self.ChartOp = ChartOp()
|
|
|
|
|
self.ChartOp.show()
|
|
|
|
|
|
|
|
|
|
# def gotoOrder(self):
|
|
|
|
|
# from service.orderOp import OrderOp
|
|
|
|
|
# self.OrderOp = OrderOp()
|
|
|
|
|
# self.OrderOp.show()
|
|
|
|
|
|
|
|
|
|
# def gotoClient(self):
|
|
|
|
|
# from service.clientOp import ClientOp
|
|
|
|
|
# self.ClientOp = ClientOp()
|
|
|
|
|
# self.ClientOp.show()
|
|
|
|
|
|
|
|
|
|
def gotoRoom(self):
|
|
|
|
|
|
|
|
|
|
self.RoomOp = RoomOp()
|
|
|
|
|
self.RoomOp.show()
|
|
|
|
|
|
|
|
|
|
def gotoStaff(self):
|
|
|
|
|
|
|
|
|
|
self.StaffOP = StaffOP()
|
|
|
|
|
self.StaffOP.show()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ChartOp(QMainWindow, Ui_ReportWindow):
|
|
|
|
|
def __init__(self,parent=None):
|
|
|
|
|
super(ChartOp, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
self.staff = get_staff()
|
|
|
|
|
self.welcome.setText(self.staff.sname)
|
|
|
|
|
self.role.setText('权限:'+ self.staff.srole)
|
|
|
|
|
self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget_4.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget_4.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex)
|
|
|
|
|
self.listWidget_4.currentRowChanged.connect(self.stackedWidget_2.setCurrentIndex)
|
|
|
|
|
self.stackedWidget.setCurrentIndex(0)
|
|
|
|
|
self.stackedWidget_2.setCurrentIndex(0)
|
|
|
|
|
self.gridlayout = QGridLayout(self.groupBox) # 继承容器groupBox
|
|
|
|
|
self.gridlayout2 = QGridLayout(self.groupBox_2) # 同上
|
|
|
|
|
# lineedit1 = self.path1
|
|
|
|
|
# lineedit2 = self.path2
|
|
|
|
|
# lineedit3 = self.path3
|
|
|
|
|
# self.scan.clicked.connect(lambda: self.setBrowerPath(lineedit1))
|
|
|
|
|
# self.scan_2.clicked.connect(lambda: self.setBrowerPath(lineedit2))
|
|
|
|
|
# self.scan_3.clicked.connect(lambda: self.setBrowerPath(lineedit3))
|
|
|
|
|
# self.tosql1.clicked.connect(self.toSQLDB)
|
|
|
|
|
# self.tosql2.clicked.connect(self.toSQLTable)
|
|
|
|
|
# self.toexcel.clicked.connect(self.toExcel)
|
|
|
|
|
# self.ask.clicked.connect(self.help)
|
|
|
|
|
self.showfigure1.clicked.connect(self.figureOrder)
|
|
|
|
|
self.showfigure2.clicked.connect(self.figureCS)
|
|
|
|
|
|
|
|
|
|
def setBrowerPath(self,lineedit):
|
|
|
|
|
download_path = QtWidgets.QFileDialog.getExistingDirectory(self,"选择导出目录","D:\pictures")
|
|
|
|
|
lineedit.setText(download_path)
|
|
|
|
|
|
|
|
|
|
def toSQLDB(self):
|
|
|
|
|
"""导出整个库"""
|
|
|
|
|
key = localConfig['passwd']
|
|
|
|
|
path = self.path1.text()
|
|
|
|
|
os.system("mysqldump -uroot -p%s dbdesign > %s/dbdesign.sql" % (key,path))
|
|
|
|
|
QMessageBox().information(None, "提示", "导出数据库完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def toSQLTable(self):
|
|
|
|
|
"""导出某个表"""
|
|
|
|
|
key = localConfig['passwd']
|
|
|
|
|
path = self.path2.text()
|
|
|
|
|
table_name = self.name1.currentText()
|
|
|
|
|
if table_name == '请选择...':
|
|
|
|
|
QMessageBox.information(None,'提示','必须选择一个表',QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
os.system("mysqldump -uroot -p%s dbdesign %s > %s/%s.sql" %(key,table_name,path,table_name))
|
|
|
|
|
QMessageBox().information(None, "提示", "导出数据库表完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def toExcel(self):
|
|
|
|
|
"""导出某个表到excel"""
|
|
|
|
|
key = localConfig['passwd']
|
|
|
|
|
c = Chart()
|
|
|
|
|
path = self.path3.text()
|
|
|
|
|
table_name = self.name2.currentText()
|
|
|
|
|
if table_name == '请选择...':
|
|
|
|
|
QMessageBox.information(None,'提示','必须选择一个表',QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
c.toExcel(path,table_name)
|
|
|
|
|
QMessageBox().information(None, "提示", "导出表格完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def help(self):
|
|
|
|
|
QMessageBox().information(None, "提示", "client -- 客户表\nteam -- 团队表\nstaff -- 员工表\nroom -- 房间表"
|
|
|
|
|
"\ncheckin_client -- 入住个人客户表"
|
|
|
|
|
"\ncheckin_team -- 入住团体表\nbooking_client -- 个人预约表\n"
|
|
|
|
|
"booking_team -- 团体预约表\nhotelorder -- 完成订单表", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def figureOrder(self):
|
|
|
|
|
self.plotRevenue()
|
|
|
|
|
self.plotOccupy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def plotRevenue(self):
|
|
|
|
|
c = Chart()
|
|
|
|
|
x, y = c.getRevenue()
|
|
|
|
|
F = Figure_Canvas(width=6, height=2, dpi=100)
|
|
|
|
|
F.axes.plot(x, y)
|
|
|
|
|
|
|
|
|
|
F.fig.suptitle("revenue in 7 days")
|
|
|
|
|
self.gridlayout.addWidget(F, 1, 0)
|
|
|
|
|
|
|
|
|
|
def plotOccupy(self):
|
|
|
|
|
F1 = Figure_Canvas(width=6, height=2, dpi=100)
|
|
|
|
|
F1.fig.suptitle("occupancy rate in 7 days")
|
|
|
|
|
c = Chart()
|
|
|
|
|
x, y = c.getOccupy()
|
|
|
|
|
F1.axes.plot(x, y)
|
|
|
|
|
self.gridlayout.addWidget(F1, 2, 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def figureCS(self):
|
|
|
|
|
self.plotClient()
|
|
|
|
|
self.plotStaff()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def plotStaff(self):
|
|
|
|
|
F1 = Figure_Canvas(width=6, height=2, dpi=100)
|
|
|
|
|
F1.fig.suptitle("components of client")
|
|
|
|
|
c = Chart()
|
|
|
|
|
component = c.getClientStatics()
|
|
|
|
|
content = ['individual', 'team']
|
|
|
|
|
cols = ['r','m']
|
|
|
|
|
F1.axes.pie(component,labels=content,startangle=90,shadow=True,explode=(0,0.1),colors=cols,autopct='%1.1f%%')
|
|
|
|
|
self.gridlayout2.addWidget(F1, 1, 0)
|
|
|
|
|
|
|
|
|
|
def plotClient(self):
|
|
|
|
|
c = Chart()
|
|
|
|
|
x, y = c.getStaffStatics()
|
|
|
|
|
F = Figure_Canvas(width=6, height=2, dpi=100)
|
|
|
|
|
F.axes.bar(x, y)
|
|
|
|
|
F.fig.suptitle(" staff performance: the order number they address")
|
|
|
|
|
self.gridlayout2.addWidget(F, 2, 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RoomOp(QMainWindow, Ui_RoomWindow):
|
|
|
|
|
def __init__(self,parent=None):
|
|
|
|
|
super(RoomOp, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
self.staff = get_staff()
|
|
|
|
|
self.welcome.setText(self.staff.sname)
|
|
|
|
|
self.role.setText('权限:'+ self.staff.srole)
|
|
|
|
|
self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.inputStartTime.setCalendarPopup(True)
|
|
|
|
|
self.inputEndTime.setCalendarPopup(True)
|
|
|
|
|
self.endtime.setCalendarPopup(True)
|
|
|
|
|
self.tendtime.setCalendarPopup(True)
|
|
|
|
|
self.starttime_booking.setCalendarPopup(True)
|
|
|
|
|
self.endtime_booking.setCalendarPopup(True)
|
|
|
|
|
self.tstarttime_booking.setCalendarPopup(True)
|
|
|
|
|
self.tendtime_booking.setCalendarPopup(True)
|
|
|
|
|
self.starttime_checkout.setCalendarPopup(True)
|
|
|
|
|
self.endtime_checkout.setCalendarPopup(True)
|
|
|
|
|
self.stackedWidget.setCurrentIndex(0)
|
|
|
|
|
self.stackedWidget_sub.setCurrentIndex(0)
|
|
|
|
|
self.stackedWidget_sub_2.setCurrentIndex(0)
|
|
|
|
|
self.stackedWidget_sub_3.setCurrentIndex(0)
|
|
|
|
|
self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex)
|
|
|
|
|
self.listWidget_2.currentRowChanged.connect(self.stackedWidget_sub.setCurrentIndex)
|
|
|
|
|
self.listWidget_3.currentRowChanged.connect(self.stackedWidget_sub_2.setCurrentIndex)
|
|
|
|
|
self.listWidget_4.currentRowChanged.connect(self.stackedWidget_sub_3.setCurrentIndex)
|
|
|
|
|
self.commitCheckin.clicked.connect(self.singleCheckin)
|
|
|
|
|
self.commitCheckinTeam.clicked.connect(self.teamCheckin)
|
|
|
|
|
self.commitBookingClient.clicked.connect(self.reserveClient)
|
|
|
|
|
self.commitBookingTeam.clicked.connect(self.reserveTeam)
|
|
|
|
|
self.commitDeBookC.clicked.connect(self.cancelReserveC)
|
|
|
|
|
self.commitDeBookT.clicked.connect(self.cancelReserveT)
|
|
|
|
|
self.commitCheckout.clicked.connect(self.checkout)
|
|
|
|
|
self.searchNB.clicked.connect(self.showRoomInfo)
|
|
|
|
|
self.commitTableDel.clicked.connect(self.tableDel)
|
|
|
|
|
self.commitTableModify.clicked.connect(self.tableModify)
|
|
|
|
|
self.commitAddRoom.clicked.connect(self.addRoom)
|
|
|
|
|
self.commitrtcC.clicked.connect(self.reverseToCheckC)
|
|
|
|
|
self.commitrtcT.clicked.connect(self.reverseToCheckT)
|
|
|
|
|
self.commitSearch.clicked.connect(self.findRoom)
|
|
|
|
|
self.scan.clicked.connect(self.setBrowerPath)
|
|
|
|
|
self.reset.clicked.connect(self.reOpen)
|
|
|
|
|
|
|
|
|
|
# 下面用布局的方式显示房间
|
|
|
|
|
def showRoom(self,rid,rtype,rstorey,rprice,rdesc,rpic,endtime,i,j):
|
|
|
|
|
self.glayout = self.gridLayout
|
|
|
|
|
self.glayout.setContentsMargins(10,3,10,3)
|
|
|
|
|
# 下面展示信息
|
|
|
|
|
self.flayout = QVBoxLayout()
|
|
|
|
|
self.glayout.addLayout(self.flayout,i,j)
|
|
|
|
|
lb = QLabel(self)
|
|
|
|
|
lb.setFixedSize(150,80)
|
|
|
|
|
lb.setPixmap(QPixmap(rpic))
|
|
|
|
|
lb.setStyleSheet("border:1px solid white")
|
|
|
|
|
lb.setScaledContents(True)
|
|
|
|
|
self.flayout.addWidget(lb)
|
|
|
|
|
self.flayout.addWidget(QLabel("房间号:"+rid + " 楼层:"+rstorey,self, styleSheet="color: #990066;"))
|
|
|
|
|
self.flayout.addWidget(QLabel("类型:"+rtype, self, styleSheet="color: #990066;", openExternalLinks=True))
|
|
|
|
|
self.flayout.addWidget(QLabel("描述:"+rdesc+" 价格:"+rprice, self, styleSheet="color: #990066;", openExternalLinks=True))
|
|
|
|
|
pb = QPushButton(self)
|
|
|
|
|
pb.setFixedSize(80,25)
|
|
|
|
|
pb.setText("立即订购")
|
|
|
|
|
pb.setStyleSheet("background:#CCFFCC;border-radius:8px;\n")
|
|
|
|
|
self.flayout.addWidget(pb)
|
|
|
|
|
pb.clicked.connect(lambda: self.pbSwitch(rid,endtime))
|
|
|
|
|
|
|
|
|
|
def reOpen(self):
|
|
|
|
|
self.close()
|
|
|
|
|
self.tmp = RoomOp()
|
|
|
|
|
self.tmp.show()
|
|
|
|
|
|
|
|
|
|
def findRoom(self):
|
|
|
|
|
rtype = self.inputType.currentText()
|
|
|
|
|
if rtype == '请选择...':
|
|
|
|
|
rtype = '%%'
|
|
|
|
|
print(rtype)
|
|
|
|
|
if self.inputFree.isChecked():
|
|
|
|
|
rstate = 1
|
|
|
|
|
else:
|
|
|
|
|
rstate = 0
|
|
|
|
|
rstorey = self.inputstorey.currentText()
|
|
|
|
|
if rstorey == '请选择...':
|
|
|
|
|
rstorey = '%%'
|
|
|
|
|
rstarttime = self.inputStartTime.date().toPyDate()
|
|
|
|
|
rendtime = self.inputEndTime.date().toPyDate()
|
|
|
|
|
if rendtime <= rstarttime:
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
price_bottom = self.inputprice1.text()
|
|
|
|
|
if price_bottom == '':
|
|
|
|
|
price_bottom = 0
|
|
|
|
|
price_up = self.inputprice2.text()
|
|
|
|
|
if price_up == '':
|
|
|
|
|
price_up = 10000
|
|
|
|
|
r = Room()
|
|
|
|
|
da = r.showRoom(rtype,rstate,rstorey,rstarttime,rendtime,price_bottom,price_up)
|
|
|
|
|
length = len(da)
|
|
|
|
|
if length == 0:
|
|
|
|
|
QMessageBox().information(None, "提示", "没有符合要求的记录!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
k = 0
|
|
|
|
|
for i in range(1 + int(length / 3)):
|
|
|
|
|
for j in range(3):
|
|
|
|
|
if k == length:
|
|
|
|
|
break
|
|
|
|
|
print(k)
|
|
|
|
|
self.showRoom(da[k]['rid'],da[k]['rtype'],da[k]['rstorey'],da[k]['rprice'],da[k]['rdesc'],da[k]['rpic'],rendtime,i,j)
|
|
|
|
|
k = k + 1
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def pbSwitch(self,rid,endtime):
|
|
|
|
|
self.stackedWidget.setCurrentIndex(1)
|
|
|
|
|
self.stackedWidget_sub.setCurrentIndex(0)
|
|
|
|
|
self.crid.setText(rid)
|
|
|
|
|
self.endtime.setDate(endtime)
|
|
|
|
|
|
|
|
|
|
def singleCheckin(self):
|
|
|
|
|
cname = self.cname.text()
|
|
|
|
|
cid = self.cid.text()
|
|
|
|
|
cphone = self.cphone.text()
|
|
|
|
|
cage = self.cage.text()
|
|
|
|
|
if self.male.isChecked():
|
|
|
|
|
csex = '男'
|
|
|
|
|
elif self.female.isChecked():
|
|
|
|
|
csex = '女'
|
|
|
|
|
else:
|
|
|
|
|
csex = ''
|
|
|
|
|
crid = self.crid.text()
|
|
|
|
|
endtime = self.endtime.date().toPyDate()
|
|
|
|
|
if endtime <= datetime.date.today():
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于今天!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
remark = self.remark.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.singleCheckinDB(cname,cid,cphone,cage,csex,crid,endtime,remark)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "入住信息登记完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def teamCheckin(self):
|
|
|
|
|
tname = self.tname.text()
|
|
|
|
|
tid = self.tid.text()
|
|
|
|
|
tphone = self.tphone.text()
|
|
|
|
|
trid = self.trid.text()
|
|
|
|
|
tendtime = self.tendtime.date().toPyDate()
|
|
|
|
|
if tendtime <= datetime.date.today():
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于今天!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
tremark = self.tremark.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
print(tid)
|
|
|
|
|
ret = r.teamCheckinDB(tname, tid, tphone,trid,tendtime,tremark)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "入住信息登记完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def reverseToCheckC(self):
|
|
|
|
|
cid = self.cid_rtc.text()
|
|
|
|
|
rid = self.crid_rtc.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.reserveToCheckinC(cid,rid)
|
|
|
|
|
if ret == True:
|
|
|
|
|
QMessageBox().information(None, "提示", "预约入住完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def reverseToCheckT(self):
|
|
|
|
|
tid = self.tid_rtc.text()
|
|
|
|
|
rid = self.trid_rtc.text()
|
|
|
|
|
print(tid,rid)
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.reserveToCheckinT(tid, rid)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "预约入住完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def reserveClient(self):
|
|
|
|
|
cname = self.cname_booking.text()
|
|
|
|
|
cid = self.cid_booking.text()
|
|
|
|
|
cphone = self.cphone_booking.text()
|
|
|
|
|
cage = self.cage_booking.text()
|
|
|
|
|
if self.male_booking.isChecked():
|
|
|
|
|
csex = '男'
|
|
|
|
|
elif self.female_booking.isChecked():
|
|
|
|
|
csex = '女'
|
|
|
|
|
else:
|
|
|
|
|
csex = ''
|
|
|
|
|
crid = self.crid_booking.text()
|
|
|
|
|
cstarttime = self.starttime_booking.date().toPyDate()
|
|
|
|
|
cendtime = self.endtime_booking.date().toPyDate()
|
|
|
|
|
if cendtime <= cstarttime:
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
cremark = self.remark_booking.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.reserveCDB(cname,cid,cphone,cage,csex,crid,cstarttime,cendtime,cremark)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "预约信息登记完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def reserveTeam(self):
|
|
|
|
|
tname = self.tname_booking.text()
|
|
|
|
|
tid = self.tid_booking.text()
|
|
|
|
|
tphone = self.tphone_booking.text()
|
|
|
|
|
trid = self.trid_booking.text()
|
|
|
|
|
tstarttime = self.tstarttime_booking.date().toPyDate()
|
|
|
|
|
tendtime = self.tendtime_booking.date().toPyDate()
|
|
|
|
|
if tendtime <= tstarttime:
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
tremark = self.tremark_booking.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.reserveTDB(tname,tid,tphone,trid,tstarttime,tendtime,tremark)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "预约信息登记完成!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def cancelReserveC(self):
|
|
|
|
|
cancel_cid = self.cid_deb.text()
|
|
|
|
|
cancel_rid = self.crid_deb.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.cancelReserveCDB(cancel_cid,cancel_rid)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "取消预约成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def cancelReserveT(self):
|
|
|
|
|
cancel_tid = self.tid_deb.text()
|
|
|
|
|
cancel_rid = self.trid_deb.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.cancelReserveTDB(cancel_tid,cancel_rid)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "取消预约成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def checkout(self):
|
|
|
|
|
id = self.id_checkout.text()
|
|
|
|
|
if self.single_flag.isChecked():
|
|
|
|
|
check_type = '个人'
|
|
|
|
|
elif self.team_flag.isChecked():
|
|
|
|
|
check_type = '团队'
|
|
|
|
|
else:
|
|
|
|
|
messageBox = QMessageBox()
|
|
|
|
|
messageBox.setWindowTitle('错误')
|
|
|
|
|
messageBox.setText('必须选择个人/团队')
|
|
|
|
|
messageBox.exec_()
|
|
|
|
|
return
|
|
|
|
|
stime = self.starttime_checkout.date().toPyDate()
|
|
|
|
|
etime = self.endtime_checkout.date().toPyDate()
|
|
|
|
|
if etime <= stime:
|
|
|
|
|
QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
rid = self.rid_checkout.text()
|
|
|
|
|
pay_type = self.paytype_checkout.text()
|
|
|
|
|
remark = self.remark_checkout.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.checkoutDB(check_type,id,rid,pay_type,remark)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "退房成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def showRoomInfo(self):
|
|
|
|
|
r = Room()
|
|
|
|
|
if int(self.staff.srole) > 1:
|
|
|
|
|
data = r.showAllRoom()
|
|
|
|
|
print(data)
|
|
|
|
|
rowNum = len(data)
|
|
|
|
|
columnNum = len(data[0])
|
|
|
|
|
self.roomTable.setRowCount(rowNum)
|
|
|
|
|
self.roomTable.setColumnCount(columnNum)
|
|
|
|
|
for i,da in enumerate(data):
|
|
|
|
|
da = list(da.values())
|
|
|
|
|
for j in range(columnNum):
|
|
|
|
|
self.itemContent = QTableWidgetItem(( '%s' ) % (da[j]))
|
|
|
|
|
self.roomTable.setItem(i, j, self.itemContent)
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "权限要求不符合!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def tableDel(self):
|
|
|
|
|
row_selected = self.roomTable.selectedItems()
|
|
|
|
|
if len(row_selected) == 0:
|
|
|
|
|
return
|
|
|
|
|
row = row_selected[0].text()
|
|
|
|
|
r = Room()
|
|
|
|
|
r.delRoom(row)
|
|
|
|
|
row = row_selected[0].row()
|
|
|
|
|
self.roomTable.removeRow(row)
|
|
|
|
|
QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def tableModify(self):
|
|
|
|
|
row_selected = self.roomTable.selectedItems()
|
|
|
|
|
if len(row_selected) == 0:
|
|
|
|
|
return
|
|
|
|
|
row = row_selected[0].row()
|
|
|
|
|
column = row_selected[0].column()
|
|
|
|
|
value = self.modifyvalue.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
r.modifyRoom(row,column,value)
|
|
|
|
|
tvalue = QTableWidgetItem(('%s') % (value))
|
|
|
|
|
self.roomTable.setItem(row,column, tvalue)
|
|
|
|
|
QMessageBox().information(None, "提示", "修改成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def addRoom(self):
|
|
|
|
|
if int(self.staff.srole) > 1:
|
|
|
|
|
rid = self.rid_add.text()
|
|
|
|
|
rtype = self.rtype_add.currentText()
|
|
|
|
|
rstorey = self.rstorey_add.currentText()
|
|
|
|
|
rprice = self.rprice_add.text()
|
|
|
|
|
rdesc = self.rdesc_add.text()
|
|
|
|
|
rpic = self.path.text()
|
|
|
|
|
r = Room()
|
|
|
|
|
ret = r.addRoom(rid,rtype,rstorey,rprice,rdesc,rpic)
|
|
|
|
|
if ret == True:
|
|
|
|
|
QMessageBox().information(None, "提示", "添加房源成功!", QMessageBox.Yes)
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def setBrowerPath(self):
|
|
|
|
|
download_path = QtWidgets.QFileDialog.getExistingDirectory(self,"选择图片路径","D:\pictures")
|
|
|
|
|
self.path.setText(download_path)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class StaffOP(QMainWindow, Ui_StaffWindow):
|
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
|
super(StaffOP, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
self.inputdate.setCalendarPopup(True)
|
|
|
|
|
self.stackedWidget.setCurrentIndex(0)
|
|
|
|
|
self.staff = get_staff()
|
|
|
|
|
self.welcome.setText(self.staff.sname)
|
|
|
|
|
self.role.setText('权限:'+ self.staff.srole)
|
|
|
|
|
self.name.setText(self.staff.sname)
|
|
|
|
|
self.sname.setText(self.staff.sname)
|
|
|
|
|
self.ssex.setText(self.staff.ssex)
|
|
|
|
|
self.srole.setText(self.staff.srole)
|
|
|
|
|
self.stime.setText(str(self.staff.stime))
|
|
|
|
|
self.sphone.setText(self.staff.sphone)
|
|
|
|
|
self.sidcard.setText(self.staff.sidcard)
|
|
|
|
|
self.sidcard_2.setText(self.staff.sid)
|
|
|
|
|
self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex)
|
|
|
|
|
self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
|
|
|
# 绑定事件
|
|
|
|
|
self.searchNB.clicked.connect(self.searchStaff)
|
|
|
|
|
self.commitAdd.clicked.connect(self.addStaff)
|
|
|
|
|
self.commitDe.clicked.connect(self.deleteStaff)
|
|
|
|
|
self.commitTableDel.clicked.connect(self.tableDel)
|
|
|
|
|
self.commitTableModify.clicked.connect(self.tableModify)
|
|
|
|
|
|
|
|
|
|
def searchStaff(self):
|
|
|
|
|
sname = str(self.searchName.text())
|
|
|
|
|
s_sname = '%' + sname + '%'
|
|
|
|
|
if int(self.staff.srole) > 1:
|
|
|
|
|
self.data = self.staff.showAllStaff(s_sname)
|
|
|
|
|
# print(self.data)
|
|
|
|
|
self.rowNum = len(self.data)
|
|
|
|
|
self.columnNum = len(self.data[0])
|
|
|
|
|
print(self.rowNum)
|
|
|
|
|
print(self.columnNum)
|
|
|
|
|
self.searchTable.setRowCount(self.rowNum)
|
|
|
|
|
self.searchTable.setColumnCount(self.columnNum)
|
|
|
|
|
for i, da in enumerate(self.data):
|
|
|
|
|
# 字典转列表
|
|
|
|
|
da = list(da.values())
|
|
|
|
|
for j in range(self.columnNum):
|
|
|
|
|
self.itemContent = QTableWidgetItem(( '%s' ) % (da[j]))
|
|
|
|
|
self.searchTable.setItem(i, j, self.itemContent)
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def addStaff(self):
|
|
|
|
|
sid = self.inputsid.text().split()
|
|
|
|
|
sname = self.inputname.text().split()
|
|
|
|
|
if self.inputmale.isChecked():
|
|
|
|
|
ssex = '男'
|
|
|
|
|
elif self.inputfemale.isChecked():
|
|
|
|
|
ssex = '女'
|
|
|
|
|
else:
|
|
|
|
|
ssex = ''
|
|
|
|
|
stime = self.inputdate.date().toPyDate()
|
|
|
|
|
susername = self.inputuser.text().split()
|
|
|
|
|
spwd = self.inputpwd.text().split()
|
|
|
|
|
srole = self.inputrole.text().split()
|
|
|
|
|
sidcard = self.inputidcard.text().split()
|
|
|
|
|
sphone = self.inputphone.text().split()
|
|
|
|
|
if sid == '' or ssex == '' or sname == '' or stime == '' or susername == '' or spwd == '' \
|
|
|
|
|
or srole == '' or sidcard == '' or sphone == '':
|
|
|
|
|
QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
if int(self.staff.srole) > 1:
|
|
|
|
|
ret = self.staff.addStaff(sid,sname,ssex,stime,susername,spwd,srole,sidcard,sphone)
|
|
|
|
|
if ret:
|
|
|
|
|
QMessageBox().information(None, "提示", "添加成功!", QMessageBox.Yes)
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def deleteStaff(self):
|
|
|
|
|
sid = self.desid.text()
|
|
|
|
|
sname = self.dename.text()
|
|
|
|
|
sidcard = self.deidcard.text()
|
|
|
|
|
if sid == '' or sname == '' or sidcard == '':
|
|
|
|
|
QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
if int(self.staff.srole) > 1:
|
|
|
|
|
self.staff.deleteStaff(sid,sname,sidcard)
|
|
|
|
|
self.data = self.staff.showAllStaff('%%')
|
|
|
|
|
print(self.data)
|
|
|
|
|
self.rowNum = len(self.data)
|
|
|
|
|
self.columnNum = len(self.data[0])
|
|
|
|
|
self.deleteTable.setRowCount(self.rowNum)
|
|
|
|
|
self.deleteTable.setColumnCount(self.columnNum)
|
|
|
|
|
for i, da in enumerate(self.data):
|
|
|
|
|
# 字典转列表
|
|
|
|
|
da = list(da.values())
|
|
|
|
|
for j in range(self.columnNum):
|
|
|
|
|
self.itemContent = QTableWidgetItem(( '%s' ) % (da[j]))
|
|
|
|
|
self.deleteTable.setItem(i, j, self.itemContent)
|
|
|
|
|
QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes)
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def tableDel(self):
|
|
|
|
|
row_selected = self.searchTable.selectedItems()
|
|
|
|
|
if len(row_selected) == 0:
|
|
|
|
|
return
|
|
|
|
|
row = row_selected[0].text()
|
|
|
|
|
self.staff.delStaff(row)
|
|
|
|
|
row = row_selected[0].row()
|
|
|
|
|
self.searchTable.removeRow(row)
|
|
|
|
|
QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
def tableModify(self):
|
|
|
|
|
row_selected = self.searchTable.selectedItems()
|
|
|
|
|
if len(row_selected) == 0:
|
|
|
|
|
return
|
|
|
|
|
row = row_selected[0].row()
|
|
|
|
|
column = row_selected[0].column()
|
|
|
|
|
value = self.modifyvalue.text()
|
|
|
|
|
self.staff.modifyStaff(row,column,value)
|
|
|
|
|
tvalue = QTableWidgetItem(('%s') % (value))
|
|
|
|
|
self.searchTable.setItem(row,column, tvalue)
|
|
|
|
|
QMessageBox().information(None, "提示", "修改成功!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class mpWindow(QMainWindow, Ui_MpwdWindow):
|
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
|
super(mpWindow, self).__init__(parent)
|
|
|
|
|
self.setupUi(self)
|
|
|
|
|
# self.retLogin.clicked.connect(self.returnToMain)
|
|
|
|
|
self.commitButton.clicked.connect(self.commit)
|
|
|
|
|
|
|
|
|
|
# def returnToMain(self):
|
|
|
|
|
# from service.mainControl import MainWindow
|
|
|
|
|
# self.Mainwindow = Ui_LoginWindow()
|
|
|
|
|
# self.close()
|
|
|
|
|
# self.Mainwindow.show()
|
|
|
|
|
|
|
|
|
|
def commit(self):
|
|
|
|
|
newPwd = self.lineEdit_newpwd.text()
|
|
|
|
|
oldPwd = self.lineEdit_oldpasswd.text()
|
|
|
|
|
sid = self.lineEdit_sid.text()
|
|
|
|
|
if newPwd == '' or oldPwd == '' or sid == '':
|
|
|
|
|
QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes)
|
|
|
|
|
return False
|
|
|
|
|
s = Staff()
|
|
|
|
|
ret = s.modifyPasswd(sid, newPwd, oldPwd)
|
|
|
|
|
if ret == True:
|
|
|
|
|
QMessageBox().information(None, "提示", "修改密码成功,进入登录页面!", QMessageBox.Yes)
|
|
|
|
|
# from Homepage import HomePage
|
|
|
|
|
self.tmpWindow = LoginPage()
|
|
|
|
|
self.close()
|
|
|
|
|
self.tmpWindow.show()
|
|
|
|
|
else:
|
|
|
|
|
QMessageBox().information(None, "提示", "修改密码失败!", QMessageBox.Yes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
|
widget = LoginPage()
|
|
|
|
|
widget.show()
|
|
|
|
|
sys.exit(app.exec_())
|