| 
					
				 | 
			
			
				@@ -44,12 +44,158 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <el-option v-for="(item, index) in process" :key="index" :label="item.name" :value="item.id" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="panelRow"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div>模板关联字段:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-row style="width: 90%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="7">公司名称</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="contract.organName" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style="width:100%; font-size:12px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="选择公司名称" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :disabled="readOnly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :filterable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="onChangeSelectContract" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-option-group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="group in fieldList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :label="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in group.options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="i.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-option-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="7">费用类型</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="contract.feeType" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style="width:100%; font-size:12px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="选择费用类型" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :disabled="readOnly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :filterable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="onChangeSelectContract" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-option-group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="group in fieldList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :label="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in group.options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="i.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-option-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="7">报销金额</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="contract.totalMoney" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style="width:100%; font-size:12px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="选择报销金额" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :disabled="readOnly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :filterable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="onChangeSelectContract" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-option-group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="group in fieldList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :label="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in group.options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="i.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-option-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="7">是否有借款</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="contract.hasLoan" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style="width:100%; font-size:12px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="选择是否有借款" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :disabled="readOnly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :filterable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="onChangeSelectContract" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-option-group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="group in fieldList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :label="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in group.options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="i.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-option-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="7">情况说明</el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="17"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="contract.memo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size="small" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style="width:100%; font-size:12px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="选择情况说明" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :disabled="readOnly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :filterable="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @change="onChangeSelectContract" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-option-group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="group in fieldList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :label="group.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="i in group.options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="i.label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="i.value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-option-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import DefaultDetail from './DefaultDetail' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import NodeDetail from './NodeDetail' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { templateDetails } from '@/api/process/admin/template' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   inject: ['i18n'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   components: { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -85,6 +231,83 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       type: Array, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       default: () => ([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      fieldList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      contract: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        organName: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeType: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hasLoan: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        totalMoney: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await this.__init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async __init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const templateList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.templates.forEach((item) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        templateList.push(this.getFieldList(item)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Promise.all(templateList).then(values => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.formatTemplateData(values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 反显数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let conditionExpression = this.model.conditionExpression 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        conditionExpression = conditionExpression ? JSON.parse(conditionExpression) : null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (conditionExpression) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.conditionList = conditionExpression 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.onFormatField() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$forceUpdate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onFormatField() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.conditionList.forEach((con, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.fieldType[index] = this.onFormatType(con.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async getFieldList(id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return new Promise(async(resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await templateDetails({ template_id: id }).then(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          resolve(res.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          reject() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formatTemplateData(template) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.fieldList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const templates = template || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const optionList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      templates.forEach(template => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const options = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        options.label = template.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        options.options = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const formStructure = template.form_structure.list || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (formStructure.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          formStructure.forEach(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (item.type != 'subform') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              options.options.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                label: item.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type: item.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                value: item.model, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                options: item.options.options || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        optionList.push(options) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.fieldList = optionList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onChangeSelectContract() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.onChange('contract', JSON.stringify(this.contract)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 |