This commit is contained in:
commit
72ebcb1848
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -0,0 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class EnpConfig(AppConfig):
|
||||
name = 'enp'
|
|
@ -0,0 +1,56 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-02 23:26
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Waste',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('number', models.CharField(max_length=100, verbose_name='编号')),
|
||||
('name', models.CharField(max_length=100, verbose_name='名称')),
|
||||
('type', models.IntegerField(choices=[(1, '一般工业固废')], default=1, verbose_name='废物类型')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='waste_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='waste_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='NormalWasterRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('gen_date', models.DateField(verbose_name='产生日期')),
|
||||
('dis_date', models.DateField(verbose_name='处置日期')),
|
||||
('gen_count', models.FloatField(verbose_name='产生数量')),
|
||||
('dis_count', models.FloatField(verbose_name='委托处置量')),
|
||||
('inv_count', models.FloatField(verbose_name='库存量')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='normalwasterrecord_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('operator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User', verbose_name='经办人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='normalwasterrecord_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-02 23:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('enp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='normalwasterrecord',
|
||||
name='waste',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,50 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-03 22:40
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0002_normalwasterrecord_waste'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='NormalWasteRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('gen_date', models.DateField(verbose_name='产生日期')),
|
||||
('dis_date', models.DateField(verbose_name='处置日期')),
|
||||
('gen_count', models.FloatField(verbose_name='产生数量')),
|
||||
('dis_count', models.FloatField(verbose_name='委托处置量')),
|
||||
('inv_count', models.FloatField(verbose_name='库存量')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='normalwasterecord_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('operator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User', verbose_name='经办人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='normalwasterecord_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='waste',
|
||||
name='type',
|
||||
field=models.IntegerField(choices=[(1, '一般工业固废'), (2, '危废')], default=1, verbose_name='废物类型'),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='NormalWasterRecord',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='normalwasterecord',
|
||||
name='waste',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,38 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-03 23:49
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0003_auto_20211003_2240'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DWasteMakeList',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('process', models.CharField(max_length=100, verbose_name='产生工序')),
|
||||
('source', models.CharField(max_length=100, verbose_name='源/车间')),
|
||||
('goto', models.CharField(max_length=100, verbose_name='废物流向')),
|
||||
('companyname', models.CharField(max_length=100, verbose_name='处理企业名称')),
|
||||
('gen_count', models.FloatField(verbose_name='年度产生量(吨)')),
|
||||
('license', models.CharField(max_length=100, verbose_name='许可证编号')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastemakelist_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastemakelist_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
('waste', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,38 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-04 16:19
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0004_dwastemakelist'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DWasteMakeRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('gen_time', models.DateTimeField(verbose_name='产生时间')),
|
||||
('gen_count', models.FloatField(verbose_name='产生数量')),
|
||||
('container', models.CharField(max_length=100, verbose_name='容器情况')),
|
||||
('container_count', models.IntegerField(verbose_name='容器个数')),
|
||||
('trans_time', models.DateTimeField(verbose_name='转移时间')),
|
||||
('trans_count', models.IntegerField(verbose_name='转移个数')),
|
||||
('goto', models.CharField(max_length=100, verbose_name='去向')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastemakerecord_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastemakerecord_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('waste', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,21 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-04 16:27
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0005_dwastemakerecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='dwastemakerecord',
|
||||
name='usecomp',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,41 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-04 20:42
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0006_dwastemakerecord_usecomp'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DWasteKeepRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('in_time', models.DateTimeField(verbose_name='入库时间')),
|
||||
('in_count', models.FloatField(verbose_name='入库数量')),
|
||||
('source', models.CharField(max_length=100, verbose_name='废物来源')),
|
||||
('container', models.CharField(max_length=100, verbose_name='容器规格')),
|
||||
('container_count', models.IntegerField(verbose_name='容器个数')),
|
||||
('place', models.CharField(max_length=50, verbose_name='存放位置')),
|
||||
('out_time', models.DateTimeField(verbose_name='出库时间')),
|
||||
('out_count', models.IntegerField(verbose_name='出库数量')),
|
||||
('goto', models.CharField(max_length=100, verbose_name='去向')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastekeeprecord_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastekeeprecord_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
('waste', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,39 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-04 21:46
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0007_dwastekeeprecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DWasteHandleRecord',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('accept_time', models.DateTimeField(verbose_name='接收时间')),
|
||||
('accept_count', models.FloatField(verbose_name='接收数量')),
|
||||
('source', models.CharField(max_length=100, verbose_name='废物来源')),
|
||||
('container', models.CharField(max_length=100, verbose_name='容器规格')),
|
||||
('container_count', models.IntegerField(verbose_name='容器个数')),
|
||||
('handle_time', models.DateTimeField(verbose_name='处置时间')),
|
||||
('handle_method', models.CharField(max_length=100, verbose_name='处置方式')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastehandlerecord_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dwastehandlerecord_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
('waste', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Waste', verbose_name='关联废物')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,33 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-05 15:23
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0008_dwastehandlerecord'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Drain',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('number', models.CharField(max_length=100, verbose_name='编号')),
|
||||
('name', models.CharField(max_length=100, verbose_name='名称')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='drain_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='drain_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,49 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-05 17:02
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
('enp', '0009_drain'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='GasEmit',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('watch_time', models.DateTimeField(verbose_name='监测时间')),
|
||||
('out_smoke', models.FloatField(verbose_name='标态干烟气量')),
|
||||
('out_o2', models.FloatField(verbose_name='氧含量')),
|
||||
('out_so2', models.FloatField(verbose_name='二氧化硫')),
|
||||
('out_so2_s', models.FloatField(verbose_name='二氧化硫s')),
|
||||
('out_particle', models.FloatField(verbose_name='颗粒物')),
|
||||
('out_particle_s', models.FloatField(verbose_name='颗粒物s')),
|
||||
('out_nox', models.FloatField(verbose_name='氮氧化物')),
|
||||
('out_nox_s', models.FloatField(verbose_name='氮氧化物s')),
|
||||
('in_smoke', models.FloatField(verbose_name='标态干烟气量')),
|
||||
('in_o2', models.FloatField(verbose_name='氧含量')),
|
||||
('in_so2', models.FloatField(verbose_name='二氧化硫')),
|
||||
('in_so2_s', models.FloatField(verbose_name='二氧化硫s')),
|
||||
('in_particle', models.FloatField(verbose_name='颗粒物')),
|
||||
('in_particle_s', models.FloatField(verbose_name='颗粒物s')),
|
||||
('in_nox', models.FloatField(verbose_name='氮氧化物')),
|
||||
('in_nox_s', models.FloatField(verbose_name='氮氧化物s')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='gasemit_create_by', to='safesite.User', verbose_name='创建人')),
|
||||
('drain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='enp.Drain', verbose_name='关联排放口')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='gasemit_update_by', to='safesite.User', verbose_name='最后编辑人')),
|
||||
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,119 @@
|
|||
from django.db import models
|
||||
from safesite.models import User, Partment
|
||||
from utils.models import CommonModel
|
||||
# Create your models here.
|
||||
|
||||
class Waste(CommonModel):
|
||||
type_choices = (
|
||||
(1, '一般工业固废'),
|
||||
(2, '危废')
|
||||
)
|
||||
number = models.CharField('编号', max_length=100)
|
||||
name = models.CharField('名称', max_length=100)
|
||||
type = models.IntegerField('废物类型', choices=type_choices, default=1)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
|
||||
class NormalWasteRecord(CommonModel):
|
||||
"""
|
||||
一般废物排放记录
|
||||
"""
|
||||
gen_date = models.DateField('产生日期')
|
||||
dis_date = models.DateField('处置日期')
|
||||
gen_count = models.FloatField('产生数量')
|
||||
dis_count = models.FloatField('委托处置量')
|
||||
inv_count = models.FloatField('库存量')
|
||||
waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物')
|
||||
operator = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='经办人')
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
class DWasteMakeList(CommonModel):
|
||||
"""
|
||||
危废产生一览表
|
||||
"""
|
||||
waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物')
|
||||
process = models.CharField('产生工序', max_length=100)
|
||||
source = models.CharField('源/车间', max_length=100)
|
||||
goto = models.CharField('废物流向', max_length=100)
|
||||
companyname = models.CharField('处理企业名称', max_length=100)
|
||||
gen_count = models.FloatField('年度产生量(吨)')
|
||||
license = models.CharField('许可证编号', max_length=100)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
class DWasteMakeRecord(CommonModel):
|
||||
"""
|
||||
危废产生环节记录
|
||||
"""
|
||||
waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物')
|
||||
gen_time = models.DateTimeField('产生时间')
|
||||
gen_count = models.FloatField('产生数量')
|
||||
container = models.CharField('容器情况', max_length=100)
|
||||
container_count = models.IntegerField('容器个数')
|
||||
trans_time = models.DateTimeField('转移时间')
|
||||
trans_count = models.IntegerField('转移个数')
|
||||
goto = models.CharField('去向', max_length=100)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
|
||||
class DWasteKeepRecord(CommonModel):
|
||||
"""
|
||||
危废贮存环节记录
|
||||
"""
|
||||
waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物')
|
||||
in_time = models.DateTimeField('入库时间')
|
||||
in_count = models.FloatField('入库数量')
|
||||
source = models.CharField('废物来源', max_length=100)
|
||||
container = models.CharField('容器规格', max_length=100)
|
||||
container_count = models.IntegerField('容器个数')
|
||||
place = models.CharField('存放位置', max_length=50)
|
||||
out_time = models.DateTimeField('出库时间')
|
||||
out_count = models.IntegerField('出库数量')
|
||||
goto = models.CharField('去向', max_length=100)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
|
||||
class DWasteHandleRecord(CommonModel):
|
||||
"""
|
||||
危废处置环节记录
|
||||
"""
|
||||
waste = models.ForeignKey(Waste, on_delete=models.CASCADE, verbose_name='关联废物')
|
||||
accept_time = models.DateTimeField('接收时间')
|
||||
accept_count = models.FloatField('接收数量')
|
||||
source = models.CharField('废物来源', max_length=100)
|
||||
container = models.CharField('容器规格', max_length=100)
|
||||
container_count = models.IntegerField('容器个数')
|
||||
handle_time = models.DateTimeField('处置时间')
|
||||
handle_method = models.CharField('处置方式', max_length=100)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
class Drain(CommonModel):
|
||||
"""
|
||||
排放口
|
||||
"""
|
||||
number = models.CharField('编号', max_length=100)
|
||||
name = models.CharField('名称', max_length=100)
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
|
||||
class GasEmit(CommonModel):
|
||||
"""
|
||||
废气排放记录
|
||||
"""
|
||||
drain = models.ForeignKey(Drain, verbose_name='关联排放口', on_delete=models.CASCADE)
|
||||
watch_time = models.DateTimeField('监测时间')
|
||||
out_smoke = models.FloatField('标态干烟气量')
|
||||
out_o2 = models.FloatField("氧含量")
|
||||
out_so2 = models.FloatField("二氧化硫")
|
||||
out_so2_s = models.FloatField("二氧化硫s")
|
||||
out_particle = models.FloatField("颗粒物")
|
||||
out_particle_s = models.FloatField("颗粒物s")
|
||||
out_nox = models.FloatField("氮氧化物")
|
||||
out_nox_s = models.FloatField("氮氧化物s")
|
||||
in_smoke = models.FloatField('标态干烟气量')
|
||||
in_o2 = models.FloatField("氧含量")
|
||||
in_so2 = models.FloatField("二氧化硫")
|
||||
in_so2_s = models.FloatField("二氧化硫s")
|
||||
in_particle = models.FloatField("颗粒物")
|
||||
in_particle_s = models.FloatField("颗粒物s")
|
||||
in_nox = models.FloatField("氮氧化物")
|
||||
in_nox_s = models.FloatField("氮氧化物s")
|
||||
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司')
|
|
@ -0,0 +1,54 @@
|
|||
import numpy as np
|
||||
|
||||
def GM11(x,n):
|
||||
'''
|
||||
灰色预测
|
||||
x:序列,numpy对象
|
||||
n:需要往后预测的个数
|
||||
'''
|
||||
x1 = x.cumsum()#一次累加
|
||||
z1 = (x1[:len(x1) - 1] + x1[1:])/2.0#紧邻均值
|
||||
z1 = z1.reshape((len(z1),1))
|
||||
B = np.append(-z1,np.ones_like(z1),axis=1)
|
||||
Y = x[1:].reshape((len(x) - 1,1))
|
||||
#a为发展系数 b为灰色作用量
|
||||
[[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)#计算参数
|
||||
result = (x[0]-b/a)*np.exp(-a*(n-1))-(x[0]-b/a)*np.exp(-a*(n-2))
|
||||
S1_2 = x.var()#原序列方差
|
||||
e = list()#残差序列
|
||||
for index in range(1,x.shape[0]+1):
|
||||
predict = (x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2))
|
||||
e.append(x[index-1]-predict)
|
||||
S2_2 = np.array(e).var()#残差方差
|
||||
C = S2_2/S1_2#后验差比
|
||||
if C<=0.35:
|
||||
assess = '后验差比<=0.35,模型精度等级为好'
|
||||
elif C<=0.5:
|
||||
assess = '后验差比<=0.5,模型精度等级为合格'
|
||||
elif C<=0.65:
|
||||
assess = '后验差比<=0.65,模型精度等级为勉强'
|
||||
else:
|
||||
assess = '后验差比>0.65,模型精度等级为不合格'
|
||||
#预测数据
|
||||
predict = list()
|
||||
for index in range(x.shape[0]+1,x.shape[0]+n+1):
|
||||
predict.append((x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2)))
|
||||
predict = np.array(predict)
|
||||
return {
|
||||
'a':{'value':a,'desc':'发展系数'},
|
||||
'b':{'value':b,'desc':'灰色作用量'},
|
||||
'predict':{'value':result,'desc':'第%d个预测值'%n},
|
||||
'C':{'value':C,'desc':assess},
|
||||
'predict':{'value':predict,'desc':'往后预测%d个的序列'%(n)},
|
||||
}
|
||||
|
||||
if __name__ == "__main__":
|
||||
data = np.array([1.2,2.2,3.1,4.5,5.6,6.7,7.1,8.2,9.6,10.6,11,12.4,13.5,14.7,15.2])
|
||||
x = data[0:5]#输入数据
|
||||
y = data[5:7]#需要预测的数据
|
||||
result = GM11(x,len(y))
|
||||
predict = result['predict']['value']
|
||||
predict = np.round(predict,1)
|
||||
print('真实值:',y)
|
||||
print('预测值:',predict)
|
||||
print(result)
|
|
@ -0,0 +1,612 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
|
||||
<div data-options="region:'west', title:'危险废物名称', split:true, border:false" style="width: 300px;height:100%;">
|
||||
<div id="dwasteTableBar">
|
||||
<a onclick="addDwaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="editDWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-pencil',plain: true">编辑</a>
|
||||
<a onclick="delDWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="dwasteTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div data-options="region:'center',split:true,border:false" style="height:100%;">
|
||||
<div id="dwasteTT" class="easyui-tabs" style="width:100%;height:100%;">
|
||||
<div title="一览表">
|
||||
<div id="dwasteMakeListTableBar">
|
||||
<a onclick="addDwasteMakeList()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delDwasteMakeList()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="dwasteMakeListTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div title="产生环节记录">
|
||||
<div id="dwasteMakeRecordTableBar">
|
||||
<a onclick="addDwasteMakeRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delDwasteMakeRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="dwasteMakeRecordTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div title="贮存环节记录">
|
||||
<div id="dwasteKeepRecordTableBar">
|
||||
<a onclick="addDwasteKeepRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delDwasteKeepRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="dwasteKeepRecordTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div title="自行利用处置记录">
|
||||
<div id="dwasteHandleRecordTableBar">
|
||||
<a onclick="addDwasteHandleRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delDwasteHandleRecord()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="dwasteHandleRecordTable" style="height:100%"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dwasteDialog" class="easyui-dialog" style="width:400px;height:200px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="dwasteForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="type" type="hidden" id="typedFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="number" data-options="label:'废物编号'" class="easyui-textbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="name" data-options="label:'废物名称'" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDWaste()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="dwasteMakeListDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="dwasteMakeListForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="dwasteFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input class="easyui-combobox" name="waste"
|
||||
data-options="label:'危废', valueField:'id',textField:'name',url:'/api/enp/waste/combobox/?type=2', labelWidth:100" style="width:300px;" required>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="license" data-options="label:'许可证', labelWidth:100" class="easyui-textbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="process" data-options="label:'产生工序', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="source" data-options="label:'生产源/车间', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="goto" data-options="label:'废物流向', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="companyname" data-options="label:'处理企业', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_count" data-options="label:'年度产生量(吨)', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDwasteMakeList()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="dwasteMakeRecordDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="dwasteMakeRecordForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="dwasteMakeRecordForm_waste">
|
||||
<div style="margin-bottom:10px">
|
||||
<input class="easyui-combobox" name="waste"
|
||||
data-options="label:'危废', valueField:'id',textField:'name',url:'/api/enp/waste/combobox/?type=2', labelWidth:100" style="width:300px;" required>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_time" data-options="label:'产生时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_count" data-options="label:'产生数量', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container" data-options="label:'容器规格', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container_count" data-options="label:'容器个数', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="trans_time" data-options="label:'转移时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="trans_count" data-options="label:'转移个数', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="goto" data-options="label:'去向', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDwasteMakeRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="dwasteKeepRecordDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="dwasteKeepRecordForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="dwasteKeepRecordForm_waste">
|
||||
<div style="margin-bottom:10px">
|
||||
<input class="easyui-combobox" name="waste"
|
||||
data-options="label:'危废', valueField:'id',textField:'name',url:'/api/enp/waste/combobox/?type=2', labelWidth:100" style="width:300px;" required>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_time" data-options="label:'入库时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_count" data-options="label:'入库数量', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="source" data-options="label:'废物来源', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container" data-options="label:'容器规格', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container_count" data-options="label:'容器个数', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="place" data-options="label:'存放位置', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_time" data-options="label:'出库时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_count" data-options="label:'出库数量', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="goto" data-options="label:'去向', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDwasteKeepRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="dwasteHandleRecordDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="dwasteHandleRecordForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="dwasteHandleRecordForm_waste">
|
||||
<div style="margin-bottom:10px">
|
||||
<input class="easyui-combobox" name="waste"
|
||||
data-options="label:'危废', valueField:'id',textField:'name',url:'/api/enp/waste/combobox/?type=2', labelWidth:100" style="width:300px;" required>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="accept_time" data-options="label:'接收时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="accept_count" data-options="label:'接收数量', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="source" data-options="label:'废物来源', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container" data-options="label:'容器规格', labelWidth:100" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="container_count" data-options="label:'容器个数', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="handle_time" data-options="label:'处置时间', labelWidth:100" class="easyui-datetimebox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="handle_method" data-options="label:'处置方式', labelWidth:100" class="easyui-numberbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDwasteHandleRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
// var wasteOptions=[]
|
||||
// $(function(){
|
||||
// $.get('/api/enp/waste/combobox/?type=2',function(res){
|
||||
// wasteOptions = res
|
||||
// })
|
||||
// })
|
||||
var dwaste_action_url = '/api/enp/waste/create/';
|
||||
var dwasteMakeList_action_url = '';
|
||||
var dwasteMakeRecord_action_url="";
|
||||
var dwasteKeepRecord_action_url="";
|
||||
var dwasteHandleRecord_action_url="";
|
||||
$('#dwasteTable').datagrid({
|
||||
url: '/api/enp/waste/list/?type=2',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#dwasteTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'number', title: '废物编号', width: 100 },
|
||||
{ field: 'name', title: '废物名称', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
$('#dwasteMakeListTable').datagrid({
|
||||
url: '/api/enp/dwastemakelist/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#dwasteMakeListTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__number', title: '废物编号', width: 100 },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'license', title: '许可证', width: 100 },
|
||||
{ field: 'process', title: '产生工序', width: 100 },
|
||||
{ field: 'source', title: '产生源/车间', width: 100 },
|
||||
{ field: 'goto', title: '废物流向', width: 100 },
|
||||
{ field: 'companyname', title: '处置企业', width: 100 },
|
||||
{ field: 'gen_count', title: '年度产生量(吨)', width: 100 },
|
||||
{ field: 'create_time', title: '创建时间', width: 100 }
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
$('#dwasteMakeRecordTable').datagrid({
|
||||
url: '/api/enp/dwastemakerecord/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#dwasteMakeRecordTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__number', title: '废物编号', width: 100 },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'gen_time', title: '产生时间', width: 100 },
|
||||
{ field: 'gen_count', title: '产生数量', width: 80 },
|
||||
{ field: 'container', title: '容器规格', width: 100 },
|
||||
{ field: 'container_count', title: '容器个数', width: 80 },
|
||||
{ field: 'trans_time', title: '转移时间', width: 100 },
|
||||
{ field: 'trans_count', title: '转移个数', width: 80 },
|
||||
{ field: 'gen_count', title: '年度产生量(吨)', width: 80 },
|
||||
{ field: 'goto', title: '去向', width: 100 }
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
$('#dwasteKeepRecordTable').datagrid({
|
||||
url: '/api/enp/dwastekeeprecord/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#dwasteKeepRecordTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__number', title: '废物编号', width: 80 },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'in_time', title: '入库时间', width: 100 },
|
||||
{ field: 'in_count', title: '入库数量', width: 80 },
|
||||
{ field: 'source', title: '废物来源', width: 100 },
|
||||
{ field: 'container', title: '容器规格', width: 100 },
|
||||
{ field: 'container_count', title: '容器个数', width: 80 },
|
||||
{ field: 'place', title: '存放位置', width: 100 },
|
||||
{ field: 'out_time', title: '出库时间', width: 100 },
|
||||
{ field: 'out_count', title: '出库数量', width: 80 },
|
||||
{ field: 'goto', title: '去向', width: 100 }
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
$('#dwasteHandleRecordTable').datagrid({
|
||||
url: '/api/enp/dwastehandlerecord/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#dwasteHandleRecordTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__number', title: '废物编号', width: 80 },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'accept_time', title: '接收时间', width: 100 },
|
||||
{ field: 'accept_count', title: '接收数量', width: 80 },
|
||||
{ field: 'source', title: '废物来源', width: 100 },
|
||||
{ field: 'container', title: '容器规格', width: 100 },
|
||||
{ field: 'container_count', title: '容器个数', width: 80 },
|
||||
{ field: 'handle_time', title: '处置时间', width: 100 },
|
||||
{ field: 'handle_method', title: '处置方式', width: 80 }
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
function addDwaste() {
|
||||
$('#dwasteDialog').dialog('open').dialog('setTitle', '新增危废名').window('center');
|
||||
$('#dwasteForm').form('clear');
|
||||
$('#typedFormItem').attr('value',2);
|
||||
dwaste_action_url = '/api/enp/waste/create/'
|
||||
}
|
||||
function addDwasteMakeList(){
|
||||
$('#dwasteMakeListDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#dwasteMakeListForm').form('clear');
|
||||
dwasteMakeList_action_url = '/api/enp/dwastemakelist/create/'
|
||||
}
|
||||
function addDwasteMakeRecord(){
|
||||
$('#dwasteMakeRecordDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#dwasteMakeRecordForm').form('clear');
|
||||
dwasteMakeRecord_action_url = '/api/enp/dwastemakerecord/create/'
|
||||
}
|
||||
function addDwasteKeepRecord(){
|
||||
$('#dwasteKeepRecordDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#dwasteKeepRecordForm').form('clear');
|
||||
dwasteKeepRecord_action_url = '/api/enp/dwastekeeprecord/create/'
|
||||
}
|
||||
function addDwasteHandleRecord(){
|
||||
$('#dwasteHandleRecordDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#dwasteHandleRecordForm').form('clear');
|
||||
dwasteHandleRecord_action_url = '/api/enp/dwastehandlerecord/create/'
|
||||
}
|
||||
function saveDWaste() {
|
||||
var data = $('#dwasteForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: dwaste_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#dwasteForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#dwasteTable").datagrid('reload');
|
||||
$("#dwasteDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveDwasteMakeList() {
|
||||
var data = $('#dwasteMakeListForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: dwasteMakeList_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#dwasteMakeListForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#dwasteMakeListTable").datagrid('reload');
|
||||
$("#dwasteMakeListDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveDwasteMakeRecord() {
|
||||
var data = $('#dwasteMakeRecordForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: dwasteMakeRecord_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#dwasteMakeRecordForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#dwasteMakeRecordTable").datagrid('reload');
|
||||
$("#dwasteMakeRecordDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveDwasteKeepRecord() {
|
||||
var data = $('#dwasteKeepRecordForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: dwasteKeepRecord_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#dwasteKeepRecordForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#dwasteKeepRecordTable").datagrid('reload');
|
||||
$("#dwasteKeepRecordDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveDwasteHandleRecord() {
|
||||
var data = $('#dwasteHandleRecordForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: dwasteHandleRecord_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#dwasteHandleRecordForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#dwasteHandleRecordTable").datagrid('reload');
|
||||
$("#dwasteHandleRecordDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function delDwasteMakeList(){
|
||||
var row = $('#dwasteMakeListTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/dwastemakelist/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#dwasteMakeListTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function delDwasteMakeRecord(){
|
||||
var row = $('#dwasteMakeRecordTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/dwastemakerecord/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#dwasteMakeRecordTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function delDwasteKeepRecord(){
|
||||
var row = $('#dwasteKeepRecordTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/dwastekeeprecord/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#dwasteKeepRecordTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function delDwasteHandleRecord(){
|
||||
var row = $('#dwasteHandleRecordTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/dwastehandlerecord/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#dwasteHandleRecordTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function delDWaste() {
|
||||
var row = $('#dwasteTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/waste/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#dwasteTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,139 @@
|
|||
<div style="padding: 10px;" id="fulldiv">
|
||||
</div>
|
||||
<script>
|
||||
$.get('/api/enp/drain/combobox/', function (res) {
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
var drain = res[i]
|
||||
var panelId = 'panel' + res[i]['id']
|
||||
var panelTitle = res[i]['name'] + ':' + res[i]['number']
|
||||
$('#fulldiv').append('<div id="' + panelId + '" style="margin-bottom:10px;padding:10px"></div>')
|
||||
$('#' + panelId).panel({
|
||||
height: 360,
|
||||
title: panelTitle,
|
||||
});
|
||||
var div1 = panelId + 'out_smoke';
|
||||
var div2 = panelId + 'out_so2';
|
||||
var div3 = panelId + 'out_particle';
|
||||
var div4 = panelId + 'out_nox';
|
||||
$('#' + panelId).append(
|
||||
'<div style="float:left;width:25%;height:100%" id="' + div1 + '"></div>' +
|
||||
'<div style="float:left;width:25%;height:100%" id="' + div2 + '"></div>' +
|
||||
'<div style="float:left;width:25%;height:100%" id="' + div3 + '"></div>' +
|
||||
'<div style="float:left;width:25%;height:100%" id="' + div4 + '"></div>'
|
||||
)
|
||||
initMap(div1, 'out_smoke', res[i]['id'], '标态干烟气量', 'Nm3/h');
|
||||
initMap(div2, 'out_so2', res[i]['id'], '二氧化硫', 'mg/m3');
|
||||
initMap(div3, 'out_particle', res[i]['id'], '颗粒物', 'mg/m3');
|
||||
initMap(div4, 'out_nox', res[i]['id'], '氮氧化物', 'mg/m3');
|
||||
}
|
||||
})
|
||||
function initMap(div, element, drainId, text, unit) {
|
||||
var dom = document.getElementById(div);
|
||||
var myChart = echarts.init(dom);
|
||||
myChart.showLoading()
|
||||
var option;
|
||||
option = {
|
||||
title: {
|
||||
text: text,
|
||||
// subtext: '纯属虚构'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross'
|
||||
}
|
||||
},
|
||||
toolbox: {
|
||||
show: true,
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['00:00', '01:15', '02:30', '03:45', '05:00', '06:15', '07:30', '08:45', '10:00', '11:15', '12:30', '13:45', '15:00', '16:15', '17:30', '18:45', '20:00', '21:15', '22:30', '23:45']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
// axisLabel: {
|
||||
// formatter: '{value} W'
|
||||
// },
|
||||
axisPointer: {
|
||||
snap: true
|
||||
},
|
||||
name: unit
|
||||
},
|
||||
visualMap: {
|
||||
show: false,
|
||||
dimension: 0,
|
||||
pieces: [{
|
||||
lte: 14,
|
||||
color: 'green'
|
||||
}, {
|
||||
gt: 14,
|
||||
lte: 17,
|
||||
color: 'red'
|
||||
}, {
|
||||
gt: 17,
|
||||
color: 'red'
|
||||
}]
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '含量',
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
data: [300, 280, 250, 260, 270, 300, 550, 500, 400, 390, 380, 390, 400, 500, 600, 750, 800, 700, 600, 400],
|
||||
markArea: {
|
||||
data: [[{
|
||||
name: '预测区',
|
||||
xAxis: '17:30'
|
||||
}, {
|
||||
xAxis: '23:45'
|
||||
}]]
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
$.get('/api/enp/gaspredict/' + element + '/' + drainId + '/', function (res) {
|
||||
if (res.code == 0) {
|
||||
$('#' + div).html('<p style="text-align:center">' + text + '-' + res.msg + '</p>')
|
||||
return
|
||||
} else {
|
||||
var ydata = res.data
|
||||
var xdata = []
|
||||
var leng = ydata.length
|
||||
for(var i=0;i<leng;i++){
|
||||
xdata.push(i+1)
|
||||
}
|
||||
option.xAxis.data = xdata;
|
||||
option.series[0].data = ydata
|
||||
option.series[0].markArea.data = [ [{
|
||||
name: '预测区',
|
||||
xAxis: leng-3
|
||||
}, {
|
||||
xAxis: leng-1
|
||||
}] ]
|
||||
option.visualMap.pieces = [{
|
||||
lte: leng-3,
|
||||
color: 'green'
|
||||
}, {
|
||||
gt: leng-3,
|
||||
lte: leng-2,
|
||||
color: 'red'
|
||||
}, {
|
||||
gt: leng-2,
|
||||
color: 'red'
|
||||
}]
|
||||
console.log(option)
|
||||
if (option && typeof option === 'object') {
|
||||
myChart.hideLoading();
|
||||
myChart.setOption(option);
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,215 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
|
||||
<div data-options="region:'west', title:'一般固废名称', split:true, border:false" style="width: 300px;height:100%;">
|
||||
<div id="wasteTableBar">
|
||||
<a onclick="addWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="editWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-pencil',plain: true">编辑</a>
|
||||
<a onclick="delWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="wasteTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div data-options="region:'center',title:'一般固废台账',split:true,border:false" style="height:100%;">
|
||||
<div id="normalWasteRecordTableBar">
|
||||
<a onclick="addNormalWasteRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delNormalWasteRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="normalWasteRecordTable" style="height:100%"></table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="wasteDialog" class="easyui-dialog" style="width:400px;height:200px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="wasteForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="type" type="hidden" id="typeFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="number" data-options="label:'废物编号'" class="easyui-textbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="name" data-options="label:'废物名称'" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveWaste()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="normalWasteRecordDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="normalWasteRecordForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="wasteFormItem">
|
||||
<input name="operator" type="hidden" id="operatorFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_date" data-options="label:'产生日期', editable:false, labelWidth:100" class="easyui-datebox" style="width:300px;" required ></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_count" data-options="label:'产生数量(吨)', labelWidth:100, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="dis_date" data-options="label:'处置日期', editable:false, labelWidth:100" class="easyui-datebox" style="width:300px;" required ></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="dis_count" data-options="label:'委托处置量(吨)', labelWidth:100, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="inv_count" data-options="label:'库存(吨)', labelWidth:100, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="operator__name" data-options="label:'经办人', labelWidth:100" class="easyui-textbox" style="width:300px;" id="operator__nameFormItem"
|
||||
required readonly></input>
|
||||
<a class='easyui-linkbutton' onclick="choseuser('operator')" style="width:auto">选择</a>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveNormalWasteRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
function aaa(x) {
|
||||
if (x == "operator") {
|
||||
$('#operatorFormItem').attr('value', top.$('#in').val());
|
||||
$('#operator__nameFormItem').textbox('setValue', top.$('#in').attr('show'));
|
||||
}
|
||||
}
|
||||
var waste_action_url = '/api/enp/waste/create/';
|
||||
var record_action_url = '/api/enp/normalwasterecord/create/';
|
||||
$('#wasteTable').datagrid({
|
||||
url: '/api/enp/waste/list/?type=1',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#wasteTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'number', title: '废物编号', width: 100 },
|
||||
{ field: 'name', title: '废物名称', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
$('#normalWasteRecordTable').datagrid({
|
||||
url: '/api/enp/normalwasterecord/list/?waste=' + row.id
|
||||
})
|
||||
}
|
||||
});
|
||||
$('#normalWasteRecordTable').datagrid({
|
||||
url: '/api/enp/normalwasterecord/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#normalWasteRecordTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'operator', title: 'operator', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'gen_date', title: '产生日期', width: 100 },
|
||||
{ field: 'gen_count', title: '产生数量(吨)', width: 100 },
|
||||
{ field: 'dis_date', title: '处置日期', width: 100 },
|
||||
{ field: 'dis_count', title: '委托处置量(吨)', width: 100 },
|
||||
{ field: 'inv_count', title: '库存量(吨)', width: 100 },
|
||||
{ field: 'operator__name', title: '经办人', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
function addWaste() {
|
||||
$('#wasteDialog').dialog('open').dialog('setTitle', '新增一般固废名').window('center');
|
||||
$('#wasteForm').form('clear');
|
||||
$('#typeFormItem').attr('value',1);
|
||||
waste_action_url = '/api/enp/waste/create/'
|
||||
}
|
||||
function addNormalWasteRecord() {
|
||||
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#normalWasteRecordDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#normalWasteRecordForm').form('clear');
|
||||
$('#wasteFormItem').attr('value', row.id);
|
||||
record_action_url = '/api/enp/normalwasterecord/create/';
|
||||
}else{
|
||||
$.messager.alert('提示', '请先选择左侧废物!');
|
||||
}
|
||||
|
||||
}
|
||||
function editWaste(){
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#wasteDialog').dialog('open').dialog('setTitle', '编辑一般固废名').window('center');
|
||||
$('#wasteForm').form('load', row);
|
||||
waste_action_url = '/api/enp/waste/update/'}
|
||||
else{
|
||||
$.messager.alert('提示', '请选择一条数据!');
|
||||
}
|
||||
}
|
||||
function saveWaste() {
|
||||
var data = $('#wasteForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: waste_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#wasteForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#wasteTable").datagrid('reload');
|
||||
$("#wasteDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveNormalWasteRecord() {
|
||||
var data = $('#normalWasteRecordForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: record_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#normalWasteRecordForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#normalWasteRecordTable").datagrid('reload');
|
||||
$("#normalWasteRecordDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function delWaste() {
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/waste/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#wasteTable").datagrid('reload');
|
||||
$("#normalWasteRecordTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,272 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
|
||||
<div data-options="region:'west', title:'排放口', split:true, border:false" style="width: 300px;height:100%;">
|
||||
<div id="drainTableBar">
|
||||
<a onclick="addDrain()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="editDrain()" class="easyui-linkbutton" data-options="iconCls: 'fa-pencil',plain: true">编辑</a>
|
||||
<a onclick="delDrain()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="drainTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div data-options="region:'center',title:'监测记录',split:true,border:false" style="height:100%;">
|
||||
<div id="gasEmitTableBar">
|
||||
<a onclick="addGasEmitRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delGasEmitRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="gasEmitTable" style="height:100%"></table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="drainDialog" class="easyui-dialog" style="width:400px;height:200px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="drainForm">
|
||||
<input name="id" type="hidden">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="number" data-options="label:'排放口编号'" class="easyui-textbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="name" data-options="label:'排放口名称'" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveDrain()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="gasEmitDialog" class="easyui-dialog" style="width:400px;height:800px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="gasEmitForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="drain" type="hidden" id="gasEmitForm_drain">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="watch_time" data-options="label:'监测时间', editable:false, labelWidth:120" class="easyui-datebox" style="width:300px;" required ></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_smoke" data-options="label:'出:标态干烟气量', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_o2" data-options="label:'出:氧含量', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_so2" data-options="label:'出:二氧化硫', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_so2_s" data-options="label:'出:二氧化硫:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_particle" data-options="label:'出:颗粒物', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_particle_s" data-options="label:'出:颗粒物:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_nox" data-options="label:'出:氮氧化物', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="out_nox_s" data-options="label:'出:氮氧化物:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_smoke" data-options="label:'入:标态干烟气量', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_o2" data-options="label:'入:氧含量', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_so2" data-options="label:'入:二氧化硫', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_so2_s" data-options="label:'入:二氧化硫:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_particle" data-options="label:'入:颗粒物', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_particle_s" data-options="label:'入:颗粒物:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_nox" data-options="label:'入:氮氧化物', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="in_nox_s" data-options="label:'入:氮氧化物:折标', labelWidth:120, min:0,precision:2" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveGasEmitRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
function aaa(x) {
|
||||
if (x == "operator") {
|
||||
$('#operatorFormItem').attr('value', top.$('#in').val());
|
||||
$('#operator__nameFormItem').textbox('setValue', top.$('#in').attr('show'));
|
||||
}
|
||||
}
|
||||
var drain_action_url = '/api/enp/drain/create/';
|
||||
var record_action_url = '/api/enp/gasemit/create/';
|
||||
$('#drainTable').datagrid({
|
||||
url: '/api/enp/drain/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#drainTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'number', title: '排放口编号', width: 100 },
|
||||
{ field: 'name', title: '排放口名称', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
$('#gasEmitTable').datagrid({
|
||||
url: '/api/enp/gasemit/list/?drain=' + row.id
|
||||
})
|
||||
}
|
||||
});
|
||||
$('#gasEmitTable').datagrid({
|
||||
url: '/api/enp/gasemit/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#gasEmitTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'drain', title: 'drain', hidden: true },
|
||||
{ field: 'drain__name', title: '排放口 ', width: 100 },
|
||||
{ field: 'wath_tiime', title: '监测时间', width: 100 },
|
||||
{ field: 'out_smoke', title: '出:干烟含量', width: 100 },
|
||||
{ field: 'out_o2', title: '出:氧含量', width: 100 },
|
||||
{ field: 'out_so2', title: '出:二氧化硫', width: 100 },
|
||||
{ field: 'out_so2_s', title: '出:二氧化硫折标', width: 100 },
|
||||
{ field: 'out_particle', title: '出:颗粒物', width: 100 },
|
||||
{ field: 'out_particle_s', title: '出:颗粒物折标', width: 100 },
|
||||
{ field: 'out_nox', title: '出:氮氧化物', width: 100 },
|
||||
{ field: 'out_nox_s', title: '出:氮氧化物折标', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
function addDrain() {
|
||||
$('#drainDialog').dialog('open').dialog('setTitle', '新增排放口').window('center');
|
||||
$('#drainForm').form('clear');
|
||||
drain_action_url = '/api/enp/drain/create/'
|
||||
}
|
||||
function addGasEmitRecord() {
|
||||
|
||||
var row = $('#drainTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#gasEmitDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#gasEmitForm').form('clear');
|
||||
$('#gasEmitForm_drain').attr('value', row.id);
|
||||
record_action_url = '/api/enp/gasemit/create/';
|
||||
}else{
|
||||
$.messager.alert('提示', '请先选择左侧排放口!');
|
||||
}
|
||||
|
||||
}
|
||||
function editDrain(){
|
||||
var row = $('#draineTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#drainDialog').dialog('open').dialog('setTitle', '编辑排放口').window('center');
|
||||
$('#drainForm').form('load', row);
|
||||
drain_action_url = '/api/enp/drain/update/'}
|
||||
else{
|
||||
$.messager.alert('提示', '请选择一条数据!');
|
||||
}
|
||||
}
|
||||
function saveDrain() {
|
||||
var data = $('#drainForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: drain_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#drainForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#drainTable").datagrid('reload');
|
||||
$("#drainDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveGasEmitRecord() {
|
||||
var data = $('#gasEmitForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: record_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#gasEmitForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#gasEmitTable").datagrid('reload');
|
||||
$("#gasEmitDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function delDrain() {
|
||||
var row = $('#drainTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/drain/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#drainTable").datagrid('reload');
|
||||
// $("#gasEmitTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function delGasEmitRecord() {
|
||||
var row = $('#gasEmitTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/gasemit/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#gasEmitTable").datagrid('reload');
|
||||
// $("#gasEmitTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,215 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
|
||||
<div data-options="region:'west', title:'一般固废名称', split:true, border:false" style="width: 300px;height:100%;">
|
||||
<div id="wasteTableBar">
|
||||
<a onclick="addWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="editWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-pencil',plain: true">编辑</a>
|
||||
<a onclick="delWaste()" class="easyui-linkbutton" data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="wasteTable" style="height:100%"></table>
|
||||
</div>
|
||||
<div data-options="region:'center',title:'一般固废台账',split:true,border:false" style="height:100%;">
|
||||
<div id="normalWasteRecordTableBar">
|
||||
<a onclick="addNormalWasteRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-plus',plain: true">新增</a>
|
||||
<a onclick="delNormalWasteRecord()" class="easyui-linkbutton"
|
||||
data-options="iconCls: 'fa-trash',plain: true">删除</a>
|
||||
</div>
|
||||
<table id="normalWasteRecordTable" style="height:100%"></table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="wasteDialog" class="easyui-dialog" style="width:400px;height:200px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="wasteForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="type" type="hidden" id="typeFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="number" data-options="label:'废物编号'" class="easyui-textbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="name" data-options="label:'废物名称'" class="easyui-textbox" style="width:300px;"
|
||||
required></input>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveWaste()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="normalWasteRecordDialog" class="easyui-dialog" style="width:400px;height:600px;padding:5px 15px;"
|
||||
data-options="resizable:true,modal:true,closed:true,border:false">
|
||||
<form method="post" id="normalWasteRecordForm">
|
||||
<input name="id" type="hidden">
|
||||
<input name="waste" type="hidden" id="wasteFormItem">
|
||||
<input name="operator" type="hidden" id="operatorFormItem">
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_date" data-options="label:'产生日期', editable:false, labelWidth:100" class="easyui-datebox" style="width:300px;" required ></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="gen_count" data-options="label:'产生数量(吨)', labelWidth:100" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="dis_date" data-options="label:'处置日期', editable:false, labelWidth:100" class="easyui-datebox" style="width:300px;" required ></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="dis_count" data-options="label:'委托处置量(吨)', labelWidth:100" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="inv_count" data-options="label:'库存(吨)', labelWidth:100" class="easyui-numberbox" style="width:300px;" required></input>
|
||||
</div>
|
||||
<div style="margin-bottom:10px">
|
||||
<input name="operator__name" data-options="label:'经办人', labelWidth:100" class="easyui-textbox" style="width:300px;" id="operator__nameFormItem"
|
||||
required readonly></input>
|
||||
<a class='easyui-linkbutton' onclick="choseuser('operator')" style="width:auto">选择</a>
|
||||
</div>
|
||||
<div style="text-align: center;">
|
||||
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="saveNormalWasteRecord()">保存</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
function aaa(x) {
|
||||
if (x == "operator") {
|
||||
$('#operatorFormItem').attr('value', top.$('#in').val());
|
||||
$('#operator__nameFormItem').textbox('setValue', top.$('#in').attr('show'));
|
||||
}
|
||||
}
|
||||
var waste_action_url = '/api/enp/waste/create/';
|
||||
var record_action_url = '/api/enp/normalwasterecord/create/';
|
||||
$('#wasteTable').datagrid({
|
||||
url: '/api/enp/waste/list/?type=1',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#wasteTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'number', title: '废物编号', width: 100 },
|
||||
{ field: 'name', title: '废物名称', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
$('#normalWasteRecordTable').datagrid({
|
||||
url: '/api/enp/normalwasterecord/list/?waste=' + row.id
|
||||
})
|
||||
}
|
||||
});
|
||||
$('#normalWasteRecordTable').datagrid({
|
||||
url: '/api/enp/normalwasterecord/list/',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#normalWasteRecordTableBar',
|
||||
border: false,
|
||||
fitColumns: true,
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'operator', title: 'operator', hidden: true },
|
||||
{ field: 'waste', title: 'waste', hidden: true },
|
||||
{ field: 'waste__name', title: '废物名称', width: 100 },
|
||||
{ field: 'gen_date', title: '产生日期', width: 100 },
|
||||
{ field: 'gen_count', title: '产生数量(吨)', width: 100 },
|
||||
{ field: 'dis_date', title: '处置日期', width: 100 },
|
||||
{ field: 'dis_count', title: '委托处置量(吨)', width: 100 },
|
||||
{ field: 'inv_count', title: '库存量(吨)', width: 100 },
|
||||
{ field: 'operator__name', title: '经办人', width: 100 },
|
||||
]],
|
||||
onClickRow: function (index, row) {
|
||||
|
||||
}
|
||||
});
|
||||
function addWaste() {
|
||||
$('#wasteDialog').dialog('open').dialog('setTitle', '新增一般固废名').window('center');
|
||||
$('#wasteForm').form('clear');
|
||||
$('#typeFormItem').attr('value',1);
|
||||
waste_action_url = '/api/enp/waste/create/'
|
||||
}
|
||||
function addNormalWasteRecord() {
|
||||
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#normalWasteRecordDialog').dialog('open').dialog('setTitle', '新增记录').window('center');
|
||||
$('#normalWasteRecordForm').form('clear');
|
||||
$('#wasteFormItem').attr('value', row.id);
|
||||
record_action_url = '/api/enp/normalwasterecord/create/';
|
||||
}else{
|
||||
$.messager.alert('提示', '请先选择左侧废物!');
|
||||
}
|
||||
|
||||
}
|
||||
function editWaste(){
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if(row){
|
||||
$('#wasteDialog').dialog('open').dialog('setTitle', '编辑一般固废名').window('center');
|
||||
$('#wasteForm').form('load', row);
|
||||
waste_action_url = '/api/enp/waste/update/'}
|
||||
else{
|
||||
$.messager.alert('提示', '请选择一条数据!');
|
||||
}
|
||||
}
|
||||
function saveWaste() {
|
||||
var data = $('#wasteForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: waste_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#wasteForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#wasteTable").datagrid('reload');
|
||||
$("#wasteDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function saveNormalWasteRecord() {
|
||||
var data = $('#normalWasteRecordForm').serializeJSON();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: record_action_url,
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
return $('#normalWasteRecordForm').form('validate')
|
||||
},
|
||||
success: function (data) {
|
||||
$("#normalWasteRecordTable").datagrid('reload');
|
||||
$("#normalWasteRecordDialog").dialog("close");
|
||||
},
|
||||
});
|
||||
}
|
||||
function delWaste() {
|
||||
var row = $('#wasteTable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
var data = { id: row.id }
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/api/enp/waste/delete/',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#wasteTable").datagrid('reload');
|
||||
$("#normalWasteRecordTable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '操作失败!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -0,0 +1,9 @@
|
|||
from django.urls import path,include
|
||||
from . import views
|
||||
urlpatterns = [
|
||||
path('waste/', views.HtmlWaste),
|
||||
path('dangerouswaste/', views.HtmlDangerousWaste),
|
||||
path('wgas/', views.HtmlWgas),
|
||||
path('wwater/', views.HtmlWwater),
|
||||
path('gaspredict/', views.HtmlGasPredict),
|
||||
]
|
|
@ -0,0 +1,14 @@
|
|||
from django.urls import path,include
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('waste/<str:action>/', views.ApiWaste),
|
||||
path('drain/<str:action>/', views.ApiDrain),
|
||||
path('normalwasterecord/<str:action>/', views.ApiNormalWasteRecord),
|
||||
path('dwastemakelist/<str:action>/', views.ApiDWasteMakeList),
|
||||
path('dwastemakerecord/<str:action>/', views.ApiDWasteMakeRecord),
|
||||
path('dwastekeeprecord/<str:action>/', views.ApiDWasteKeepRecord),
|
||||
path('dwastehandlerecord/<str:action>/', views.ApiDWasteHandleRecord),
|
||||
path('gasemit/<str:action>/', views.ApiGasEmit),
|
||||
path('gaspredict/<str:element>/<int:drainId>/', views.ApiGasPredict)
|
||||
]
|
|
@ -0,0 +1,326 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.authentication import BaseAuthentication
|
||||
from safesite.models import User
|
||||
from rest_framework.exceptions import AuthenticationFailed
|
||||
from .models import DWasteHandleRecord, DWasteKeepRecord, DWasteMakeList, DWasteMakeRecord, Drain, GasEmit, NormalWasteRecord, Waste
|
||||
from safesite.views import transjson, fenye, MyEncoder
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
import json
|
||||
# Create your views here.
|
||||
def myAuthentication(BaseAuthentication):
|
||||
def authenticate(self, request):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if user:
|
||||
return (user, None)
|
||||
raise AuthenticationFailed()
|
||||
|
||||
|
||||
def HtmlWaste(request):
|
||||
return render(request, 'waste.html')
|
||||
|
||||
def HtmlDangerousWaste(request):
|
||||
return render(request, 'dangerousWaste.html')
|
||||
|
||||
def HtmlWgas(request):
|
||||
return render(request, 'wgas.html')
|
||||
|
||||
def HtmlWwater(request):
|
||||
return render(request, 'wwater.html')
|
||||
|
||||
def HtmlGasPredict(request):
|
||||
return render(request, 'gaspredict.html')
|
||||
|
||||
def ApiWaste(request, action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
objs = objs.filter(type=request.GET.get('type', 1))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name', 'type')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'combobox':
|
||||
objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
objs = objs.filter(type=request.GET.get('type', 1)).order_by('id')
|
||||
data = objs.values('id', 'number', 'name')
|
||||
return JsonResponse(list(data), safe=False)
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj= Waste()
|
||||
obj.number = data['number']
|
||||
obj.name = data['name']
|
||||
obj.type = data['type']
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = Waste.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'update':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = Waste.objects.get(id=data['id'])
|
||||
obj.number = data['number']
|
||||
obj.name = data['name']
|
||||
obj.update_by=user
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiNormalWasteRecord(request, action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = NormalWasteRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('waste', None):
|
||||
objs = objs.filter(waste=request.GET.get('waste'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'gen_date', 'dis_date', 'gen_count', 'dis_count', 'operator__name', 'waste__name', 'waste', 'operator', 'inv_count')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = NormalWasteRecord()
|
||||
obj.waste = Waste.objects.get(id=data['waste'])
|
||||
obj.operator = User.objects.get(userid=data['operator'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.gen_date = data['gen_date']
|
||||
obj.dis_date = data['dis_date']
|
||||
obj.gen_count = data['gen_count']
|
||||
obj.dis_count = data['dis_count']
|
||||
obj.inv_count = data['inv_count']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = NormalWasteRecord.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiDWasteMakeList(request,action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = DWasteMakeList.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('waste', None):
|
||||
objs = objs.filter(waste=request.GET.get('waste'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'process', 'source', 'goto', 'companyname', 'gen_count', 'license', 'waste__name', 'waste__number', 'create_time')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteMakeList()
|
||||
obj.waste = Waste.objects.get(id=data['waste'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.process = data['process']
|
||||
obj.source = data['source']
|
||||
obj.goto = data['goto']
|
||||
obj.companyname = data['companyname']
|
||||
obj.gen_count = data['gen_count']
|
||||
obj.license = data['license']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteMakeList.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiDWasteMakeRecord(request,action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = DWasteMakeRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('waste', None):
|
||||
objs = objs.filter(waste=request.GET.get('waste'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'gen_time', 'gen_count', 'container', 'container_count', 'trans_time', 'trans_count', 'waste__name', 'waste__number', 'goto')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteMakeRecord()
|
||||
obj.waste = Waste.objects.get(id=data['waste'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.gen_time = data['gen_time']
|
||||
obj.gen_count = data['gen_count']
|
||||
obj.goto = data['goto']
|
||||
obj.container = data['container']
|
||||
obj.container_count = data['container_count']
|
||||
obj.trans_time = data['trans_time']
|
||||
obj.trans_count = data['trans_count']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteMakeRecord.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiDWasteKeepRecord(request,action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = DWasteKeepRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('waste', None):
|
||||
objs = objs.filter(waste=request.GET.get('waste'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'in_time', 'in_count', 'source', 'container', 'container_count', 'place', 'out_time', 'out_count', 'waste__name', 'waste__number', 'goto')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteKeepRecord()
|
||||
obj.waste = Waste.objects.get(id=data['waste'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.in_time = data['in_time']
|
||||
obj.in_count = data['in_count']
|
||||
obj.source = data['source']
|
||||
obj.place = data['place']
|
||||
obj.goto = data['goto']
|
||||
obj.container = data['container']
|
||||
obj.container_count = data['container_count']
|
||||
obj.out_time = data['out_time']
|
||||
obj.out_count = data['out_count']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteKeepRecord.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiDWasteHandleRecord(request,action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = DWasteHandleRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('waste', None):
|
||||
objs = objs.filter(waste=request.GET.get('waste'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'accept_time', 'accept_count', 'source', 'container', 'container_count', 'handle_time', 'handle_method', 'waste__name', 'waste__number')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteHandleRecord()
|
||||
obj.waste = Waste.objects.get(id=data['waste'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.accept_time = data['accept_time']
|
||||
obj.accept_count = data['accept_count']
|
||||
obj.source = data['source']
|
||||
obj.container = data['container']
|
||||
obj.container_count = data['container_count']
|
||||
obj.handle_time = data['handle_time']
|
||||
obj.handle_method = data['handle_method']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = DWasteHandleRecord.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiDrain(request, action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'combobox':
|
||||
objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False).order_by('id')
|
||||
data = objs.values('id', 'number', 'name')
|
||||
return JsonResponse(list(data), safe=False)
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj= Drain()
|
||||
obj.number = data['number']
|
||||
obj.name = data['name']
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = Drain.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'update':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = Drain.objects.get(id=data['id'])
|
||||
obj.number = data['number']
|
||||
obj.name = data['name']
|
||||
obj.update_by=user
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
def ApiGasEmit(request,action):
|
||||
user = User.objects.get(userid=request.session['userid'])
|
||||
if action == 'list':
|
||||
objs = GasEmit.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
||||
if request.GET.get('drain', None):
|
||||
objs = objs.filter(drain=request.GET.get('drain'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(request)
|
||||
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'drain', 'watch_time', 'out_smoke', 'out_o2', 'out_so2', 'out_so2_s', 'out_particle', 'out_particle_s', 'drain__name', 'drain__number'
|
||||
, 'out_nox', 'out_nox_s', 'in_smoke', 'in_o2', 'in_so2', 'in_so2_s', 'in_particle', 'in_particle_s'
|
||||
, 'in_nox', 'in_nox_s')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif action == 'create':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = GasEmit()
|
||||
obj.drain = Drain.objects.get(id=data['drain'])
|
||||
obj.create_by = user
|
||||
obj.update_by = user
|
||||
obj.usecomp = user.usecomp
|
||||
obj.watch_time = data['watch_time']
|
||||
obj.out_smoke = data['out_smoke']
|
||||
obj.out_o2 = data['out_o2']
|
||||
obj.out_so2 = data['out_so2']
|
||||
obj.out_so2_s = data['out_so2_s']
|
||||
obj.out_particle = data['out_particle']
|
||||
obj.out_particle_s = data['out_particle_s']
|
||||
obj.out_nox = data['out_nox']
|
||||
obj.out_nox_s = data['out_nox_s']
|
||||
obj.in_smoke = data['in_smoke']
|
||||
obj.in_o2 = data['in_o2']
|
||||
obj.in_so2 = data['in_so2']
|
||||
obj.in_so2_s = data['in_so2_s']
|
||||
obj.in_particle = data['in_particle']
|
||||
obj.in_particle_s = data['in_particle_s']
|
||||
obj.in_nox = data['in_nox']
|
||||
obj.in_nox_s = data['in_nox_s']
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif action == 'delete':
|
||||
data = json.loads(request.body.decode('utf-8'))
|
||||
obj = GasEmit.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
import numpy as np
|
||||
from .predict import GM11
|
||||
def ApiGasPredict(request, element, drainId):
|
||||
element_list = list(GasEmit.objects.filter(is_deleted=False, drain__id=drainId)\
|
||||
.order_by('-create_time')[0:5].values_list(element, flat=True))
|
||||
element_list.reverse()
|
||||
if len(element_list)>=3:
|
||||
result = GM11(np.array(element_list), 3)
|
||||
element_list.extend(result['predict']['value'])
|
||||
ret = {"code":1, "data":[round(i,2) for i in element_list]}
|
||||
return JsonResponse(ret)
|
||||
else:
|
||||
return JsonResponse({"code":0, "msg":'至少需要三条记录'})
|
||||
|
|
@ -22,6 +22,8 @@ from django.urls import include, path
|
|||
urlpatterns = [
|
||||
path('django/', admin.site.urls),
|
||||
path('groups/', include('groups.urls')),
|
||||
path('html/enp/', include('enp.urls')),
|
||||
path('api/enp/', include('enp.urls_api')),
|
||||
path('',include('safesite.urls')),
|
||||
|
||||
|
||||
|
|
|
@ -21,5 +21,7 @@ class CompanyInfoForm(forms.Form):
|
|||
legalperson_phone = forms.CharField(max_length=24, label='法人电话', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
liaison = forms.CharField(max_length=24, label='联系人', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
liaison_phone = forms.CharField(max_length=24, label='联系人电话', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
enp_number = forms.CharField(max_length=24, label='环评批复文号', widget=forms.TextInput(attrs={'size': '50'}), required=False)
|
||||
waste_number = forms.CharField(max_length=24, label='排污许可证编号', widget=forms.TextInput(attrs={'size': '50'}), required=False)
|
||||
introduce = forms.CharField(label='公司概况', widget=forms.Textarea)
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.2.8 on 2021-10-06 18:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0389_auto_20210905_1612'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='companyinfo',
|
||||
name='enp_number',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='环评批复文号'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='companyinfo',
|
||||
name='waste_number',
|
||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='排污许可证编号'),
|
||||
),
|
||||
]
|
|
@ -1233,6 +1233,8 @@ class CompanyInfo(models.Model):
|
|||
liaison = models.CharField(max_length=24, verbose_name='联系人')
|
||||
liaison_phone = models.CharField(max_length=24, verbose_name='联系人电话')
|
||||
introduce = models.TextField(null=True, blank=True, verbose_name='公司概况')
|
||||
enp_number = models.CharField(max_length=50, verbose_name='环评批复文号', null=True, blank=True)
|
||||
waste_number = models.CharField(max_length=50, verbose_name='排污许可证编号', null=True, blank=True)
|
||||
createtime = models.DateTimeField(auto_now_add=True)
|
||||
modifytime = models.DateTimeField(auto_now=True)
|
||||
# 法律法规分类表
|
||||
|
|
|
@ -8312,6 +8312,8 @@ def companyinfo(req):
|
|||
companyinfo.peoplenum = companyinfo_form.cleaned_data.get(
|
||||
'peoplenum')
|
||||
companyinfo.website = companyinfo_form.cleaned_data.get('website')
|
||||
companyinfo.enp_number = companyinfo_form.cleaned_data.get('enp_number', None)
|
||||
companyinfo.waste_number = companyinfo_form.cleaned_data.get('waste_number', None)
|
||||
companyinfo.save()
|
||||
#html = 'companyinfo.html'
|
||||
# return redirect('/withmenu/', html="companyinfo.html")
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from safesite.models import User
|
||||
|
||||
class BaseModel(models.Model):
|
||||
"""
|
||||
基本表
|
||||
"""
|
||||
create_time = models.DateTimeField(
|
||||
default=timezone.now, verbose_name='创建时间', help_text='创建时间')
|
||||
update_time = models.DateTimeField(
|
||||
auto_now=True, verbose_name='修改时间', help_text='修改时间')
|
||||
is_deleted = models.BooleanField(
|
||||
default=False, verbose_name='删除标记', help_text='删除标记')
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
class CommonModel(BaseModel):
|
||||
"""
|
||||
业务用基本表A,包含create_by, update_by字段
|
||||
"""
|
||||
create_by = models.ForeignKey(
|
||||
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='创建人', related_name= '%(class)s_create_by')
|
||||
update_by = models.ForeignKey(
|
||||
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='最后编辑人', related_name= '%(class)s_update_by')
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
Loading…
Reference in New Issue