50 Commits

Author SHA1 Message Date
Danamir
c24a1fa8c6 Last coommit before refactoring 2025-08-04 10:33:21 +03:00
1c33775f92 fixed table 2024-05-22 15:58:16 +03:00
43ab114e1a fixed table 2024-05-22 13:42:52 +03:00
946ad5c31f add sorting func 2024-05-18 20:58:55 +03:00
Your Name
7b956d89bf merge head by alembic 2024-05-06 08:29:58 -04:00
0891abc0e1 add fumc for login 2024-05-06 15:23:24 +03:00
08393f6685 Merge branch 'main' of https://git.danamir.su/danamir/asuinventory 2024-05-06 15:15:23 +03:00
9cde4e2c7d add readexcell func 2024-05-06 15:14:47 +03:00
Your Name
0a60a16344 bug fix 2024-04-09 23:52:19 +03:00
Your Name
496ef3fa9d bug fix 2024-04-09 23:51:48 +03:00
Your Name
3494e5d17c Merge branch 'main' of https://git.danamir.su/danamir/asuinventory 2024-04-08 10:49:58 +03:00
Your Name
29b0070260 add reload page 2024-04-08 10:47:54 +03:00
Your Name
2e9cc918d5 update db schema 2024-04-05 01:26:46 +03:00
Your Name
d943894ae8 all done2 2024-04-04 22:55:38 +03:00
Your Name
1c901ddb00 all done 2024-04-04 22:51:45 +03:00
Your Name
f9a188c927 add data to db 2024-04-04 20:00:26 +03:00
Your Name
1fce4b41c0 add modal fucnc 2024-04-04 19:31:07 +03:00
Your Name
7ccbba06c1 add click on row 2024-04-04 12:48:43 +03:00
Your Name
63115f0328 asdsadsa 2024-04-03 23:28:55 +03:00
cb862c63a6 add new func 2024-04-03 22:50:16 +03:00
927d8d75a9 edit db scheme 2024-04-03 22:37:57 +03:00
509a3ee913 edit gitignore 2024-04-03 22:31:08 +03:00
86f0f9d977 db check 2024-04-03 22:24:02 +03:00
0c4bf4b9fd 12333 2024-04-03 20:05:36 +03:00
d71945ecb2 11111 2024-04-03 20:02:05 +03:00
3cd5fe63b5 12311 2024-04-03 20:01:50 +03:00
0c6001b297 Resolve merge conflict by incorporating both suggestions 2024-04-03 19:58:22 +03:00
682b6c4ffd 1112 2024-04-03 19:57:28 +03:00
9c859d4660 111 2024-04-03 19:55:02 +03:00
Your Name
f6b720e4eb Merge branch 'dev' of https://git.danamir.su/danamir/asuinventory into dev 2024-04-03 12:17:54 +03:00
Your Name
2fda39a449 123 2024-04-03 12:11:33 +03:00
291e5d0e25 db upgrade 2024-04-03 12:08:40 +03:00
45d8dfd870 change js 2024-04-03 12:04:44 +03:00
Your Name
4c6166c907 add to model 2024-04-02 23:09:27 +03:00
Your Name
2c51bdc695 Merge branch 'dev' 2024-04-02 23:07:44 +03:00
Your Name
c2f3f10c9b add to model 2024-04-02 23:04:45 +03:00
Your Name
f1c755c6ec 123 2024-04-02 22:59:04 +03:00
d2b01f56ec Merge branch 'dev' of https://git.danamir.su/danamir/asuinventory into dev 2024-04-02 22:50:42 +03:00
34ea972560 add new fictures 2024-04-02 22:50:36 +03:00
87c4ebe33e db schema update 2024-04-02 16:34:06 +03:00
Your Name
3a3e62a375 111 2024-04-01 22:43:02 +03:00
Your Name
bf93bf0fdb local changes 2024-04-01 22:37:14 +03:00
Your Name
027b1dc855 1111 2024-04-01 22:35:26 +03:00
4a47746e9d merge 2024-04-01 15:21:43 +03:00
12a63278f7 Merge branch 'dev' 2024-04-01 15:17:53 +03:00
294d646bb6 remove cache 2024-04-01 15:17:12 +03:00
e464960fe5 rename column to model 2024-04-01 15:11:24 +03:00
1b472f4fee some func 2024-04-01 13:05:38 +03:00
54c61b9756 some func 2024-04-01 13:05:06 +03:00
68e50ee4a8 123 2024-04-01 13:01:51 +03:00
42 changed files with 1061 additions and 178 deletions

13
.gitignore vendored
View File

@@ -2,13 +2,10 @@
.vscode .vscode
instance instance
venv/ venv/
__pychache__/
123 123
*.csv
*.db
zabalans.csv
project.db
c*.txt c*.txt
migrations
__pycache__
.idea

BIN
VedomostMOL.xls Normal file

Binary file not shown.

BIN
VedomostMOL.xlsx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

152
app.py
View File

@@ -8,7 +8,6 @@ import csv
import random import random
from urllib.parse import unquote from urllib.parse import unquote
app = Flask(__name__) app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db" app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
@@ -22,7 +21,13 @@ db.init_app(app)
migrate = Migrate(app, db) migrate = Migrate(app, db)
@app.route("/", methods=['GET', 'POST'])
@app.route("/login", methods=['GET', 'POST'])
def login():
return render_template('login.html')
@app.route("/", methods=['GET', 'POST'])
def index(): def index():
results = [] results = []
results1 = [] results1 = []
@@ -46,7 +51,7 @@ def index():
results1.append(s.nazvanie) results1.append(s.nazvanie)
aud = db.session.get(Auditory, s.aud_id) aud = db.session.get(Auditory, s.aud_id)
results1.append(aud.audnazvanie) results1.append(aud.audnazvanie)
return render_template('index.html', aud=all_aud, results=results, res1=results1) return render_template('index.html', aud=all_aud, results=results, res1=results1)
return render_template('index.html', aud=all_aud, results=results, res1=results1) return render_template('index.html', aud=all_aud, results=results, res1=results1)
@@ -91,7 +96,7 @@ def searchonaud():
return render_template('searchonaud.html', aud=all_aud, res=res) return render_template('searchonaud.html', aud=all_aud, res=res)
@app.route("/addaudtodb", methods=['GET', 'POST']) @app.route("/addaudtodb", methods=['GET', 'POST'])
def addaudtodb(): def addaudtodb():
if request.method == 'POST': if request.method == 'POST':
aud = request.form.get('auditory') aud = request.form.get('auditory')
@@ -114,25 +119,38 @@ def addoborudtodb():
@app.route('/all') @app.route('/all')
def alloborud(): def alloborud():
return render_template('all.html')
result = db.session.query(Oboruds).order_by(Oboruds.invNumber).all()
res = [] @app.route('/getall')
def getall():
oborud = db.session.query(Oboruds).order_by(Oboruds.invNumber).all()
for ob in result: results = []
if ob.aud_id is not None: for oboruds in oborud:
aud = db.session.query(Auditory).filter_by(id=ob.aud_id).first() if oboruds.aud_id is None:
res.append([ob.invNumber, ob.nazvanie, aud.audnazvanie]) results.append({
'invNumber': oboruds.invNumber,
'nazvanie': oboruds.nazvanie,
'raspologenie': oboruds.raspologenie,
'balancenumber': oboruds.balancenumber,
'kolichestvo': oboruds.kolichestvo,
'numberppasu': oboruds.numberppasu,
'numberved': oboruds.numberved,
'aud': ""})
else: else:
res.append([ob.invNumber, ob.nazvanie]) aud = db.session.query(Auditory).filter_by(id=oboruds.aud_id).first()
results.append({
'invNumber': oboruds.invNumber,
'nazvanie': oboruds.nazvanie,
'raspologenie': oboruds.raspologenie,
'balancenumber': oboruds.balancenumber,
'kolichestvo': oboruds.kolichestvo,
'numberppasu': oboruds.numberppasu,
'numberved': oboruds.numberved,
'aud': aud.audnazvanie})
return render_template('all.html', res=res) return jsonify(results)
@app.route('/updateduplicate', methods=['GET', 'POST'])
def updateduplicate():
if request.method == 'POST':
aud = request.form.get('auditory_dubl')
@app.route('/vneaud', methods=['GET', 'POST']) @app.route('/vneaud', methods=['GET', 'POST'])
@@ -143,12 +161,12 @@ def vneaud():
ak = db.session.query(Oboruds).all() ak = db.session.query(Oboruds).all()
for dt in data: for dt in data:
res.append([dt.invNumber, dt.nazvanie, dt.typeBalanse]) res.append([dt.invNumber, dt.nazvanie])
return render_template('vneaud.html', res=res, kolvo=len(data), all_kol=len(ak)) return render_template('vneaud.html', res=res, kolvo=len(data), all_kol=len(ak))
@app.route('/zametki', methods=['GET', 'POST']) @app.route('/zametki', methods=['GET', 'POST'])
def zametki(): def zametki():
zam = db.session.query(Zametki).filter(Zametki.rmdt == None).all() zam = db.session.query(Zametki).filter(Zametki.rmdt == None).all()
if request.method == 'POST': if request.method == 'POST':
@@ -171,7 +189,7 @@ def js2():
return jsonify({'success': True}), 200, {'ContentType': 'application/json'} return jsonify({'success': True}), 200, {'ContentType': 'application/json'}
@app.route('/zamsearch', methods=['GET', 'POST']) @app.route('/zamsearch', methods=['GET', 'POST'])
def zamsearch(): def zamsearch():
p = request.form.get('srch') p = request.form.get('srch')
@@ -179,42 +197,61 @@ def zamsearch():
Zametki.txtzam.contains(p)).ll() Zametki.txtzam.contains(p)).ll()
zam = [] zam = []
for item in searchedZam: for item in searchedZam:
zam.append([item.txtzam, item.created_date]) zam.append([item.txtzam, item.created_date])
return render_template('zametki.html', zam=zam) return render_template('zametki.html', zam=zam)
@app.route('/addraspved', methods=['GET', 'POST']) @app.route('/addraspved', methods=['GET', 'POST'])
def addraspved(): def addraspved():
if request.method == 'POST': if request.method == 'POST':
query_string = request.data.decode() query_string = request.data.decode()
print(query_string)
un_query_string = unquote(unquote(query_string)).split(',') un_query_string = unquote(unquote(query_string)).split(',')
print(un_query_string)
ob = db.session.query(Oboruds).filter_by(invNumber=un_query_string[0]).first() ob = db.session.query(Oboruds).filter_by(invNumber=un_query_string[0]).first()
ob.raspologenie=un_query_string[2]
ob.numberved = un_query_string[1] ob.numberved = un_query_string[1]
ob.kolichestvo = un_query_string[2]
ob.balancenumber = un_query_string[3]
ob.raspologenie = un_query_string[4]
db.session.commit() db.session.commit()
db.session.close() db.session.close()
return jsonify({'success': True}, 200, {'ContentType': 'application/json'}) return jsonify({'success': True}, 200, {'ContentType': 'application/json'})
@app.route('/addoborudasu', methods=['GET', 'POST'])
def addoborud():
if request.method == 'POST':
query_string = request.data.decode()
un_query_string = unquote(unquote(query_string)).split(',')
db.session.add(
Oboruds(invNumber=un_query_string[0],
nazvanie=un_query_string[5],
raspologenie=un_query_string[4],
numberved=un_query_string[1],
kolichestvo=un_query_string[2],
balancenumber=un_query_string[3]
)
)
db.session.commit()
return jsonify({'success': True}, 200, {'ContentType': 'application/json'})
# ================================================================================== # ==================================================================================
def ranomraspr(): def ranomraspr():
with app.app_context(): with app.app_context():
while len(db.session.query(Oboruds).filter(Oboruds.aud_id == None).all()) > 0: while len(db.session.query(Oboruds).filter(Oboruds.aud_id is None).all()) > 0:
audid = random.choice(db.session.query(Auditory).all()) audid = random.choice(db.session.query(Auditory).all())
oborud = random.choice(db.session.query(Oboruds).filter(Oboruds.aud_id == None).all()) oborud = random.choice(db.session.query(Oboruds).filter(Oboruds.aud_id is None).all())
oborud.aud_id = audid.id oborud.aud_id = audid.id
db.session.commit() db.session.commit()
def createdb(): def createdb():
@@ -260,9 +297,48 @@ def createdb():
db.session.commit() db.session.commit()
def write2excell():
wb = xlrd.open_workbook("VedIsh.xls")
sheet = wb.sheet_by_index(0)
newFile = copy(wb)
newSheet = newFile.get_sheet(0)
invNomerColum = 6
column_index = 1
for row_idx in range(sheet.nrows):
cell_value = sheet.cell(row_idx, column_index)
if cell_value:
tmp_inv_number = str(cell_value).split(':')[1]
try:
a = tmp_inv_number[1:-1]
inv_number = int(tmp_inv_number[1:-1])
with app.app_context():
auditory_obj = db.session.query(Auditory).join(Oboruds, Oboruds.aud_id == Auditory.id).filter(
Oboruds.invNumber == inv_number).first()
print(auditory_obj.audnazvanie)
# cur.execute("SELECT aud.audnazvanie FROM oboruds AS ob JOIN auditory AS aud ON ob.aud_id = aud.id WHERE ob.invNumber = ?", (inv_number,))
except:
pass
"""
else:
#newSheet.write(row_idx, invNomerColum, "Нет инв номера")
pass
newFile.save("Ved31.xls")
"""
if __name__ == '__main__': if __name__ == '__main__':
#write2excell()
#ranomraspr() app.run(debug=True, host='0.0.0.0', port='3800')
#createdb()
app.run(debug=True, host='0.0.0.0', port='3800')

View File

@@ -0,0 +1,32 @@
"""empty message
Revision ID: 10da3140ab2e
Revises: 4eacd6dcd461
Create Date: 2024-04-05 01:25:48.931573
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '10da3140ab2e'
down_revision = '4eacd6dcd461'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('kolichestvo', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.drop_column('kolichestvo')
# ### end Alembic commands ###

View File

@@ -0,0 +1,54 @@
"""empty message
Revision ID: 4eacd6dcd461
Revises: c208cbc25232
Create Date: 2024-04-03 23:25:42.271936
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '4eacd6dcd461'
down_revision = 'c208cbc25232'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('numberved', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('numberppasu', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('balancenumber', sa.Integer(), nullable=True))
batch_op.alter_column('nazvanie',
existing_type=sa.TEXT(length=500),
type_=sa.String(length=500),
existing_nullable=True)
batch_op.alter_column('raspologenie',
existing_type=sa.TEXT(length=200),
type_=sa.String(length=200),
existing_nullable=True)
batch_op.drop_column('buhnumberpp')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('buhnumberpp', sa.VARCHAR(length=100), nullable=True))
batch_op.alter_column('raspologenie',
existing_type=sa.String(length=200),
type_=sa.TEXT(length=200),
existing_nullable=True)
batch_op.alter_column('nazvanie',
existing_type=sa.String(length=500),
type_=sa.TEXT(length=500),
existing_nullable=True)
batch_op.drop_column('balancenumber')
batch_op.drop_column('numberppasu')
batch_op.drop_column('numberved')
# ### end Alembic commands ###

View File

@@ -0,0 +1,34 @@
"""empty message
Revision ID: 6fc3d1adb061
Revises: be7c94c549e5
Create Date: 2024-04-02 16:32:23.180273
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '6fc3d1adb061'
down_revision = 'be7c94c549e5'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('buhnumberpp', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('kolichestvo', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.drop_column('kolichestvo')
batch_op.drop_column('buhnumberpp')
# ### end Alembic commands ###

View File

@@ -0,0 +1,32 @@
"""empty message
Revision ID: 885bdd7b5161
Revises: be7c94c549e5
Create Date: 2024-04-02 23:03:59.401369
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '885bdd7b5161'
down_revision = 'be7c94c549e5'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('kolichestvo', sa.Integer(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.drop_column('kolichestvo')
# ### end Alembic commands ###

View File

@@ -0,0 +1,54 @@
"""empty message
Revision ID: 8e5efc4de919
Revises: c208cbc25232
Create Date: 2024-04-03 22:36:46.208266
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '8e5efc4de919'
down_revision = 'c208cbc25232'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('numberved', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('numberppasu', sa.String(length=100), nullable=True))
batch_op.add_column(sa.Column('balancenumber', sa.Integer(), nullable=True))
batch_op.alter_column('nazvanie',
existing_type=sa.TEXT(length=500),
type_=sa.String(length=500),
existing_nullable=True)
batch_op.alter_column('raspologenie',
existing_type=sa.TEXT(length=200),
type_=sa.String(length=200),
existing_nullable=True)
batch_op.drop_column('buhnumberpp')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('buhnumberpp', sa.TEXT(length=100), nullable=True))
batch_op.alter_column('raspologenie',
existing_type=sa.String(length=200),
type_=sa.TEXT(length=200),
existing_nullable=True)
batch_op.alter_column('nazvanie',
existing_type=sa.String(length=500),
type_=sa.TEXT(length=500),
existing_nullable=True)
batch_op.drop_column('balancenumber')
batch_op.drop_column('numberppasu')
batch_op.drop_column('numberved')
# ### end Alembic commands ###

View File

@@ -0,0 +1,34 @@
"""empty message
Revision ID: be7c94c549e5
Revises: 8e838956713f
Create Date: 2024-04-01 15:09:52.082987
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'be7c94c549e5'
down_revision = '8e838956713f'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('balancenumber', sa.String(length=30), nullable=True))
batch_op.drop_column('typeBalanse')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('oboruds', schema=None) as batch_op:
batch_op.add_column(sa.Column('typeBalanse', sa.VARCHAR(length=30), nullable=True))
batch_op.drop_column('balancenumber')
# ### end Alembic commands ###

View File

@@ -0,0 +1,24 @@
"""empty message
Revision ID: c208cbc25232
Revises: 6fc3d1adb061, 885bdd7b5161
Create Date: 2024-04-03 22:11:15.008480
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c208cbc25232'
down_revision = ('6fc3d1adb061', '885bdd7b5161')
branch_labels = None
depends_on = None
def upgrade():
pass
def downgrade():
pass

View File

@@ -0,0 +1,24 @@
"""empty message
Revision ID: d4a8e4c9e65a
Revises: 10da3140ab2e, 8e5efc4de919
Create Date: 2024-05-06 08:27:39.088982
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'd4a8e4c9e65a'
down_revision = ('10da3140ab2e', '8e5efc4de919')
branch_labels = None
depends_on = None
def upgrade():
pass
def downgrade():
pass

View File

@@ -16,17 +16,17 @@ class Oboruds(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True) id = db.Column(db.Integer, primary_key=True, autoincrement=True)
invNumber=db.Column(db.Integer) invNumber=db.Column(db.Integer)
nazvanie=db.Column(db.String(500)) nazvanie=db.Column(db.String(500))
typeBalanse = db.Column(db.String(30))
raspologenie = db.Column(db.String(200)) raspologenie = db.Column(db.String(200))
numberved = db.Column(db.String(100)) numberved = db.Column(db.String(100))
numberppasu = db.Column(db.String(100))
kolichestvo = db.Column(db.Integer)
balancenumber = db.Column(db.Integer)
aud_id = db.Column(db.Integer, db.ForeignKey(Auditory.id)) aud_id = db.Column(db.Integer, db.ForeignKey(Auditory.id))
class Zametki(db.Model): class Zametki(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True) id = db.Column(db.Integer, primary_key=True, autoincrement=True)
txtzam=db.Column(db.String(10000)) txtzam=db.Column(db.String(10000))
created_date = db.Column(db.DateTime, default=datetime.datetime.utcnow) created_date = db.Column(db.DateTime, default=datetime.datetime.utcnow)
rmdt = db.Column(db.DateTime) rmdt = db.Column(db.DateTime)

6
serve.py Normal file
View File

@@ -0,0 +1,6 @@
from waitress import serve
from app import app
if __name__ == '__main__':
serve(app, port='3800')

View File

@@ -8,7 +8,7 @@ body {
min-width: 580px; min-width: 580px;
} }
.row{ .row {
text-align: center; text-align: center;
@@ -35,7 +35,7 @@ a:hover {
color: #041322; color: #041322;
} }
a{ a {
color: #041322; color: #041322;
@@ -54,7 +54,7 @@ button {
.card { .card {
width: 200px; /*width: 200px; */
margin: 10px; margin: 10px;
border-radius: 15px; border-radius: 15px;
border-color: #E07D54; border-color: #E07D54;
@@ -67,42 +67,62 @@ h5 {
} }
.hidden-column {
.hidden-column{ display: none;
display: none;
} }
nav{ nav {
width:100%; width: 100%;
} }
.table{ table {
word-break: break-all; word-break: break-all;
border-collapse: separate !important;
} }
.aud{ .table td {
font-size: 14px;
padding: 0;
max-width: 10rem;
word-break: break-all;
border-collapse: separate !important;
}
.aud {
width: 110px; width: 110px;
} }
.inv{ .inv {
width: 400px; width: 400px;
} }
.rasp{ .rasp {
max-width: 200px; width: 200px;
word-break: break-word; word-break: break-word;
white-space: nowrap;
} }
#modal_matcenn{ #modal_matcenn {
margin-left: 20px; margin-left: 20px;
} }
.datatable {
background-color: whitesmoke;
}
.datatable th:nth-child(7) {
width: 200px;
}
@media print { @media print {
*{ * {
font-family: "Times New Roman", Times, serif; font-family: "Times New Roman", Times, serif;
} }
@@ -130,29 +150,30 @@ nav{
width: 100%; width: 100%;
} }
.no-print { .no-print {
display: none; display: none;
} }
table.rs-table-bordered{ table.rs-table-bordered {
border:1px solid #000000; border: 1px solid #000000;
margin-top:20px; margin-top: 20px;
font-size: 14pt; font-size: 14pt;
} }
table.rs-table-bordered > thead > tr > th{
border:1px solid #000000; table.rs-table-bordered > thead > tr > th {
border: 1px solid #000000;
padding: 2px; padding: 2px;
font-size: 14pt; font-size: 14pt;
} }
table.rs-table-bordered > tbody > tr > td{
border:1px solid #000000; table.rs-table-bordered > tbody > tr > td {
border: 1px solid #000000;
padding: 10px; padding: 10px;
font-size: 14pt; font-size: 14pt;
} }
} }

282
static/js/allmatc.js Normal file
View File

@@ -0,0 +1,282 @@
function clearTable() {
var table = document.getElementById("alldatatable");
var rowCount = table.rows.length;
// Iterate through each row and remove it
for (var i = rowCount - 1; i > 0; i--) {
table.deleteRow(i);
}
}
function getAllData() {
clearTable();
let tableBody = document.getElementById('alldatatable').getElementsByTagName("tbody")[0];
i = 0;
$.getJSON("/getall", function (data) {
$.each(data, function (index, item) {
let newRow = tableBody.insertRow(tableBody.rows.length);
let cell1 = newRow.insertCell(0);
let cell2 = newRow.insertCell(1);
let cell3 = newRow.insertCell(2);
let cell4 = newRow.insertCell(3);
let cell5 = newRow.insertCell(4);
let cell6 = newRow.insertCell(5);
let cell7 = newRow.insertCell(6);
let cell8 = newRow.insertCell(7);
i++;
cell1.innerText = i;
cell2.innerText = item.numberved;
cell3.innerText = item.invNumber;
cell4.innerText = item.nazvanie;
cell5.innerText = item.kolichestvo;
cell6.innerText = item.balancenumber;
cell7.innerText = item.aud;
cell8.innerText = item.raspologenie;
$(newRow).data('itemData', i);
$(newRow).on("click", function () {
let vednumbertxt = newRow.cells[1].innerText;
let invnomertxt = newRow.cells[2].innerText;
let nazvanietxt = newRow.cells[3].innerText;
let kolvotxt = newRow.cells[4].innerText;
let schettxt = newRow.cells[5].innerText;
let raspologtxt = newRow.cells[7].innerText;
$('#getmodal').modal('show');
let vedomost = document.getElementById('modal_vednumber')
let invnom = document.getElementById('modal_invnom')
let matcen = document.getElementById('modal_matcenn')
let kolvo = document.getElementById('modal_kolvo')
let balancenumber = document.getElementById('modal_balance')
let rasp = document.getElementById('modal_rapolog')
invnom.innerText = invnomertxt
matcen.innerText = nazvanietxt.substring(0, 20)
if (vednumbertxt.length > 0) {
vedomost.value = vednumbertxt;
}
if (kolvotxt.length > 0) {
kolvo.value = kolvotxt;
}
if (schettxt.length > 0) {
balancenumber.value = schettxt;
}
if (raspologtxt.length > 0) {
rasp.value = raspologtxt;
}
});
});
});
}
$(document).ready(function () {
getAllData();
});
$('#modalclose').click(function () {
let vednumber = document.getElementById('modal_vednumber')
let kolvo = document.getElementById('modal_kolvo')
let balancenumber = document.getElementById('modal_balance')
let matcen = document.getElementById('modal_matcenn')
let rasp = document.getElementById('modal_rapolog')
vednumber.value = '';
kolvo.value = '';
balancenumber.value = '';
matcen.value = '';
rasp.value = '';
$('#getmodal').modal('hide')
})
$('#modalsavetodb').click(function () {
let invnom = document.getElementById('modal_invnom')
let vednumber = document.getElementById('modal_vednumber')
let kolvo = document.getElementById('modal_kolvo')
let balancenumber = document.getElementById('modal_balance')
let matcen = document.getElementById('modal_matcenn')
let rasp = document.getElementById('modal_rapolog')
let nazv = document.getElementById('modal_nazvanie')
let changeddata = new Array()
changeddata[0] = invnom.text;
changeddata[1] = vednumber.value;
changeddata[2] = kolvo.value;
changeddata[3] = balancenumber.value;
changeddata[4] = rasp.value;
let sendData = changeddata.join(',')
console.log(sendData)
$.ajax({
url: "/addraspved",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: sendData,
success: function () {
$('#getmodal').modal('hide')
vednumber.value = '';
kolvo.value = '';
balancenumber.value = '';
matcen.value = '';
rasp.value = '';
changeddata = [];
window.location.reload();
},
})
})
$('#addoborud').click(function () {
$('#addmodal').modal('show');
})
$('#modal2savetodb').click(function () {
let invnomer = document.getElementById('modal2_invnom')
let vednumber = document.getElementById('modal2_vednumber')
let kolvo = document.getElementById('modal2_kolvo')
let balancenumber = document.getElementById('modal2_balance')
let matcen = document.getElementById('modal2_matcenn')
let rasp = document.getElementById('modal2_rapolog')
let nazv = document.getElementById('modal2_nazvanie')
let changeddata = new Array()
changeddata[0] = invnomer.value;
changeddata[1] = vednumber.value;
changeddata[2] = kolvo.value;
changeddata[3] = balancenumber.value;
changeddata[4] = rasp.value;
changeddata[5] = nazv.value;
let sendData = changeddata.join(',')
console.log(sendData)
$.ajax({
url: "/addoborudasu",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: sendData,
success: function () {
vednumber.value = '';
invnomer.value = '';
nazvanie.value = '';
kolvo.value = '';
balancenumber.value = '';
matcen.value = '';
rasp.value = '';
$('#addmodal').modal('hide')
window.location.reload()
},
})
})
$('#modal2close').click(function () {
let vednumber = document.getElementById('modal2_vednumber')
let invnomer = document.getElementById('modal2_invnom')
let nazvanie = document.getElementById('modal2_nazvanie')
let kolvo = document.getElementById('modal2_kolvo')
let balancenumber = document.getElementById('modal2_balance')
let matcen = document.getElementById('modal2_matcenn')
let rasp = document.getElementById('modal2_rapolog')
vednumber.value = '';
invnomer.value = '';
nazvanie.value = '';
kolvo.value = '';
balancenumber.value = '';
matcen.value = '';
rasp.value = '';
$('#addmodal').modal('hide')
})
$('#modal2').on('hidden.bs.modal', function () {
location.reload();
})
$(document).ready(function () {
// Слушаем событие клика по заголовкам таблицы
$('#alldatatable thead th').on('click', function () {
var columnIndex = $(this).index(); // Индекс колонки
var sortColumn = $(this).text().toLowerCase(); // Текст заголовка колонки
// Сортируем таблицу по выбранной колонке
$('#alldatatable tbody tr').sort(function (a, b) {
var valA;
var valB;
if (isNaN(parseFloat($(a).find('td:eq(' + columnIndex + ')').text()))) {
// если это текстовая колонка, то сортируем по алфавиту
valA = $(a).find('td:eq(' + columnIndex + ')').text().toLowerCase();
valB = $(b).find('td:eq(' + columnIndex + ')').text().toLowerCase();
} else {
// если это числовая колонка, то сортируем по числовому значению
valA = parseFloat($(a).find('td:eq(' + columnIndex + ')').text());
valB = parseFloat($(b).find('td:eq(' + columnIndex + ')').text());
}
if (valA < valB) return -1;
if (valA > valB) return 1;
return 0;
}).appendTo('#alldatatable tbody');
// Обновляем классы для активной колонки
$('#alldatatable thead th').removeClass('active');
$(this).addClass('active');
});
});

35
static/js/allmatcen.js Normal file
View File

@@ -0,0 +1,35 @@
function getData(){
const audid = document.getElementById('auditory')
$.ajax({
url: "/getall",
type: "get",
contentType: 'application/json',
dataType: 'json',
success: function(response){
var data = response;
const table = document.getElementById('datatable')
table.innerHTML = ''
var headTable = '<tr> <td >Номер в Инв. вед</td> <td id="invnomer">Инв. номер</td><td>Название</td><td class="no-print aud">Аудитория</td> <td >Расположение</td> <td id="proverka"class="hidden-column"> Проверено</td> </tr>'
table.innerHTML += headTable
var tr =""
data.forEach(element => {
tr += '<tr onclick="tableclick(this)">'
tr += '<td>' + element.num_ved + '</td>'
tr += '<td clas="inv">' + element.inv_number + '</td>'
tr += '<td>' + element.oboruds_id + '</td>'
tr += '<td class="no-print">' + element.auditory_name + '</td>'
tr += '<td class="rasp">' +element.raspolog + '</td>'
tr += '<td>' + '\n' + '</td>'
tr += '</tr>'
});
table.innerHTML += tr
}
})
}

View File

@@ -16,9 +16,9 @@ function getData(){
var data = response; var data = response;
const table = document.getElementById('datatable') const table = document.getElementById('datatable')
table.innerHTML = ''
var headTable = '<tr> <td >Номер в Инв. вед</td> <td id="invnomer">Инв. номер</td><td>Название</td><td class="no-print aud">Аудитория</td> <td >Расположение</td> <td id="proverka"class="hidden-column"> Проверено</td> </tr>' var headTable = '<tr> <td >Номер в Инв. вед</td> <td id="invnomer">Инв. номер</td><td>Название</td><td class="no-print aud">Аудитория</td> <td >Расположение</td> <td id="proverka"class="hidden-column"> Проверено</td> </tr>'
table.innerHTML += headTable
var tr ="" var tr =""
@@ -33,7 +33,7 @@ function getData(){
tr += '</tr>' tr += '</tr>'
}); });
table.innerHTML += tr table.innerHTML = headTable + tr
} }
}) })
} }

View File

@@ -3,38 +3,145 @@
{% block content %} {% block content %}
<div class="row"> <!-- Modal -->
<div class="card col-md-10 col-10"> <div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="card-body"> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body" id="textarea">
<form> <div class="row">
<h3 class=" no-print card-title"> Все мат. ценности </h3> <a id="modal_invnom"> </a><a id="modal_matcenn"></a>
<button id="printallbutton"> Печать </button>
<table class="table pagebreak" col-md-10>
<thead>
<tr>
<th scope="col">Инв. номер</th>
<th scope="col">Название</th>
<th scope="col">Аудитория</th>
</tr>
</thead>
{% for item in res: %}
<tr>
<td> <input type="hidden" name="invnomer" value="{{ item[0] }}"> {{ item[0] }} </td>
<td> {{ item[1] }} </td>
<td>
{{ item[2] }}
</td>
</tr>
{% endfor %}
</table>
</form>
</div> </div>
<div class="row">
№ из ведомости
<input type="text" class="form-control" id ='modal_vednumber' placeholder="Номер из ведомости">
</div>
<div class="row">
Количество
<input type="text" class="form-control" id ='modal_kolvo' placeholder="Количество">
</div>
<div class="row">
Балансовый счёт
<input type="text" class="form-control" id ='modal_balance' placeholder="Балансовый счёт">
</div>
<div class="row">
Расположение
<input type="text" class="form-control" id ='modal_rapolog' placeholder="Введите расположение">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть</button>
<button type="button" class="btn btn-primary" id="modalsavetodb" >Сохранить изменения</button>
</div>
</div> </div>
</div>
</div>
</div>
<!-- Modal2 -->
<div class="modal fade" id="addmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body" id="textarea">
<div class="row">
<a id="modal_invnom"> </a><a id="modal2_matcenn"></a>
</div>
<div class="row">
№ из ведомости
<input type="text" class="form-control" id ='modal2_vednumber' placeholder="Номер из ведомости">
<div class="row">
Инвентарный номер
<input type="text" class="form-control" id ='modal2_invnom' placeholder="Инвентарный номер">
</div>
</div>
<div class="row">
Название
<input type="text" class="form-control" id ='modal2_nazvanie' placeholder="Название">
</div>
<div class="row">
Количество
<input type="text" class="form-control" id ='modal2_kolvo' placeholder="Количество">
</div>
<div class="row">
Балансовый счёт
<input type="text" class="form-control" id ='modal2_balance' placeholder="Балансовый счёт">
</div>
<div class="row">
Расположение
<input type="text" class="form-control" id ='modal2_rapolog' placeholder="Введите расположение">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modal2close">Закрыть</button>
<button type="button" class="btn btn-primary" id="modal2savetodb" >Сохранить изменения</button>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<h3 id ='123' class=" no-print"> Все мат. ценности </h3>
</div> </div>
<div class="row col-12">
<button class="button" id="printallbutton"> Печать </button>
</div>
<div class="row col-12">
<button class="button" id="addoborud"> Добавить </button>
</div>
<div class="row">
<div class="card col-md-11 table-responsive">
<table id="alldatatable" class="alldatable table pagebreak" >
<thead>
<tr>
<th scope="col"><br>п/п <br>АСУ</th>
<th scope="col">№ п/п <br>вед</th>
<th scope="col">Инв. номер</th>
<th scope="col">Название</th>
<th scope="col">Кол-во</th>
<th scope="col">Счёт</th>
<th scope="col">Ауд - я</th>
<th scope="col">Расположение</th>
</tr>
</thead>
<tr>
</tr>
</table>
</div>
</div>
<script src="{{url_for('static', filename='js/allmatc.js') }}"></script>
{% endblock %} {% endblock %}

View File

@@ -10,3 +10,4 @@
<script src="{{url_for('static', filename='js/searchonaud.js') }}"></script> <script src="{{url_for('static', filename='js/searchonaud.js') }}"></script>
<script src="{{url_for('static', filename='js/print.js') }}"></script> <script src="{{url_for('static', filename='js/print.js') }}"></script>
<script src="{{url_for('static', filename='js/modal.js') }}"></script> <script src="{{url_for('static', filename='js/modal.js') }}"></script>
<script src="{{url_for('static', filename='js/allmatc.js') }}"></script>

62
templates/login.html Normal file
View File

@@ -0,0 +1,62 @@
{% extends 'base.html' %}
{% block content %}
<div class="row">
<div class="card col-4" >
<div class="card-body">
<form class="form-horizontal">
<fieldset>
<!-- Form Name -->
<legend>Авторизация</legend>
<!-- Text input-->
<div class="form-group">
<label control-label" for="logininput">Логин</label>
<div>
<input id="logininput" name="logininput" type="text" placeholder="Введите логин" class="form-control input-md">
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="control-label" for="passwordinput">Пароль</label>
<input id="passwordinput" name="passwordinput" type="password" placeholder="Введите пароль" class="form-control input-md">
</div>
</div>
<div class="row">
<button id="btn_login" name="btn_login" class="btn btn-primary">Войти</button>
</div>
</fieldset>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@@ -3,41 +3,49 @@
{% block content %} {% block content %}
<!-- Modal --> <!-- Modal -->
<div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal fade" id="getmodal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle"
<div class="modal-dialog modal-dialog-centered" role="document"> aria-hidden="true">
<div class="modal-content"> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-body" id="textarea"> <div class="modal-content">
<div class="modal-body" id="textarea">
<input type="text" class="form-control" id='vednumber' placeholder="Номер из веломости">
<input type="text" class="form-control" id='rapolog' placeholder="Введите расположение">
<div class="row">
<a id="modal_invnom"> </a><a id="modal_matcenn"></a>
</div>
<form method="POST" action="/addraspved">
<div class="row">
№ из ведомости
<input type="text" class="form-control" name="modal_vednumber" id='modal_vednumber'
placeholder="Номер из ведомости">
</div>
<div class="row">
Расположение
<input type="text" class="form-control" name="modal_rapolog" id='modal_rapolog'
placeholder="Введите расположение">
</div>
</form>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть
</button>
<button type="button" class="btn btn-primary" id="modalsavetodb">Сохранить изменения</button>
</div>
</div>
<div class="row">
<a id="modal_invnom"> </a><a id="modal_matcenn"></a>
</div> </div>
<form method="POST" action="/addraspved">
<div class="row">
№ из ведомости
<input type="text" class="form-control" name="modal_vednumber" id ='modal_vednumber' placeholder="Номер из ведомости">
</div>
<div class="row">
Расположение
<input type="text" class="form-control" name="modal_rapolog" id ='modal_rapolog' placeholder="Введите расположение">
</div>
</form>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" id="modalclose">Закрыть</button>
<button type="button" class="btn btn-primary" id="modalsavetodb" >Сохранить изменения</button>
</div>
</div> </div>
</div>
</div> </div>
</div>
<div class="row no-print"> <div class="row no-print">
@@ -45,48 +53,48 @@
<div class="card-body"> <div class="card-body">
<select name="auditory" id="auditory"> <select name="auditory" id="auditory">
{% for item in aud: %} {% for item in aud: %}
<option name="optauditory" value="{{item.id}}">{{ item.audnazvanie }}</option> <option name="optauditory" value="{{ item.id }}">{{ item.audnazvanie }}</option>
{% endfor %} {% endfor %}
</select> </select>
<button id="searchbutton"> Найти </button> <button id="searchbutton"> Найти</button>
<button id="printbutton"> Печать </button> <button id="printbutton"> Печать</button>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="card col-md-10 col-10"> <div class="card col-md-10 col-10">
<div class="card-body"> <div class="card-body">
<h3 class="card-title no-print"> Поаудиторно </h3> <h3 class="card-title no-print"> Поаудиторно </h3>
<table class="table " id="datatable" > <table class="table " id="datatable">
<th >Номер в Инв. вед</th> <th>Номер в Инв. вед</th>
<th >Инв. номер</th> <th>Инв. номер</th>
<th >Название</th> <th>Название</th>
<th class="no-print">Аудитория</th> <th class="no-print">Аудитория</th>
<th >Расположение</th> <th>Расположение</th>
{% for item in res: %} {% for item in res %}
<td> <input type="hidden" name="invnomer" value="{{ item[0] }}"> {{ item[0] }} </td> <td><input type="hidden" name="invnomer" value="{{ item[0] }}"> {{ item[0] }} </td>
<td> {{ item[1] }} </td> <td> {{ item[1] }} </td>
<td class="no-print"> {{item[2]}} </td> <td class="no-print"> {{ item[2] }} </td>
<td id="proverka"> Проверено </td> <td id="proverka"> Проверено</td>
{% endfor %} {% endfor %}
</table> </table>
</div>
</div> </div>
</div> </div>
</div> </div>
</div>
{%endblock%} {% endblock %}