From 635e1b3c0d48c2db884794cb8bc26d6ff1591ffa Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期四, 21 十二月 2023 16:24:46 +0800
Subject: [PATCH] 1.增加行政处罚的数据展示 2.增加信访的数据展示

---
 src/views/fytz/user/components/CompComplaintList.vue    |   84 +++++
 src/composables/drawer.js                               |   12 
 src/views/fytz/user/UserEdit.vue                        |   64 ++-
 src/components.d.ts                                     |    5 
 src/views/fytz/user/components/CompComplaint.vue        |   72 ++++
 src/api/fytz/lettersAndVisitsApi.js                     |   12 
 src/views/fytz/user/components/CompComplaintDrawer.vue  |  110 ++++++
 src/views/fytz/user/components/CompPanyInfo.vue         |  262 ++++++++++++++++
 src/api/fytz/punishmentApi.js                           |   12 
 src/views/fytz/user/components/CompPunishment.vue       |   71 ++++
 src/views/fytz/user/components/CompPunishmentDrawer.vue |   98 ++++++
 src/views/fytz/user/components/CompBaseInfo.vue         |   44 +-
 src/views/fytz/user/components/CompPunishmentList.vue   |   86 +++++
 13 files changed, 885 insertions(+), 47 deletions(-)

diff --git a/src/api/fytz/lettersAndVisitsApi.js b/src/api/fytz/lettersAndVisitsApi.js
new file mode 100644
index 0000000..90fa5fa
--- /dev/null
+++ b/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}`);
+  }
+};
diff --git a/src/api/fytz/punishmentApi.js b/src/api/fytz/punishmentApi.js
new file mode 100644
index 0000000..af1b692
--- /dev/null
+++ b/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}`);
+  }
+};
diff --git a/src/components.d.ts b/src/components.d.ts
index bdad972..faeff38 100644
--- a/src/components.d.ts
+++ b/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']
diff --git a/src/composables/drawer.js b/src/composables/drawer.js
new file mode 100644
index 0000000..78aca97
--- /dev/null
+++ b/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};
+}
diff --git a/src/views/fytz/user/UserEdit.vue b/src/views/fytz/user/UserEdit.vue
index 174e18c..479bd47 100644
--- a/src/views/fytz/user/UserEdit.vue
+++ b/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>
diff --git a/src/views/fytz/user/components/CompBaseInfo.vue b/src/views/fytz/user/components/CompBaseInfo.vue
index 67154ff..15b9472 100644
--- a/src/views/fytz/user/components/CompBaseInfo.vue
+++ b/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>
diff --git a/src/views/fytz/user/components/CompComplaint.vue b/src/views/fytz/user/components/CompComplaint.vue
new file mode 100644
index 0000000..166a502
--- /dev/null
+++ b/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>
diff --git a/src/views/fytz/user/components/CompComplaintDrawer.vue b/src/views/fytz/user/components/CompComplaintDrawer.vue
new file mode 100644
index 0000000..15cee87
--- /dev/null
+++ b/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>
diff --git a/src/views/fytz/user/components/CompComplaintList.vue b/src/views/fytz/user/components/CompComplaintList.vue
new file mode 100644
index 0000000..0901f6e
--- /dev/null
+++ b/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>
diff --git a/src/views/fytz/user/components/CompPanyInfo.vue b/src/views/fytz/user/components/CompPanyInfo.vue
new file mode 100644
index 0000000..e20b7fd
--- /dev/null
+++ b/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="绀句細淇$敤浠g爜" prop="ciOrgCode">
+        <el-input clearable v-model="formObj.ciOrgCode" placeholder="绀句細淇$敤浠g爜" />
+      </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: '绀句細淇$敤浠g爜涓嶈兘涓虹┖',
+            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>
diff --git a/src/views/fytz/user/components/CompPunishment.vue b/src/views/fytz/user/components/CompPunishment.vue
new file mode 100644
index 0000000..cb6814c
--- /dev/null
+++ b/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>
diff --git a/src/views/fytz/user/components/CompPunishmentDrawer.vue b/src/views/fytz/user/components/CompPunishmentDrawer.vue
new file mode 100644
index 0000000..e6173ca
--- /dev/null
+++ b/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>
diff --git a/src/views/fytz/user/components/CompPunishmentList.vue b/src/views/fytz/user/components/CompPunishmentList.vue
new file mode 100644
index 0000000..3b31628
--- /dev/null
+++ b/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>

--
Gitblit v1.9.3