Compare commits

..

3 Commits

Author SHA1 Message Date
e50730e68d add comment 2026-02-22 13:58:38 +03:00
f78c244b0c add comment 2026-02-22 13:58:11 +03:00
a83c3012ea PRB add pdf 2026-02-02 11:27:05 +03:00
10 changed files with 132 additions and 34 deletions

View File

@@ -1,5 +1,13 @@
// module.exports = {
// presets: [
// '@vue/cli-plugin-babel/preset'
// ]
// }
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
['@vue/app',
{
"useBuiltIns": "entry"
}]
],
};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.datePicker input{text-align:center;cursor:pointer}#BOFReport .divider{border-right:1px solid rgba(0,0,0,.12)}#BOFReport .v-data-table{border:thin solid rgba(0,0,0,.12);border-radius:0}#BOFReport .v-data-table-header{background-color:#fafafa!important}#BOFReport #datePicker{text-align:center}

View File

@@ -1 +0,0 @@
.datePicker input{text-align:center;cursor:pointer}#BOFReport .divider{border-right:1px solid rgba(0,0,0,.12)}#BOFReport .v-data-table{border:thin solid rgba(0,0,0,.12);border-radius:0}#BOFReport .v-data-table-header{background-color:#fafafa!important}#BOFReport #datePicker{text-align:center}

2
dist/index.html vendored
View File

@@ -1 +1 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link href=css/chunk-099daac5.5dcf9551.css rel=prefetch><link href=css/chunk-187a5f3f.baf9390a.css rel=prefetch><link href=css/chunk-1b4ec2a7.2c0b98f5.css rel=prefetch><link href=css/chunk-28dc4aef.92e08859.css rel=prefetch><link href=css/chunk-2ae756f5.e2bb5296.css rel=prefetch><link href=css/chunk-2f415156.4cbfaa5e.css rel=prefetch><link href=css/chunk-33abae75.277a91b1.css rel=prefetch><link href=css/chunk-36308615.a37667a3.css rel=prefetch><link href=css/chunk-366d1341.185d52b1.css rel=prefetch><link href=css/chunk-39ed1a08.e2bb5296.css rel=prefetch><link href=css/chunk-3ac51e83.2f72ae9f.css rel=prefetch><link href=css/chunk-4348ccc7.e2bb5296.css rel=prefetch><link href=css/chunk-461f6ae6.57820d02.css rel=prefetch><link href=css/chunk-56216674.8d45942f.css rel=prefetch><link href=css/chunk-5e54c849.e828f278.css rel=prefetch><link href=css/chunk-732e6f1b.d2b8d2dd.css rel=prefetch><link href=css/chunk-75bd6bd9.e2bb5296.css rel=prefetch><link href=css/chunk-dfddc2f4.205ff549.css rel=prefetch><link href=css/chunk-e2532de8.f6480a73.css rel=prefetch><link href=css/chunk-f0d4497c.c2340273.css rel=prefetch><link href=css/chunk-fecca1e4.727f9d74.css rel=prefetch><link href=css/index.a7e181f8.css rel=prefetch><link href=js/chunk-099daac5.6421b5ec.js rel=prefetch><link href=js/chunk-187a5f3f.56f58655.js rel=prefetch><link href=js/chunk-1b4ec2a7.7931f673.js rel=prefetch><link href=js/chunk-28dc4aef.41cf2e7e.js rel=prefetch><link href=js/chunk-2ae756f5.9d885529.js rel=prefetch><link href=js/chunk-2f415156.896b00cd.js rel=prefetch><link href=js/chunk-33abae75.170389c0.js rel=prefetch><link href=js/chunk-36308615.f133b706.js rel=prefetch><link href=js/chunk-366d1341.72f79ed1.js rel=prefetch><link href=js/chunk-39ed1a08.c09d2747.js rel=prefetch><link href=js/chunk-3ac51e83.80a082ff.js rel=prefetch><link href=js/chunk-4348ccc7.17b88bfc.js rel=prefetch><link href=js/chunk-461f6ae6.ea2428b8.js rel=prefetch><link href=js/chunk-56216674.1a520d59.js rel=prefetch><link href=js/chunk-5cee169e.561da2d4.js rel=prefetch><link href=js/chunk-5e54c849.2cb297ec.js rel=prefetch><link href=js/chunk-732e6f1b.1b4bff45.js rel=prefetch><link href=js/chunk-75bd6bd9.61c63953.js rel=prefetch><link href=js/chunk-dfddc2f4.712bffac.js rel=prefetch><link href=js/chunk-e2532de8.70432684.js rel=prefetch><link href=js/chunk-f0d4497c.16468f63.js rel=prefetch><link href=js/chunk-fecca1e4.3e539e1b.js rel=prefetch><link href=js/index.2f360c48.js rel=prefetch><link href=css/app.3a8b8736.css rel=preload as=style><link href=css/chunk-vendors.90b8a054.css rel=preload as=style><link href=js/app.66b09407.js rel=preload as=script><link href=js/chunk-vendors.d1d6d26b.js rel=preload as=script><link href=css/chunk-vendors.90b8a054.css rel=stylesheet><link href=css/app.3a8b8736.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.d1d6d26b.js></script><script src=js/app.66b09407.js></script></body></html>
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link href=css/chunk-099daac5.5dcf9551.css rel=prefetch><link href=css/chunk-1a2883df.e2bb5296.css rel=prefetch><link href=css/chunk-1b4ec2a7.2c0b98f5.css rel=prefetch><link href=css/chunk-28dc4aef.92e08859.css rel=prefetch><link href=css/chunk-2f415156.4cbfaa5e.css rel=prefetch><link href=css/chunk-33abae75.277a91b1.css rel=prefetch><link href=css/chunk-36308615.a37667a3.css rel=prefetch><link href=css/chunk-366d1341.185d52b1.css rel=prefetch><link href=css/chunk-3ac51e83.2f72ae9f.css rel=prefetch><link href=css/chunk-4348ccc7.e2bb5296.css rel=prefetch><link href=css/chunk-461f6ae6.57820d02.css rel=prefetch><link href=css/chunk-54065d26.5dcf9551.css rel=prefetch><link href=css/chunk-56216674.8d45942f.css rel=prefetch><link href=css/chunk-59b45f40.1eb39d9a.css rel=prefetch><link href=css/chunk-5e54c849.e828f278.css rel=prefetch><link href=css/chunk-732e6f1b.d2b8d2dd.css rel=prefetch><link href=css/chunk-75bd6bd9.e2bb5296.css rel=prefetch><link href=css/chunk-dfddc2f4.205ff549.css rel=prefetch><link href=css/chunk-e2532de8.f6480a73.css rel=prefetch><link href=css/chunk-f3ad6b7e.e2bb5296.css rel=prefetch><link href=css/chunk-fac4653a.baf9390a.css rel=prefetch><link href=css/chunk-fecca1e4.727f9d74.css rel=prefetch><link href=css/index.a7e181f8.css rel=prefetch><link href=js/chunk-099daac5.2f6b8206.js rel=prefetch><link href=js/chunk-1a2883df.c22c478d.js rel=prefetch><link href=js/chunk-1b4ec2a7.73fee153.js rel=prefetch><link href=js/chunk-28dc4aef.be8250d1.js rel=prefetch><link href=js/chunk-2f415156.eb58ac39.js rel=prefetch><link href=js/chunk-33abae75.2a596669.js rel=prefetch><link href=js/chunk-36308615.a91d1f91.js rel=prefetch><link href=js/chunk-366d1341.11939524.js rel=prefetch><link href=js/chunk-3ac51e83.55d044cc.js rel=prefetch><link href=js/chunk-4348ccc7.ed2b6ec3.js rel=prefetch><link href=js/chunk-461f6ae6.2b7b83d6.js rel=prefetch><link href=js/chunk-54065d26.b04206ab.js rel=prefetch><link href=js/chunk-56216674.379bc077.js rel=prefetch><link href=js/chunk-59b45f40.e7d79832.js rel=prefetch><link href=js/chunk-5cee169e.ba0ba2c7.js rel=prefetch><link href=js/chunk-5e54c849.131f0172.js rel=prefetch><link href=js/chunk-732e6f1b.4d5f9063.js rel=prefetch><link href=js/chunk-75bd6bd9.25c2a942.js rel=prefetch><link href=js/chunk-dfddc2f4.7eaa8f77.js rel=prefetch><link href=js/chunk-e2532de8.780decb7.js rel=prefetch><link href=js/chunk-f3ad6b7e.845a60ed.js rel=prefetch><link href=js/chunk-fac4653a.73bac5b0.js rel=prefetch><link href=js/chunk-fecca1e4.7d22afb7.js rel=prefetch><link href=js/index.93ef8bfd.js rel=prefetch><link href=css/app.3a8b8736.css rel=preload as=style><link href=css/chunk-vendors.90b8a054.css rel=preload as=style><link href=js/app.eda437ec.js rel=preload as=script><link href=js/chunk-vendors.cc5b3663.js rel=preload as=script><link href=css/chunk-vendors.90b8a054.css rel=stylesheet><link href=css/app.3a8b8736.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.cc5b3663.js></script><script src=js/app.eda437ec.js></script></body></html>

35
package-lock.json generated
View File

@@ -8,7 +8,9 @@
"name": "vue_cli",
"version": "0.1.0",
"dependencies": {
"@babel/polyfill": "^7.12.1",
"axios": "^0.19.2",
"caniuse-lite": "^1.0.30001769",
"chart.js": "^3.9.1",
"chartjs-adapter-moment": "^1.0.1",
"chartjs-plugin-datalabels": "^2.2.0",
@@ -1118,6 +1120,23 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/@babel/polyfill": {
"version": "7.12.1",
"resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz",
"integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==",
"deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.",
"dependencies": {
"core-js": "^2.6.5",
"regenerator-runtime": "^0.13.4"
}
},
"node_modules/@babel/polyfill/node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/@babel/preset-env": {
"version": "7.9.6",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz",
@@ -3660,10 +3679,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001669",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz",
"integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==",
"dev": true,
"version": "1.0.30001769",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
"integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
"funding": [
{
"type": "opencollective",
@@ -7180,12 +7198,6 @@
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
"dev": true
},
"node_modules/highcharts": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-6.2.0.tgz",
"integrity": "sha512-A4E89MA+kto8giic7zyLU6ZxfXnVeCUlKOyzFsah3+n4BROx4bgonl92KIBtwLud/mIWir8ahqhuhe2by9LakQ==",
"peer": true
},
"node_modules/highlight.js": {
"version": "10.7.3",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
@@ -11128,8 +11140,7 @@
"node_modules/regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
"dev": true
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
"node_modules/regenerator-transform": {
"version": "0.14.4",

View File

@@ -8,6 +8,7 @@
"lint": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint"
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"axios": "^0.19.2",
"chart.js": "^3.9.1",
"chartjs-adapter-moment": "^1.0.1",
@@ -62,4 +63,4 @@
">1%",
"not dead"
]
}
}

View File

@@ -1,7 +1,7 @@
<template>
<v-container fluid id="PRB_FileControl" class="pa-10">
<v-card class="mx-auto" max-width="1000" tile>
<v-card class="mx-auto" max-width="1100" tile>
<v-toolbar elevation="2" color="purple darken-2" dark>
<v-toolbar-title>
@@ -94,8 +94,8 @@
<v-col style="min-width: 295px;" v-show="isLogging">
<v-file-input @change="getFile" v-model="file.input" class="pt-7" label="Выберите файл (doc, xls)" outlined
dense accept=".xlsx, .docx, .xls, .doc"></v-file-input>
<v-file-input @change="getFile" v-model="file.input" class="pt-7" label="Выберите файл (doc, xls, pdf)"
outlined dense accept=".xlsx, .docx, .xls, .doc, .pdf"></v-file-input>
</v-col>
@@ -109,14 +109,11 @@
<v-spacer></v-spacer>
<v-btn icon :disabled="!selectState || loading" :href="baseURL + file.name" download
<v-btn color="purple darken-2" icon :disabled="!selectState || loading" :href="baseURL + file.name" download
@click="setHistory(file.id)">
<v-icon>mdi-download</v-icon>
</v-btn>
<!-- <v-btn icon v-show="isLogging" :disabled="!selectState || loading">
<v-icon>mdi-pencil</v-icon>
</v-btn> -->
<v-btn icon color="red lighten-1" v-show="isLogging" :disabled="!selectState || loading" @click="deleteFile">
<v-icon>mdi-delete</v-icon>
@@ -138,9 +135,22 @@
@input="inputCompleted({ id: item.id, value: $event === true ? 1 : 0 })"></v-simple-checkbox>
</template>
<template v-slot:item.comment="{ item }">
<v-btn v-show="isLogging" v-if="item.comment.length === 0" text icon color="purple darken-2"
@click.stop="dialog.comment = true; file.name = item.file_name; file.comment = item.comment; file.id = item.id;">
<v-icon>mdi-comment-plus-outline</v-icon>
</v-btn>
<v-btn v-show="isLogging" v-else-if="item.comment.length !== 0" text icon color="purple darken-2"
@click.stop="dialog.comment = true; file.name = item.file_name; file.comment = item.comment; file.id = item.id;">
<v-icon>mdi-pencil</v-icon>
</v-btn>
<span>{{ item.comment }}</span>
</template>
<template v-slot:item.id="{ item }">
<v-btn class="ml-2" text icon
<v-btn class="ml-2" text icon color="purple darken-2"
@click.stop="dialog.history = true; file.name = item.file_name; getHistory({ date: date, id: item.id })">
<v-icon>mdi-information</v-icon>
</v-btn>
@@ -149,6 +159,34 @@
</v-container>
</v-card>
<v-dialog v-model="dialog.comment" transition="dialog-bottom-transition" max-width="900">
<v-card elevation>
<v-toolbar color="purple darken-2" dark>
<v-icon class="ma-2">
mdi-comment-outline
</v-icon>Примечание для -
{{ file.name }}</v-toolbar>
<v-card-text class="pa-4">
</v-card-text>
<v-textarea autofocus class="pl-2 pr-2" filled name="input-7-4" v-model="file.comment"></v-textarea>
<v-card-actions class="justify-end">
<v-btn tile outlined color="purple darken-2" :loading="loading"
@click="setComment({ comment: file.comment, id: file.id }).then(() => { dialog.comment = false; reload(); })">
<v-icon>mdi-content-save</v-icon>Сохранить
<template v-slot:loader>
<span class="custom-loader">
<v-icon light>mdi-cached</v-icon>
</span>
</template>
</v-btn>
<v-btn tile outlined color="purple darken-2" @click="dialog.comment = false">Закрыть</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="dialog.history" transition="dialog-bottom-transition" max-width="900">
<v-card elevation>
<v-toolbar color="purple darken-2" dark>
@@ -163,7 +201,7 @@
</v-card-text>
<v-card-actions class="justify-end">
<v-btn text @click="dialog.history = false">Закрыть</v-btn>
<v-btn tile outlined color="purple darken-2" @click="dialog.history = false">Закрыть</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
@@ -186,8 +224,8 @@ import { mapGetters, mapActions, mapMutations } from "vuex";
export default {
data: vm => ({
progress: 100,
file: { name: null, id: null, input: null, data: null },
dialog: { log: false, history: false },
file: { name: null, id: null, input: null, data: null, comment: null },
dialog: { log: false, history: false, comment: false },
pass: { val: null, select: true },
selectState: false,
snackbar: false,
@@ -197,6 +235,7 @@ export default {
extensionsList: [
{ value: "mdi-file-excel", extension: ['xlsx', 'xls'] },
{ value: "mdi-file-word", extension: ['docx', 'doc'] },
{ value: "mdi-file-pdf", extension: ['pdf'] },
]
}),
computed: {
@@ -222,6 +261,11 @@ export default {
this.data.headers.forEach(element => {
if (element.value === "comment") {
element.divider = 'true'
}
if (!this.isLogging) {
if (element.value === "isCompleted") {
element.align = " d-none";
@@ -247,13 +291,26 @@ export default {
if (this.isLogging) {
if (element.value === "file_name") {
element.width = '60%';
element.width = '30%';
element.divider = 'true';
}
} else {
if (element.value === "file_name") {
element.width = '80%';
element.width = '40%';
element.divider = 'true';
}
}
if (this.isLogging) {
if (element.value === "comment") {
element.width = '30%';
}
} else {
if (element.value === "comment") {
element.width = '40%';
}
}
// var metrics = ctx.measureText(element.text);
// var cellWidth = metrics.width;
// element.width = cellWidth + 65;
@@ -286,6 +343,7 @@ export default {
setCompleted: "setCompleted",
setHistory: "setHistory",
getHistory: "getHistory",
setComment: "setComment",
deleteData: "deleteData",
}),
getIcon(ext) {

View File

@@ -6,7 +6,7 @@ import store from "./store";
import router from "./routes";
import vuetify from "./plugins/vuetify";
import underscore from "vue-underscore";
import '@babel/polyfill';
Vue.config.productionTip = false;

View File

@@ -70,9 +70,13 @@ export default {
case "file_name":
element.text = "Имя файла";
break;
case "comment":
element.text = "Примечание";
break;
}
});
},
set_history(state, payload) {
state.history.items = payload;
state.history.headers = utils.getHeaders(state.history.items);
@@ -142,6 +146,7 @@ export default {
console.log(data)
store.commit("set_loading_file", true);
return axios
//.post("http://192.168.76.112//_api_server_vue//modules/PRB_FileControl/File_Upload.php", data.file, {
.post("http://192.168.76.100:81//_api_server_vue//modules/PRB_FileControl/File_Upload.php", data.file, {
headers: {
"Content-Type": "multipart/form-data",
@@ -157,6 +162,7 @@ export default {
},
})
.then(() => {
console.log('345345');
store.commit("set_uploadText", param.data.item.success);
store.commit("set_uploadStatus", true);
store.commit("set_loading_file", false);
@@ -227,6 +233,23 @@ export default {
.catch(() => { commit("set_loading", false); })
.finally(() => { commit("set_loading", false); });
},
setComment({ commit }, item) {
commit("set_loading", true);
return axios({
data: {
params: {
flag: "setComment",
data: item,
},
},
})
.then(() => {
commit("set_loading", false);
})
.catch(() => { commit("set_loading", false); })
.finally(() => { commit("set_loading", false); });
},
setHistory({ commit }, item) {
commit("set_loading", true);
return axios({