8
0
duy 5 ماه پیش
والد
کامیت
b0dfb837a8

+ 8 - 0
src/api/modules/paramter/parmter.js

@@ -84,4 +84,12 @@ export default {
             params,
         })
     },
+    
+    async checkParamElement(params) {
+        return HcApi({
+            url: '/api/blade-manager/exceltab/checkParamElement',
+            method: 'get',
+            params,
+        })
+    },
 }

+ 15 - 4
src/views/project/list/adjust-excel.vue

@@ -40,7 +40,8 @@
                 <HcSetFormula
                     v-if="tabsKey === 'tab3'"
                     ref="setFormulaRef"
-                    :info="dataInfo"
+                    :info="projectInfo"
+                    :excel-info="dataInfo"
                     @finish="getDataApi"
                 />
                 <HcSetDefault
@@ -82,6 +83,11 @@ const props = defineProps({
         type: [String, Number],
         default: '', //默认没有,独立表单库类型为2
     },
+    projectInfo:{
+        type: Object,
+        default: () => ({}),
+    },
+    
 })
 //事件
 const emit = defineEmits(['close'])
@@ -93,13 +99,15 @@ const isShow = defineModel('modelValue', {
 
 //监听数据
 const dataInfo = ref(props.info)
+const projectInfo = ref(props.projectInfo)
 const type = ref(props.type)
 watch(
-    () => [props.info, props.type],
-    ([data, tpe]) => {
+    () => [props.info, props.type, props.projectInfo],
+    ([data, tpe, pro]) => {
         dataInfo.value = getObjValue(data)
 
         type.value = tpe
+        projectInfo.value = pro
     },
     { immediate: true, deep: true },
 )
@@ -118,7 +126,7 @@ const tabsKey = ref('tab1')
 const tabsProps = [
     { label: '输入框', value: 'tab1' },
     { label: '电签位置', value: 'tab2' },
-    { label: '公式条件', value: 'tab3' },
+    { label: '参数设置', value: 'tab3' },
     { label: '默认信息', value: 'tab4' },
     { label: '提示信息', value: 'tab5' },
 ]
@@ -196,6 +204,9 @@ const excelClick = async (item) => {
     } else if (tabsKey.value === 'tab2') {
         //电签
         setEVisaRef.value?.setDomData(obj)
+    } else if (tabsKey.value === 'tab3') {
+        //电签
+        setFormulaRef.value?.setDomData(obj)
     } else if (tabsKey.value === 'tab4') {
         //默认信息
         setDefaultRef.value?.setDomData(obj)

+ 109 - 23
src/views/project/list/adjust-excel/set-formula.vue

@@ -1,38 +1,48 @@
 <template>
     <div class="hc-project-list-adjust-excel-set-formula">
-        <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="left" label-width="auto">
-            <el-form-item label="不知道是什么:" prop="key1">
-                <el-select v-model="formModel.key1" filterable block placeholder="请选择">
-                    <el-option label="功能还没开发" :value="1" />
-                    <el-option label="不清楚是什么" :value="2" />
-                </el-select>
-            </el-form-item>
-            <el-form-item label="不知道是什么:" prop="key2">
-                <el-input v-model="formModel.key2" placeholder="不知道是什么" />
+        <el-form ref="formRef" :model="formModel" label-position="left" label-width="auto">
+            <el-form-item label="元素坐标:" prop="elementName">
+                <el-input v-model="formModel.elementName" placeholder="请点击左侧表单" />
             </el-form-item>
-            <el-form-item label="默认开放:" prop="key3">
-                <el-switch v-model="formModel.key3" />
-            </el-form-item>
-            <el-form-item label="VIP开放:" prop="key4">
-                <el-switch v-model="formModel.key4" />
+            <el-form-item label=" 参数名称:" prop="parameterId">
+                <el-select v-model="formModel.parameterId" filterable block placeholder="请选择">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.id"
+                        :label="item.paramName"
+                        :value="item.id"
+                    />
+                </el-select>
             </el-form-item>
         </el-form>
         <div class="action-btn-box mt-10px text-center">
             <el-button type="primary" :loading="submitLoading" @click="dialogSubmit">保存设置</el-button>
         </div>
+        <!-- 新增表格 -->
+        <hc-table
+            :datas="tableData"
+            :column="tableColumn"
+            align="center"
+            class="mt-20"
+            :loading="tableLoading"
+        />
     </div>
 </template>
 
 <script setup>
 import { onMounted, ref, watch } from 'vue'
-import { getObjValue } from 'js-fast-way'
-//import mainApi from '~api/project/tree'
+import { getArrValue, getObjValue } from 'js-fast-way'
+import paramApi from '~api/paramter/parmter'
 
 const props = defineProps({
     info: {
         type: Object,
         default: () => ({}),
     },
+    excelInfo:{
+        type: Object,
+        default: () => ({}),
+    },
 })
 
 //事件
@@ -40,29 +50,105 @@ const emit = defineEmits(['finish'])
 
 //监听数据
 const dataInfo = ref(props.info)
-watch(() => props.info, (data) => {
-    dataInfo.value = getObjValue(data)
+const excelInfo = ref(props.excelInfo)
+watch([() => props.info, () => props.excelInfo], ([newInfo, newExcelInfo]) => {
+    dataInfo.value = getObjValue(newInfo)
+    excelInfo.value = getObjValue(newExcelInfo)
 }, { deep: true })
 
 //渲染完成
 onMounted(() => {
     formModel.value = {}
+    getOptions()
+    getTableData()
 })
 
 //基础表单
 const formRef = ref(null)
 const formModel = ref({})
-const formRules = {
-    type: { required: true, trigger: 'change', message: '请选择证书类型' },
-    roleType: { required: true, trigger: 'change', message: '请选择所属方' },
-}
 
+const tableData = ref([])
+const tableColumn = ref([
+    { key: 'elementName', name: '元素位置' },
+    { key: 'parameterName', name: '参数名称' },
+])
+const tableLoading = ref(false)
+const getTableData = async () => {
+
+    const { pkeyId } = getObjValue(
+        excelInfo.value,
+    )
+    
+    tableLoading.value = true
+    const { data, code, error } = await paramApi.checkParamElement({
+        pkeyId:pkeyId,
+      })
+      tableLoading.value = false
+      if (code === 200 && !error) {
+        tableData.value = getArrValue(data?.list)
+      } else {
+        tableData.value = []
+       
+      }
+    }
+
+
+
+
+//设置dom数据
+const setDomData = (item) => {
+    formModel.value.elementName = item.text
+}
 //提交
 const submitLoading = ref(false)
 const dialogSubmit = async () => {
-    window.$message.warning('此功能还没开发哦~')
+          // 检查关键字段是否存在
+          if (!formModel.value?.elementName || !formModel.value?.parameterId) {
+           window.$message.warning('缺少必要的数据字段')
+            return
+          }
+         
+          let type = ''
+          options.value.forEach(item => {
+            if (item.id === formModel.value.parameterId) {
+              type = item.type
+            }
+          })
+          // 检查 name 是否已存在于 tableData 中
+          const isKeynameExists = tableData.value.some(item => item.elementName === name)
+          if (isKeynameExists) {
+            window.$message.warning('已存在相同的关键字段,请勿重复添加')
+            return
+          }
+          let subObj = {
+             parameterId: formModel.value.parameterId,
+             type:type,
+             elementName:formModel.value.elementName,
+             projectList:[{ projectId:dataInfo.value.id }],
+          }
+    const { code, error, msg } = await paramApi.submitElement([subObj])
+    if (code === 200) {
+        window.$message.success(msg)
+        getTableData()
+    }
+
     //emit('finish')
 }
+const options = ref([])
+const getOptions = async () => {
+     const { data, code, error } = await paramApi.queryParameterList({
+            current: 1,
+            size: 1000,
+        })
+        if (!error && code === 200) {
+            options.value = data.records
+        } else {
+            options.value = []
+        }
+    }
+    defineExpose({
+    setDomData,
+})
 </script>
 
 <style scoped lang="scss">

+ 1 - 1
src/views/project/list/wbs-tree.vue

@@ -147,7 +147,7 @@
         <!-- 编辑元素 -->
         <HcEditElement v-model="isEditElementShow" :data="editElementData" :info="editElementInfo" @to-page="editElementToPage" />
         <!-- 调整表单 -->
-        <HcAdjustExcel v-model="isAdjustExcelShow" :info="adjustExcelInfo" />
+        <HcAdjustExcel v-model="isAdjustExcelShow" :info="adjustExcelInfo" :project-info="projectInfo" />
         <!-- 编辑元素公式 -->
         <hc-dialog v-model="elementFormulasShow" :footer="false" :title="elementFormulasName" is-table widths="600px" @close="elementFormulasClose">
             <template #search>