浏览代码

参数判断

CzRger 3 月之前
父节点
当前提交
916c56e81c

+ 7 - 0
src/components/czr-ui/CzrTable.vue

@@ -627,6 +627,13 @@ onMounted(() => {
                     color: #409eff;
                   }
                 }
+                &.required > .cell:before {
+                  content: '*';
+                  background-color: transparent;
+                  color: var(--czr-error-color);
+                  width: auto;
+                  height: auto;
+                }
               }
               &:first-child {
                 > th {

+ 5 - 4
src/components/czr-ui/CzrTableColumn.vue

@@ -2,6 +2,7 @@
   <slot :name="`${item?.value}-column`" :column="item">
     <el-table-column
       :class-name="`${item?.popover === false ? 'no-popover' : ''}`"
+      :label-class-name="`${item.required ? 'required' : ''}`"
       :show-overflow-tooltip="item?.popover === false ? false : true"
       :label="item?.label"
       :prop="item?.value"
@@ -26,12 +27,12 @@
                 {{
                   scope?.row[item?.value]
                     .split(',')
-                    .map((v) => dictMapCpt.get(v) || v)
+                    .map((v) => dictMapCpt.get(String(v)) || v)
                 }}.join(item.dictSplit)
               </template>
               <template v-else>
                 {{
-                  dictMapCpt.get(scope?.row[item?.value]) ||
+                  dictMapCpt.get(String(scope?.row[item?.value])) ||
                   scope?.row[item?.value]
                 }}</template
               >
@@ -66,11 +67,11 @@ const dictMapCpt = computed(() => {
   const valueKey = props.item?.dictValue || 'value'
   if (props.item?.dictList) {
     props.item.dictList.forEach((v) => {
-      map.set(v[valueKey], v[labelKey])
+      map.set(String(v[valueKey]), v[labelKey])
     })
   } else if (props.item?.dictMap) {
     props.item.dictMap.forEach((v, k) => {
-      map.set(v, k)
+      map.set(String(v), k)
     })
   }
   return map

+ 4 - 0
src/stores/modules/dictionary.ts

@@ -13,6 +13,10 @@ export const useDictionaryStore = defineStore('dictionary', {
       { label: '否', value: 0 },
       { label: '是', value: 1 },
     ],
+    businessModelHaveOrNoList: [
+      { label: '有', value: 1 },
+      { label: '无', value: 0 },
+    ],
   }),
   getters: {},
   actions: {},

文件差异内容过多而无法显示
+ 57 - 29
src/views/form/business-model/index.vue


+ 43 - 39
src/views/form/business-model/test.vue

@@ -1,42 +1,40 @@
 <template>
   <div class="p-4">
-    iframe地址: {{ iframeUrlCpt }}
-    <el-card class="mt-2">
-      <el-button type="primary" @click="onDetail('businessModel1')"
-        >许可范围1</el-button
-      >
-      {{ state.businessModel1.list.length }} 条数据
-      <el-input
-        type="textarea"
-        v-model="state.businessModel1.strs"
-        disabled
-        :rows="4"
-      />
-    </el-card>
-    <el-card class="mt-2">
-      <el-button type="primary" @click="onDetail('businessModel2')"
-        >许可范围2</el-button
-      >
-      {{ state.businessModel2.list.length }} 条数据
-      <el-input
-        type="textarea"
-        v-model="state.businessModel2.strs"
-        disabled
-        :rows="4"
-      />
-    </el-card>
-    <el-card class="mt-2">
-      <el-button type="primary" @click="onDetail('businessModel3')"
-        >许可范围3</el-button
-      >
-      {{ state.businessModel3.list.length }} 条数据
-      <el-input
-        type="textarea"
-        v-model="state.businessModel3.strs"
-        disabled
-        :rows="4"
-      />
-    </el-card>
+    <template
+      v-for="(item, index) in [
+        'businessModel1',
+        'businessModel2',
+        'businessModel3',
+      ]"
+    >
+      <el-card class="mt-2">
+        <div>
+          iframe地址: {{ iframeUrlCpt + '?haveOrNo=' + state[item].haveOrNo }}
+        </div>
+        <div>
+          <el-button type="primary" @click="onDetail(item)"
+            >许可范围 {{ index + 1 }}</el-button
+          >
+          {{ state[item].list.length }} 条数据
+        </div>
+        <div>
+          <CzrFormColumn
+            label="haveOrNo"
+            v-model:param="state[item].haveOrNo"
+            link="radio"
+            :options="DictionaryStore.businessModelHaveOrNoList"
+          />
+        </div>
+        <div>
+          <el-input
+            type="textarea"
+            v-model="state[item].strs"
+            disabled
+            :rows="4"
+          />
+        </div>
+      </el-card>
+    </template>
     <CzrDialog
       :show="state.detail.show"
       title="一级表单的弹窗"
@@ -44,6 +42,7 @@
       height="90%"
       :show-close="false"
       :show-submit="false"
+      @onClose="state.detail.show = false"
     >
       <iframe
         v-if="state.detail.show"
@@ -60,7 +59,9 @@
 <script setup lang="ts">
 import { computed, getCurrentInstance, onMounted, reactive, ref } from 'vue'
 import { ElMessageBox } from 'element-plus'
+import { useDictionaryStore } from '@/stores'
 
+const DictionaryStore = useDictionaryStore()
 const emit = defineEmits([])
 const props = defineProps({})
 const { proxy }: any = getCurrentInstance()
@@ -69,16 +70,19 @@ const state: any = reactive({
     strs: '',
     ids: '',
     list: [],
+    haveOrNo: 1,
   },
   businessModel2: {
     strs: '',
     ids: '',
     list: [],
+    haveOrNo: 0,
   },
   businessModel3: {
     strs: '',
     ids: '',
     list: [],
+    haveOrNo: 0,
   },
   detail: {
     show: false,
@@ -91,7 +95,7 @@ const iframeUrlCpt = computed(
 )
 const onDetail = (key) => {
   state.detail.transfer = {
-    url: iframeUrlCpt.value,
+    url: iframeUrlCpt.value + '?haveOrNo=' + state[key].haveOrNo,
     key: key,
   }
   state.detail.show = true
@@ -103,7 +107,7 @@ const onIframeInit = () => {
         type: 'getFormIframeData',
         data: {
           formItem: '一级表单formItem',
-          wfIds: state[state.detail.transfer.key].ids,
+          wfList: JSON.stringify(state[state.detail.transfer.key].list),
         },
       },
       '*',