teddyhuang пре 5 година
родитељ
комит
614ada21fc
5 измењених фајлова са 80 додато и 30 уклоњено
  1. +37
    -16
      app/src/components/AssetGroup.vue
  2. +25
    -7
      app/src/components/Inventory.vue
  3. +14
    -4
      app/src/components/TypeManage.vue
  4. +2
    -1
      src/main/java/com/moze/rms/dao/InventoryDAO.java
  5. +2
    -2
      src/main/resources/application.properties

+ 37
- 16
app/src/components/AssetGroup.vue Прегледај датотеку

@@ -169,7 +169,7 @@
</v-card>
</v-dialog>
<v-btn icon>
<v-icon v-show="level === 0" small @click="deleteAssertGroup(item)">
<v-icon v-show="level === 0 && optionIconShow === index" small @click="deleteAssertGroup(item)">
mdi-delete
</v-icon>
</v-btn>
@@ -193,7 +193,7 @@
{{item.isselect === 'true' ? '選項':'文字'}}
</template>
<template v-slot:item.isrequire='{ item }'>
{{item.isselect === 'true' ? '是':'否'}}
{{item.isrequire === 'true' ? '是':'否'}}
</template>
<template v-slot:item.isexport='{ item }'>
{{item.isselect === 'true' ? '是':'否'}}
@@ -258,12 +258,14 @@
:label='header.text'
v-model="insertColItem[header.value]"
hint='必填'
persistent-hint
v-on:input='oninput(insertColItem, header.value, $event)'
/>
<!--選項型欄位-->
<v-select
v-if="header.value === 'isselect' && isBooleanCol.indexOf(header.value) < 0"
:label='header.text' hint='必填'
persistent-hint
v-model="insertColItem[header.value]"
v-on:input='oninput(insertColItem, header.value, $event)'
:items="selectColItem.isselect"
@@ -274,6 +276,7 @@
<v-select
v-if="header.value && isBooleanCol.indexOf(header.value) >= 0"
:label='header.text' hint='必填'
persistent-hint
v-model="insertColItem[header.value]"
v-on:input='oninput(insertColItem, header.value, $event)'
:items="selectColItem.boolean"
@@ -288,7 +291,7 @@
</v-btn>
<!--欄位說明欄位-->
<v-textarea v-if="header.text === '欄位說明'"
:label='header.text' hint='必填'
:label='header.text'
v-model="insertColItem[header.value]"
v-on:input='oninput(insertColItem, header.value, $event)'
auto-grow
@@ -395,6 +398,7 @@
<v-text-field
v-if="header.text !== '' && header.value !== 'isselect' && isBooleanCol.indexOf(header.value) < 0 && header.value !== 'descript2'"
:label='header.text'
persistent-hint
:value="modifyColItem[header.value]"
hint='必填'
v-on:input='oninput(modifyColItem, header.value, $event)'
@@ -403,6 +407,7 @@
<v-select
v-if="header.value === 'isselect' && isBooleanCol.indexOf(header.value) < 0"
:label='header.text' hint='必填'
persistent-hint
:value="modifyColItem[header.value]"
v-on:input='oninput(modifyColItem, header.value, $event)'
:items="selectColItem.isselect"
@@ -413,6 +418,7 @@
<v-select
v-if="header.value && isBooleanCol.indexOf(header.value) >= 0"
:label='header.text' hint='必填'
persistent-hint
:value="modifyColItem[header.value]"
v-on:input='oninput(modifyColItem, header.value, $event)'
:items="selectColItem.boolean"
@@ -427,7 +433,7 @@
</v-btn>
<!--欄位說明欄位-->
<v-textarea v-if="header.text === '欄位說明'"
:label='header.text' hint='必填'
:label='header.text'
:value="modifyColItem[header.value]"
v-on:input='oninput(modifyColItem, header.value, $event)'
auto-grow
@@ -611,10 +617,12 @@
this.getCols();
},
dialogModifySelectItem() {
this.modifySelectItems = [];
if (this.dialogModify === false) {
this.modifySelectItems = [];
}
},
modifySelectItems() {
console.log(this.modifySelectItems[0]);
// console.log(this.modifySelectItems[0]);
},
dialogInsert() {
this.insertColItem.index = (parseInt(this.allCols[this.assertGroup[this.currentTab].value][this.allCols[this.assertGroup[this.currentTab].value].length - 1].index) + 1).toString();
@@ -644,6 +652,7 @@
this.$axios.get(`/assert/selectItems?tablename=${this.modifyColItem.tablename}&&colname=${this.modifyColItem.colname}`).then((resp) => {
console.log(resp.data.data);
this.modifySelectItems = resp.data.data;
console.log(this.modifySelectItems);
});
},
closeDialogModifySelectItem() {
@@ -707,14 +716,27 @@
});
},
insertCol() {
console.log(this.insertColItem);
// eslint-disable-next-line no-constant-condition
// if (1 === 1 ) return;
this.insertColItem.issearch = 'true';
this.insertColItem.isexport = 'true';
this.insertColItem.isrequire = 'true';
console.log(this.insertColItem);
// this.insertColItem.isrequire = 'true';
let stop;
// const pattern = new RegExp("[\u4E00-\u9FA5]+");
const pattern1 = new RegExp('\\w');
const pattern2 = new RegExp('^[A-Z]+|^[a-z]+');
const pattern3 = new RegExp('\\s');
if (!pattern1.test(this.insertColItem.colname) || !pattern2.test(this.insertColItem.colname) || pattern3.test(this.insertColItem.colname)) {
alert('1.資料庫欄位名稱限定使用英文及數字\n' +
'2.首位須為英文\n' +
'3.不得有空白');
stop = true;
return;
}

for (const key in this.insertColItem) {
if (this.insertColItem[key] === '' && key !== 'tablename' && key !== 'insertSelectItems' && key !== 'modifySelectItems' && key !== 'isselect' && key !== 'descript2') {
alert(key);
alert('所有資料不可為空');
stop = true;
return;
@@ -734,12 +756,11 @@
this.getCols();
this.close();
this.insertSelectItems = [];
// delete this.insertColItem.tablename;
// delete this.insertColItem.insertselectItems;
this.insertColItem = {};
// Object.keys(this.insertColItem).forEach((key) => {
// this.insertColItem[key] = '';
// });
delete this.insertColItem.tablename;
delete this.insertColItem.insertselectItems;
Object.keys(this.insertColItem).forEach((key) => {
this.insertColItem[key] = '';
});
alert('已新增');
}
);
@@ -776,7 +797,7 @@
for (const key in this.modifyColItem) {
if (this.modifyColItem[key] === '' && key !== 'level'
&& key !== 'insertSelectItems' && key !== 'modifySelectItems'
&& key !== 'oldIndex' && key !== 'type') {
&& key !== 'oldIndex' && key !== 'type' && key !== 'descript2') {
console.log(key);
alert('所有資料不可為空');
stop = true;


+ 25
- 7
app/src/components/Inventory.vue Прегледај датотеку

@@ -19,7 +19,7 @@
</v-card-text>
</v-card>
</v-dialog>
<v-data-table class="" :headers="headers" :items="items"
<v-data-table class="" :headers="headers" :items="items" :height="fullHeight-59-64-72+20"

disable-sort
fixed-header
@@ -144,13 +144,11 @@
:disabled="isDisabled(header.value)"
v-model="searchItem[header.value]"
:persistent-hint="isRequire(header.value)"
hint="必填"
/>
<v-select
dense
v-if="isSelect(header.value) && headers[index].text"
:persistent-hint="isRequire(header.value)"
hint="必選"
:label="header.text"
v-model="searchItem[header.value]"
:items="selectItem[header.value]"
@@ -227,15 +225,15 @@
:label="header.text"
:disabled="isDisabled(header.value)"
v-bind:value="insertItem[header.value]"
:hint="comments[header.value]"
:persistent-hint="isRequire(header.value)"
hint="必填"
v-on:input="oninput(insertItem, header.value, $event)"
/>
<v-select
dense
v-if="isSelect(header.value) && headers[index].text"
:persistent-hint="isRequire(header.value)"
hint="必選"
:hint="comments[header.value]"
:label="header.text"
:value="insertItem[header.value]"
v-on:input="oninput(insertItem, header.value, $event)"
@@ -319,14 +317,14 @@
:disabled="isDisabled(header.value)"
v-bind:value="modifyItem[header.value]"
:persistent-hint="isRequire(header.value)"
hint="必填"
:hint="comments[header.value]"
v-on:input="oninput(modifyItem, header.value, $event)"
/>
<v-select
dense
v-if="isSelect(header.value) && headers[index].text"
:persistent-hint="isRequire(header.value)"
hint="必選"
:hint="comments[header.value]"
:label="header.text"
:value="modifyItem[header.value]"
v-on:input="oninput(modifyItem, header.value, $event)"
@@ -386,6 +384,7 @@
file: null,
progress: false,
level: parseInt(localStorage.getItem('level')),
comments: {}
}
},
async mounted() {
@@ -455,6 +454,7 @@
}
this.insertItem[item.colname] = null;
this.searchItem[item.colname] = '';
this.comments[item.colname] = item.descript2;
});
});
},
@@ -475,6 +475,15 @@
});
},
insertOne() {
let stop;
for (const key in this.insertItem) {
if (this.isRequire(key) && (this.insertItem[key] === '' || this.insertItem[key] === null)) {
alert(`必填欄位不可為空`);
stop = true;
return;
}
}
if (stop === true) return;
this.insertItem.tablename = this.tablename;
this.$axios.post(`/inventory?`, this.insertItem).then(() => {
delete this.insertItem.tablename;
@@ -504,6 +513,15 @@
return this.isrequired.indexOf(key) >= 0;
},
modifyOne() {
let stop;
for (const key in this.modifyItem) {
if (this.isRequire(key) && (this.modifyItem[key] === '' || this.modifyItem[key] === null)) {
alert(`必填欄位不可為空`);
stop = true;
return;
}
}
if (stop === true) return;
this.modifyItem.tablename = this.tablename;
this.$axios.put(`/inventory?`, this.modifyItem).then(() => {
this.getInventories();


+ 14
- 4
app/src/components/TypeManage.vue Прегледај датотеку

@@ -102,7 +102,7 @@
v-if="!(header.text === '說明' || header.text === '範例' || header.text === '')"
:label='header.text'
:value="insertColItem[header.value]"
hint='必填'
:hint="'CIA'.indexOf(header.text) < 0?'必填':''"
v-on:input='oninput(insertColItem, header.value, $event)'
/>
<!--欄位說明欄位-->
@@ -234,7 +234,7 @@
insertColItem: {},
modifyColItem: {},
currentTab: 0,
cols: [],
cols: [{}],
oldId: '',
level: parseInt(localStorage.getItem('level'))
}
@@ -312,13 +312,23 @@
stop = true;
return;
}
this.cols.forEach((col) => {
for (let i = 0; i < this.cols.length; i++) {
let col = this.cols[i];
// eslint-disable-next-line no-prototype-builtins
if (col.type === this.insertColItem.type) {
alert('項次不可重複');
stop = true;
return;
}
});
}
for (let i = 0; i < this.headers.length; i++) {
let col = this.headers[i];
if ('CIA'.indexOf(col.text) < 0 && col.value !== 'actions' && (!this.insertColItem[col.value] || this.insertColItem[col.value] === '')) {
alert('必填欄位不可為空');
stop = true;
return;
}
}
if (stop === true) return;
this.insertColItem.tablename = this.assertGroup[this.currentTab].value;
this.$axios.post(`/type`, this.insertColItem).then(() => {


+ 2
- 1
src/main/java/com/moze/rms/dao/InventoryDAO.java Прегледај датотеку

@@ -59,7 +59,7 @@ public interface InventoryDAO extends SqlObject {
while (iterator.hasNext()) {
Map.Entry<String, Object> next = iterator.next();
String key = next.getKey();
Object value = next.getValue();
Object value = next.getValue() != null ? next.getValue().toString() : "";
System.out.println(key);
if (key != "tablename" && key != "id") {
cols += "[" + key + "], ";
@@ -93,6 +93,7 @@ public interface InventoryDAO extends SqlObject {
}
}
sql = sql.substring(0, sql.length() - 4);
System.out.println(sql);

return handle.createQuery(sql).mapTo(Integer.class).one();
}


+ 2
- 2
src/main/resources/application.properties Прегледај датотеку

@@ -1,5 +1,5 @@
#spring.profiles.active=dev
spring.profiles.active=pro
spring.profiles.active=dev
#spring.profiles.active=pro

server.servlet.context-path=/rms
spring.servlet.multipart.max-file-size=100MB


Loading…
Откажи
Сачувај