1099 lines
38 KiB
Python
1099 lines
38 KiB
Python
<template>
|
||
<div class="app-container">
|
||
<el-card>
|
||
<el-row :gutter="2">
|
||
<!--表格-->
|
||
<el-col :span="10">
|
||
<el-card>
|
||
<div
|
||
slot="header"
|
||
class="clearfix"
|
||
>
|
||
<span style="font-size: 16px; font-weight: 700">物料检验记录表</span>
|
||
</div>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-plus"
|
||
@click="handleCreate"
|
||
>
|
||
新增
|
||
</el-button>
|
||
<!--表格列表-->
|
||
<el-table
|
||
:data="recordformList.results"
|
||
border
|
||
fit
|
||
stripe
|
||
highlight-current-row
|
||
height="670"
|
||
v-el-height-adaptive-table="{ bottomOffset: 20 }"
|
||
@current-change="handleCurrentChange"
|
||
>
|
||
<el-table-column type="index" width="50"/>
|
||
<el-table-column label="表名称" prop="name">
|
||
</el-table-column>
|
||
<el-table-column label="表类型">
|
||
<template slot-scope="scope">
|
||
{{typeOptions_[scope.row.type]}}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="是否启用">
|
||
<template slot-scope="scope">
|
||
<el-tag v-if="scope.row.enabled==false">否</el-tag>
|
||
<el-tag v-if="scope.row.enabled==true">是</el-tag>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="操作">
|
||
<template slot-scope="scope">
|
||
<el-link
|
||
v-if="checkPermission(['material_update'])"
|
||
@click="handleLook(scope)"
|
||
>查看
|
||
</el-link>
|
||
<el-link
|
||
v-if="checkPermission(['material_update'])"
|
||
@click="handleEdit(scope)"
|
||
>编辑
|
||
</el-link>
|
||
<el-link
|
||
v-if="checkPermission(['material_delete'])"
|
||
type="danger"
|
||
@click="handleDelete(scope)"
|
||
>删除
|
||
</el-link>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<!--新增、编辑记录表格-->
|
||
<el-dialog
|
||
:visible.sync="dialogVisible"
|
||
:close-on-click-modal="false"
|
||
:title="dialogType === 'edit' ? '编辑记录表格' : '新增记录表格'"
|
||
>
|
||
<el-form
|
||
ref="Forms"
|
||
:model="recordform"
|
||
label-width="80px"
|
||
label-position="right"
|
||
>
|
||
<el-form-item label="表格名称" prop="name">
|
||
<el-input v-model="recordform.name" placeholder="表格名称"/>
|
||
</el-form-item>
|
||
<el-form-item label="表格类型" prop="formUsed">
|
||
<el-select
|
||
v-model="recordform.type"
|
||
clearable
|
||
style="width: 100%"
|
||
placeholder="请选择"
|
||
@change="formTypeChange"
|
||
>
|
||
<el-option
|
||
v-for="item in typeOptions"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="引用表单" prop="field_type">
|
||
<el-select
|
||
v-model="recordform.form"
|
||
style="width: 100%"
|
||
clearable
|
||
filterable
|
||
placeholder="请选择"
|
||
>
|
||
<el-option
|
||
v-for="item in formList"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="表单模板" prop="template">
|
||
<el-upload
|
||
ref="upload"
|
||
:action="upUrl"
|
||
:on-success="handleUpSuccess"
|
||
:on-remove="handleRemove"
|
||
:headers="upHeaders"
|
||
:file-list="fileList"
|
||
:limit="1"
|
||
accept=".docx"
|
||
>
|
||
<el-button size="small" type="primary">上传模板</el-button>
|
||
</el-upload>
|
||
</el-form-item>
|
||
<el-form-item label="是否启用" prop="name">
|
||
<el-switch v-model="recordform.enabled"></el-switch>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div style="text-align: right">
|
||
<el-button type="danger" @click="dialogVisible = false">取消
|
||
</el-button>
|
||
<el-button type="primary" @click="recordformconfirm('Forms')">确认</el-button>
|
||
<!--<el-button type="primary" @click="recordformcon">管理员授权</el-button>-->
|
||
</div>
|
||
</el-dialog>
|
||
<!--表格展示-->
|
||
<el-dialog
|
||
class="bigDialog"
|
||
:visible.sync="dialogVisibleForm"
|
||
:close-on-click-modal="false"
|
||
:title="tableForm.name"
|
||
>
|
||
<customForm
|
||
:results="fieldList.results"
|
||
:hasPicture="hasPicture"
|
||
:formID="formID"
|
||
:isDisabled="isDisabled"
|
||
@formFunc="formFunc"
|
||
/>
|
||
<!--<el-form ref="Forms" label-width="100px" :model="checkForm">
|
||
<el-row>
|
||
<el-col
|
||
:span="12"
|
||
v-for="(item, $index) in fieldList.results"
|
||
v-show="filterBlock(item.parent,item.display_expression)"
|
||
:key="$index"
|
||
>
|
||
<!–<div v-if="item.field_type === 'img'">–>
|
||
<el-form-item v-if="item.field_type === 'string'" :label="item.field_name">
|
||
<el-input
|
||
v-model="checkForm[item.field_key]"
|
||
placeholder="请输入"
|
||
@input="keyChange(item.field_key)"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'int'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-input
|
||
v-model="checkForm[item.field_key]"
|
||
type="number"
|
||
placeholder="请输入"
|
||
@input="keyChange(item.field_key)"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'float'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-input
|
||
v-model="checkForm[item.field_key]"
|
||
type="number"
|
||
placeholder="请输入"
|
||
@input="keyChange(item.field_key)"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'date'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-date-picker
|
||
v-model="checkForm[item.field_key]"
|
||
type="date"
|
||
placeholder="选择日期"
|
||
value-format="yyyy-MM-dd"
|
||
style="width: 100%"
|
||
@change="keyChange(item.field_key)"
|
||
>
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'datetime'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-date-picker
|
||
v-model="checkForm[item.field_key]"
|
||
type="datetime"
|
||
placeholder="选择日期"
|
||
value-format="yyyy-MM-dd HH:mm:ss"
|
||
style="width: 100%"
|
||
@change="keyChange(item.field_key)"
|
||
>
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'select'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-select
|
||
v-model="checkForm[item.field_key]"
|
||
style="width: 100%"
|
||
placeholder="请选择"
|
||
@change="keyChange(item.field_key)"
|
||
>
|
||
<el-option
|
||
v-for="item1 in item.field_choice"
|
||
:key="item1"
|
||
:label="item1"
|
||
:value="item1"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item
|
||
v-else-if="item.field_type === 'selects'"
|
||
:label="item.field_name"
|
||
>
|
||
<el-select
|
||
v-model="checkForm[item.field_key]"
|
||
style="width: 100%"
|
||
multiple
|
||
placeholder="请选择"
|
||
>
|
||
<el-option
|
||
v-for="item1 in item.field_choice"
|
||
:key="item1"
|
||
:label="item1"
|
||
:value="item1"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row v-show="hasPicture">
|
||
<el-form-item label="图表">
|
||
<div>
|
||
<img id="canvasImg" src="./../../assets/glass.png" style="width:300px;height: 200px;display: none">
|
||
<div style="position: relative;display: flex">
|
||
<canvas id="canvas" width="300" height="200">
|
||
您的浏览器不支持绘图,请升级或更换浏览器!
|
||
</canvas>
|
||
<input type="text" value="" class="hide" id="txt" placeholder="请输入文字">
|
||
<textarea class="hide" id="word" cols="15" rows="5" placeholder="请输入文字" autofocus></textarea>
|
||
<input id="inputV" type="hidden" value="1">
|
||
<div class="canvasBtnWrap">
|
||
<div class="canvasBtn" @click="error1">标记</div>
|
||
<div class="canvasBtn" @click="word1()">文字</div>
|
||
<!–<button @click="restuya()">清除批注</button>–>
|
||
<div class="canvasBtn" @click="back()">回退</div>
|
||
<div class="canvasBtn" @click="saveTu()">保存</div>
|
||
</div>
|
||
<div id="res"></div>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
</el-row>
|
||
</el-form>-->
|
||
<!--<div style="text-align: right">-->
|
||
<!--<el-button type="primary" @click="judgeForm">-->
|
||
<!--合格验证-->
|
||
<!--</el-button>-->
|
||
<!--</div>-->
|
||
</el-dialog>
|
||
</el-card>
|
||
</el-col>
|
||
<!--表格字段-->
|
||
<el-col :span="14">
|
||
<el-card>
|
||
<div slot="header" class="clearfix">
|
||
<span style="font-size: 16px; font-weight: 300">记录字段</span>
|
||
</div>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-plus"
|
||
@click="handlefieldCreate"
|
||
>新增
|
||
</el-button>
|
||
<!--表格字段列表-->
|
||
<el-table
|
||
:data="fieldList.results"
|
||
border
|
||
fit
|
||
stripe
|
||
highlight-current-row
|
||
height="670"
|
||
v-el-height-adaptive-table="{ bottomOffset: 20 }"
|
||
>
|
||
<el-table-column type="index" width="50"/>
|
||
<el-table-column label="字段名称">
|
||
<template slot-scope="scope">
|
||
{{scope.row.field_name}}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="字段类型">
|
||
<template slot-scope="scope">
|
||
{{options_[scope.row.field_type]}}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="字段标识">
|
||
<template slot-scope="scope">
|
||
{{scope.row.field_key}}
|
||
</template>
|
||
</el-table-column>
|
||
<!--
|
||
<el-table-column label="上限值">
|
||
<template slot-scope="scope">{{
|
||
scope.row.high_limit
|
||
}}</template>
|
||
</el-table-column>
|
||
<el-table-column label="上限规则">
|
||
<template slot-scope="scope">{{
|
||
highoptionss_[scope.row.high_rule]
|
||
}}</template>
|
||
</el-table-column>
|
||
<el-table-column label="下限值">
|
||
<template slot-scope="scope">{{
|
||
scope.row.low_limit
|
||
}}</template>
|
||
</el-table-column>
|
||
<el-table-column label="下限规则">
|
||
<template slot-scope="scope">
|
||
{{ lowoptionss_[scope.row.low_rule] }}</template
|
||
>
|
||
</el-table-column>
|
||
!-->
|
||
<el-table-column label="是否判定">
|
||
<template slot-scope="scope">
|
||
<el-tag v-if="scope.row.need_judge == true">是</el-tag>
|
||
<el-tag v-else>否</el-tag>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="操作">
|
||
<template slot-scope="scope">
|
||
<el-link
|
||
v-if="checkPermission(['material_update'])"
|
||
type="primary"
|
||
@click="handlefieldEdit(scope)"
|
||
>编辑
|
||
</el-link>
|
||
<el-link
|
||
v-if="checkPermission(['material_delete'])"
|
||
type="danger"
|
||
@click="handlefieldDelete(scope)"
|
||
>删除
|
||
</el-link>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<pagination
|
||
v-show="fieldList.count > 0"
|
||
:total="fieldList.count"
|
||
:page.sync="listQueryfield.page"
|
||
:limit.sync="listQueryfield.page_size"
|
||
@pagination="fieldLists"
|
||
/>
|
||
<!--表格字段新增编辑-->
|
||
<el-dialog
|
||
:visible.sync="dialogVisible1"
|
||
:close-on-click-modal="false"
|
||
:title="dialogType1 === 'edit' ? '编辑表格字段' : '新增表格字段'"
|
||
>
|
||
<el-form
|
||
ref="Form"
|
||
:model="field"
|
||
label-width="100px"
|
||
label-position="right"
|
||
>
|
||
<el-form-item label="字段类型" prop="field_type">
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="field.field_type"
|
||
placeholder="请选择"
|
||
>
|
||
<el-option
|
||
v-for="item in fieldtypeoptions"
|
||
:key="item.value"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="字段标识" prop="field_key">
|
||
<el-input v-model="field.field_key" placeholder="字段标识" @input="checkValue"/>
|
||
</el-form-item>
|
||
<el-form-item label="字段名称" prop="field_name">
|
||
<el-input v-model="field.field_name" placeholder="字段名称"/>
|
||
</el-form-item>
|
||
<el-form-item
|
||
label="选项"
|
||
v-show="
|
||
field.field_type == 'radio' ||
|
||
field.field_type == 'checkbox' ||
|
||
field.field_type == 'select' ||
|
||
field.field_type == 'selects'"
|
||
>
|
||
<el-button @click.prevent="addDomain" style="border: none">
|
||
<i class="el-icon-circle-plus-outline"></i>
|
||
<span style="font-size: 14px">添加</span>
|
||
</el-button>
|
||
<el-row
|
||
v-for="(domain, $index) in field_choice"
|
||
:key="domain + $index"
|
||
style="margin-bottom: 10px"
|
||
>
|
||
<el-col :span="20">
|
||
<el-input
|
||
v-model="field_choice[$index]"
|
||
auto-complete="off"
|
||
></el-input>
|
||
</el-col>
|
||
<el-col
|
||
:span="3"
|
||
style="text-align: center"
|
||
v-if="$index !== 0"
|
||
>
|
||
<i
|
||
class="el-icon-remove-outline"
|
||
@click.prevent="removeDomain($index, '1')"
|
||
style="color: red; font-size: 16px"
|
||
></i>
|
||
</el-col>
|
||
</el-row>
|
||
</el-form-item>
|
||
<!--<el-form-item label="字段父级">
|
||
<treeselect v-model="field.parent" :multiple="false" :options="treeDate" placeholder="字段父级"/>
|
||
</el-form-item>-->
|
||
<el-form-item label="字段说明">
|
||
<el-input v-model="field.help_text" placeholder="字段名称"/>
|
||
</el-form-item>
|
||
<el-form-item label="是否需要判定" prop="need_judge">
|
||
<el-switch v-model="field.need_judge"></el-switch>
|
||
</el-form-item>
|
||
<el-form-item label="判定式" v-if="field.need_judge === true">
|
||
<el-input v-model="field.rule_expression" type="textarea"/>
|
||
</el-form-item>
|
||
<el-form-item label="展示表达式">
|
||
<el-input v-model="field.display_expression" type="textarea"/>
|
||
</el-form-item>
|
||
<el-form-item label="模板图片" v-if="field.field_type === 'draw'">
|
||
<el-upload
|
||
class="avatar-uploader"
|
||
:action="upUrl"
|
||
accept="image/jpeg, image/gif, image/png, image/bmp"
|
||
:show-file-list="false"
|
||
:on-success="handleAvatarSuccess"
|
||
:before-upload="beforeAvatarUpload"
|
||
:headers="upHeaders"
|
||
>
|
||
<img v-if="field.draw_template" :src="field.draw_template" class="avatar"/>
|
||
<i v-else class="el-icon-plus avatar-uploader-icon"/>
|
||
</el-upload>
|
||
</el-form-item>
|
||
<el-form-item label="排序" prop="sort">
|
||
<el-input-number
|
||
v-model="field.sort"
|
||
:min="1"
|
||
placeholder="排序"
|
||
></el-input-number>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div style="text-align: right">
|
||
<el-button type="danger" @click="dialogVisible1 = false">
|
||
取消
|
||
</el-button>
|
||
<el-button type="primary" @click="fieldconfirm('Form')">
|
||
确认
|
||
</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
</el-card>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
<el-dialog :visible.sync="limitedPhoto">
|
||
<div style="font-size: 28px;color: #333333;text-align: center;font-weight: bold;margin-bottom: 15px;">权限验证</div>
|
||
<div class="testTracking">
|
||
<faceLogin
|
||
name="faceLogin"
|
||
:dialogType="dialogType"
|
||
:recordform="recordform"
|
||
@func="getMsgFormSon"
|
||
></faceLogin>
|
||
</div>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import customForm from '@/components/customForm/index'
|
||
import checkPermission from "@/utils/permission";
|
||
import {getEquipmentAll} from "@/api/equipment";
|
||
import vueJsonEditor from "vue-json-editor";
|
||
import {upUrl, upHeaders} from "@/api/file";
|
||
import faceLogin from '@/components/faceLogin/faceLogin.vue'
|
||
import {
|
||
getrecordformList,
|
||
createrecordform,
|
||
updaterecordform,
|
||
deleterecordform,
|
||
getrffieldList,
|
||
createrffield,
|
||
updaterffield,
|
||
deleterffield,
|
||
} from "@/api/mtm";
|
||
import {upFile} from "@/api/file";
|
||
import {genTree} from "@/utils";
|
||
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 = {
|
||
name: "",
|
||
number: "",
|
||
};
|
||
|
||
const defaultrecordform = {enabled: false};
|
||
const defaultfield = {};
|
||
let preDrawAry = [];
|
||
export default {
|
||
components: {Pagination, vueJsonEditor, Treeselect, customForm, faceLogin},
|
||
data() {
|
||
return {
|
||
step: defaultstep,
|
||
stepList: [],
|
||
upHeaders: upHeaders(),
|
||
upUrl: upUrl(),
|
||
fileList: [],
|
||
hasPicture: true,
|
||
listLoading: true,
|
||
need_judge: false,
|
||
dialogVisibles: false,
|
||
dialogVisibleForm: false,
|
||
dialogTypes: "new",
|
||
field: {
|
||
field_type: null,
|
||
field_key: "",
|
||
field_name: null,
|
||
sort: null,
|
||
parent: null,
|
||
help_text: null,
|
||
rule_expression: null,
|
||
display_expression: null,
|
||
draw_template: null,//图片模板
|
||
field_choice: [""],
|
||
},
|
||
field_choice: [""],
|
||
options: [],
|
||
optio: [],
|
||
rule1: {
|
||
name: [{required: true, message: "请输入", trigger: "blur"}],
|
||
number: [{required: true, message: "请输入", trigger: "blur"}],
|
||
},
|
||
recordform: defaultrecordform,
|
||
dialogType: "new",
|
||
dialogVisible: false,
|
||
dialogType1: "new",
|
||
dialogVisible1: false,
|
||
tableForm: defaultrecordform,
|
||
checkForm: {
|
||
hhh: '',
|
||
},
|
||
listQueryrecordform: {
|
||
page: 1,
|
||
page_size: 20,
|
||
},
|
||
recordformList: {
|
||
count: 0,
|
||
},
|
||
formList:[],
|
||
fieldList: {
|
||
count: 0,
|
||
},
|
||
treeDate: [],
|
||
listQueryfield: {
|
||
page: 1,
|
||
page_size: 20,
|
||
},
|
||
highoptions: [
|
||
{value: 1, label: "<"},
|
||
{value: 2, label: "<="},
|
||
],
|
||
lowoptions: [
|
||
{value: 1, label: ">"},
|
||
{value: 2, label: ">="},
|
||
],
|
||
highoptionss_: {
|
||
1: "<",
|
||
2: "<=",
|
||
},
|
||
lowoptionss_: {
|
||
1: ">",
|
||
2: ">=",
|
||
},
|
||
options_: {
|
||
string: "文本",
|
||
int: "整数",
|
||
float: "小数",
|
||
date: "日期",
|
||
datetime: "日期时间",
|
||
select: "单选",
|
||
selects: "多选",
|
||
draw: "绘图模板",
|
||
},
|
||
fieldtypeoptions: [
|
||
{
|
||
value: "string",
|
||
label: "文本",
|
||
},
|
||
{
|
||
value: "int",
|
||
label: "整数",
|
||
},
|
||
{
|
||
value: "float",
|
||
label: "小数",
|
||
},
|
||
{
|
||
value: "date",
|
||
label: "日期",
|
||
},
|
||
{
|
||
value: "time",
|
||
label: "时间",
|
||
},
|
||
{
|
||
value: "datetime",
|
||
label: "日期时间",
|
||
},
|
||
{
|
||
value: "select",
|
||
label: "单选",
|
||
},
|
||
{
|
||
value: "selects",
|
||
label: "多选",
|
||
},
|
||
{
|
||
value: "draw",
|
||
label: "绘图模板",
|
||
},
|
||
],
|
||
typeOptions: [
|
||
{
|
||
value: 10,
|
||
label: "生产记录表",
|
||
}, {
|
||
value: 20,
|
||
label: "工序检查表",
|
||
}, {
|
||
value: 30,
|
||
label: "入厂检验表",
|
||
}, {
|
||
value: 40,
|
||
label: "成品检验表",
|
||
}, {
|
||
value: 50,
|
||
label: "首件检查表",
|
||
},
|
||
],
|
||
typeOptions_:{
|
||
10 : "生产记录表",
|
||
20 : "工序检查表",
|
||
30 : "入厂检验表",
|
||
40 : "成品检验表",
|
||
50 : "首件检查表",
|
||
},
|
||
canvas: null,
|
||
ctx: null,
|
||
myCanvas_rect: null,
|
||
Txt: null,
|
||
word: null,
|
||
formID: 0,
|
||
widths: 0,
|
||
heights: 0,
|
||
lineW: 3,
|
||
colorF: "#e42343",
|
||
imgData: '',
|
||
canvasImg: '',
|
||
judgeList: [],
|
||
limitedPhoto: false,
|
||
isDisabled: true,
|
||
};
|
||
},
|
||
computed: {},
|
||
watch: {},
|
||
created() {
|
||
this.material = this.$route.params.id;
|
||
this.recordformLists();
|
||
},
|
||
mounted(){
|
||
getrecordformList({page:0}).then((response) => {
|
||
if (response.data) {
|
||
this.formList = response.data;
|
||
}
|
||
});
|
||
},
|
||
methods: {
|
||
/* handlePreview(file) {
|
||
if ("url" in file) {
|
||
window.open(file.url);
|
||
} else {
|
||
window.open(file.response.data.path);
|
||
}
|
||
},*/
|
||
handleUpSuccess(res) {
|
||
this.recordform.export_template = res.data.path;
|
||
},
|
||
handleRemove() {
|
||
this.recordform.export_template = '';
|
||
},
|
||
formFunc(value) {
|
||
this.dialogVisibleForm = value;
|
||
},
|
||
handleAvatarSuccess(res, file) {
|
||
this.field.draw_template = res.data.path;
|
||
},
|
||
beforeAvatarUpload(file) {
|
||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||
if (!isLt2M) {
|
||
this.$message.error("上传头像图片大小不能超过 2MB!");
|
||
}
|
||
return isLt2M;
|
||
},
|
||
keyChange(key) {
|
||
let y = this.checkForm[key];
|
||
this.$set(this.checkForm, key, y);
|
||
this.fieldList.results = [...this.fieldList.results];
|
||
this.filterBlock();
|
||
},
|
||
filterBlock(parent, rule) {
|
||
let that = this;
|
||
if (parent !== '' && parent !== null && parent !== undefined) {
|
||
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;
|
||
}
|
||
},
|
||
checkValue() {
|
||
this.field.field_key = this.field.field_key.replace(/[^a-zA-Z]/g, '');
|
||
},
|
||
//添加字段选项
|
||
addDomain() {
|
||
this.field_choice.push("");
|
||
},
|
||
//删除字段选项
|
||
removeDomain(index) {
|
||
this.field_choice.splice(index, 1);
|
||
},
|
||
handleLook(scope) {
|
||
let that = this;
|
||
that.tableForm = Object.assign({}, scope.row); // copy obj
|
||
that.formID = that.tableForm.id;
|
||
that.listQueryfield.form = that.formID;
|
||
getrffieldList(that.listQueryfield).then((response) => {
|
||
if (response.data) {
|
||
this.hasPicture = false;
|
||
that.fieldList = response.data;
|
||
let list = response.data.results;
|
||
let arr = list.filter(item => {
|
||
return item.field_type === 'draw'
|
||
});
|
||
that.judgeList = [];
|
||
let listJudge = list.filter(item => {
|
||
return item.need_judge === true;
|
||
});
|
||
listJudge.forEach(item => {
|
||
let obj = new Object();
|
||
obj = item;
|
||
obj.judge = false;
|
||
that.judgeList.push(obj)
|
||
});
|
||
if (arr.length > 0) {
|
||
this.hasPicture = true;
|
||
}
|
||
for (let i = 0; i < list.length; i++) {
|
||
let key = list[i].field_key;
|
||
that.checkForm[key] = '';
|
||
that.$set(that.checkForm, key, '')
|
||
}
|
||
that.dialogVisibleForm = true;
|
||
/* setTimeout(function () {
|
||
that.canvasInit();
|
||
}, 500);*/
|
||
}
|
||
});
|
||
that.fieldLists();
|
||
},
|
||
checkPermission,
|
||
handleCurrentChange(row) {
|
||
this.formID = row.id;
|
||
this.fieldLists();
|
||
this.fieldLists1();
|
||
},
|
||
recordformLists() {
|
||
this.listQueryrecordform.material = this.material;
|
||
// this.listQueryrecordform.type = 2;
|
||
getrecordformList(this.listQueryrecordform).then((response) => {
|
||
if (response.data) {
|
||
this.recordformList = response.data;
|
||
}
|
||
});
|
||
},
|
||
fieldLists() {
|
||
let that = this;
|
||
that.listQueryfield.form = that.formID;
|
||
getrffieldList(that.listQueryfield).then((response) => {
|
||
if (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);
|
||
}
|
||
});
|
||
},
|
||
//新增记录表
|
||
handleCreate() {
|
||
this.recordform = Object.assign({}, defaultrecordform);
|
||
this.dialogType = "new";
|
||
this.dialogVisible = true;
|
||
this.$refs["Forms"].resetFields();
|
||
// this.$nextTick(() => {
|
||
// this.$refs["Forms"].resetFields();
|
||
// });
|
||
},
|
||
formTypeChange(){
|
||
getrecordformList({type:this.recordform.type,page:0}).then((response) => {
|
||
if (response.data) {
|
||
this.formList = response.data;
|
||
}
|
||
});
|
||
},
|
||
//新增字段
|
||
handlefieldCreate() {
|
||
this.field_choice = [""];
|
||
this.dialogType1 = "new";
|
||
this.dialogVisible1 = true;
|
||
// this.$refs["Form"].resetFields();
|
||
this.$nextTick(() => {
|
||
this.field.field_type = null;
|
||
this.field.field_key = null;
|
||
this.field.field_name = null;
|
||
this.field.sort = null;
|
||
this.field.parent = null;
|
||
this.field.help_text = null;
|
||
this.field.draw_template = null;
|
||
this.field.field_choice = null;
|
||
this.field.rule_expression = null;
|
||
this.field.display_expression = null;
|
||
this.$refs["Form"].clearValidate();
|
||
});
|
||
},
|
||
handleEdit(scope) {
|
||
debugger;
|
||
console.log( scope.row);
|
||
this.recordform = Object.assign({}, scope.row); // copy obj
|
||
this.dialogType = "edit";
|
||
this.dialogVisible = true;
|
||
if (this.recordform.export_template) {
|
||
this.fileList = [
|
||
{
|
||
name: this.recordform.export_template,
|
||
url: this.recordform.export_template,
|
||
},
|
||
];
|
||
}
|
||
this.$nextTick(() => {
|
||
this.$refs["Forms"].clearValidate();
|
||
});
|
||
},
|
||
handlefieldEdit(scope) {
|
||
this.field = Object.assign({}, scope.row); // copy obj
|
||
this.field_choice = this.field.field_choice;
|
||
this.dialogType1 = "edit";
|
||
this.dialogVisible1 = true;
|
||
this.$nextTick(() => {
|
||
this.$refs["Form"].clearValidate();
|
||
});
|
||
},
|
||
handleDelete(scope) {
|
||
this.$confirm("确认删除?", "警告", {
|
||
confirmButtonText: "确认",
|
||
cancelButtonText: "取消",
|
||
type: "error",
|
||
})
|
||
.then(async () => {
|
||
await deleterecordform(scope.row.id);
|
||
this.recordformLists();
|
||
this.$message.success("成功");
|
||
})
|
||
.catch((err) => {
|
||
console.error(err);
|
||
});
|
||
},
|
||
handlefieldDelete(scope) {
|
||
this.$confirm("确认删除?", "警告", {
|
||
confirmButtonText: "确认",
|
||
cancelButtonText: "取消",
|
||
type: "error",
|
||
})
|
||
.then(async () => {
|
||
await deleterffield(scope.row.id);
|
||
this.fieldLists();
|
||
this.fieldLists1();
|
||
this.$message.success("成功");
|
||
})
|
||
.catch((err) => {
|
||
console.error(err);
|
||
});
|
||
},
|
||
async recordformconfirm(form) {
|
||
this.$refs[form].validate((valid) => {
|
||
if (valid) {
|
||
const isEdit = this.dialogType === "edit";
|
||
let obj = new Object();
|
||
obj.name=this.recordform.name;
|
||
obj.type=this.recordform.type;
|
||
obj.enabled=this.recordform.enabled;
|
||
obj.export_template=this.recordform.export_template?this.recordform.export_template:'';
|
||
if (isEdit) {
|
||
obj.form=this.recordform.form?this.recordform.form:null;
|
||
updaterecordform(this.recordform.id, obj).then(
|
||
(res) => {
|
||
if (res.code >= 200) {
|
||
this.recordformLists();
|
||
this.dialogVisible = false;
|
||
this.$message.success("成功");
|
||
}
|
||
}
|
||
);
|
||
} else {
|
||
obj.material=parseInt(this.material);
|
||
obj.form=this.recordform.form!==''?this.recordform.form:null;
|
||
createrecordform(obj).then((res) => {
|
||
if (res.code >= 200) {
|
||
this.recordformLists();
|
||
this.dialogVisible = false;
|
||
this.$message.success("成功");
|
||
}
|
||
});
|
||
}
|
||
} else {
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
async fieldconfirm(form) {
|
||
this.$refs[form].validate((valid) => {
|
||
if (valid) {
|
||
const isEdit = this.dialogType1 === "edit";
|
||
if (isEdit) {
|
||
this.field.form = this.formID;
|
||
this.field.field_choice = this.field_choice;
|
||
updaterffield(this.field.id, this.field).then((res) => {
|
||
if (res.code >= 200) {
|
||
this.fieldLists();
|
||
this.fieldLists1();
|
||
this.dialogVisible1 = false;
|
||
this.$message.success("成功");
|
||
}
|
||
});
|
||
} else {
|
||
this.field.form = this.formID;
|
||
this.field.field_choice = this.field_choice;
|
||
createrffield(this.field).then((res) => {
|
||
if (res.code >= 200) {
|
||
this.fieldLists();
|
||
this.fieldLists1();
|
||
this.dialogVisible1 = false;
|
||
this.$message.success("成功");
|
||
}
|
||
});
|
||
}
|
||
} else {
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
recordformcon() {
|
||
this.recordform.material = this.material;
|
||
this.recordform.type = 2;
|
||
this.limitedPhoto = true;
|
||
},
|
||
getMsgFormSon(data) {
|
||
this.limitedPhoto = data;
|
||
this.recordformLists();
|
||
this.dialogVisible = false;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
<style>
|
||
.my-label {
|
||
background: #e1f3d8;
|
||
}
|
||
|
||
.my-content {
|
||
background: #fde2e2;
|
||
}
|
||
|
||
</style>
|