@dongkboy пре 1 година
родитељ
комит
cb5d0f3a03

+ 2 - 2
.env.development

@@ -4,8 +4,8 @@ VITE_APP_SETTING = true
 VITE_APP_TITLE = 掌柜运营平台
 # 接口请求地址,会设置到 axios 的 baseURL 参数上
 # VITE_APP_API_BASEURL = http://192.168.0.55:8001  #董鑫
-VITE_APP_API_BASEURL = http://192.168.0.253:8001  #田智
-# VITE_APP_API_BASEURL = http://192.168.0.59:8001  #徐强
+# VITE_APP_API_BASEURL = http://192.168.0.253:8001  #田智
+VITE_APP_API_BASEURL = http://192.168.0.59:8001  #徐强
 
 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
 VITE_APP_DEBUG_TOOL =

+ 1 - 1
src/assets/styles/globals.css

@@ -317,7 +317,7 @@ textarea {
 }
 
 .vh100 {
-  height: calc(100vh - 200px);
+  height: calc(100vh - 150px);
   overflow-y: auto;
 }
 

+ 29 - 18
src/components/Table/index.vue

@@ -67,9 +67,14 @@
             </el-tag>
             <ImagePreview v-else-if="column.component === 'Image'" :src="getImgTo(scope.row, column)" width="50px"
               height="50px"></ImagePreview>
+            <div v-else-if="column.component === 'customEvent'">
+              <span v-if="customEvent(scope.row, column).style" :style="customEvent(scope.row, column).style"
+                @click="customEventClick(scope.row)">{{ customEvent(scope.row, column).content }}</span>
+              <span v-else>{{ customEvent(scope.row, column) }}</span>
+            </div>
             <div v-else>
-              <div v-if="getDisplayText(scope.row, column).includes('\n')" class="flex f-c ">
-                  <span v-for="(line, index) in getDisplayText(scope.row, column).split('\n')" :key="index">{{ line
+              <div v-if="getDisplayText(scope.row, 0).includes('\n')" class="flex f-c ">
+                <span v-for="(line, index) in getDisplayText(scope.row, column).split('\n')" :key="index">{{ line
                   }}</span>
               </div>
               <span v-else>
@@ -87,7 +92,7 @@
         </el-table-column>
       </el-table>
     </div>
-    <div class="page_box" v-if="props.pageInfo">
+    <div class="page_box m-top-10" v-if="props.pageInfo">
       <el-pagination v-model:current-page="props.pageInfo.pageNum" v-model:page-size="props.pageInfo.pageSize"
         :page-sizes="props.pageInfo.sizes" layout="total, sizes, prev, pager, next, jumper"
         :total="props.pageInfo.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
@@ -102,7 +107,7 @@ import type { TableInstance } from "element-plus";
 interface TableRow {
   [key: string]: any;
 }
-const emit = defineEmits(['getList', 'selectAllChange', 'selectionChange']);
+const emit = defineEmits(['getList', 'selectAllChange', 'selectionChange', 'customEventClick']);
 const props = defineProps<{
   tableData: Array<TableRow>;
   columnwidth: number,//操作栏宽度
@@ -154,19 +159,21 @@ onMounted(() => {
     ...row,
     _edit: false, // 设置默认非编辑状态
     counter: counter++
-
   }));
-  setTimeout(() => {
-    const tableElement = multipleTableRef.value?.$el as HTMLElement;
-    if (tableElement) {
-      const offsetTop = tableElement.offsetTop; // 获取 offsetTop
-      let height = window.innerHeight;
-      tableHeight.value = height - offsetTop - 270 + "px";
-    }
-  }, 10);
-
-
+  handleResize();
 });
+function handleResize() {
+  // 获取当前窗口的高度
+  const height = window.innerHeight;
+  // 在这里可以执行其他操作,比如更新某个元素的高度等
+  const tableElement = multipleTableRef.value?.$el as HTMLElement;
+  if (tableElement) {
+    const offsetTop = tableElement.offsetTop; // 获取 offsetTop
+    tableHeight.value = height - offsetTop - 230 + "px";
+  }
+}
+// 监听窗口的 resize 事件
+window.addEventListener('resize', handleResize);
 const selectable = () => true;
 const handleSizeChange = (val: number) => {
   if (props.pageInfo) {
@@ -175,7 +182,6 @@ const handleSizeChange = (val: number) => {
   }
 }
 //多选
-
 const selectAllChange = (value: any[]) => {
   newSelectionList.value = [];
   if (value.length > 0) {
@@ -186,7 +192,6 @@ const selectAllChange = (value: any[]) => {
     newSelectionList.value = [];
   }
   emit('selectAllChange', newSelectionList.value)
-
 }
 const selectionChange = (value: any[]) => {
   newSelectionList.value = [];
@@ -204,7 +209,10 @@ const handleCurrentChange = (val: number) => {
     props.pageInfo.pageNum = val
     emit('getList', props.pageInfo);
   }
-
+}
+// 高亮自定义事件
+const customEventClick = (row: Row) => {
+  emit('customEventClick', row)
 }
 //空值处理
 const displayValue = (value: any) => {
@@ -224,6 +232,9 @@ function getTagTypeAndText(row: Row, column: any) {
 function getDisplayText(row: Row, column: any): string {
   return column.formatter ? column.formatter(row, column, row[column.prop]) : displayValue(row[column.prop]);
 }
+function customEvent(row: Row, column: any) {
+  return column.formatter ? column.formatter(row, column, row[column.prop]) : row[column.prop]
+}
 </script>
 <style lang="scss" scoped>
 .el-table .el-table__cell .routerlick > a {

+ 1 - 1
src/layouts/components/Logo/index.vue

@@ -31,7 +31,7 @@ const to = computed(() => settingsStore.settings.home.enable ? settingsStore.set
     <!-- <img v-if="showLogo" :src="logo" class="logo h-[30px] w-[30px] object-contain">
     <span v-if="showTitle" class="block truncate font-bold">{{ title }}</span> -->
     <!-- 自定义内容 -->
-    <img v-if="showLogo" src="../../../assets/images/titleImg.png" class="logo h-[30px] w-[30px] object-contain">
+    <img v-if="showLogo" src="../../../assets/images/titleImg.png"
 
   </RouterLink>
 </template>

+ 0 - 1
src/layouts/components/Topbar/Toolbar/rightSide.vue

@@ -19,7 +19,6 @@ const settingsStore = useSettingsStore()
 const userStore = useUserStore()
 const inputText = ref(userStore.realName); // 用户输入的中文文本
 const firstLetterPinyin = ref(''); // 转换为拼音首字母
-console.log(userStore.avatar)
 //获取
 const convert = () => {
   firstLetterPinyin.value = getFirstLetterPinyin(inputText.value);

+ 124 - 46
src/views/index.vue

@@ -50,17 +50,34 @@ const oneStepAdminInfo = ref({
 function open(url: string) {
   window.open(url, '_blank')
 }
+const activeIndex = ref(1);
+
+const onTabClick = (index: number) => {
+  activeIndex.value = index;
+};
 </script>
 
 <template>
-  <div>
+  <div class="wrap">
+    <div class="tabs">
+      <div v-for="index in 2" :key="index" @click="onTabClick(index)" class="tab"
+        :class="{ active: activeIndex === index }">
+        标签{{ index }}
+      </div>
+    </div>
+    <div class="content-wrap">
+      <!-- 可以在这里添加内容 -->
+       32132132
+    </div>
+  </div>
+  <!-- <div>
     <PageHeader>
       <template #title>
         <div class="flex items-center gap-4">
           欢迎使用 Fantastic-admin
         </div>
       </template>
-      <template #content>
+<template #content>
         <div class="text-sm/6">
           <div>
             这是一款<b class="text-emphasis">开箱即用</b>的中后台框架,同时它也经历过数十个真实项目的技术沉淀,确保框架在开发中可落地、可使用、可维护
@@ -70,28 +87,26 @@ function open(url: string) {
           </div>
         </div>
       </template>
-      <HButton outline @click="open('https://fantastic-admin.hurui.me')">
-        <SvgIcon name="i-ri:file-text-line" />
-        开发文档
-      </HButton>
-      <HDropdownMenu
-        :items="[
+<HButton outline @click="open('https://fantastic-admin.hurui.me')">
+  <SvgIcon name="i-ri:file-text-line" />
+  开发文档
+</HButton>
+<HDropdownMenu :items="[
           [
             { label: 'Gitee', handle: () => open('https://gitee.com/fantastic-admin/basic') },
             { label: 'Github', handle: () => open('https://github.com/fantastic-admin/basic') },
           ],
-        ]"
-      >
-        <HButton class="ml-2">
-          <SvgIcon name="i-ri:code-s-slash-line" />
-          代码仓库
-          <SvgIcon name="i-ep:arrow-down" />
-        </HButton>
-      </HDropdownMenu>
-    </PageHeader>
-    <div class="w-full flex flex-col gap-4 px-4 xl:flex-row">
-      <PageMain class="ecology">
-        <template #title>
+        ]">
+  <HButton class="ml-2">
+    <SvgIcon name="i-ri:code-s-slash-line" />
+    代码仓库
+    <SvgIcon name="i-ep:arrow-down" />
+  </HButton>
+</HDropdownMenu>
+</PageHeader>
+<div class="w-full flex flex-col gap-4 px-4 xl:flex-row">
+  <PageMain class="ecology">
+    <template #title>
           <div class="title-info">
             <img src="https://cn.vuejs.org/logo.svg">
             <div>
@@ -107,14 +122,14 @@ function open(url: string) {
             </HButton>
           </div>
         </template>
-        <ul class="m-0 pr-8 text-size-sm leading-6">
-          <li v-for="item in fantasticStartkitInfo.feature" :key="item">
-            {{ item }}
-          </li>
-        </ul>
-      </PageMain>
-      <PageMain class="ecology">
-        <template #title>
+    <ul class="m-0 pr-8 text-size-sm leading-6">
+      <li v-for="item in fantasticStartkitInfo.feature" :key="item">
+        {{ item }}
+      </li>
+    </ul>
+  </PageMain>
+  <PageMain class="ecology">
+    <template #title>
           <div class="title-info">
             <img src="https://fantastic-admin.hurui.me/logo.png">
             <div>
@@ -130,15 +145,17 @@ function open(url: string) {
             </HButton>
           </div>
         </template>
-        <ElCarousel trigger="click" indicator-position="none" :interval="5000" height="250px">
-          <ElCarouselItem v-for="(item, index) in fantasticAdminInfo.data" :key="item">
-            <ElImage :src="item" fit="cover" style="width: 100%; height: 250px; margin: auto; cursor: pointer;" @click="fantasticAdminInfo.imageVisible = true; fantasticAdminInfo.index = index" />
-          </ElCarouselItem>
-        </ElCarousel>
-        <ElImageViewer v-if="fantasticAdminInfo.imageVisible" :url-list="fantasticAdminInfo.data" :initial-index="fantasticAdminInfo.index" @close="fantasticAdminInfo.imageVisible = false" />
-      </PageMain>
-      <PageMain class="ecology">
-        <template #title>
+    <ElCarousel trigger="click" indicator-position="none" :interval="5000" height="250px">
+      <ElCarouselItem v-for="(item, index) in fantasticAdminInfo.data" :key="item">
+        <ElImage :src="item" fit="cover" style="width: 100%; height: 250px; margin: auto; cursor: pointer;"
+          @click="fantasticAdminInfo.imageVisible = true; fantasticAdminInfo.index = index" />
+      </ElCarouselItem>
+    </ElCarousel>
+    <ElImageViewer v-if="fantasticAdminInfo.imageVisible" :url-list="fantasticAdminInfo.data"
+      :initial-index="fantasticAdminInfo.index" @close="fantasticAdminInfo.imageVisible = false" />
+  </PageMain>
+  <PageMain class="ecology">
+    <template #title>
           <div class="title-info">
             <img src="https://one-step-admin.hurui.me/logo.png">
             <div>
@@ -154,18 +171,79 @@ function open(url: string) {
             </HButton>
           </div>
         </template>
-        <ElCarousel trigger="click" indicator-position="none" :interval="5000" height="250px">
-          <ElCarouselItem v-for="(item, index) in oneStepAdminInfo.data" :key="item">
-            <ElImage :src="item" fit="cover" style="width: 100%; height: 250px; margin: auto; cursor: pointer;" @click="oneStepAdminInfo.imageVisible = true; oneStepAdminInfo.index = index" />
-          </ElCarouselItem>
-        </ElCarousel>
-        <ElImageViewer v-if="oneStepAdminInfo.imageVisible" :url-list="oneStepAdminInfo.data" :initial-index="oneStepAdminInfo.index" @close="oneStepAdminInfo.imageVisible = false" />
-      </PageMain>
-    </div>
-  </div>
+    <ElCarousel trigger="click" indicator-position="none" :interval="5000" height="250px">
+      <ElCarouselItem v-for="(item, index) in oneStepAdminInfo.data" :key="item">
+        <ElImage :src="item" fit="cover" style="width: 100%; height: 250px; margin: auto; cursor: pointer;"
+          @click="oneStepAdminInfo.imageVisible = true; oneStepAdminInfo.index = index" />
+      </ElCarouselItem>
+    </ElCarousel>
+    <ElImageViewer v-if="oneStepAdminInfo.imageVisible" :url-list="oneStepAdminInfo.data"
+      :initial-index="oneStepAdminInfo.index" @close="oneStepAdminInfo.imageVisible = false" />
+  </PageMain>
+</div>
+</div> -->
 </template>
 
 <style scoped>
+.wrap {
+  padding: 10px;
+  margin: 0 auto;
+  background-color: #eee;
+}
+
+.tabs {
+  display: flex;
+  width: 100%;
+  overflow: hidden;
+  background: linear-gradient(#cdd9fe, #e2e9fd);
+  border-radius: 8px 8px 0 0;
+}
+
+.tab {
+  position: relative;
+  width: 50%;
+  line-height: 50px;
+  text-align: center;
+  cursor: pointer;
+transition;
+}
+
+.tab.active {
+  color: #4185ef;
+  background-color: #fff;
+}
+
+.tab.active::before {
+  position: absolute;
+  top: 0;
+  left: -49px;
+  z-index: 2;
+  width: 50px;
+  height: 100%;
+  clip-path: path("M 0,50 C 25,50 25,0 50,0 L 50, 50 Z");
+  content: "";
+  background-color: #fff;
+}
+
+.tab.active::after {
+  position: absolute;
+  top: 0;
+  right: -49px;
+  z-index: 2;
+  width: 50px;
+  height: 100%;
+  clip-path: path("M 0,0 C 25,0 25,50 50,50 L 0, 50 Z");
+  content: "";
+  background-color: #fff;
+}
+
+.content-wrap {
+  min-height: 200px;
+  background-color: #fff;
+}
+
+/* ============================================= */
+
 .text-emphasis {
   text-emphasis-style: "❤";
 }

+ 16 - 13
src/views/insuranceCompanyConfiguration/insuranceCompanyConfig.vue

@@ -125,7 +125,7 @@
                     <el-icon class="btn-icon" @click="imageView">
                       <View />
                     </el-icon>
-                    <el-icon class="btn-icon" @click="download(companyImgUrl,companyImgName)">
+                    <el-icon class="btn-icon" @click="download(companyImgUrl, companyImgName)">
                       <Download />
                     </el-icon>
                     <el-icon class="btn-icon" @click="deleteImage">
@@ -232,7 +232,7 @@ const props = {
   checkStrictly: true,
 
 }
-const imageShow=ref(false);//图片预览开关
+const imageShow = ref(false);//图片预览开关
 const companyImgName = ref();
 const companyImgUrl = ref();
 const FormRef = ref<FormInstance>()
@@ -263,14 +263,17 @@ const columns: Column[] = [
   { key: 'companyCode', dataKey: "companyCode", title: "保险公司代码", width: 200, align: "center" },
   { key: 'nameSimple', dataKey: "nameSimple", title: "简称", width: 200, align: "center" },
   {
-    key: 'type', dataKey: "type", title: "类型", width: 200, align: "center", cellRenderer: ({ cellData: type }: any) => {
-      if (type == 1) {
-        return <ElTag>财险</ElTag>;
-      } else if (type == 0) {
-        return <ElTag>渠道</ElTag>;
-      } else {
-        return <ElTag>寿险</ElTag>;
+    key: 'type', dataKey: "type", title: "类型", width: 200, align: "center", cellRenderer: (rowData: any) => {
+      if (rowData.rowData.parentId == '0') {
+        if (rowData.rowData.type == 1) {
+          return <ElTag>财险</ElTag>;
+        } else if (rowData.rowData.type == 0) {
+          return <ElTag>渠道</ElTag>;
+        } else {
+          return <ElTag>寿险</ElTag>;
+        }
       }
+
     }
   },
   {
@@ -374,8 +377,8 @@ const companyEdit = (column: any) => {
     cpmpanyform.remark = column.remark;
     cpmpanyform.type = column.type;
     cpmpanyform.logo = column.logoFile.id;
-    companyImgUrl.value=column.downloadUrl
-    companyImgName.value=column.logoFile.fileName;
+    companyImgUrl.value = column.downloadUrl
+    companyImgName.value = column.logoFile.fileName;
   } else {
     dialogType.value = 'subsidiaryedit';
     dialogTitle.value = '编辑';
@@ -481,10 +484,10 @@ const uploadImage = async (file: any) => {
 }
 // 图片预览
 const imageView = () => {
-  imageShow.value=true;
+  imageShow.value = true;
 }
 // 图片下载
-const download = (url:string, name:string) => {
+const download = (url: string, name: string) => {
   let image = new Image();
   // 解决跨域 Canvas 污染问题
   image.setAttribute("crossOrigin", "anonymous");

+ 1 - 1
src/views/insuranceCompanyConfiguration/paymentCodeConfig.vue

@@ -198,7 +198,7 @@ function getList(item: PageInfo) {
 //保险公司选择
 const companyIdChange = (value: string) => {
   let Info = companyList.value.find((val: any) => val.id == value);
-  paymentform.companyName = Info.name;
+  paymentform.companyName = Info.nameSimple;
   paymentform.companyCode = Info.companyCode;
 }
 //获取保险公司列表

+ 23 - 40
src/views/organizationManagement/organization/organizationAdd.vue

@@ -9,7 +9,7 @@
           style="max-width: 1000px;" class="flex a-c f-wrap" :size="fromSize">
           <ElCol :md="24" :lg="12">
             <el-form-item label="编码" prop="sysCode">
-              <el-input v-model="sysform.sysCode" placeholder="请输入编码(唯一标识)" :disabled="id?true:false" ></el-input>
+              <el-input v-model="sysform.sysCode" placeholder="请输入编码(唯一标识)" :disabled="id ? true : false"></el-input>
               <span style="font-size: 0.7rem;color: #999;">可填写有字母数字组成的编码,用于用户登录</span>
             </el-form-item>
           </ElCol>
@@ -28,8 +28,8 @@
           <ElCol :md="24" :lg="12">
             <el-form-item label="管理员账号" prop="userAccount">
               <el-input style="display: none;" type="password" />
-              <el-input v-model="sysform.userAccount" placeholder="请输入登录账号" maxlength="11" show-word-limit type="text" name="formerEmployer"
-                autocomplete="new-password" @blur="userAccountblur" />
+              <el-input v-model="sysform.userAccount" placeholder="请输入登录账号" maxlength="11" show-word-limit type="text"
+                name="formerEmployer" autocomplete="new-password" @blur="userAccountblur" />
               <span style="font-size: 0.7rem;color: #999;">管理员手机号将作为登录账号使用</span>
             </el-form-item>
           </ElCol>
@@ -42,7 +42,7 @@
           </ElCol>
 
           <ElCol :md="24" :lg="12">
-            <el-form-item label="简称">
+            <el-form-item label="简称" prop="shortName">
               <el-input v-model="sysform.shortName" placeholder="请输入租户简称" />
             </el-form-item>
           </ElCol>
@@ -54,7 +54,8 @@
           </ElCol>
           <ElCol :md="24" :lg="12">
             <el-form-item label="详细地址" prop="address">
-              <el-input v-model="sysform.address" type="textarea" placeholder="请输入详细地址" maxlength="50" show-word-limit />
+              <el-input v-model="sysform.address" type="textarea" placeholder="请输入详细地址" maxlength="50"
+                show-word-limit />
             </el-form-item>
           </ElCol>
           <ElCol :md="24" :lg="12">
@@ -64,14 +65,6 @@
               </el-select>
             </el-form-item>
           </ElCol>
-          <ElCol :md="24" :lg="12">
-            <el-form-item label="租户状态" prop="available">
-              <el-select v-model="sysform.available" placeholder="请选择状态" clearable>
-                <el-option label="启用" :value="1" />
-                <el-option label="禁用" :value="0" />
-              </el-select>
-            </el-form-item>
-          </ElCol>
           <ElCol :md="24" :lg="12">
             <el-form-item label="品牌logo" prop="sysIcon">
               <el-upload action="#" list-type="picture-card" :auto-upload="false" :on-change="sysIconupload"
@@ -129,10 +122,10 @@
 
     </PageMain>
     <FixedActionBar>
-      <ElButton type="primary"  @click="submitForm(ruleFormRef)">
+      <ElButton type="primary" @click="submitForm(ruleFormRef)">
         保存
       </ElButton>
-      <ElButton  @click="router.back()">
+      <ElButton @click="router.back()">
         取消
       </ElButton>
     </FixedActionBar>
@@ -182,7 +175,6 @@ const sysform = ref({
   districtId: "",
   address: "",
   sysType: 0,
-  available: 1,
   sysIcon: "",
   contact: "",
   telephone: "",
@@ -265,9 +257,6 @@ const sysformRules = ref<FormRules>({
   provinceId: [
     { required: true, trigger: 'change', message: '请选择省市区' },
   ],
-  available: [
-    { required: true, trigger: 'change', message: '请选择状态' },
-  ],
 
 
 });
@@ -320,25 +309,6 @@ const detailQuery = () => {
     }
   });
 }
-//详情编辑
-const detailUpdate = () => {
-  console.log()
-  api.tenantApi.sysEdit(sysform.value).then((res: any) => {
-    if (res.code == '200') {
-      ElMessage({
-        type: 'success',
-        message: res.msg,
-        plain: true,
-      })
-    } else {
-      ElMessage({
-        type: 'error',
-        message: res.msg,
-        plain: true,
-      })
-    }
-  });
-}
 const provinceChange = (value: any) => {
   if (value && value[0] != null && value[1] != null && value[2] != null) {
     sysform.value.provinceId = value[0];
@@ -379,8 +349,22 @@ const submitForm = async (formEl: FormInstance | undefined) => {
   await formEl.validate((valid) => {
     if (valid) {
       if (id.value) {
-        detailUpdate();
+        api.tenantApi.sysEdit(sysform.value).then((res: any) => {
+          if (res.code == '200') {
+            ElMessage({
+              type: 'success',
+              message: res.msg,
+              plain: true,
+            })
         router.back();
+          } else {
+            ElMessage({
+              type: 'error',
+              message: res.msg,
+              plain: true,
+            })
+          }
+        });
 
       } else {
         api.tenantApi.sysAdd(sysform.value).then((res: any) => {
@@ -391,7 +375,6 @@ const submitForm = async (formEl: FormInstance | undefined) => {
               plain: true,
             })
             router.back();
-
           } else {
             ElMessage({
               type: 'error',

+ 1 - 1
src/views/organizationManagement/tenantPermissions.vue

@@ -29,7 +29,7 @@
           <div class="flex j-s a-c">
             <span class="strong">操作权限</span>
             <div>
-              <ElButton type="default" @click="roleSubmit" v-auth="'tenantPermissions.edit'">保存</ElButton>
+              <ElButton  v-if=" roleInfo.systemCode" type="default" @click="roleSubmit" v-auth="'tenantPermissions.edit'">保存</ElButton>
             </div>
           </div>
           <ElDivider style="margin-top: 10px;"></ElDivider>

+ 7 - 4
src/views/personnel/memberManagement.vue

@@ -166,7 +166,7 @@ const pageInfo = ref({
   pageNum: 1,
   pageSize: 20,
   sizes: [10, 20, 30, 40, 50],
-  total: 0,
+  total: 100,
 });
 //检索条件
 const formInline = reactive({
@@ -266,9 +266,9 @@ function handleEnter(e: any) {
   }
 }
 const columns = [
-  { prop: "username", label: "姓名", width: '120', },
-  { prop: "mobile", label: "手机号", width: '120' },
-  { prop: "id", label: "工号", width: '180', },
+  { prop: "username", label: "姓名", width: '200', },
+  { prop: "mobile", label: "手机号", width: '180' },
+  { prop: "id", label: "工号", },
   {
     prop: "roleNameList", label: "角色", formatter: (row: any) => {
       let roleNameList = row.roleNameList;
@@ -293,6 +293,9 @@ const columns = [
 function getList(item: PageInfo) {
   pageInfo.value.pageNum = item.pageNum;
   pageInfo.value.pageSize = item.pageSize;
+  console.log(pageInfo.value.pageNum)
+  console.log(pageInfo.value.pageSize)
+
   findpage();
 };
 function tenantUpdate(id: string) {

+ 3 - 2
src/views/personnel/roleManagement.vue

@@ -48,11 +48,12 @@
             <ElForm :model="roleInfo" :rules="roleRules" label-width="auto" size="" class="m-top-20"
               style="max-width: 500px;">
               <ElFormItem prop="name" label="角色名称">
-                <ElInput v-model="roleInfo.name" placeholder="输入20个字以内的角色名称" type="text" tabindex="1">
+                <ElInput v-model="roleInfo.name" placeholder="输入20个字以内的角色名称" type="text" tabindex="1" maxlength="20" show-word-limit >
+
                 </ElInput>
               </ElFormItem>
               <ElFormItem label="角色描述">
-                <ElInput v-model="roleInfo.remark" placeholder="请输入" type="textarea" tabindex="2">
+                <ElInput v-model="roleInfo.remark" placeholder="请输入" type="textarea" tabindex="2" maxlength="500" show-word-limit >
                 </ElInput>
               </ElFormItem>
             </ElForm>

+ 21 - 16
src/views/productConfiguration/specialClause/specialClauseAdd.vue

@@ -9,7 +9,7 @@
           ref="specialformRef" style="max-width: 1000px;" class="flex a-c f-wrap" :size="fromSize">
           <ElCol :md="24" :lg="12">
             <el-form-item label="保险公司" prop="companyId">
-              <el-select v-model="specialform.companyId" placeholder="请选择" clearable  filterable>
+              <el-select v-model="specialform.companyId" placeholder="请选择" clearable filterable>
                 <el-option v-for="(item, index) in companyList" :key="index" :label="item.name" :value="item.id" />
               </el-select>
             </el-form-item>
@@ -50,8 +50,8 @@
           </ElCol>
           <ElCol :md="24" :lg="12">
             <el-form-item label="特约内容" prop="clauseContent">
-              <el-input v-model="specialform.clauseContent" placeholder="请输入机构地址" type="textarea" maxlength="500"
-                show-word-limit />
+              <el-input v-model="specialform.clauseContent" :disabled="clauseContentShow" placeholder="请输入机构地址"
+                :autosize="{ minRows: 4, maxRows: 10 }" type="textarea" maxlength="500" show-word-limit />
             </el-form-item>
           </ElCol>
         </el-form>
@@ -76,10 +76,10 @@
 import { ref } from 'vue'
 import { FormRules, FormInstance, ComponentSize, ElMessage } from 'element-plus';
 import { loadDicts, getDict } from '@/utils/composables/dictService';//字典组件
-import { useRoute,useRouter } from 'vue-router';
+import { useRoute, useRouter } from 'vue-router';
 import api from '@/api';
 const route = useRoute();
-const router=useRouter();
+const router = useRouter();
 const id = ref(route.query.id);//id参数
 const specialformRef = ref<FormInstance>()
 const fromSize = ref<ComponentSize>('large')
@@ -119,11 +119,13 @@ const specialformRules = ref<FormRules>({
   ],
 
 });
+const clauseContentShow = ref(false);
 onBeforeMount(() => {
   companyQuery();
   loadDicts(['special_client_type', 'risk_code', 'is_edit']);//获取多个字典
   if (id.value) {
     details();
+
   }
 });
 
@@ -135,6 +137,9 @@ const details = () => {
           specialform[key as keyof typeof specialform] = res.data[key as keyof typeof specialform];
         }
       });
+      if (specialform.isEdit == '0') {
+        clauseContentShow.value = true;
+      }
     } else {
     }
   });
@@ -189,17 +194,17 @@ const submitForm1 = async (formEl: FormInstance | undefined) => {
   await formEl.validate((valid) => {
     if (valid) {
       api.product.addClause({ ...specialform }).then((res: any) => {
-          if (res.code == '200') {
-            ElMessage({
-              type: 'success',
-              message: res.msg,
-              plain: true,
-            })
-            router.push({
-              name: 'reload',
-            })
-          }
-        });
+        if (res.code == '200') {
+          ElMessage({
+            type: 'success',
+            message: res.msg,
+            plain: true,
+          })
+          router.push({
+            name: 'reload',
+          })
+        }
+      });
     } else {
       ElMessage({
         type: 'error',

+ 63 - 9
src/views/productConfiguration/specialClause/specialClauseindex.vue

@@ -48,7 +48,7 @@
       </ElForm>
       <ElDivider border-style="dashed"></ElDivider>
       <Table :tableData="tableData" :columns="columns" :showIndex="false" :columnwidth="200" :showSelect="true"
-        :pageInfo="pageInfo" @getList="getList" @selectionChange="selectionChange">
+        :pageInfo="pageInfo" @getList="getList" @selectionChange="selectionChange" @customEventClick="customEventClick">
         <template v-slot:table-title-btn>
           <RouterLink :to="{ name: 'SpecialClauseAdd' }">
             <el-button type="primary" v-auth="'specialClause.add'">
@@ -61,7 +61,8 @@
             </el-button>
           </RouterLink>
 
-          <el-button type="default" @click="batchDel" v-auth="'specialClause.delete'" :disabled="!sysUpAndDownList.length">
+          <el-button type="default" @click="batchDel" v-auth="'specialClause.delete'"
+            :disabled="!sysUpAndDownList.length">
             批量删除
           </el-button>
         </template>
@@ -80,6 +81,18 @@
         </template>
       </Table>
     </PageMain>
+    <el-dialog v-model="dialogVisible" title="修改特约" width="500">
+      <el-input v-model="specialform.clauseContent" :autosize="{ minRows: 4, maxRows: 10 }" type="textarea"
+        maxlength="500" show-word-limit />
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="dialogVisible = false">取消</el-button>
+          <el-button type="primary" @click="clauseContentEdit">
+            确定
+          </el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 <script lang="ts" setup>
@@ -133,7 +146,7 @@ const columns = [
   {
     prop: "riskCode", label: "特约类型", width: '150', formatter: (row: any) => {
       let riskCode = row.riskCode;
-      if(riskCode){
+      if (riskCode) {
         let riskCodeName = getDict('risk_code').find(val => val.value == riskCode).label;
         return riskCodeName
       }
@@ -141,7 +154,15 @@ const columns = [
   },
   { prop: "clauseName", label: "特约名称", align: 'left' },
   { prop: "clauseCode", label: "编码", width: '220' },
-  { prop: "clauseContent", label: "特别约定内容", width: '480'},
+  {
+    prop: "clauseContent", label: "特别约定内容", width: '480', component: "customEvent", formatter: (row: any) => {
+      if (row.isEdit == '1') {
+        return { style: { color: '#0083FF', cursor: 'pointer' }, content: row.clauseContent };
+      } else {
+        return row.clauseContent;
+      }
+    }
+  },
 ];
 function getList(item: PageInfo) {
   pageInfo.value.pageNum = item.pageNum;
@@ -159,6 +180,39 @@ const companyQuery = () => {
 const selectionChange = (val: any) => {
   sysUpAndDownList.value = val;
 }
+//特约修改
+const dialogVisible = ref(false);//弹窗
+const specialform = reactive({
+  id: "",
+  companyId: "",//保险公司code
+  clauseName: "",//特约名称
+  riskCode: "",//特约类型
+  clauseCode: "",//特约编码
+  clauseContent: "",//特约内容
+  isEdit: "",//是否编辑
+  clientStatus: "",//客户端状态
+})
+const customEventClick = (row: any,) => {
+  Object.keys(specialform).forEach((key) => {
+    if (row.hasOwnProperty(key)) {
+      specialform[key as keyof typeof specialform] = row[key as keyof typeof specialform];
+    }
+  });
+  dialogVisible.value = true;
+}
+const clauseContentEdit = () => {
+  api.product.updateClause({ ...specialform }).then((res: any) => {
+    if (res.code == '200') {
+      ElMessage({
+        type: 'success',
+        message: res.msg,
+        plain: true,
+      })
+      dialogVisible.value = false;
+      findpage();
+    }
+  });
+}
 const Edit = (id: string) => {
   router.push({
     name: 'SpecialClauseAdd',
@@ -224,11 +278,11 @@ const Del = (id: string) => {
 
 }
 const reset = () => {
-  formInline.clauseCode='';
-  formInline.clauseContent='';
-  formInline.clauseName='';
-  formInline.companyId='';
-  formInline.riskCode='';
+  formInline.clauseCode = '';
+  formInline.clauseContent = '';
+  formInline.clauseName = '';
+  formInline.companyId = '';
+  formInline.riskCode = '';
   findpage();
 }
 </script>