added generators

This commit is contained in:
root 2023-04-23 16:21:18 +04:00
parent 2d00c781be
commit 096476287f
7 changed files with 412440 additions and 33 deletions

View File

@ -5,7 +5,7 @@
"type": "pwa-chrome", "type": "pwa-chrome",
"request": "launch", "request": "launch",
"name": "Launch Chrome against localhost", "name": "Launch Chrome against localhost",
"url": "http://localhost:5174", "url": "http://localhost:5173",
"webRoot": "${workspaceFolder}/src" "webRoot": "${workspaceFolder}/src"
} }
] ]

View File

@ -8,10 +8,9 @@
"name": "subd-front", "name": "subd-front",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@eonasdan/tempus-dominus": "^6.4.4",
"@popperjs/core": "^2.11.7",
"axios": "^1.3.6", "axios": "^1.3.6",
"bootstrap": "^5.2.3", "bootstrap": "^5.2.3",
"email-generator": "^1.0.1",
"vue": "^3.2.47", "vue": "^3.2.47",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
@ -467,22 +466,6 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@eonasdan/tempus-dominus": {
"version": "6.4.4",
"resolved": "https://registry.npmjs.org/@eonasdan/tempus-dominus/-/tempus-dominus-6.4.4.tgz",
"integrity": "sha512-QPxUlu+ZaJR0sERiKx1dRDxuq1NJh1jSZqf+IB7ZNG8CXBL7wOBsYAYEwSu6web3KGdzWlxfRmpgzwtR3EFgSg==",
"funding": {
"url": "https://ko-fi.com/eonasdan"
},
"peerDependencies": {
"@popperjs/core": "^2.11.6"
},
"peerDependenciesMeta": {
"@popperjs/core\"": {
"optional": true
}
}
},
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.17.15", "version": "0.17.15",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz",
@ -893,6 +876,7 @@
"version": "2.11.7", "version": "2.11.7",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
"integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==",
"peer": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/popperjs" "url": "https://opencollective.com/popperjs"
@ -1246,6 +1230,11 @@
"integrity": "sha512-nEftV1dRX3omlxAj42FwqRZT0i4xd2dIg39sog/CnCJeCcL1TRd2Uh0i9Oebgv8Ou0vzTPw++xc+Z20jzS2B6A==", "integrity": "sha512-nEftV1dRX3omlxAj42FwqRZT0i4xd2dIg39sog/CnCJeCcL1TRd2Uh0i9Oebgv8Ou0vzTPw++xc+Z20jzS2B6A==",
"dev": true "dev": true
}, },
"node_modules/email-generator": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/email-generator/-/email-generator-1.0.1.tgz",
"integrity": "sha512-6gEJlVSGn+bhtpypYmdvz+zoZb0oVJgwW/MrFSHEi9P9oBPtVcXBIamIndcvW/75FUuiNQ1mSNoFNMgwSZPHdA=="
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.17.15", "version": "0.17.15",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz",

View File

@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"axios": "^1.3.6", "axios": "^1.3.6",
"bootstrap": "^5.2.3", "bootstrap": "^5.2.3",
"email-generator": "^1.0.1",
"vue": "^3.2.47", "vue": "^3.2.47",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },

View File

@ -0,0 +1,191 @@
<!-- const emails = require('email-generator'); -->
<script>
import DataService from '../services/DataService';
import Client from '../models/Client';
import Driver from '../models/Driver';
import Car from '../models/Car';
import PickUpPoint from '../models/PickUpPoint';
import Order from '../models/Order';
import emails from 'email-generator';
function generateString(len) {
let chrs = 'abdehkmnpswxzABDEFGHKMNPQRSTWXZ123456789';
var str = '';
for (var i = 0; i < len; i++) {
var pos = Math.floor(Math.random() * chrs.length);
str += chrs.substring(pos,pos+1);
}
return str;
}
function generateStatus() {
let status = [
'accepted',
'inDelivery',
'delivered',
'issued'
];
return status[Math.floor(Math.random() * status.length)];
}
function generateDate() {
let date = new Date((Math.floor(Math.random() * (2023-1950)) + 1950) + '-' + (Math.floor(Math.random() * (12-1)) + 1) + '-' + (Math.floor(Math.random() * (31-1)) + 1));
let result = date.getFullYear() + '-';
if (date.getMonth().toString().length == 1) {
result += '0' + date.getMonth() + '-';
} else {
result += date.getMonth() + '-';
}
if (date.getDate().toString().length == 1) {
result += '0' + date.getDate();
} else {
result += date.getDate();
}
return result;
}
export default {
data() {
return {
data: undefined,
transformer: undefined,
headers: [
{name: 'client', label: 'Клиенты'},
{name: 'driver', label: 'Водители'},
{name: 'car', label: 'Машины'},
{name: 'pickUpPoint', label: 'Пункты выдачи'},
{name: 'order', label: 'Заказы'}
],
drivers: [],
cars: [],
clients: [],
pickUpPoints: [],
json: Object
}
},
created() {
DataService.readAll('driver', (data) => new Driver(data))
.then(data => {
this.drivers = data;
});
DataService.readAll('client', (data) => new Client(data))
.then(data => {
this.clients = data;
});
DataService.readAll('pickUpPoint', (data) => new PickUpPoint(data))
.then(data => {
this.pickUpPoints = data;
});
DataService.readAll('car', (data) => new Car(data))
.then(data => {
this.cars = data;
});
},
methods: {
generateClients() {
let count = document.getElementById('clientCount').value;
let additionalUrl = "client";
var request = new XMLHttpRequest();
request.open('GET', '/src/russian_names.json');
request.responseType = 'json';
request.send();
request.onload = function() {
var response = request.response;
this.json = response;
this.data = [];
this.transformer = (data) => new Client(data);
this.data = this.transformer();
for (let i = 0; i < count; i++) {
this.data.name = this.json[Math.floor(Math.random() * this.json.length)].Name;
this.data.phone = ('+7' + (Math.floor(Math.random() * this.json.length) + 1000000000));
this.data.email = emails.generateEmail().split("\"")[1];
DataService.create(additionalUrl, this.data);
}
}
},
generateDrivers() {
let count = document.getElementById('driverCount').value;
let additionalUrl = "driver";
var request = new XMLHttpRequest();
request.open('GET', '/src/russian_names.json');
request.responseType = 'json';
request.send();
request.onload = function() {
var response = request.response;
this.json = response;
this.data = [];
this.transformer = (data) => new Driver(data);
this.data = this.transformer();
for (let i = 0; i < count; i++) {
this.data.name = this.json[Math.floor(Math.random() * this.json.length)].Name;
this.data.birthday = generateDate();
this.data.phone = ('+7' + (Math.floor(Math.random() * this.json.length) + 1000000000));
this.data.email = emails.generateEmail().split("\"")[1];
DataService.create(additionalUrl, this.data);
}
}
},
generateCars() {
let count = document.getElementById('carCount').value;
let additionalUrl = "car";
this.data = [];
this.transformer = (data) => new Car(data);
this.data = this.transformer();
console.log(this.data)
for (let i = 0; i < count; i++) {
this.data.gosNumber = generateString(6);
this.data.vin = generateString(25);
this.data.driverId = this.drivers[Math.floor(Math.random() * this.drivers.length)].id;
DataService.create(additionalUrl, this.data);
}
},
generatePickUpPoints() {
let count = document.getElementById('pickUpPointCount').value;
let additionalUrl = "pickUpPoint";
this.data = [];
this.transformer = (data) => new PickUpPoint(data);
this.data = this.transformer();
for (let i = 0; i < count; i++) {
this.data.address = generateString(50);
DataService.create(additionalUrl, this.data);
}
},
generateOrders() {
let count = document.getElementById('orderCount').value;
let additionalUrl = "order";
this.data = [];
this.transformer = (data) => new Order(data);
this.data = this.transformer();
for (let i = 0; i < count; i++) {
this.data.value = Math.floor(Math.random() * 10000000);
this.data.status = generateStatus();
this.data.date = generateDate();
this.data.clientId = this.clients[Math.floor(Math.random() * this.clients.length)].id;
this.data.sourcePickUpPointId = this.pickUpPoints[Math.floor(Math.random() * this.pickUpPoints.length)].id;
this.data.destPickUpPointId = this.pickUpPoints[Math.floor(Math.random() * this.pickUpPoints.length)].id;
this.data.carId = this.cars[Math.floor(Math.random() * this.cars.length)].id;
DataService.create(additionalUrl, this.data);
}
}
}
}
</script>
<template>
<div class="input-group mb-3">
<input type="text" class="form-control" required id="clientCount" placeholder="Количество клиентов">
<button class="btn btn-primary" type="button" @click.prevent="generateClients">Сгенерировать</button>
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" required id="driverCount" placeholder="Количество водителей">
<button class="btn btn-primary" type="button" @click.prevent="generateDrivers">Сгенерировать</button>
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" required id="carCount" placeholder="Количество машин">
<button class="btn btn-primary" type="button" @click.prevent="generateCars">Сгенерировать</button>
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" required id="pickUpPointCount" placeholder="Количество пунктов выдачи">
<button class="btn btn-primary" type="button" @click.prevent="generatePickUpPoints">Сгенерировать</button>
</div>
<div class="input-group mb-3">
<input type="text" class="form-control" required id="orderCount" placeholder="Количество заказов">
<button class="btn btn-primary" type="button" @click.prevent="generateOrders">Сгенерировать</button>
</div>
</template>

View File

@ -2,21 +2,13 @@ import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router' import { createRouter, createWebHistory } from 'vue-router'
import './style.css' import './style.css'
import App from './App.vue' import App from './App.vue'
import CatalogOrders from './components/Orders.vue' import Orders from './components/Orders.vue'
// import CatalogGroups from './components/CatalogGroups.vue' import Generator from './components/Generator.vue'
// import CatalogDisciplines from './components/CatalogDisciplines.vue'
// import Reports from './components/Reports.vue'
// import ReportGroupStudents from './components/ReportGroupStudents.vue'
// import ReportGroupDisciplines from './components/ReportGroupDisciplines.vue'
const routes = [ const routes = [
{ path: '/', redirect: '/orders' }, { path: '/', redirect: '/orders' },
{ path: '/orders', component: CatalogOrders, meta: { label: 'Заказы' }}, { path: '/orders', component: Orders, meta: { label: 'Заказы' }},
// { path: '/catalogs/groups', component: CatalogGroups }, { path: '/generator', component: Generator, meta: { label: 'Генератор' }}
// { path: '/catalogs/disciplines', component: CatalogDisciplines },
// { path: '/reports', component: Reports, meta: { label: 'Отчеты' } },
// { path: '/reports/group-students', component: ReportGroupStudents },
// { path: '/reports/group-disciplines', component: ReportGroupDisciplines }
] ]
const router = createRouter({ const router = createRouter({

View File

@ -34,11 +34,11 @@ export default class Car {
} }
get driverId() { get driverId() {
return this._groupId; return this._driverId;
} }
set driverId(value) { set driverId(value) {
this._groupId = value; this._driverId = value;
} }
get driverName() { get driverName() {

File diff suppressed because it is too large Load Diff