From b0985f67b450f13bc822c8f678315919fc2d1994 Mon Sep 17 00:00:00 2001 From: Administrator <123456> Date: Mon, 24 May 2021 09:36:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=B1=E6=80=9D=E7=A6=B9=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E6=8F=90=E4=BA=A4=E5=AD=90=E8=A1=A8=E5=8D=95=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/commonStyle/commonStyle.scss | 4 + .../common/richEditor/RichEditor.vue | 7 +- src/components/common/uploader/Upload.vue | 10 +- src/views/teacherInfo/approve/ApproveList.vue | 4 +- .../teacherInfo/fieldComponent/Divider.vue | 37 +++ .../teacherInfo/fieldComponent/FileUpload.vue | 2 +- .../teacherInfo/fieldComponent/SonForm.vue | 49 +++- .../fieldComponent/SonFormFilling.vue | 275 ++++++++++++++++++ .../formCommon/EditAndViewForm.vue | 239 +++++++++------ .../systemConfig/FieldAttributeConfig.vue | 18 +- .../teacherInfo/systemConfig/FieldItem.vue | 35 ++- .../teacherInfo/systemConfig/FormDesign.vue | 23 +- .../teacherInfo/systemConfig/SonFieldItem.vue | 85 ++++++ .../attributeConfig/DividerAttribute.vue | 83 ++++++ .../attributeConfig/InputAreaAttribute.vue | 2 +- .../attributeConfig/SonFormAttribute.vue | 16 +- .../systemConfig/fieldAndFormConfig.js | 6 +- .../systemConfig/style/fieldItem.scss | 3 + .../teacherInfoFilling/FillingMain.vue | 6 +- .../teacherInfoManagement/TeacherInfoList.vue | 4 +- .../teacherInfoSearch/CategorySummary.vue | 4 +- 21 files changed, 756 insertions(+), 156 deletions(-) create mode 100644 src/views/teacherInfo/fieldComponent/Divider.vue create mode 100644 src/views/teacherInfo/fieldComponent/SonFormFilling.vue create mode 100644 src/views/teacherInfo/systemConfig/SonFieldItem.vue create mode 100644 src/views/teacherInfo/systemConfig/attributeConfig/DividerAttribute.vue diff --git a/src/commonStyle/commonStyle.scss b/src/commonStyle/commonStyle.scss index 0ec4997..85b3718 100644 --- a/src/commonStyle/commonStyle.scss +++ b/src/commonStyle/commonStyle.scss @@ -71,3 +71,7 @@ .__bar-is-horizontal { display: none !important; } + +.__view{ + width: 100% !important; +} diff --git a/src/components/common/richEditor/RichEditor.vue b/src/components/common/richEditor/RichEditor.vue index d292d80..b537d0f 100644 --- a/src/components/common/richEditor/RichEditor.vue +++ b/src/components/common/richEditor/RichEditor.vue @@ -88,8 +88,11 @@ // this.createEditor(); }, content:function (newData) { - this.contentHtml = newData; - this.editorCom.txt.html(this.contentHtml) + if (newData !== this.contentHtml){ + this.contentHtml = newData; + this.editorCom.txt.html(this.contentHtml) + } + } } } diff --git a/src/components/common/uploader/Upload.vue b/src/components/common/uploader/Upload.vue index d9ddeeb..20bd98f 100644 --- a/src/components/common/uploader/Upload.vue +++ b/src/components/common/uploader/Upload.vue @@ -74,7 +74,7 @@ type:Boolean, required: true }, - data:{ + fileData:{ type:Array, default: function () { return []; @@ -103,10 +103,10 @@ uploadType:parseInt(this.type), opt:_.cloneDeep(this.option), uploader:null, - fileList:this.data,//上传文件数组 + fileList:_.cloneDeep(this.fileData),//上传文件数组 isLoading:false, singleSignature:null,//签名 - hasUploadList:_.cloneDeep(this.data),//已上传完毕的数据 + hasUploadList:_.cloneDeep(this.fileData),//已上传完毕的数据 alertShow:false//是否展示提示信息 } }, @@ -244,7 +244,7 @@ this.fileList[i].resource_id_int = data.resource_id_int; this.fileList[i].resource_info_id = data.resource_info_id; this.fileList[i].percent = 100; - let item = ObjectFns.clone(this.fileList[i]); + let item = _.cloneDeep(this.fileList[i]); this.hasUploadList.push(item); } }) @@ -340,7 +340,7 @@ this.initUpload() } }, - data:function (newData) { + fileData:function (newData) { this.fileList = newData;//上传文件数组 this.hasUploadList=_.cloneDeep(newData);//已上传完毕的数据 } diff --git a/src/views/teacherInfo/approve/ApproveList.vue b/src/views/teacherInfo/approve/ApproveList.vue index be84df7..596b140 100644 --- a/src/views/teacherInfo/approve/ApproveList.vue +++ b/src/views/teacherInfo/approve/ApproveList.vue @@ -32,11 +32,11 @@ {{getDictionaryValue(value)}} - - + diff --git a/src/views/teacherInfo/fieldComponent/Divider.vue b/src/views/teacherInfo/fieldComponent/Divider.vue new file mode 100644 index 0000000..6b7491d --- /dev/null +++ b/src/views/teacherInfo/fieldComponent/Divider.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/teacherInfo/fieldComponent/FileUpload.vue b/src/views/teacherInfo/fieldComponent/FileUpload.vue index 68c600b..7abc17f 100644 --- a/src/views/teacherInfo/fieldComponent/FileUpload.vue +++ b/src/views/teacherInfo/fieldComponent/FileUpload.vue @@ -1,6 +1,6 @@ + + diff --git a/src/views/teacherInfo/formCommon/EditAndViewForm.vue b/src/views/teacherInfo/formCommon/EditAndViewForm.vue index 25efe7f..a55b7a0 100644 --- a/src/views/teacherInfo/formCommon/EditAndViewForm.vue +++ b/src/views/teacherInfo/formCommon/EditAndViewForm.vue @@ -31,7 +31,7 @@ -
+
@@ -74,6 +74,7 @@ import ModalPanel from '../../../components/common/modal/ModalPanel' import ApprovalComment from '../approve/ApprovalComment' import CommonOperate from '../utils/commonOperate' + import GUID_UUID from '../../../global-llibs/guid-uuid' /* * @props * pageType 1新建 2编辑 3查看 4审批 @@ -357,36 +358,119 @@ return false; } }, - submitFormData:function(){ + + testFormData:function(){ let b = true; for (let i = 0; i < this.field_list.length; i++){ let item = this.field_list[i]; - if (item.is_input_field === 1 && item.field_must_input === 1){//是输入场并且是必填项,检测是否已填写 - if(this.isEmptyValue(item.props.value)){ + if (item.tag !== "son_form"){ + if (item.is_input_field === 1 && item.field_must_input === 1){//是输入场并且是必填项,检测是否已填写 + if(this.isEmptyValue(item.props.value)){ + Modal.warning({ + centered:true, + title:"提交提示", + content:"请填写“" + item.field_name + "”后再提交" + }) + b = false; + break; + } + } + }else{ + if (item.props.tableData.some((data)=>{return data.isEdit === true})){ Modal.warning({ + centered:true, title:"提交提示", - content:"请填写“" + item.field_name + "”后再提交" + content:"当前有子表单存在编辑状态的数据,请保存数据后再提交" }) b = false; - break; + }else{ + for (let j = 0; j < item.props.tableData.length; j++){//检测子表单必填项 + let rowData = item.props.tableData[j]; + for (let k = 0; k < item.props.data.length; k++){ + let fieldData = rowData[item.props.data[k].id + "_json"]; + if (fieldData.is_input_field === 1 && fieldData.field_must_input === 1){ + if(this.isEmptyValue(fieldData.props.value)){ + Modal.warning({ + centered:true, + title:"提交提示", + content:"请填写子表单中“" + fieldData.field_name + "”后再提交" + }) + b = false; + break; + } + } + } + if (b === false){ + break; + } + } } } - } - // this.field_list.forEach((item)=>{ - // if (item.is_input_field === 1 && item.field_must_input === 1){//是输入场并且是必填项,检测是否已填写 - // if(this.isEmptyValue(item.props.value)){ - // Modal.warning({ - // title:"提交提示", - // content:"请填写“" + item.field_name + "”后再提交" - // }) - // - // b = false - // } - // } - // }); + return b; + }, - if (b === false){ + getSubmitDatas:function(item,obj){ + let type = parseInt(item.field_type) + if (item.is_input_field === 1 && type !== 27){//是输入场,但是不是关联其它表单字段的字段 + if(type === 3){//单选 + obj[item.column_name] = this.isEmptyValue(item.props.value)?"":"DICS#" + item.props.value + "!" + + (item.props.datas.filter((f)=>{return f.dic_code === item.props.value})[0]).dic_value; + }else if (type === 4 || type === 6){//多选,下拉选 + if(this.isEmptyValue(item.props.value)){ + obj[item.column_name] = ""; + }else{ + obj[item.column_name] = "DICS#"; + if(TypesCheck.isArray(item.props.value)){ + item.props.value.forEach((selected,index)=>{ + obj[item.column_name] += selected + "!" + (item.props.datas.filter((f)=>{return f.dic_code === selected})[0]).dic_value; + if (index < item.props.value.length - 1){ + obj[item.column_name] += "+"; + } + }); + }else{ + obj[item.column_name] += item.props.value + "!" + + (item.props.datas.filter((f)=>{return f.dic_code === item.props.value})[0]).dic_value; + } + } + }else if (type === 15 || type === 25 || type === 26){ + if(this.isEmptyValue(item.props.value)){ + obj[item.column_name] = ""; + }else{ + obj[item.column_name] = "DICS#"; + let ary = item.props.default_value_name.split(","); + item.props.value.forEach((selected,index)=>{ + obj[item.column_name] += selected + "!" + ary[index]; + if (index < item.props.value.length - 1){ + obj[item.column_name] += ","; + } + }) + } + }else if (type === 8 || type === 9 || type ===10){ + if(item.props.value && this.TypesCheck.isArray(item.props.value) && item.props.value.length > 0){ + obj[item.column_name] = JSON.stringify(item.props.value); + }else{ + obj[item.column_name] = ""; + } + }else if (type === 17 || type === 18){//选择部门/人员 + if(this.isEmptyValue(item.props.value)){ + obj[item.column_name] = ""; + }else{ + obj[item.column_name] = ""; + item.props.value.forEach((selected,index)=>{ + obj[item.column_name] += selected[type === 17?'id':'person_id'] + "!" + selected[type === 17?'name':'person_name']; + if (index < item.props.value.length - 1){ + obj[item.column_name] += "+"; + } + }) + } + }else{ + obj[item.column_name] = item.props.value; + } + } + }, + submitFormData:function(){ + if (this.testFormData() === false){ return } @@ -395,64 +479,21 @@ let dataValue = [{form_id:this.form_id,value_list:[]}] let obj = {}; this.field_list.forEach((item)=>{ - let type = parseInt(item.field_type) - if (item.is_input_field === 1 && type !== 27){//是输入场,但是不是关联其它表单字段的字段 - if(type === 3){//单选 - obj[item.column_name] = this.isEmptyValue(item.props.value)?"":"DICS#" + item.props.value + "!" + - (item.props.datas.filter((f)=>{return f.dic_code === item.props.value})[0]).dic_value; - }else if (type === 4 || type === 6){//多选,下拉选 - if(this.isEmptyValue(item.props.value)){ - obj[item.column_name] = ""; - }else{ - obj[item.column_name] = "DICS#"; - if(TypesCheck.isArray(item.props.value)){ - item.props.value.forEach((selected,index)=>{ - obj[item.column_name] += selected + "!" + (item.props.datas.filter((f)=>{return f.dic_code === selected})[0]).dic_value; - if (index < item.props.value.length - 1){ - obj[item.column_name] += "+"; - } - }); - }else{ - obj[item.column_name] += item.props.value + "!" + - (item.props.datas.filter((f)=>{return f.dic_code === item.props.value})[0]).dic_value; - } - } - }else if (type === 15 || type === 25 || type === 26){ - if(this.isEmptyValue(item.props.value)){ - obj[item.column_name] = ""; - }else{ - obj[item.column_name] = "DICS#"; - let ary = item.props.default_value_name.split(","); - item.props.value.forEach((selected,index)=>{ - obj[item.column_name] += selected + "!" + ary[index]; - if (index < item.props.value.length - 1){ - obj[item.column_name] += ","; - } - }) - } - }else if (type === 8 || type === 9 || type ===10){ - if(item.props.value && this.TypesCheck.isArray(item.props.value) && item.props.value.length > 0){ - obj[item.column_name] = JSON.stringify(item.props.value); - }else{ - obj[item.column_name] = ""; - } - }else if (type === 17 || type === 18){//选择部门/人员 - if(this.isEmptyValue(item.props.value)){ - obj[item.column_name] = ""; - }else{ - obj[item.column_name] = ""; - item.props.value.forEach((selected,index)=>{ - obj[item.column_name] += selected[type === 17?'id':'person_id'] + "!" + selected[type === 17?'name':'person_name']; - if (index < item.props.value.length - 1){ - obj[item.column_name] += "+"; - } - }) - } - }else{ - obj[item.column_name] = item.props.value; + if (item.tag === "son_form"){// + let sonFormData = { + form_id:item.child_form_id, + value_list:[], } - }else if (type === 21 || type === 23 || type === 24 || type > 200){//子表单 表格 栅格 - + item.props.tableData.forEach((data)=>{ + let sonObj = {}; + item.props.data.forEach((title)=>{ + this.getSubmitDatas(data[title.id + "_json"],sonObj); + }); + sonFormData.value_list.push(sonObj) + }) + dataValue.push(sonFormData); + }else{ + this.getSubmitDatas(item,obj); } }); @@ -545,7 +586,7 @@ filedList.forEach((field)=>{ let json = JSON.parse(field.field_json); json.form_id = field.form_id; - json.child_form_id = field.form_id; + json.child_form_id = field.child_form_id; let field_type = parseInt(json.field_type); if (json.field_type === 1 && json.field_input_type === 2){//系统自动填充 if (json.filed_auto_input_info === "person_num"){ @@ -565,18 +606,19 @@ this.getChildFormData(json,data.data_id,data.version_no) }else{//未填写过数据的 自己构造数据 if (json.tag === "son_form"){//子表单 - json.props.data.tableData = []; - if (json.props.data.value > 0){//默认显示行数大于1 - for(let i = 0; i < json.props.data.value; i++){ - let data = {} + json.props.tableData = []; + if (json.props.defaultLineCount > 0){//默认显示行数大于1 + for(let i = 0; i < json.props.defaultLineCount; i++){ + let data = {value_id:GUID_UUID.guid()} json.props.data.forEach((item)=>{ - if (item.column_name && item.column_name !== ""){ - data[item.column_name + "_json"] = _.cloneDeep(item) - }else{ - data[item.id + "_json"] = _.cloneDeep(item) - } + // if (item.column_name && item.column_name !== ""){ + // data[item.column_name + "_json"] = _.cloneDeep(item) + // }else{ + data[item.id + "_json"] = _.cloneDeep(item); + data[item.id + "_json_copy"] = _.cloneDeep(item) + // } }) - json.props.data.tableData.push(data) + json.props.tableData.push(data) } } } @@ -632,23 +674,28 @@ this.hasGetFormDataCount += 1; if (json.tag === "son_form"){ let tableData = [] - tableData.forEach((formData)=>{ - let data = {} + result.data.form_data_list.forEach((formData)=>{ + let data = { + value_id:formData.value_id + } json.props.data.forEach((field)=>{ if (field.is_input_field === 1){ this.organizeData(field,formData); } - if (field.column_name && field.column_name !== ""){ - data[field.column_name + "_json"] = _.cloneDeep(field) - }else{ - data[field.id + "_json"] = _.cloneDeep(field) - } + data[field.id + "_json"] = _.cloneDeep(field) + data[field.id + "_json_copy"] = _.cloneDeep(field) + + // if (field.column_name && field.column_name !== ""){ + // data[field.column_name + "_json"] = _.cloneDeep(field) + // }else{ + // data[field.id + "_json"] = _.cloneDeep(field) + // } }) tableData.push(data); }); - this.$set(json.props,"tableData",tableData) + this.$set(json.props,"tableData",tableData); } if (this.mainFormErgodicComplete === true && this.sonFormCount === this.hasGetFormDataCount){//子表单数据已经全部整理完毕 this.is_loading = false; diff --git a/src/views/teacherInfo/systemConfig/FieldAttributeConfig.vue b/src/views/teacherInfo/systemConfig/FieldAttributeConfig.vue index 2861eb1..0131eae 100644 --- a/src/views/teacherInfo/systemConfig/FieldAttributeConfig.vue +++ b/src/views/teacherInfo/systemConfig/FieldAttributeConfig.vue @@ -5,21 +5,23 @@ backgroundColor:data.tag === 'input' && data.props.field_input_type === 2 ? '#f2f2f2':null}">
标题内容
- - +
-
+
标题宽度
-
+
标题对齐方式
+ style="margin-bottom: 2rem" :disabled="data.props.show_title === false"> 右对齐 + 中间对齐 左对齐 - 顶部对齐 + 顶部对齐
@@ -29,8 +31,8 @@
展示方式
- 只读 - 禁用 + 只读 + 禁用 隐藏
diff --git a/src/views/teacherInfo/systemConfig/FieldItem.vue b/src/views/teacherInfo/systemConfig/FieldItem.vue index 7bff739..cbaf87d 100644 --- a/src/views/teacherInfo/systemConfig/FieldItem.vue +++ b/src/views/teacherInfo/systemConfig/FieldItem.vue @@ -1,31 +1,33 @@