Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
caoqianming 2021-11-22 14:37:41 +08:00
commit b80b3ac5f2
1 changed files with 564 additions and 416 deletions

View File

@ -2,24 +2,31 @@
<div class="app-container"> <div class="app-container">
<el-card> <el-card>
<el-row :gutter="24"> <el-row :gutter="24">
<!--表格-->
<el-col :span="6"> <el-col :span="6">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div
<span style="font-size: 16px; font-weight: 700" slot="header"
>物料检验记录表</span class="clearfix"
> >
<span style="font-size: 16px; font-weight: 700">物料检验记录表</span>
</div> </div>
<el-button type="primary" icon="el-icon-plus" @click="handleCreate" <el-button
>新增</el-button type="primary"
icon="el-icon-plus"
@click="handleCreate"
> >
新增
</el-button>
<!--表格列表-->
<el-table <el-table
v-el-height-adaptive-table="{ bottomOffset: 50 }"
:data="recordformList.results" :data="recordformList.results"
border border
fit fit
stripe stripe
highlight-current-row highlight-current-row
height="100" height="100"
v-el-height-adaptive-table="{ bottomOffset: 50 }"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
> >
<el-table-column type="index" width="50"/> <el-table-column type="index" width="50"/>
@ -31,22 +38,26 @@
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
@click="handleLook(scope)" @click="handleLook(scope)"
>查看</el-link >查看
</el-link
> >
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
@click="handleEdit(scope)" @click="handleEdit(scope)"
>编辑</el-link >编辑
</el-link
> >
<el-link <el-link
v-if="checkPermission(['material_delete'])" v-if="checkPermission(['material_delete'])"
type="danger" type="danger"
@click="handleDelete(scope)" @click="handleDelete(scope)"
>删除</el-link >删除
</el-link
> >
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!--新增编辑记录表格-->
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:title="dialogType === 'edit' ? '编辑记录表格' : '新增记录表格'" :title="dialogType === 'edit' ? '编辑记录表格' : '新增记录表格'"
@ -63,37 +74,40 @@
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false" <el-button type="danger" @click="dialogVisible = false"
>取消</el-button >取消
> </el-button>
<el-button type="primary" @click="recordformconfirm('Forms')" <el-button type="primary" @click="recordformconfirm('Forms')"
>确认</el-button >确认
> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!--表格展示-->
<el-dialog <el-dialog
:model="tableForm"
:visible.sync="dialogVisibleForm" :visible.sync="dialogVisibleForm"
:title="tableForm.name" :title="tableForm.name"
> >
<el-form label-width="80px" label-position="right"> <el-form ref="Forms" label-width="80px" :model="checkForm">
<el-row <el-row
v-for="(item, $index) in fieldList.results" v-for="(item, $index) in fieldList.results"
v-show="filterBlock(item.parent,item.rule_expression,item.need_judge)"
:key="$index" :key="$index"
> >
<el-form-item <el-form-item v-if="item.field_type === 'string'" :label="item.field_name">
v-if="item.field_type === 'string'" <el-input
:label="item.field_name" v-model="checkForm[item.field_key]"
> placeholder="请输入"
<el-input placeholder="请输入" v-model="item.sort" /> @input="keyChange(item.field_key)"
/>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-else-if="item.field_type === 'int'" v-else-if="item.field_type === 'int'"
:label="item.field_name" :label="item.field_name"
> >
<el-input <el-input
v-model="checkForm[item.field_key]"
type="number" type="number"
placeholder="请输入" placeholder="请输入"
v-model="item.sort" @input="keyChange(item.field_key)"
/> />
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -101,9 +115,10 @@
:label="item.field_name" :label="item.field_name"
> >
<el-input <el-input
v-model="checkForm[item.field_key]"
type="number" type="number"
placeholder="请输入" placeholder="请输入"
v-model="item.sort" @input="keyChange(item.field_key)"
/> />
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -111,11 +126,12 @@
:label="item.field_name" :label="item.field_name"
> >
<el-date-picker <el-date-picker
v-model="item.create_time" v-model="checkForm[item.field_key]"
type="date" type="date"
placeholder="选择日期" placeholder="选择日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
style="width: 100%" style="width: 100%"
@change="keyChange(item.field_key)"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -124,11 +140,12 @@
:label="item.field_name" :label="item.field_name"
> >
<el-date-picker <el-date-picker
v-model="item.create_time" v-model="checkForm[item.field_key]"
type="datetime" type="datetime"
placeholder="选择日期" placeholder="选择日期"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%" style="width: 100%"
@change="keyChange(item.field_key)"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -137,9 +154,10 @@
:label="item.field_name" :label="item.field_name"
> >
<el-select <el-select
v-model="checkForm[item.field_key]"
style="width: 100%" style="width: 100%"
v-model="item.sort"
placeholder="请选择" placeholder="请选择"
@change="keyChange(item.field_key)"
> >
<el-option <el-option
v-for="item1 in item.field_choice" v-for="item1 in item.field_choice"
@ -155,8 +173,8 @@
:label="item.field_name" :label="item.field_name"
> >
<el-select <el-select
v-model="checkForm[item.field_key]"
style="width: 100%" style="width: 100%"
v-model="optio"
multiple multiple
placeholder="请选择" placeholder="请选择"
> >
@ -178,6 +196,7 @@
</el-dialog> </el-dialog>
</el-card> </el-card>
</el-col> </el-col>
<!--表格字段-->
<el-col :span="18"> <el-col :span="18">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
@ -187,8 +206,10 @@
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@click="handlefieldCreate" @click="handlefieldCreate"
>新增</el-button >新增
</el-button
> >
<!--表格字段列表-->
<el-table <el-table
:data="fieldList.results" :data="fieldList.results"
border border
@ -202,19 +223,22 @@
<el-table-column label="字段名称"> <el-table-column label="字段名称">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.field_name scope.row.field_name
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="字段类型"> <el-table-column label="字段类型">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
options_[scope.row.field_type] options_[scope.row.field_type]
}}</template> }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="字段标识"> <el-table-column label="字段标识">
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.field_key scope.row.field_key
}}</template> }}
</template>
</el-table-column> </el-table-column>
<!-- <!--
<el-table-column label="上限值"> <el-table-column label="上限值">
@ -250,13 +274,15 @@
<el-link <el-link
v-if="checkPermission(['material_update'])" v-if="checkPermission(['material_update'])"
@click="handlefieldEdit(scope)" @click="handlefieldEdit(scope)"
>编辑</el-link >编辑
</el-link
> >
<el-link <el-link
v-if="checkPermission(['material_delete'])" v-if="checkPermission(['material_delete'])"
type="danger" type="danger"
@click="handlefieldDelete(scope)" @click="handlefieldDelete(scope)"
>删除</el-link >删除
</el-link
> >
</template> </template>
</el-table-column> </el-table-column>
@ -268,6 +294,7 @@
:limit.sync="listQueryfield.page_size" :limit.sync="listQueryfield.page_size"
@pagination="fieldLists" @pagination="fieldLists"
/> />
<!--表格字段新增编辑-->
<el-dialog <el-dialog
:visible.sync="dialogVisible1" :visible.sync="dialogVisible1"
:title="dialogType1 === 'edit' ? '编辑表格字段' : '新增表格字段'" :title="dialogType1 === 'edit' ? '编辑表格字段' : '新增表格字段'"
@ -294,11 +321,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="字段标识" prop="field_key"> <el-form-item label="字段标识" prop="field_key">
<el-input <el-input v-model="field.field_key" placeholder="字段标识" @input="checkValue"/>
v-model="field.field_key"
placeholder="字段标识"
onkeyup="value=value.replace(/[^A-Za-z_\/]/ig,'')"
/>
</el-form-item> </el-form-item>
<el-form-item label="字段名称" prop="field_name"> <el-form-item label="字段名称" prop="field_name">
<el-input v-model="field.field_name" placeholder="字段名称"/> <el-input v-model="field.field_name" placeholder="字段名称"/>
@ -340,7 +363,9 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="字段父级">
<treeselect v-model="field.parent" :multiple="false" :options="treeDate" placeholder="字段父级"/>
</el-form-item>
<el-form-item label="是否需要判定" prop="need_judge"> <el-form-item label="是否需要判定" prop="need_judge">
<el-switch v-model="field.need_judge"></el-switch> <el-switch v-model="field.need_judge"></el-switch>
</el-form-item> </el-form-item>
@ -407,9 +432,6 @@
</el-form-item> </el-form-item>
!--> !-->
<el-form-item label="表达式" v-if="field.need_judge == true"> <el-form-item label="表达式" v-if="field.need_judge == true">
<el-input v-model="field.rule_expression" type="textarea"/> <el-input v-model="field.rule_expression" type="textarea"/>
</el-form-item> </el-form-item>
@ -424,10 +446,12 @@
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogVisible1 = false" <el-button type="danger" @click="dialogVisible1 = false"
>取消</el-button >取消
</el-button
> >
<el-button type="primary" @click="fieldconfirm('Form')" <el-button type="primary" @click="fieldconfirm('Form')"
>确认</el-button >确认
</el-button
> >
</div> </div>
</el-dialog> </el-dialog>
@ -455,6 +479,9 @@ import {
} from "@/api/mtm"; } from "@/api/mtm";
import {genTree} from "@/utils"; import {genTree} from "@/utils";
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
const defaultstep = { const defaultstep = {
name: "", name: "",
number: "", number: "",
@ -463,7 +490,7 @@ const defaultstep = {
const defaultrecordform = {}; const defaultrecordform = {};
const defaultfield = {}; const defaultfield = {};
export default { export default {
components: { Pagination, vueJsonEditor }, components: {Pagination, vueJsonEditor, Treeselect},
data() { data() {
return { return {
step: defaultstep, step: defaultstep,
@ -481,6 +508,7 @@ export default {
field_key: "", field_key: "",
field_name: "", field_name: "",
sort: "", sort: "",
parent: "",
field_choice: [""], field_choice: [""],
}, },
field_choice: [""], field_choice: [""],
@ -495,8 +523,9 @@ export default {
dialogVisible: false, dialogVisible: false,
dialogType1: "new", dialogType1: "new",
dialogVisible1: false, dialogVisible1: false,
tableForm: { tableForm: defaultrecordform,
name: "", checkForm:{
hhh:'',
}, },
listQueryrecordform: { listQueryrecordform: {
page: 1, page: 1,
@ -508,6 +537,7 @@ export default {
fieldList: { fieldList: {
count: 0, count: 0,
}, },
treeDate: [],
listQueryfield: { listQueryfield: {
page: 1, page: 1,
page_size: 20, page_size: 20,
@ -586,6 +616,85 @@ export default {
this.recordformLists(); this.recordformLists();
}, },
methods: { methods: {
keyChange(key){
let y = this.checkForm[key];
this.$set(this.checkForm,key,y);
this.fieldList.results=[...this.fieldList.results];
this.filterBlock();
},
filterBlock(parent,rule,judge){
let that = this;
if(parent!==''&&parent!==null&&parent!==undefined){
if(judge){
if(rule!==''&&rule!==null&&rule!==undefined){
let reg = /\{(.+?)\}/g;
//let str = rule.replace(temp,'').replace('$','');//==''
//let y = that.checkForm[key];
if(rule.indexOf('||')>-1||rule.indexOf('&&')>-1){
let tam = '', arr = [];
if(rule.indexOf('||')>-1){
arr = rule.split('||');
}else{
arr = rule.split('&&');
}
for (let i = 0;i<arr.length;i++){
//获取判断依据
let a = '';
a = arr[i].replace(/`/g,'');
a = '`'+ a+'`';
let tem =a.match(reg)[0];
let ky = tem.replace(/\{|\}/g, '');//qipao
if(that.checkForm[ky]){
//替换变量
a = a.replace(ky, 'yyy');
let yyy = "'"+that.checkForm[ky]+"'";
if(eval(eval( a))){
tam += 'true';
}else{
tam += 'false';
}
}else{
tam += 'false';
}
}
let rea = true;
if(rule.indexOf('||')>-1){
if( tam.indexOf('true')>-1){
rea = true;
}else{
rea = false;
}
}else{
if( tam.indexOf('false')>-1){
rea = false;
}else{
rea = true;
}
}
return rea;
}else{
let temp =rule.match(reg)[0];
let key = temp.replace(/\{|\}/g, '');//qipao
let a = rule.replace(key, 'yy');
a = a.replace(key, 'yy');
let yy = "'"+that.checkForm[key]+"'";
return eval(eval(a));
// return eval("'"+y+"'"+str);
}
debugger;
}else{
return false;
}
}else{
return true;
}
}else{
return true;
}
},
checkValue() {
this.field.field_key = this.field.field_key.replace(/[^a-zA-Z]/g, '');
},
//添加字段选项 //添加字段选项
addDomain() { addDomain() {
this.field_choice.push(""); this.field_choice.push("");
@ -596,10 +705,26 @@ export default {
}, },
handleLook(scope) { handleLook(scope) {
debugger; debugger;
console.log(scope); // console.log(scope);
this.dialogVisibleForm = true; let that = this;
this.tableForm = Object.assign({}, scope.row); // copy obj this.tableForm = Object.assign({}, scope.row); // copy obj
this.formID = this.tableForm.id; this.formID = this.tableForm.id;
this.listQueryfield.form = this.formID;
getrffieldList(this.listQueryfield).then((response) => {
if (response.data) {
debugger;
this.fieldList = response.data;
let list = response.data.results;
for(let i=0;i<list.length;i++){
let key = list[i].field_key;
that.checkForm[key]='';
that.$set(that.checkForm,key,'')
}
this.dialogVisibleForm = true;
console.log(that.checkForm);
debugger;
}
});
this.fieldLists(); this.fieldLists();
}, },
checkPermission, checkPermission,
@ -607,6 +732,7 @@ export default {
handleCurrentChange(row) { handleCurrentChange(row) {
this.formID = row.id; this.formID = row.id;
this.fieldLists(); this.fieldLists();
this.fieldLists1();
}, },
recordformLists() { recordformLists() {
this.listQueryrecordform.material = this.material; this.listQueryrecordform.material = this.material;
@ -618,10 +744,27 @@ export default {
}); });
}, },
fieldLists() { fieldLists() {
this.listQueryfield.form = this.formID; let that = this;
getrffieldList(this.listQueryfield).then((response) => { that.listQueryfield.form = that.formID;
getrffieldList(that.listQueryfield).then((response) => {
if (response.data) { if (response.data) {
this.fieldList = response.data; that.fieldList = response.data;
that.fieldList.results=[...that.fieldList.results]
}
});
},
fieldLists1() {
let params = new Object();
let that = this;
params.page = 0;
params.form = this.formID;
getrffieldList(params).then((response) => {
if (response.data) {
let data = response.data;
data.forEach(item => {
item.name = item.field_name;
});
that.treeDate = genTree(data);
} }
}); });
}, },
@ -637,7 +780,7 @@ export default {
//新增字段 //新增字段
handlefieldCreate() { handlefieldCreate() {
this.field_choice = [""]; this.field_choice = [""];
this.field = Object.assign({}, defaultfield); // this.field = Object.assign({}, defaultfield);
this.dialogType1 = "new"; this.dialogType1 = "new";
this.dialogVisible1 = true; this.dialogVisible1 = true;
this.$nextTick(() => { this.$nextTick(() => {
@ -685,6 +828,7 @@ export default {
.then(async () => { .then(async () => {
await deleterffield(scope.row.id); await deleterffield(scope.row.id);
this.fieldLists(); this.fieldLists();
this.fieldLists1();
this.$message.success("成功"); this.$message.success("成功");
}) })
.catch((err) => { .catch((err) => {
@ -733,6 +877,7 @@ export default {
updaterffield(this.field.id, this.field).then((res) => { updaterffield(this.field.id, this.field).then((res) => {
if (res.code >= 200) { if (res.code >= 200) {
this.fieldLists(); this.fieldLists();
this.fieldLists1();
this.dialogVisible1 = false; this.dialogVisible1 = false;
this.$message.success("成功"); this.$message.success("成功");
} }
@ -740,9 +885,12 @@ export default {
} else { } else {
this.field.form = this.formID; this.field.form = this.formID;
this.field.field_choice = this.field_choice; this.field.field_choice = this.field_choice;
debugger;
console.log(this.field);
createrffield(this.field).then((res) => { createrffield(this.field).then((res) => {
if (res.code >= 200) { if (res.code >= 200) {
this.fieldLists(); this.fieldLists();
this.fieldLists1();
this.dialogVisible1 = false; this.dialogVisible1 = false;
this.$message.success("成功"); this.$message.success("成功");
} }