zmc
2023-12-21 635e1b3c0d48c2db884794cb8bc26d6ff1591ffa
1.增加行政处罚的数据展示
2.增加信访的数据展示
已修改3个文件
已添加10个文件
932 ■■■■■ 文件已修改
src/api/fytz/lettersAndVisitsApi.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/fytz/punishmentApi.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components.d.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/composables/drawer.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/UserEdit.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompBaseInfo.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompComplaint.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompComplaintDrawer.vue 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompComplaintList.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompPanyInfo.vue 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompPunishment.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompPunishmentDrawer.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fytz/user/components/CompPunishmentList.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/fytz/lettersAndVisitsApi.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import { $fytz } from '../index';
export default {
  /**
   * èŽ·å–ç”¨æˆ·çš„ä¿¡è®¿ä¿¡æ¯
   * @param {String} userId
   * @returns
   */
  fetchLetterAndVisit(userId) {
    return $fytz.get(`complaint?userId=${userId}`);
  }
};
src/api/fytz/punishmentApi.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import { $fytz } from '../index';
export default {
  /**
   * èŽ·å–ç”¨æˆ·çš„è¡Œæ”¿å¤„ç½šä¿¡æ¯
   * @param {String} userId
   * @returns
   */
  fetchPunishment(userId) {
    return $fytz.get(`complaint/punishment?userId=${userId}`);
  }
};
src/components.d.ts
@@ -21,6 +21,7 @@
    ElCol: typeof import('element-plus/es')['ElCol']
    ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
    ElContainer: typeof import('element-plus/es')['ElContainer']
    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
    ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
    ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
    ElDivider: typeof import('element-plus/es')['ElDivider']
@@ -32,11 +33,13 @@
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElImage: typeof import('element-plus/es')['ElImage']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
    ElMain: typeof import('element-plus/es')['ElMain']
    ElMenu: typeof import('element-plus/es')['ElMenu']
    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
    ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
    ElOption: typeof import('element-plus/es')['ElOption']
    ElOrmItem: typeof import('element-plus/es')['ElOrmItem']
    ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
    ElPagination: typeof import('element-plus/es')['ElPagination']
    ElPopover: typeof import('element-plus/es')['ElPopover']
@@ -53,7 +56,9 @@
    ElTabPane: typeof import('element-plus/es')['ElTabPane']
    ElTabs: typeof import('element-plus/es')['ElTabs']
    ElTag: typeof import('element-plus/es')['ElTag']
    ElText: typeof import('element-plus/es')['ElText']
    ElTooltip: typeof import('element-plus/es')['ElTooltip']
    ElTransfer: typeof import('element-plus/es')['ElTransfer']
    ElTree: typeof import('element-plus/es')['ElTree']
    Footer: typeof import('./components/core/Footer.vue')['default']
    FormCol: typeof import('./components/layout/FormCol.vue')['default']
src/composables/drawer.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import { ref } from 'vue';
export function useDrawer() {
  const drawer = ref(true);
  function openDrawer() {
    drawer.value = true;
  }
  function closeDrawer() {
    drawer.value = false;
  }
  return { drawer ,openDrawer,closeDrawer};
}
src/views/fytz/user/UserEdit.vue
@@ -15,12 +15,12 @@
      <div class="sub-title">用户信息表</div>
      <FormCol>
        <!-- <CompUserInfos :form-info="formUserInfos" /> -->
        <CompBaseInfo :form-info="formUserInfos"/>
        <CompBaseInfo :form-info="formUserInfos" />
      </FormCol>
      <el-divider />
      <div class="sub-title">企业信息</div>
      <FormCol>
        <!-- <CompPanyInfo :form-info="formVehicleBaseInfo" /> -->
        <CompPanyInfo :form-info="formPanyInfo" />
      </FormCol>
      <!-- <template v-if="formAnyInfo.typeid == 1">
        <div class="sub-title">油烟净化装置</div>
@@ -52,9 +52,7 @@
        </el-col>
        <el-col :span="6">
          <el-row justify="end" align="middle" style="height: 80px">
            <el-button type="success" @click="drawer = true"
              >新增设备</el-button
            >
            <el-button type="success" @click="drawer = true">新增设备</el-button>
          </el-row>
        </el-col>
      </el-row>
@@ -74,14 +72,14 @@
    <el-tab-pane label="行政处罚" name="fourth">
      <div class="sub-title">行政处罚表</div>
      <FormCol>
        <!-- <CompPunishment :form-info="formProblem" /> -->
        <CompPunishment :table-info="formPunishment" />
      </FormCol>
    </el-tab-pane>
    <el-tab-pane label="信访投诉" name="fifth">
      <div class="sub-title">信访投诉</div>
      <FormCol>
        <!-- <CompLaint :form-info="formLaint" /> -->
        <CompComplaint :table-info="formComplaint" />
      </FormCol>
    </el-tab-pane>
@@ -98,9 +96,15 @@
<script>
import userApi from '@/api/fytz/userApi';
import punishmentApi from '@/api/fytz/punishmentApi';
import lettersAndVisitsApi from '@/api/fytz/lettersAndVisitsApi';
// import ComBaseInformation from '@/views/baseinfo/fytz/scene/ComBaseInformation.vue';
import CompUserInfo from './components/CompUserInfo.vue';
import CompBaseInfo from './components/CompBaseInfo.vue';
import CompPanyInfo from './components/CompPanyInfo.vue';
import CompPunishment from './components/CompPunishment.vue';
import CompComplaint from './components/CompComplaint.vue';
// import CompLaint from '@/views/baseinfo/fytz/scene/CompLaint.vue';
// import CompDeviceInfo from "@/views/baseinfo/fytz/scene/CompDeviceInfo.vue";
// import CompPanyInfo from '@/views/baseinfo/fytz/scene/CompPanyInfo.vue';
@@ -119,6 +123,9 @@
    // CompLaint,
    CompUserInfo,
    CompBaseInfo,
    CompPanyInfo,
    CompPunishment,
    CompComplaint
    // CompDeviceInfo,
    // CompPanyInfo,
    // CompFumePurifyDevice,
@@ -135,34 +142,45 @@
      drawer: false,
      formUser: {},
      // formSubScene: {},
      formLaint: {},
      formComplaint: [],
      // formDevice: {},
      formPanyInfo: {},
      formFumePurifyDevice: {},
      formHazardousWasteFile: {},
      formHazardousWasteRecord: {},
      formProblem: {},
      formPunishment: {},
      formPunishment: [],
      formRestaurantBaseInfo: {},
      formVehicleBaseInfo: {},
      formUserInfos: {},
      activeName: 'first',
      scroll: '',
      scroll: ''
    };
  },
  beforeRouteEnter(to, from, next) {
    userApi.fetchUserBaseInfo(to.params.userId).then((res) => {
      next((vm) => {
        if (res.userInfo) {
          vm.formUser = res.userInfo;
        } else {
          vm.formUser = {
            guid: to.params.userId,
          };
        }
        if(res.baseInfo){
          vm.formUserInfos = res.baseInfo
        }
      punishmentApi.fetchPunishment(to.params.userId).then((punish) => {
        lettersAndVisitsApi.fetchLetterAndVisit(to.params.userId).then((letterAndVisit) => {
          next((vm) => {
            if (res.userInfo) {
              vm.formUser = res.userInfo;
            } else {
              vm.formUser = {
                guid: to.params.userId
              };
            }
            if (res.baseInfo) {
              vm.formUserInfos = res.baseInfo;
            }
            if (res.company) {
              vm.formPanyInfo = res.company;
            }
            vm.formPunishment = punish;
            vm.formComplaint = letterAndVisit;
          });
        });
      });
    });
  },
@@ -173,8 +191,8 @@
    // å›žé€€é¡µé¢
    onBack() {
      this.$router.back();
    },
  },
    }
  }
};
</script>
<style scoped>
src/views/fytz/user/components/CompBaseInfo.vue
@@ -95,20 +95,20 @@
          }
        ]
      }
    }
    };
  },
  watch: {
    formInfo(nValue) {
      this._formInfo = this.parseUserInfo(nValue)
      this._formInfo = this.parseBaseInfo(nValue);
    },
    _edit(nValue) {
      this.$emit('update:isEdit', nValue)
      this.$emit('update:isEdit', nValue);
    }
  },
  mounted() {},
  methods: {
    // ç”¨æˆ·åŸºæœ¬ä¿¡æ¯æ ¼å¼åŒ–
    parseUserInfo(s) {
    parseBaseInfo(s) {
      s._locations = {
        pCode: s.biProvinceCode,
        pName: s.biProvinceName,
@@ -118,50 +118,46 @@
        dName: s.biDistrictName,
        tCode: s.biTownCode,
        tName: s.biTownName
      }
      return s
      };
      return s;
    },
    // åˆ›å»ºæ–°åœºæ™¯
    createBaseInfo(formObj, func) {
    },
    createBaseInfo(formObj, func) {},
    // æ›´æ–°åœºæ™¯
    updateBaseInfo(formObj, func) {
    },
    updateBaseInfo(formObj, func) {},
    submit(formObj, func) {
      // è¡Œæ”¿åŒºåˆ’信息填充
      const a = formObj.value._locations
      const a = formObj.value._locations;
      if ('pCode' in a) {
        formObj.value.biProvinceCode = a.pCode
        formObj.value.biProvinceCode = a.pCode;
      }
      if ('pName' in a) {
        formObj.value.biProvinceName = a.pName
        formObj.value.biProvinceName = a.pName;
      }
      if ('cCode' in a) {
        formObj.value.biCityCode = a.cCode
        formObj.value.biCityCode = a.cCode;
      }
      if ('cName' in a) {
        formObj.value.biCityName = a.cName
        formObj.value.biCityName = a.cName;
      }
      if ('dCode' in a) {
        formObj.value.biDistrictCode = a.dCode
        formObj.value.biDistrictCode = a.dCode;
      }
      if ('dName' in a) {
        formObj.value.biDistrictName = a.dName
        formObj.value.biDistrictName = a.dName;
      }
      if ('tCode' in a) {
        formObj.value.biTownCode = a.tCode
        formObj.value.biTownCode = a.tCode;
      }
      if ('tName' in a) {
        formObj.value.biTownName = a.tName
        formObj.value.biTownName = a.tName;
      }
      return this.create ? this.createBaseInfo(formObj, func) : this.updateBaseInfo(formObj, func)
      return this.create ? this.createBaseInfo(formObj, func) : this.updateBaseInfo(formObj, func);
    },
    cancel() {
      this.$emit('onCancel')
      this.$emit('onCancel');
    }
  }
}
};
</script>
src/views/fytz/user/components/CompComplaint.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
<template>
  <CompComplaintList :table-data="tableInfo" @newly-add="add" @look="look"></CompComplaintList>
  <CompComplaintDrawer v-model="drawer" :form-info="formInfo"></CompComplaintDrawer>
</template>
<script>
import CompComplaintList from './CompComplaintList.vue';
import CompComplaintDrawer from './CompComplaintDrawer.vue';
import dayjs from 'dayjs';
import { useDrawer } from '@/composables/drawer.js';
export default {
  props: {
    //基本信息
    tableInfo: {
      type: Array,
      default() {
        return [];
      }
    },
    isEdit: Boolean,
    create: {
      type: Boolean,
      default: false
    },
    active: {
      type: Boolean,
      default: false
    }
  },
  components: {
    CompComplaintList,
    CompComplaintDrawer
  },
  data() {
    return {
      formInfo: null,
      drawer: false
    };
  },
  setup() {
    const { drawer, openDrawer, closeDrawer } = useDrawer();
    return { drawer, openDrawer, closeDrawer };
  },
  watch: {},
  mounted() {},
  methods: {
    timeFormatter(row, column, cellValue) {
      return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
    },
    /**
     * æ–°å¢žæŒ‰é’®
     * @param:
     * @returns:
     */
    add() {
      this.formInfo = {};
      this.openDrawer();
    },
    /**
     * æŸ¥çœ‹æŒ‰é’®
     * @param:
     * @returns:
     */
    look(value) {
      this.formInfo = value;
      this.openDrawer();
    }
  }
};
</script>
<style scoped></style>
src/views/fytz/user/components/CompComplaintDrawer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
<template>
  <el-drawer v-model="drawer_" title="新增" direction="rtl">
    <FYForm
      :form-info="_formInfo"
      :rules="rules"
      :reset="active"
      :useReset="true"
      v-model:is-edit="_edit"
      @submit="submit"
      @cancel="cancel"
    >
      <template #form-item="{ formObj }">
        <el-form-item label="店铺名称" prop="cpName">
          <el-input clearable v-model="formObj.cpName" placeholder="店铺名称" />
        </el-form-item>
        <el-form-item label="时间" prop="cpTime">
          <el-date-picker v-model="formObj.cpTime" type="datetime" placeholder="时间" />
        </el-form-item>
        <el-form-item label="原因">
          <el-input clearable v-model="formObj.cpReason" placeholder="原因" />
        </el-form-item>
        <el-form-item label="呼吁" prop="cpAppeal">
          <el-input clearable v-model="formObj.cpAppeal" placeholder="结果" />
        </el-form-item>
        <el-form-item label="来源" prop="cpSource">
          <el-input clearable v-model="formObj.cpSource" placeholder="来源" />
        </el-form-item>
        <el-form-item label="cpSceneid">
          <el-input clearable v-model="formObj.cpSceneid" placeholder="cpSceneid" />
        </el-form-item>
        <el-form-item label="cpMediateTime">
          <el-date-picker
            v-model="formObj.cpMediateTime"
            type="datetime"
            placeholder="cpMediateTime"
          />
        </el-form-item>
        <el-form-item label="调解单位">
          <el-input clearable v-model="formObj.cpMediateUnit" placeholder="调解单位" />
        </el-form-item>
        <el-form-item label="调节结果">
          <el-input clearable v-model="formObj.cpMediateResult" placeholder="调节结果" />
        </el-form-item>
        <el-form-item label="cpExtension1">
          <el-input clearable v-model="formObj.cpExtension1" placeholder="cpExtension1" />
        </el-form-item>
        <el-form-item label="cpExtension2">
          <el-input clearable v-model="formObj.cpExtension2" placeholder="cpExtension2" />
        </el-form-item>
        <el-form-item label="cpExtension3">
          <el-input clearable v-model="formObj.cpExtension3" placeholder="cpExtension3" />
        </el-form-item>
        <el-form-item label="cpRemark">
          <el-input clearable v-model="formObj.cpRemark" placeholder="cpRemark" />
        </el-form-item>
      </template>
    </FYForm>
  </el-drawer>
</template>
<script>
export default {
  props: {
    //基本信息
    formInfo: Object,
    drawer: {
      type: Boolean,
      default: false
    }
  },
  emits: ['update:drawer'],
  data() {
    return {
      _drawerData: null,
      drawer_: false,
      _formInfo: null
    };
  },
  watch: {
    formInfo(nValue) {
      this._formInfo = nValue;
    },
    drawer(nValue) {
      this.drawer_ = nValue;
    }
  },
  mounted() {},
  methods: {
    // åˆ›å»ºæ–°åœºæ™¯
    createBaseInfo(formObj, func) {},
    // æ›´æ–°åœºæ™¯
    updateBaseInfo(formObj, func) {},
    submit(formObj, func) {
      return this.create ? this.createBaseInfo(formObj, func) : this.updateBaseInfo(formObj, func);
    },
    cancel() {
      this.$emit('onCancel');
    }
  }
};
</script>
<style scoped></style>
src/views/fytz/user/components/CompComplaintList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<template>
  <FYTable @search="onSearch" ref="tableRef">
    <template #table-column>
      <el-table-column prop="cpName" label="店铺名称" width="90px" />
      <el-table-column prop="cpTime" label="时间" :formatter="timeFormatter" width="145px" />
      <el-table-column prop="cpReason" label="原因" show-overflow-tooltip width="245px" />
      <el-table-column prop="cpAppeal" label="呼吁" show-overflow-tooltip width="345px" />
      <el-table-column prop="cpSource" label="来源" width="100px" />
      <el-table-column prop="cpSceneid" label="cpSceneid" width="150px" />
      <el-table-column
        prop="cpMediateTime"
        label="cpMediateTime"
        :formatter="timeFormatter"
        width="145px"
      />
      <el-table-column prop="cpMediateUnit" label="调解单位" width="140px" />
      <el-table-column prop="cpMediateResult" label="调节结果" width="100px" />
      <el-table-column prop="cpExtension1" label="cpExtension1" width="120px" />
      <el-table-column prop="cpExtension2" label="cpExtension2" width="120px" />
      <el-table-column prop="cpExtension3" label="cpExtension3" width="120px" />
      <el-table-column prop="cpRemark" label="cpRemark" />
      <el-table-column fixed="right" align="right" label="操作" width="160">
        <template #header>
          <el-button icon="DocumentAdd" size="default" type="success" @click="add">新增</el-button>
        </template>
        <template #default="scope">
          <el-button type="primary" size="small" @click="look(scope)">查看</el-button>
        </template>
      </el-table-column>
    </template>
  </FYTable>
</template>
<script>
import dayjs from 'dayjs';
import { useDrawer } from '@/composables/drawer.js';
export default {
  props: {
    tableData: {
      type: Array,
      default() {
        return [];
      }
    }
  },
  emits: ['newlyAdd', 'look'],
  data() {
    return {};
  },
  setup() {
    const { drawer, openDrawer, closeDrawer } = useDrawer();
    return { drawer, openDrawer, closeDrawer };
  },
  mounted() {
    this.search();
  },
  methods: {
    onSearch(page, func) {
      func({
        data: this.tableData,
        total: this.tableData.length
      });
    },
    search() {
      this.$nextTick(() => {
        this.$refs.tableRef.onSearch();
      });
    },
    timeFormatter(row, column, cellValue) {
      return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
    },
    add() {
      this.$emit('newlyAdd');
    },
    look(scope) {
      this.$emit('look', scope.row);
    }
  }
};
</script>
<style scoped></style>
src/views/fytz/user/components/CompPanyInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,262 @@
<template>
  <FYForm
    :form-info="_formInfo"
    :rules="rules"
    :reset="active"
    :useReset="true"
    v-model:is-edit="_edit"
    @submit="submit"
    @cancel="cancel"
  >
    <template #form-item="{ formObj }">
      <el-form-item label="企业名" prop="ciName">
        <el-input clearable v-model="formObj.ciName" placeholder="企业名" />
      </el-form-item>
      <el-form-item label="主要业务" prop="ciMainBusiness">
        <el-input clearable v-model="formObj.ciMainBusiness" placeholder="主要业务" />
      </el-form-item>
      <el-form-item label="地址" prop="ciAddress">
        <el-input clearable v-model="formObj.ciAddress" placeholder="地址" />
      </el-form-item>
      <el-form-item label="社会信用代码" prop="ciOrgCode">
        <el-input clearable v-model="formObj.ciOrgCode" placeholder="社会信用代码" />
      </el-form-item>
      <el-form-item label="法人" prop="ciJuridicalPerson">
        <el-input clearable v-model="formObj.ciJuridicalPerson" placeholder="法人" />
      </el-form-item>
      <el-form-item label="公司成立日期" prop="ciBuildDate">
        <el-date-picker v-model="formObj.ciBuildDate" type="datetime" placeholder="公司成立日期" />
      </el-form-item>
      <el-form-item label="联系人" prop="ciContactName">
        <el-input clearable v-model="formObj.ciContactName" placeholder="联系人" />
      </el-form-item>
      <el-form-item label="联系电话" prop="ciTelephone">
        <el-input clearable v-model="formObj.ciTelephone" placeholder="联系电话" />
      </el-form-item>
      <el-form-item label="是否认证" prop="authentication">
        <el-switch v-model="formObj.authentication" />
        <span style="margin-left: 16px">{{ formObj.authentication ? '已认证' : '未认证' }}</span>
      </el-form-item>
      <FYOptionLocation
        :allOption="true"
        :level="4"
        :initValue="false"
        v-model:value="formObj._locations"
      ></FYOptionLocation>
      <el-form-item label="联系人微信" prop="ciContactsWx">
        <el-input clearable v-model="formObj.ciContactsWx" placeholder="联系人微信" />
      </el-form-item>
      <el-form-item label="ciEiaApprovalDate" prop="ciEiaApprovalDate">
        <el-input clearable v-model="formObj.ciEiaApprovalDate" placeholder="ciEiaApprovalDate" />
      </el-form-item>
      <el-form-item label="邮箱" prop="ciEmail">
        <el-input clearable v-model="formObj.ciEmail" placeholder="邮箱" />
      </el-form-item>
      <el-form-item label="ciExpansionDate" prop="ciExpansionDate">
        <el-input
          clearable
          v-model="formObj.ciExpansionDate"
          placeholder="ciExpansionDate"
        /> </el-form-item
      ><el-form-item label="ciExtension1" prop="ciExtension1">
        <el-input
          clearable
          v-model="formObj.ciExtension1"
          placeholder="ciExtension1"
        /> </el-form-item
      ><el-form-item label="ciExtension2" prop="ciExtension2">
        <el-input clearable v-model="formObj.ciExtension2" placeholder="ciExtension2" />
      </el-form-item>
      <el-form-item label="传真" prop="ciFax">
        <el-input clearable v-model="formObj.ciFax" placeholder="传真" />
      </el-form-item>
      <el-form-item label="ciIndClassification" prop="ciIndClassification">
        <el-input
          clearable
          v-model="formObj.ciIndClassification"
          placeholder="ciIndClassification"
        />
      </el-form-item>
      <el-form-item label="ciIndDistrict" prop="ciIndDistrict">
        <el-input clearable v-model="formObj.ciIndDistrict" placeholder="ciIndDistrict" />
      </el-form-item>
      <el-form-item label="ciIndustryCode" prop="ciIndustryCode">
        <el-input clearable v-model="formObj.ciIndustryCode" placeholder="ciIndustryCode" />
      </el-form-item>
      <el-form-item label="维度" prop="ciLatitude">
        <el-input clearable v-model="formObj.ciLatitude" placeholder="维度" />
      </el-form-item>
      <el-form-item label="经度" prop="ciLongitude">
        <el-input clearable v-model="formObj.ciLongitude" placeholder="经度" />
      </el-form-item>
      <el-form-item label="ciMemberGroup" prop="ciMemberGroup">
        <el-input clearable v-model="formObj.ciMemberGroup" placeholder="ciMemberGroup" />
      </el-form-item>
      <el-form-item label="ciPltPermitCode" prop="ciPltPermitCode">
        <el-input clearable v-model="formObj.ciPltPermitCode" placeholder="ciPltPermitCode" />
      </el-form-item>
      <el-form-item label="ciPostalCode" prop="ciPostalCode">
        <el-input clearable v-model="formObj.ciPostalCode" placeholder="ciPostalCode" />
      </el-form-item>
      <el-form-item label="注册资本" prop="ciRegisteredCapital">
        <el-input clearable v-model="formObj.ciRegisteredCapital" placeholder="注册资本" />
      </el-form-item>
      <el-form-item label="注册类型" prop="ciRegistrationType">
        <el-input clearable v-model="formObj.ciRegistrationType" placeholder="注册类型" />
      </el-form-item>
      <el-form-item label="ciRemark" prop="ciRemark">
        <el-input clearable v-model="formObj.ciRemark" placeholder="ciRemark" />
      </el-form-item>
      <el-form-item label="ciScale" prop="ciScale">
        <el-input clearable v-model="formObj.ciScale" placeholder="ciScale" />
      </el-form-item>
      <el-form-item label="ciTradingFiles" prop="ciTradingFiles">
        <el-input clearable v-model="formObj.ciTradingFiles" placeholder="ciTradingFiles" />
      </el-form-item>
      <el-form-item label="员工数量" prop="ciWorkersNumber">
        <el-input clearable v-model="formObj.ciWorkersNumber" placeholder="员工数量" />
      </el-form-item>
    </template>
  </FYForm>
</template>
<script>
export default {
  props: {
    //基本信息
    formInfo: Object,
    isEdit: Boolean,
    create: {
      type: Boolean,
      default: false
    },
    active: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      _formInfo: null,
      _edit: false,
      rules: {
        ciName: [
          {
            required: true,
            message: '企业名不能为空',
            trigger: 'blur'
          }
        ],
        ciJuridicalPerson: [
          {
            required: true,
            message: '法人不能为空',
            trigger: 'blur'
          }
        ],
        ciAddress: [
          {
            required: true,
            message: '地址不能为空',
            trigger: 'blur'
          }
        ],
        ciOrgCode: [
          {
            required: true,
            message: '社会信用代码不能为空',
            trigger: 'blur'
          }
        ],
        ciContactName: [
          {
            required: true,
            message: '联系人不能为空',
            trigger: 'blur'
          }
        ],
        ciTelephone: [
          {
            required: true,
            message: '联系电话不能为空',
            trigger: 'blur'
          }
        ]
      }
    };
  },
  watch: {
    formInfo(nValue) {
      this._formInfo = this.parsePanyInfo(nValue);
    },
    _edit(nValue) {
      this.$emit('update:isEdit', nValue);
    }
  },
  mounted() {},
  methods: {
    // ç”¨æˆ·åŸºæœ¬ä¿¡æ¯æ ¼å¼åŒ–
    parsePanyInfo(s) {
      // è¡Œæ”¿åŒºåˆ’信息
      s._locations = {
        pCode: s.ciProvinceCode,
        pName: s.ciProvinceName,
        cCode: s.ciCityCode,
        cName: s.ciCityName,
        dCode: s.ciDistrictCode,
        dName: s.ciDistrictName,
        tCode: s.ciTownCode,
        tName: s.ciTownName
      };
      //   è®¤è¯ä¿¡æ¯
      s.authentication = s.ciExtension3 == 'authenticated';
      return s;
    },
    // åˆ›å»ºæ–°åœºæ™¯
    createPanyInfo(formObj, func) {},
    // æ›´æ–°åœºæ™¯
    updatePanyInfo(formObj, func) {},
    submit(formObj, func) {
      const a = formObj.value._locations;
      if ('pCode' in a) {
        formObj.value.ciProvinceCode = a.pCode;
      }
      if ('pName' in a) {
        formObj.value.ciProvinceName = a.pName;
      }
      if ('cCode' in a) {
        formObj.value.ciCityCode = a.cCode;
      }
      if ('cName' in a) {
        formObj.value.ciCityName = a.cName;
      }
      if ('dCode' in a) {
        formObj.value.ciDistrictCode = a.dCode;
      }
      if ('dName' in a) {
        formObj.value.ciDistrictName = a.dName;
      }
      if ('tCode' in a) {
        formObj.value.ciTownCode = a.tCode;
      }
      if ('tName' in a) {
        formObj.value.ciTownName = a.tName;
      }
      // æ˜¯å¦è®¤è¯ä¿¡æ¯å¡«å……
      formObj.value.authentication
        ? (formObj.value.ciExtension3 = 'authenticated')
        : (formObj.value.ciExtension3 = 'unAuthenticated');
      return this.create ? this.createPanyInfo(formObj, func) : this.updatePanyInfo(formObj, func);
    },
    cancel() {
      this.$emit('onCancel');
    }
  }
};
</script>
src/views/fytz/user/components/CompPunishment.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<template>
  <CompPunishmentList :table-data="tableInfo" @newly-add="add" @look="look"></CompPunishmentList>
  <CompPunishmentDrawer v-model="drawer" :form-info="formInfo"></CompPunishmentDrawer>
</template>
<script>
import CompPunishmentList from './CompPunishmentList.vue';
import CompPunishmentDrawer from './CompPunishmentDrawer.vue';
import dayjs from 'dayjs';
import { useDrawer } from '@/composables/drawer.js';
export default {
  props: {
    //基本信息
    tableInfo: {
      type: Array,
      default() {
        return [];
      }
    },
    isEdit: Boolean,
    create: {
      type: Boolean,
      default: false
    },
    active: {
      type: Boolean,
      default: false
    }
  },
  components: {
    CompPunishmentList,
    CompPunishmentDrawer
  },
  data() {
    return {
      formInfo: null
    };
  },
  setup() {
    const { drawer, openDrawer, closeDrawer } = useDrawer();
    return { drawer, openDrawer, closeDrawer };
  },
  watch: {},
  mounted() {},
  methods: {
    timeFormatter(row, column, cellValue) {
      return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
    },
    /**
     * æ–°å¢žæŒ‰é’®
     * @param:
     * @returns:
     */
    add() {
      this.formInfo = {};
      this.openDrawer();
    },
    /**
     * æŸ¥çœ‹æŒ‰é’®
     * @param:
     * @returns:
     */
    look(value) {
      this.formInfo = value;
      this.openDrawer();
    }
  }
};
</script>
<style scoped></style>
src/views/fytz/user/components/CompPunishmentDrawer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
<template>
  <el-drawer v-model="drawer_" title="新增" direction="rtl">
    <FYForm
      :form-info="_formInfo"
      :rules="rules"
      :reset="active"
      :useReset="true"
      v-model:is-edit="_edit"
      @submit="submit"
      @cancel="cancel"
    >
      <template #form-item="{ formObj }">
        <el-form-item label="处罚名称" prop="pmName">
          <el-input clearable v-model="formObj.pmName" placeholder="处罚名称" />
        </el-form-item>
        <el-form-item label="时间" prop="pmTime">
          <el-date-picker v-model="formObj.pmTime" type="datetime" placeholder="时间" />
        </el-form-item>
        <el-form-item label="原因">
          <el-input clearable v-model="formObj.pmReason" placeholder="原因" />
        </el-form-item>
        <el-form-item label="结果" prop="biName">
          <el-input clearable v-model="formObj.pmResult" placeholder="结果" />
        </el-form-item>
        <el-form-item label="部门" prop="biAddress">
          <el-input clearable v-model="formObj.pmDepartment" placeholder="部门" />
        </el-form-item>
        <el-form-item label="pmBasis">
          <el-input clearable v-model="formObj.pmBasis" placeholder="pmBasis" />
        </el-form-item>
        <el-form-item label="pmSceneId">
          <el-input clearable v-model="formObj.pmSceneId" placeholder="pmSceneId" />
        </el-form-item>
        <el-form-item label="pmExtension1">
          <el-input clearable v-model="formObj.pmExtension1" placeholder="pmExtension1" />
        </el-form-item>
        <el-form-item label="pmExtension2">
          <el-input clearable v-model="formObj.pmExtension2" placeholder="pmExtension2" />
        </el-form-item>
        <el-form-item label="pmExtension3">
          <el-input clearable v-model="formObj.pmExtension3" placeholder="pmExtension3" />
        </el-form-item>
        <el-form-item>
          <el-input clearable v-model="formObj.pmRemark" placeholder="pmRemark" />
        </el-form-item>
      </template>
    </FYForm>
  </el-drawer>
</template>
<script>
export default {
  props: {
    //基本信息
    formInfo: Object,
    drawer: {
      type: Boolean,
      default: false
    }
  },
  emits: ['update:drawer'],
  data() {
    return {
      _drawerData: null,
      drawer_: false,
      _formInfo: null
    };
  },
  watch: {
    formInfo(nValue) {
      this._formInfo = nValue;
    },
    drawer(nValue) {
      this.drawer_ = nValue;
    }
  },
  mounted() {},
  methods: {
    // åˆ›å»ºæ–°åœºæ™¯
    createBaseInfo(formObj, func) {},
    // æ›´æ–°åœºæ™¯
    updateBaseInfo(formObj, func) {},
    submit(formObj, func) {
      return this.create ? this.createBaseInfo(formObj, func) : this.updateBaseInfo(formObj, func);
    },
    cancel() {
      this.$emit('onCancel');
    }
  }
};
</script>
<style scoped></style>
src/views/fytz/user/components/CompPunishmentList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<template>
  <!-- <el-table :data="tableData" border>
    <slot name="column" ></slot>
  </el-table> -->
  <FYTable @search="onSearch" ref="tableRef">
    <template #table-column>
      <el-table-column prop="pmName" label="处罚名称" show-overflow-tooltip width="170px" />
      <el-table-column prop="pmTime" label="时间" :formatter="timeFormatter" width="145px" />
      <el-table-column prop="pmReason" label="原因" show-overflow-tooltip width="300px"/>
      <el-table-column prop="pmResult" label="结果" show-overflow-tooltip width="130px" />
      <el-table-column prop="pmDepartment" label="部门" width="250px" />
      <el-table-column prop="pmBasis" label="Address" />
      <el-table-column prop="pmSceneId" label="pmSceneId" width="150px"/>
      <el-table-column prop="pmExtension1" label="pmExtension1" width="120px" />
      <el-table-column prop="pmExtension2" label="pmExtension2" width="120px" />
      <el-table-column prop="pmExtension3" label="pmExtension3" width="120px" />
      <el-table-column prop="pmRemark" label="pmRemark" width="100px"/>
      <el-table-column fixed="right" align="right" label="操作" width="160">
        <template #header>
          <el-button icon="DocumentAdd" size="default" type="success" @click="add"
            >新增</el-button
          >
        </template>
        <template #default="scope">
          <el-button
            type="primary"
            size="small"
            @click="look(scope)"
            >查看</el-button
          >
        </template>
      </el-table-column>
    </template>
  </FYTable>
</template>
<script>
import dayjs from 'dayjs';
import { useDrawer } from '@/composables/drawer.js';
export default {
  props: {
    tableData: {
      type: Array,
      default() {
        return [];
      }
    }
  },
  emits: ['newlyAdd','look'],
  data() {
    return {};
  },
  setup() {
    const { drawer,openDrawer, closeDrawer } = useDrawer();
    return { drawer, openDrawer, closeDrawer };
  },
  mounted() {
    this.search();
  },
  methods: {
    onSearch(page, func) {
      func({
        data: this.tableData,
        total: this.tableData.length
      });
    },
    search() {
      this.$nextTick(() => {
        this.$refs.tableRef.onSearch();
      });
    },
    timeFormatter(row, column, cellValue) {
      return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
    },
    add(){
      this.$emit('newlyAdd')
    },
    look(scope){
      this.$emit('look',scope.row)
    }
  }
};
</script>
<style scoped></style>