@@ -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 @@
+ padding:'0.5rem 0 0 0',borderBottom:fieldData.field_type < 21 || fieldData.field_type > 24 ?'1px solid #e5e5e5':null,margin:'0 0.5rem'}" :data-operate="design">
+ class="label-style" ref="label" :style="[23,230,231].some((num)=>{return num === fieldData.field_type})?{display:'flex',width:'100%',justifyContent:fieldData.props.label_alignment}:
+ {display:fieldData.props.label_alignment === 'top'?'flex':'inline-flex',justifyContent:fieldData.props.label_alignment === 'top'?'flex-start':fieldData.props.label_alignment,
+ width:fieldData.props.label_width + 'rem',opacity:fieldData.props.is_disabled?'0.5':null}">
*
{{fieldData.props.label_prefix + fieldData.field_name + fieldData.props.label_suffix}}
-
+ fieldData.props.show_title === false || [21,22,23,24,230,231,210,211,240,241].some((num)=>{return num === fieldData.field_type}) || fieldData.props.is_sonForm_field === true ?null:'1px solid #e5e5e5'}">
-
- 子表单查看
- 子表单查看
+
+
+ :canDownload="fieldData.props.can_downLoad" :canUpload="false" :fileData="getUploadData()"/>
{{ fieldData.props.value }}
@@ -35,10 +37,9 @@
{{getDicValue()}}
- 子表单编辑
-
+ :canDownload="fieldData.props.can_downLoad" :canUpload="true" :fileData="getUploadData()"/>
@@ -63,6 +64,7 @@
import {curItem} from './fieldAndFormConfig'
import Upload from '../../../components/common/uploader/Upload'
import TypesCheck from '../../../global-llibs/under-score/types-check'
+ import SonFormFilling from '../fieldComponent/SonFormFilling'
const IconFont = Icon.createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_2363602_ovz7ocuydo.js',
});
@@ -79,7 +81,8 @@
components: {
IconFont,
AIcon:Icon,
- Upload
+ Upload,
+ SonFormFilling
},
data:function () {
return {
diff --git a/src/views/teacherInfo/systemConfig/FormDesign.vue b/src/views/teacherInfo/systemConfig/FormDesign.vue
index 5961060..9096740 100644
--- a/src/views/teacherInfo/systemConfig/FormDesign.vue
+++ b/src/views/teacherInfo/systemConfig/FormDesign.vue
@@ -50,7 +50,7 @@
请拖拽或者点击左侧字段添加表单内容
@@ -227,7 +227,7 @@ export default {
// console.log(e);
// console.log(list);
let tag = list[e.oldIndex].tag;
- if (tag === "son_form" || tag === "table" || tag === "grid" || tag === "son_form"){
+ if (tag === "son_form" || tag === "table" || tag === "grid" || tag === "divider"){
this.fieldsList.forEach((item)=>{
if (item.tag === "son_form"){
// eslint-disable-next-line no-debugger
@@ -271,13 +271,21 @@ export default {
// }
}
+ if (this.curItem.item.field_type <=24 && this.curItem.item.field_type >= 21){
+ this.curItem.item.props.show_title = false;
+
+ if (this.curItem.item.field_type === 23){//子表单对于标题特殊处理
+ this.curItem.item.props.label_alignment = "center"
+ }
+ }
this.selectedItem = this.curItem.item
this.$bus.emit("clickItem",this.curItem.item)
},
copyRowData: function (data) {
let copyRowData = _.cloneDeep(data[0]);
+ let index = this.fieldsList.findIndex((field)=>{return field.id === copyRowData.id})
copyRowData.id = copyRowData.tag + "_" + Common.getRandom(12);
- this.fieldsList.push(copyRowData)
+ this.fieldsList.splice(index+1,0,copyRowData)
this.curItem.item = copyRowData;
this.selectedItem = this.curItem.item
this.$bus.emit("clickItem",copyRowData)
@@ -518,6 +526,15 @@ export default {
stopTest = true;
break;
}
+ }else if ((item.field_type === 23 || item.field_type === 231) && item.props.data.length === 0){
+ Modal.warning({
+ title: '表单提交失败',
+ content:"子表单中必须至少包含一个字段",
+ okText:'我知道了',
+ centered:true
+ })
+ stopTest = true;
+ break;
}
if (item.props.max_length){
diff --git a/src/views/teacherInfo/systemConfig/SonFieldItem.vue b/src/views/teacherInfo/systemConfig/SonFieldItem.vue
new file mode 100644
index 0000000..cfc8023
--- /dev/null
+++ b/src/views/teacherInfo/systemConfig/SonFieldItem.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+ {{ fieldData.props.value }}
+
+
+ 头像
+ {{getDicValue()}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/teacherInfo/systemConfig/attributeConfig/DividerAttribute.vue b/src/views/teacherInfo/systemConfig/attributeConfig/DividerAttribute.vue
new file mode 100644
index 0000000..2bfa725
--- /dev/null
+++ b/src/views/teacherInfo/systemConfig/attributeConfig/DividerAttribute.vue
@@ -0,0 +1,83 @@
+
+
+
+
分隔线/符
+
+ 分隔线
+ 分隔符
+
+
+
+
+
+
+
文本布局方式
+
+ 左对齐
+ 中间对齐
+ 右对齐
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/teacherInfo/systemConfig/attributeConfig/InputAreaAttribute.vue b/src/views/teacherInfo/systemConfig/attributeConfig/InputAreaAttribute.vue
index a0f6aed..c79907f 100644
--- a/src/views/teacherInfo/systemConfig/attributeConfig/InputAreaAttribute.vue
+++ b/src/views/teacherInfo/systemConfig/attributeConfig/InputAreaAttribute.vue
@@ -19,7 +19,7 @@
+ optionFilterProp="children">
{{ field.field_name }}
diff --git a/src/views/teacherInfo/systemConfig/attributeConfig/SonFormAttribute.vue b/src/views/teacherInfo/systemConfig/attributeConfig/SonFormAttribute.vue
index 3723e55..7fedf33 100644
--- a/src/views/teacherInfo/systemConfig/attributeConfig/SonFormAttribute.vue
+++ b/src/views/teacherInfo/systemConfig/attributeConfig/SonFormAttribute.vue
@@ -10,19 +10,23 @@