Browse Source

feat:[模板管理][代码提交]

lkf
luojie 3 months ago
parent
commit
b9b62f25dd
4 changed files with 176 additions and 120 deletions
  1. +3
    -0
      src/components/Template/BaseInfoFormPcakge.vue
  2. +159
    -118
      src/components/Template/HandleFormItem.vue
  3. +6
    -2
      src/components/Template/icons/Question.vue
  4. +8
    -0
      src/views/business/comps/template/TemplateTable.vue

+ 3
- 0
src/components/Template/BaseInfoFormPcakge.vue View File

@ -299,6 +299,7 @@ export default {
label: "其他", label: "其他",
fillType: sItem.fillType, fillType: sItem.fillType,
maxlength: sItem.otherMaxlength || 50, maxlength: sItem.otherMaxlength || 50,
parentLabel: sItem.label,
} }
}, },
getClickableItem(sItem) { getClickableItem(sItem) {
@ -306,6 +307,7 @@ export default {
label: "", label: "",
type: "clickable", type: "clickable",
fillType: sItem.subFillType || sItem.fillType, fillType: sItem.subFillType || sItem.fillType,
parentLabel: sItem.label,
} }
}, },
getSubItem(sItem) { getSubItem(sItem) {
@ -313,6 +315,7 @@ export default {
label: "", label: "",
options: sItem.subOptions || [], options: sItem.subOptions || [],
fillType: sItem.subFillType || sItem.fillType, fillType: sItem.subFillType || sItem.fillType,
parentLabel: sItem.label,
} }
}, },
isShowOther(v = []) { isShowOther(v = []) {

+ 159
- 118
src/components/Template/HandleFormItem.vue View File

@ -3,71 +3,66 @@
<div class="flex1 flex"> <div class="flex1 flex">
<el-input v-if="type === 'input'" :maxlength="item.maxlength || 50" :disabled="getDisabled()" <el-input v-if="type === 'input'" :maxlength="item.maxlength || 50" :disabled="getDisabled()"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" @blur="onBlur" :class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" @blur="onBlur"
:placeholder="getPlaceholder()" v-model="inputValue"
@input="onInputChange" @change="onInputChange" />
:placeholder="getPlaceholder()" v-model="inputValue" @input="onInputChange" @change="onInputChange" />
<el-input v-else-if="type === 'textarea'" :maxlength="item.maxlength || 50" :disabled="getDisabled()" <el-input v-else-if="type === 'textarea'" :maxlength="item.maxlength || 50" :disabled="getDisabled()"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" type="textarea" show-word-limit resize="none" @blur="onBlur"
:rows="item.rows || 3" :placeholder="getPlaceholder()"
v-model="inputValue" @input="onInputChange" @change="onInputChange" />
<DecimalInput v-else-if="type === 'inputNumber'" @blur="onCommonHandleSaveRecord" :maxlength="item.maxlength || 10"
class="flex1" :disabled="getDisabled()" :controls="item.controls || false" :min="item.min || 0"
:prepend = "item.prepend"
:decimalDigits="item.precision" :class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')"
:placeholder="getPlaceholder()" v-model="inputValue"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" type="textarea" show-word-limit
resize="none" @blur="onBlur" :rows="item.rows || 3" :placeholder="getPlaceholder()" v-model="inputValue"
@input="onInputChange" @change="onInputChange" /> @input="onInputChange" @change="onInputChange" />
<DecimalInput v-else-if="type === 'inputNumber'" @blur="onCommonHandleSaveRecord"
:maxlength="item.maxlength || 10" class="flex1" :disabled="getDisabled()"
:controls="item.controls || false" :min="item.min || 0" :prepend="item.prepend"
:decimalDigits="item.precision" :class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')"
:placeholder="getPlaceholder()" v-model="inputValue" @input="onInputChange" @change="onInputChange" />
<el-select v-else-if="type === 'select'" class="flex1" :multiple="item.multiple" <el-select v-else-if="type === 'select'" class="flex1" :multiple="item.multiple"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" v-model="inputValue" :disabled="getDisabled()"
:placeholder="getPlaceholder()" @visible-change="onSelectBlur" @change="onInputChange">
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" v-model="inputValue"
:disabled="getDisabled()" :placeholder="getPlaceholder()" @visible-change="onSelectBlur"
@change="onInputChange">
<el-option v-for="op in item.options" :key="op.value" :label="op.label" :value="op.value"> <el-option v-for="op in item.options" :key="op.value" :label="op.label" :value="op.value">
</el-option> </el-option>
</el-select> </el-select>
<el-date-picker v-else-if="type === 'dateTime'" type="datetime" class="flex1" :class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')"
v-model="inputValue" :disabled="getDisabled()" format="yyyy/MM/DD HH:mm:ss"
value-format="yyyy/MM/DD HH:mm:ss"
<el-date-picker v-else-if="type === 'dateTime'" type="datetime" class="flex1"
:class="getFillTypeStyle() + (orangeBg ? ' orange-bg' : '')" v-model="inputValue"
:disabled="getDisabled()" format="yyyy/MM/DD HH:mm:ss" value-format="yyyy/MM/DD HH:mm:ss"
:placeholder="getPlaceholder()" @change="onCommonHandleSaveRecord"> :placeholder="getPlaceholder()" @change="onCommonHandleSaveRecord">
</el-date-picker> </el-date-picker>
<div class="clickable" :class="getFillTypeStyle() + (getDisabled()?' disabled':'') + (orangeBg ? ' orange-bg' : '')" v-else-if = "item.type ==='clickable'" @click="handleClickable(item,$event)">
<div class="clickable"
:class="getFillTypeStyle() + (getDisabled() ? ' disabled' : '') + (orangeBg ? ' orange-bg' : '')"
v-else-if="item.type === 'clickable'" @click="handleClickable(item, $event)">
<span v-if="value">{{ value }}</span> <span v-if="value">{{ value }}</span>
<span v-else class="default-placeholder-text">{{getPlaceholder()}}</span>
<span v-else class="default-placeholder-text">{{ getPlaceholder() }}</span>
</div> </div>
</div> </div>
<!-- qc才能操作 --> <!-- qc才能操作 -->
<div class="handle-row" v-if="isShowHandle()"> <div class="handle-row" v-if="isShowHandle()">
<el-checkbox class="ml-5" @change="onCheckboxChange"></el-checkbox> <el-checkbox class="ml-5" @change="onCheckboxChange"></el-checkbox>
<div v-if="getIsShowQuestionIcon()" @mouseenter="(e)=>onMouseEnter('replyRecord',e)" @mouseleave="onMouseLeave">
<Question class="handle-icon" :class="getQuestionColor()" />
<div v-if="getIsShowQuestionIcon()" @mouseenter="(e) => onMouseEnter('replyRecord', e)"
@mouseleave="onMouseLeave">
<Question class="handle-icon" :class="getQuestionColor()" />
</div> </div>
<img v-if="getIsShowCopyIcon()" @click="onCopy" src="@/assets/images/copy-icon.svg" class="handle-icon"
<img v-if="getIsShowCopyIcon()" @click="onCopy" src="@/assets/images/copy-icon.svg" class="handle-icon"
alt="" /> alt="" />
<img v-if="getIsShowRecordIcon()" @mouseenter="(e)=>onMouseEnter('modifyRecord',e)" @mouseleave="onMouseLeave" src="@/assets/images/record-icon.svg" class="handle-icon" alt="" />
<img v-if="getIsShowRecordIcon()" @mouseenter="(e) => onMouseEnter('modifyRecord', e)"
@mouseleave="onMouseLeave" src="@/assets/images/record-icon.svg" class="handle-icon" alt="" />
</div> </div>
<!-- 修改记录模态框 --> <!-- 修改记录模态框 -->
<div
v-if="showModal && modificationRecords.length > 0"
ref="modalRef"
:class="['modification-modal', {'show': showModal}]"
@mouseenter="onModalEnter"
@mouseleave="onModalLeave"
>
<div v-if="showModal && modificationRecords.length > 0" ref="modalRef"
:class="['modification-modal', { 'show': showModal }]" @mouseenter="onModalEnter"
@mouseleave="onModalLeave">
<div class="modal-content"> <div class="modal-content">
<div class="records-list"> <div class="records-list">
<div
v-for="(record, index) in modificationRecords"
:key="index"
class="record-item"
>
<!-- 字段修改记录 -->
<div v-for="(record, index) in modificationRecords" :key="index" class="record-item">
<!-- 字段修改记录 -->
<div class="record-row" v-if="currentRecordType === 'modifyRecord'"> <div class="record-row" v-if="currentRecordType === 'modifyRecord'">
<div> <div>
<span>{{index+1}}.</span>
<span>{{ index + 1 }}.</span>
<span> {{ record.userName }} </span> <span> {{ record.userName }} </span>
<span>{{ record.time }} </span> <span>{{ record.time }} </span>
<span>{{ record.title }}</span> <span>{{ record.title }}</span>
</div> </div>
<div v-if="record.oldValue && record.value"> <div v-if="record.oldValue && record.value">
<div>原值{{record.oldValue}}</div>
<div>修改值{{record.value}}</div>
<div>原值{{ record.oldValue }}</div>
<div>修改值{{ record.value }}</div>
</div> </div>
</div> </div>
<!-- 回复记录 --> <!-- 回复记录 -->
@ -77,8 +72,8 @@
<span>{{ record.time }} </span> <span>{{ record.time }} </span>
</div> </div>
<div> <div>
<div v-if="record.content">复核意见{{record.content}}</div>
<div v-if="record.replay">回复意见{{record.replay}}</div>
<div v-if="record.content">复核意见{{ record.content }}</div>
<div v-if="record.replay">回复意见{{ record.replay }}</div>
</div> </div>
</div> </div>
<hr v-if="index < modificationRecords.length - 1"> <hr v-if="index < modificationRecords.length - 1">
@ -92,9 +87,10 @@
<script> <script>
import Question from "./icons/Question.vue"; import Question from "./icons/Question.vue";
import DecimalInput from "./DecimalInput.vue"; import DecimalInput from "./DecimalInput.vue";
import { EventBus } from "@/utils/eventBus"
import { EventBus } from "@/utils/eventBus";
import moment from "moment";
export default { export default {
inject: ['templateFillType',"zdxgjl","fhyjjl"],
inject: ['templateFillType', "zdxgjl", "fhyjjl", "updateZdxgjl", "updateFhyjjl"],
components: { components: {
Question, Question,
DecimalInput DecimalInput
@ -157,16 +153,16 @@ export default {
} }
}, },
filters: { filters: {
}, },
mounted() { mounted() {
console.log(this.$i18n.locale,"locale")
console.log(this.$i18n.locale, "locale")
}, },
methods: { methods: {
getFillTypeStyle(type) { getFillTypeStyle(type) {
const {fillType} = this.item;
const { fillType } = this.item;
const typeObj = { const typeObj = {
actFill: "orange-border",// actFill: "orange-border",//
green: "green-border", green: "green-border",
@ -180,12 +176,24 @@ export default {
}, },
//question //question
getQuestionColor() { getQuestionColor() {
//gray green 绿 orange
return "green"
const records = this.getReplyRecords();
if (records.length > 0) {
const o = records[0];
if(o.replay && o.content){//
return "green"
}else if(o.content && !o.replay){//
return "green"
}else{
return "gray"
}
}else{//
return "gray"
}
}, },
// //
onCheckboxChange(val) { onCheckboxChange(val) {
console.log(this.zdxgjl,"zdxgjl")
console.log(this.zdxgjl, "zdxgjl")
// //
EventBus.$emit('onModifyRecord', { EventBus.$emit('onModifyRecord', {
timestamp: new Date().toLocaleString(), timestamp: new Date().toLocaleString(),
@ -206,7 +214,7 @@ export default {
const value = val !== undefined ? val : this.inputValue; const value = val !== undefined ? val : this.inputValue;
this.$emit('input', value); this.$emit('input', value);
this.$emit('change', value); this.$emit('change', value);
// //
const isEmpty = this.isValueEmpty(value); const isEmpty = this.isValueEmpty(value);
if (this.error && !isEmpty) { if (this.error && !isEmpty) {
@ -220,43 +228,45 @@ export default {
this.onCommonHandleSaveRecord(e.target.value); this.onCommonHandleSaveRecord(e.target.value);
}, },
async onCommonHandleSaveRecord(val){
async onCommonHandleSaveRecord(val) {
const isEmpty = this.isValueEmpty(this.inputValue); const isEmpty = this.isValueEmpty(this.inputValue);
if (this.error && !isEmpty) { if (this.error && !isEmpty) {
this.$emit('update:error', false); this.$emit('update:error', false);
} else if (!this.error && isEmpty) { } else if (!this.error && isEmpty) {
this.$emit('update:error', true); this.$emit('update:error', true);
} }
// //
if (this.templateFillType === "actFill") { if (this.templateFillType === "actFill") {
// //
try { try {
if(this.oldValue && this.oldValue !== this.inputValue){
if (this.oldValue && this.oldValue !== this.inputValue) {
const passwordResult = await this.$prompt('请输入密码以确认修改', '密码验证', { const passwordResult = await this.$prompt('请输入密码以确认修改', '密码验证', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'password',
inputPattern: /.+/,
inputErrorMessage: '请输入密码',
zIndex: 10000,
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType: 'password',
inputPattern: /.+/,
inputErrorMessage: '请输入密码',
zIndex: 10000,
}); });
const baseInfo = this.getCommonRecordInfo();
const record = {
...baseInfo,
oldValue: this.oldValue,
value: this.inputValue,
title: this.oldValue ? "修改记录" : "填写",
}
this.updateZdxgjl(record);
const params = {
type: "modifyRecord",
newRecord: record,
password: passwordResult,
recordList: this.zdxgjl,
}
console.log(params, "params")
this.$emit("onModifyRecord", params,)
} }
const {nickName,name} = this.$store.getters;
//locale:zh-CN en-US
const lang = this.$i18n.locale === "zh-CN"?"cn":"en";
const commonInfo = {
userNameCn:nickName,
userNameEn:name,
key:this.fieldKey,
field:`${this.fieldItemLabel}-${this.item.label}`
}
this.$emit("onModifyRecord", {
timestamp: new Date().toLocaleString(),
oldValue: this.oldValue,
value: this.inputValue,
title:this.oldValue?"修改记录":"填写",
field:"试验基本信息-其他信息"
})
// //
this.oldValue = this.inputValue; // this.oldValue = this.inputValue; //
this.$emit("blur", val); this.$emit("blur", val);
@ -278,7 +288,29 @@ export default {
this.$emit("change", val) this.$emit("change", val)
} }
}, },
//
getCommonRecordInfo() {
const { nickName, name } = this.$store.getters;
//locale:zh-CN en-US
const lang = this.$i18n.locale === "zh-CN" ? "cn" : "en";
const { label, parentLabel } = this.item;
let fieldLabel = label;
if (label === "其他") {
fieldLabel = parentLabel + "其他信息";
} else if (!label) {
fieldLabel = parentLabel + "单位";
}
const commonInfo = {
userNameCn: nickName,
userNameEn: name,
key: this.fieldKey,
field: `${this.fieldItemLabel}-${fieldLabel}`,
time: moment().format("YYYY-MM-DD HH:mm:ss"),
}
return commonInfo;
},
// //
isValueEmpty(value) { isValueEmpty(value) {
if (value === null || value === undefined || value === '') { if (value === null || value === undefined || value === '') {
@ -292,11 +324,11 @@ export default {
} }
return false; return false;
}, },
handleClickable(item,event){
if(item.fillType !== 'actFill'){
handleClickable(item, event) {
if (item.fillType !== 'actFill') {
return return
} }
this.$emit("clickable",item)
this.$emit("clickable", item)
}, },
// //
getIsShowCopyIcon() { getIsShowCopyIcon() {
@ -326,58 +358,57 @@ export default {
} }
}, },
getPlaceholder() { getPlaceholder() {
const { placeholder,label } = this.item;
const {type} = this;
if(this.getDisabled()){
const { placeholder, label } = this.item;
const { type } = this;
if (this.getDisabled()) {
return "" return ""
} }
if(type === "clickable"){
return "请选择"
if (type === "clickable") {
return "请选择"
} }
let prex = "请输入"; let prex = "请输入";
if(type === "select" || type === "dateTime"){
if (type === "select" || type === "dateTime") {
prex = "请选择" prex = "请选择"
} }
return placeholder ? placeholder : (prex + label) return placeholder ? placeholder : (prex + label)
}, },
onCopy() { onCopy() {
this.$emit("copy") this.$emit("copy")
}, },
// //
getIsShowQuestionIcon(){
if(this.templateFillType === "qc"){//qc
getIsShowQuestionIcon() {
if (this.templateFillType === "qc") {//qc
return true; return true;
} }
}, },
// //
getIsShowRecordIcon(){
return this.getModifyRecords().length>0
getIsShowRecordIcon() {
return this.getModifyRecords().length > 0
}, },
// //
getReplyRecords(){
const {fieldKey,fhyjjl = []} = this;
getReplyRecords() {
const { fieldKey, fhyjjl = [] } = this;
const records = fhyjjl.filter(item => item.key === fieldKey); const records = fhyjjl.filter(item => item.key === fieldKey);
return records; return records;
}, },
// //
getModifyRecords(){
const {fieldKey,zdxgjl = []} = this;
getModifyRecords() {
const { fieldKey, zdxgjl = [] } = this;
const records = zdxgjl.filter(item => item.key === fieldKey); const records = zdxgjl.filter(item => item.key === fieldKey);
return records; return records;
}, },
// //
async onMouseEnter(type,event) {
async onMouseEnter(type, event) {
this.currentRecordType = type; this.currentRecordType = type;
clearTimeout(this.modalTimer); clearTimeout(this.modalTimer);
let record = []; let record = [];
if(type === "modifyRecord"){
if (type === "modifyRecord") {
record = this.getModifyRecords(); record = this.getModifyRecords();
}else if(type === "replyRecord"){
} else if (type === "replyRecord") {
record = this.getReplyRecords(); record = this.getReplyRecords();
} }
console.log(record,"reeee")
this.modificationRecords = record; this.modificationRecords = record;
// //
this.showModal = true; this.showModal = true;
@ -385,32 +416,32 @@ export default {
if (this.$refs.modalRef) { if (this.$refs.modalRef) {
const elementRect = event.target.getBoundingClientRect(); const elementRect = event.target.getBoundingClientRect();
const modalEl = this.$refs.modalRef; const modalEl = this.$refs.modalRef;
// //
modalEl.style.left = elementRect.right + 5 + 'px'; // 5px modalEl.style.left = elementRect.right + 5 + 'px'; // 5px
modalEl.style.top = elementRect.top + 'px'; modalEl.style.top = elementRect.top + 'px';
} }
}); });
}, },
// //
onMouseLeave() { onMouseLeave() {
this.currentRecordType = '';
this.modificationRecords = [];//
// this.currentRecordType = '';
// this.modificationRecords = [];//
// //
this.modalTimer = setTimeout(() => { this.modalTimer = setTimeout(() => {
if (!this.isHoveringModal) { if (!this.isHoveringModal) {
this.showModal = false; this.showModal = false;
} }
}, 300);
}, 100);
}, },
// //
onModalEnter() { onModalEnter() {
this.isHoveringModal = true; this.isHoveringModal = true;
clearTimeout(this.modalTimer); clearTimeout(this.modalTimer);
}, },
// //
onModalLeave() { onModalLeave() {
this.isHoveringModal = false; this.isHoveringModal = false;
@ -418,7 +449,7 @@ export default {
this.modificationRecords = [];// this.modificationRecords = [];//
this.modalTimer = setTimeout(() => { this.modalTimer = setTimeout(() => {
this.showModal = false; this.showModal = false;
}, 300);
}, 100);
}, },
}, },
} }
@ -469,7 +500,8 @@ export default {
.orange-border { .orange-border {
.el-input-group__prepend,input,
.el-input-group__prepend,
input,
textarea { textarea {
border-color: #f9c588; border-color: #f9c588;
@ -490,7 +522,8 @@ export default {
.green-border { .green-border {
.el-input-group__prepend,input,
.el-input-group__prepend,
input,
textarea { textarea {
border-color: green; border-color: green;
@ -511,7 +544,8 @@ export default {
.blue-border { .blue-border {
.el-input-group__prepend,input,
.el-input-group__prepend,
input,
textarea { textarea {
border-color: #4ea2ff; border-color: #4ea2ff;
@ -531,7 +565,9 @@ export default {
} }
.error-border { .error-border {
.el-input-group__prepend,input,
.el-input-group__prepend,
input,
textarea, textarea,
.el-select, .el-select,
.clickable, .clickable,
@ -559,7 +595,7 @@ export default {
border-color: #f56c6c; border-color: #f56c6c;
} }
} }
// //
.clickable { .clickable {
border-color: #f56c6c; border-color: #f56c6c;
@ -568,8 +604,11 @@ export default {
.orange-bg { .orange-bg {
background-color: #FFF1F1 !important; // background-color: #FFF1F1 !important; //
input, textarea, .el-input__inner, .el-textarea__inner {
input,
textarea,
.el-input__inner,
.el-textarea__inner {
background-color: #FFF1F1 !important; background-color: #FFF1F1 !important;
} }
} }
@ -629,27 +668,29 @@ export default {
font-style: italic; font-style: italic;
} }
.clickable{
.clickable {
cursor: pointer; cursor: pointer;
width: auto; width: auto;
// margin-left: 10px; // margin-left: 10px;
min-width: 100px; min-width: 100px;
height: 28px; height: 28px;
border-radius: 4px; border-radius: 4px;
border:1px solid #4ea2ff;
border: 1px solid #4ea2ff;
display: flex; display: flex;
align-items: center; align-items: center;
padding:0 15px;
padding: 0 15px;
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
color: #606266; color: #606266;
flex:1;
&.disabled{
flex: 1;
&.disabled {
cursor: not-allowed; cursor: not-allowed;
color: #c0c4cc; color: #c0c4cc;
background-color: #f5f7fa; background-color: #f5f7fa;
} }
&.error-border{
&.error-border {
border-color: #f56c6c !important; border-color: #f56c6c !important;
} }
} }

+ 6
- 2
src/components/Template/icons/Question.vue View File

@ -1,6 +1,6 @@
<template> <template>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg @mouseenter="mouseenter" @mouseleave="mouseleave" t="1767342719425" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
<svg @mouseenter="mouseenter" @mouseleave="mouseleave" t="1767342719425" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
fill="currentColor" p-id="1797" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"> fill="currentColor" p-id="1797" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
<path <path
d="M511.51393 63.894216c-114.5315 0-229.061976 43.508933-316.720432 131.167389-174.676321 174.676321-174.676321 458.764542 0 633.440863 87.658456 87.658456 202.188932 131.167389 316.720432 131.167389s229.062999-43.508933 316.720432-131.167389c174.676321-174.676321 174.676321-458.764542 0-633.440863C740.576929 107.403149 626.045429 63.894216 511.51393 63.894216zM511.51393 108.683305c52.466955 0 103.653755 10.237155 151.641699 29.432333 49.907667 20.475334 94.695732 49.907667 133.086088 88.937588 39.029922 38.390355 68.463278 83.179444 88.937588 133.086088 19.195178 47.987944 29.432333 99.174744 29.432333 151.641699s-10.237155 103.653755-29.432333 151.641699c-20.47431 49.907667-49.907667 94.695732-88.937588 133.086088-38.390355 39.029922-83.179444 68.463278-133.086088 88.937588-47.987944 19.195178-99.174744 29.432333-151.641699 29.432333-52.466955 0-103.653755-10.237155-151.641699-29.432333-49.907667-20.475334-94.695732-49.907667-133.086088-88.937588-39.029922-38.390355-68.463278-83.179444-88.937588-133.086088-19.195178-47.987944-29.432333-99.174744-29.432333-151.641699s10.237155-103.653755 29.432333-151.641699c20.475334-49.907667 49.907667-94.695732 88.937588-133.086088 38.390355-39.029922 83.179444-68.463278 133.086088-88.937588C407.860175 118.92046 459.046974 108.683305 511.51393 108.683305z" d="M511.51393 63.894216c-114.5315 0-229.061976 43.508933-316.720432 131.167389-174.676321 174.676321-174.676321 458.764542 0 633.440863 87.658456 87.658456 202.188932 131.167389 316.720432 131.167389s229.062999-43.508933 316.720432-131.167389c174.676321-174.676321 174.676321-458.764542 0-633.440863C740.576929 107.403149 626.045429 63.894216 511.51393 63.894216zM511.51393 108.683305c52.466955 0 103.653755 10.237155 151.641699 29.432333 49.907667 20.475334 94.695732 49.907667 133.086088 88.937588 39.029922 38.390355 68.463278 83.179444 88.937588 133.086088 19.195178 47.987944 29.432333 99.174744 29.432333 151.641699s-10.237155 103.653755-29.432333 151.641699c-20.47431 49.907667-49.907667 94.695732-88.937588 133.086088-38.390355 39.029922-83.179444 68.463278-133.086088 88.937588-47.987944 19.195178-99.174744 29.432333-151.641699 29.432333-52.466955 0-103.653755-10.237155-151.641699-29.432333-49.907667-20.475334-94.695732-49.907667-133.086088-88.937588-39.029922-38.390355-68.463278-83.179444-88.937588-133.086088-19.195178-47.987944-29.432333-99.174744-29.432333-151.641699s10.237155-103.653755 29.432333-151.641699c20.475334-49.907667 49.907667-94.695732 88.937588-133.086088 38.390355-39.029922 83.179444-68.463278 133.086088-88.937588C407.860175 118.92046 459.046974 108.683305 511.51393 108.683305z"
@ -27,4 +27,8 @@ export default {
} }
</script> </script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.icon{
display: block;
}
</style>

+ 8
- 0
src/views/business/comps/template/TemplateTable.vue View File

@ -81,6 +81,14 @@ export default {
fhyjjl: this.templateData?.fhyjjl || [ fhyjjl: this.templateData?.fhyjjl || [
{key:"versionNum",title:'复核意见',field:'试验基本信息-其他信息',content:'复核意见内容',replay:'意见回复内容',userName:'签名人',time:'2026-01-01 14:22:22',sfhf:'1'} {key:"versionNum",title:'复核意见',field:'试验基本信息-其他信息',content:'复核意见内容',replay:'意见回复内容',userName:'签名人',time:'2026-01-01 14:22:22',sfhf:'1'}
], ],
//
updateZdxgjl(data){
this.zdxgjl.unshift(data);
},
//
updateFhyjjl(data){
this.fhyjjl.unshift(data);
},
} }
}, },

Loading…
Cancel
Save