实现列表分组展示

416 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 列表根据分组显示,这里目的就是控制样式的设置。

 tempEqbControl: [],
 eqbControl: [
        {
          id: "d5e797be80ce43da9eed3520450c9e2f",
          key: "name1",
          type: 1,
          label: "合同编号",
          required: true,
          limit: null,
        },
        {
          id: "bb465b312cdf44f69c0990d169638ae2",
          key: "mobile1",
          type: 2,
          label: "乙方手机号",
          required: true,
          limit: null,
        },
        {
          id: "fdd668a3f148453ba1045f4b33a82a71",
          key: "",
          type: 3,
          label: "签署日期",
          required: true,
          limit: "yyyy-MM-dd",
        },
        {
          id: "6f0b663179c94d6c9b94635ec906dd6c",
          key: "",
          type: 6,
          label: "签署区",
          required: false,
          limit: null,
        },
        {
          id: "161f399648364a4cb6c77215ede379e2",
          key: "",
          type: 16,
          label: "乙方身份证号",
          required: true,
          limit: null,
        },
        {
          id: "ac98b0096fdd4310ad972a8aa054947b",
          key: "",
          type: 1,
          label: "乙方姓名",
          required: true,
          limit: null,
        },
        {
          id: "2ab1ea5ba8294fcabf0e40a4a67ddebf",
          key: "",
          type: 2,
          label: "合同签订金额消息",
          required: true,
          limit: null,
        },
        {
          id: "a13966bba09048b5b36f4696a4aa9416",
          key: "",
          type: 1,
          label: "签订合同金额大写",
          required: true,
          limit: null,
        },
      ],
      //处理方法
        testDealData() {
      let newArr = [];
      //let num=
      let num = 0;
      this.eqbControl.forEach((item, index) => {
        if (index % 2 == 0) {
          newArr.push({
            num: num,
            list: [item],
          });
        } else if (index % 2 == 1) {
          //console.log(newArr,"newArr")
          newArr[num].list.push(item);
          num = num + 1;
        }
      });
      this.tempEqbControl = newArr;
      //console.log(this.tempEqbControl,"this.tempEqbControl");
    },

vue代码

  <div class="chy-box" v-show="!signingOpenShow">
            <ChyTitle title="填写合同信息"></ChyTitle>
            <div class="chy-box-card">
              <div
                class="chy-box-row"
                v-for="(item, index) in tempEqbControl"
                :key="index"
              >
                <template v-if="item.list.length % 2 == 0">
                  <div
                    class="chy-box-col"
                    v-for="(sonItem, indexSon) in item.list"
                    :key="indexSon"
                  >
                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 3"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-date-picker
                        v-model="sonItem.key"
                        type="date"
                        :placeholder="sonItem.label"
                        style="width: 100%"
                      >
                      </el-date-picker>
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 1"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 2"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 6"
                      :rules="[
                        {
                         required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 8"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>
                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 16"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>
                  </div>
                </template>

                <template v-else>
                  <div
                    class="chy-box-col"
                    v-for="(sonItem, indexSon) in item.list"
                    :key="indexSon"
                  >
                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 3"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-date-picker
                        v-model="sonItem.key"
                        type="date"
                        :placeholder="sonItem.label"
                        style="width: 100%"
                      >
                      </el-date-picker>
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 1"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 2"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 6"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="ssonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>

                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 8"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>
                    <el-form-item
                      :label="sonItem.label"
                      :prop="sonItem.key"
                      v-if="sonItem.type == 16"
                      :rules="[
                        {
                          required:sonItem.required,
                          message: sonItem.label + '不能为空',
                          trigger: 'blur',
                        },
                      ]"
                    >
                      <el-input
                        v-model="sonItem.key"
                        :placeholder="sonItem.label"
                        :disabled="signingDisabled"
                      />
                    </el-form-item>
                  </div>
                  <div class="chy-box-col"></div>
                </template>
              </div>

              <!-- <div class="chy-box-row">
                <div class="chy-box-col">
                  <el-form-item label="日期" prop="signingTime">
                    <el-date-picker
                      v-model="signingForm.signingTime"
                      type="date"
                      placeholder="日期"
                      style="width:100%;"
                    >
                    </el-date-picker>
                  </el-form-item>
                </div>
                <div class="chy-box-col">
                  <el-form-item label="授权区域" prop="region">
                    <el-input
                      v-model="signingForm.region"
                      placeholder="授权区域"
                    />
                  </el-form-item>
                </div>
              </div>
              <div class="chy-box-row">
                <div class="chy-box-col">
                  <el-form-item label="总金额" prop="Amount">
                    <el-input
                      v-model="signingForm.Amount"
                      placeholder="总金额"
                    />
                  </el-form-item>
                </div>
                <div class="chy-box-col">
                  <el-form-item label="大写总金额" prop="bigAmount">
                    <el-input
                      v-model="signingForm.bigAmount"
                      placeholder="大写总金额"
                    />
                  </el-form-item>
                </div>
              </div> -->
            </div>
          </div>

实现效果

image.png

通过这个就可以处理很多类似的列表分组展示。比如根据日期,展示列表信息。 所以很有代表行,做了这个总结。