Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

zhangcl 5 месяцев назад
Родитель
Сommit
1b0f229983

+ 1 - 0
index.html

@@ -2,6 +2,7 @@
 <html lang="en">
   <head>
       <script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
+      <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
     <meta charset="UTF-8" />
     <link rel="icon" href="/favicon.ico" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />

+ 1 - 1
src/components/UploadFile/src/UploadFile.vue

@@ -80,7 +80,7 @@ const emit = defineEmits(['update:modelValue'])
 
 const props = defineProps({
   modelValue: propTypes.oneOfType<string | string[]>([String, Array<String>]).isRequired,
-  fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
+  fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf','png','jpg','jpeg','sql','pptx','mp4']), // 文件类型, 例如['png', 'jpg', 'jpeg']
   fileSize: propTypes.number.def(50), // 大小限制(MB)
   limit: propTypes.number.def(5), // 数量限制
   autoUpload: propTypes.bool.def(true), // 自动上传

+ 2 - 15
src/views/Login/Login.vue

@@ -19,8 +19,8 @@
         <!-- 右边的登录界面 -->
         <Transition appear enter-active-class="animate__animated animate__bounceInRight">
           <div
-            class="m-auto h-[calc(60%)] w-[100%] flex items-center at-2xl:max-w-550px at-lg:max-w-550px at-md:max-w-550px at-xl:max-w-550px"
-            :style="{backgroundImage: `url(${loginBox})`,minHeight: '620px', minWidth: '250px',backgroundSize: 'cover',marginTop:'5%'}"
+            class="m-auto h-[calc(60%)] w-[100%] flex items-center at-2xl:max-w-500px at-lg:max-w-500px at-md:max-w-500px at-xl:max-w-500px"
+            :style="{backgroundImage: `url(${loginBox})`,minHeight: '650px', minWidth: '250px',backgroundSize: 'cover',marginTop:'5%'}"
           >
             <!-- 账号登录 -->
             <LoginForm class="m-auto h-auto p-50px lt-xl:(rounded-3xl)" />
@@ -104,17 +104,4 @@ $prefix-cls: #{$namespace}-login;
     background-color: var(--login-bg-color);
   }
 }
-.el-input__wrapper {
-  background-color: transparent !important;
-  height: 3.5em;
-  color: white;
-  box-shadow: none !important;
-  border-radius: 0;
-  border: none !important;
-  border-bottom: 1px solid #bacde0 !important;
-  outline: none;
-}
-.el-input__inner {
-  color: white;
-}
 </style>

+ 13 - 0
src/views/Login/components/LoginForm.vue

@@ -333,6 +333,16 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+::v-deep .el-input__wrapper {
+  background-color: transparent !important;
+  height: 3.5em;
+  color: white;
+  box-shadow: none !important;
+  border-radius: 0;
+  border: none !important;
+  border-bottom: 1px solid #bacde0 !important;
+  outline: none;
+}
 :deep(.anticon) {
   &:hover {
     color: var(--el-color-primary) !important;
@@ -371,4 +381,7 @@ onMounted(() => {
   margin-top: -9%;
   margin-left: 111%;
 }
+::v-deep .el-input__inner {
+  color: white;
+}
 </style>

+ 18 - 18
src/views/supplier/base/index.vue

@@ -8,15 +8,15 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="供应商编号" label-width="85px" prop="code">
-        <el-input
-          v-model="queryParams.code"
-          placeholder="请输入供应商编号"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
+<!--      <el-form-item label="供应商编号" label-width="85px" prop="code">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.code"-->
+<!--          placeholder="请输入供应商编号"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--          class="!w-240px"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item label="供应商名称" label-width="85px"  prop="name">
         <el-input
           v-model="queryParams.name"
@@ -71,15 +71,15 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="社会信用代码" label-width="98px"  prop="creditCode">
-        <el-input
-          v-model="queryParams.creditCode"
-          placeholder="请输入社会信用代码"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
+<!--      <el-form-item label="社会信用代码" label-width="98px"  prop="creditCode">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.creditCode"-->
+<!--          placeholder="请输入社会信用代码"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--          class="!w-240px"-->
+<!--        />-->
+<!--      </el-form-item>-->
       <el-form-item label="状态" prop="status">
         <el-select
           v-model="queryParams.status"

+ 6 - 1
src/views/supplier/certificate/CertificateForm.vue

@@ -3,7 +3,7 @@
     <el-form
       ref="formRef"
       :model="formData"
-      :rules="formRules"
+      :rules="ifAlone==null?aloneFormRules:formRules"
       label-width="100px"
       v-loading="formLoading"
     >
@@ -70,6 +70,11 @@ const formRules = reactive<FormRules>({
   type: [{ required: true, message: '证件类型不能为空', trigger: 'blur' }],
   name: [{ required: true, message: '证件名称不能为空', trigger: 'blur' }]
 })
+const aloneFormRules = reactive<FormRules>({
+  supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
+  type: [{ required: true, message: '证件类型不能为空', trigger: 'blur' }],
+  name: [{ required: true, message: '证件名称不能为空', trigger: 'blur' }]
+})
 const formRef = ref() // 表单 Ref
 const props = defineProps({
   supplierId: { type: Number, default: () => null },

+ 93 - 14
src/views/supplier/certificate/index.vue

@@ -8,7 +8,7 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone">
+      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone==null">
         <el-input
           v-model="queryParams.supplierId"
           placeholder="请输入供应商"
@@ -50,10 +50,16 @@
       <el-form-item>
         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button v-if="!isDetail" type="primary" plain @click="openForm('create')" >
+        <el-button v-if="!isDetail" type="primary" plain @click="openForm('create')">
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
-        <el-button v-if="!isDetail" type="success" plain @click="handleExport" :loading="exportLoading">
+        <el-button
+          v-if="!isDetail"
+          type="success"
+          plain
+          @click="handleExport"
+          :loading="exportLoading"
+        >
           <Icon icon="ep:download" class="mr-5px" /> 导出
         </el-button>
       </el-form-item>
@@ -75,7 +81,6 @@
         </template>
       </el-table-column>
       <el-table-column label="证件名称" align="center" prop="name" />
-      <el-table-column label="附件" align="center" prop="urls" />
       <el-table-column
         label="创建时间"
         align="center"
@@ -83,6 +88,17 @@
         :formatter="dateFormatter"
         width="180px"
       />
+      <el-table-column label="附件" align="center" prop="urls">
+        <!--          <template #default="scope">-->
+
+        <!--            <el-button @click="openView(scope.row)">-->
+        <!--              <Icon style="color: #14c4ca" icon="ep:view"/>-->
+        <!--            </el-button>-->
+        <!--          </template>-->
+        <template #default="scope">
+          <el-button link type="primary" @click="openView(scope.row)"> 查看 </el-button>
+        </template>
+      </el-table-column>
       <el-table-column v-if="!isDetail" label="操作" align="center" min-width="120px">
         <template #default="scope">
           <el-button link type="primary" @click="openForm('update', scope.row.id)">
@@ -102,12 +118,54 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <CertificateForm ref="formRef" :supplierId="{ receivedParam }" :ifAlone ="ifAlone" @success="getList" />
-  <el-form v-if="ifAlone!= null">
+  <CertificateForm
+    ref="formRef"
+    :supplierId="{ receivedParam }"
+    :ifAlone="ifAlone"
+    @success="getList"
+  />
+  <el-form v-if="ifAlone != null">
     <el-form-item style="float: right">
       <el-button @click="close" type="primary">返回</el-button>
     </el-form-item>
   </el-form>
+
+  <el-dialog
+    title="预览文件"
+    v-model="showDialog"
+    width="900px"
+    height="700px"
+    style="min-height: 200px"
+    destroy-on-close
+  >
+    <el-row>
+      <el-table
+        :data="objectInfo"
+        size="small"
+        border
+        header-cell-class-name="table-header-gray"
+      >
+        <el-table-column
+          label="文件名称"
+          prop="name"
+          min-width="100"
+          align="center"
+        />
+        <el-table-column
+          label="预览"
+          prop="url"
+          min-width="100"
+          align="center"
+        >
+                    <template #default="scope">
+                      <el-button @click="openWeb(scope.row.url)" style="border: none">
+                        <Icon style="color: #14c4ca" icon="ep:view"/>
+                      </el-button>
+                    </template>
+        </el-table-column>
+      </el-table>
+    </el-row>
+  </el-dialog>
 </template>
 
 <script setup lang="ts">
@@ -119,9 +177,11 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as SupplierBaseApi from '@/api/supplier/base'
 import { SupplierVO } from '@/api/supplier/base'
 import { propTypes } from '@/utils/propTypes'
-import {useTagsViewStore} from "@/store/modules/tagsView";
+import { useTagsViewStore } from '@/store/modules/tagsView'
+
 const { delView } = useTagsViewStore() // 视图操作
 const { push, currentRoute } = useRouter() // 路由
+const showDialog = ref(false)
 /** 供应商证件资质 列表 */
 defineOptions({ name: 'SupplierCertificate' })
 const supplierList = ref([] as SupplierVO[])
@@ -129,7 +189,7 @@ const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
 const props = defineProps({
   isDetail: propTypes.bool.def(false), // 是否作为详情组件
-  ifAlone: {type:Boolean, default:()=>null},
+  ifAlone: { type: Boolean, default: () => null },
   receivedParam: { type: undefined, default: () => null }
 })
 const loading = ref(true) // 列表的加载中
@@ -147,14 +207,30 @@ const queryParams = reactive({
 })
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中
+const objectInfo = ref([])
+const openView = (row: CertificateVO) => {
+  if (row.urls) {
+    objectInfo.value=[]
+    row.urls.split(',').forEach(item => {
+      let object = {url:'',name:''};
+      object.url = item;
+      const lastIndex = item.lastIndexOf('/');
+      object.name = lastIndex !== -1 ? item.substring(lastIndex+1) : item;
+      objectInfo.value.push(object);
+    })
+  }
+  showDialog.value = true
+}
+const openWeb = (url) => {
+  window.open('http://1.94.244.160:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
+}
 
-/** 查询列表 */
 const getList = async () => {
   supplierList.value = await SupplierBaseApi.Api.getAll()
   loading.value = true
   try {
-    if (props.ifAlone!=null) {
-      queryParams.supplierId = props.receivedParam === null?'0000000000':props.receivedParam
+    if (props.ifAlone != null) {
+      queryParams.supplierId = props.receivedParam === null ? '0000000000' : props.receivedParam
     }
     const data = await CertificateApi.getCertificatePage(queryParams)
     list.value = data.list
@@ -219,8 +295,11 @@ onMounted(async () => {
 })
 const close = () => {
   delView(unref(currentRoute))
-  push({ name: 'Suppliers',query: {
-      date: new Date().getTime(),
-    } })
+  push({
+    name: 'Suppliers',
+    query: {
+      date: new Date().getTime()
+    }
+  })
 }
 </script>

+ 5 - 1
src/views/supplier/connect/ConnectRecordForm.vue

@@ -3,7 +3,7 @@
     <el-form
       ref="formRef"
       :model="formData"
-      :rules="formRules"
+      :rules="ifAlone==null?aloneFormRules:formRules"
       label-width="100px"
       v-loading="formLoading"
     >
@@ -77,6 +77,10 @@ const props = defineProps({
   ifAlone: { type: Boolean, default: () => null },
 })
 const formRules = reactive<FormRules>({
+  // supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
+  contactName: [{ required: true, message: '供应商联系人不能为空', trigger: 'blur' }],
+})
+const aloneFormRules = reactive<FormRules>({
   supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
   contactName: [{ required: true, message: '供应商联系人不能为空', trigger: 'blur' }],
 })

+ 1 - 1
src/views/supplier/connect/index.vue

@@ -8,7 +8,7 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone">
+      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone==null">
         <el-input
           v-model="queryParams.supplierId"
           placeholder="请输入供应商"

+ 20 - 1
src/views/supplier/contact/ContactForm.vue

@@ -3,7 +3,7 @@
     <el-form
       ref="formRef"
       :model="formData"
-      :rules="formRules"
+      :rules="ifAlone==null?aloneFormRules:formRules"
       label-width="100px"
       v-loading="formLoading"
     >
@@ -80,6 +80,25 @@ const formData = ref({
   supplierName: undefined
 })
 const formRules = reactive<FormRules>({
+  // supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
+  name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
+
+  email: [
+    {
+      type: 'email',
+      message: '请输入正确的邮箱地址',
+      trigger: ['blur', 'change']
+    }
+  ],
+  telephone: [{ required: true, message: '电话不能为空', trigger: 'blur' },
+    {
+      pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
+      message: '请输入正确的手机号码',
+      trigger: 'blur'
+    }
+  ]
+})
+const aloneFormRules = reactive<FormRules>({
   supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
   name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
 

+ 1 - 1
src/views/supplier/contact/index.vue

@@ -8,7 +8,7 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone">
+      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone==null">
         <el-input
           v-model="queryParams.supplierId"
           placeholder="请输入供应商"

+ 5 - 1
src/views/supplier/coreproduct/CoreProductForm.vue

@@ -3,7 +3,7 @@
     <el-form
       ref="formRef"
       :model="formData"
-      :rules="formRules"
+      :rules="ifAlone==null?aloneFormRules:formRules"
       label-width="100px"
       v-loading="formLoading"
     >
@@ -68,6 +68,10 @@ const formData = ref({
   advantage: undefined,
 })
 const formRules = reactive<FormRules>({
+  // supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
+  productId: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
+})
+const aloneFormRules = reactive<FormRules>({
   supplierId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
   productId: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
 })

+ 1 - 1
src/views/supplier/coreproduct/index.vue

@@ -8,7 +8,7 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone">
+      <el-form-item label="供应商" prop="supplierId" v-if="ifAlone==null">
         <el-input
           v-model="queryParams.supplierId"
           placeholder="请输入供应商"

+ 4 - 4
src/views/supplier/product/index.vue

@@ -26,7 +26,7 @@
           type="primary"
           plain
           @click="openForm('create')"
-          v-hasPermi="['supplier:product:create']"
+          v-hasPermi="['supplier:product-category:create']"
         >
           <Icon icon="ep:plus" class="mr-5px" /> 新增
         </el-button>
@@ -62,7 +62,7 @@
             link
             type="primary"
             @click="openForm('update', scope.row.id)"
-            v-hasPermi="['supplier:product:update']"
+            v-hasPermi="['supplier:product-category:update']"
           >
             编辑
           </el-button>
@@ -71,7 +71,7 @@
             type="primary"
             v-if="scope.row.parentId > 0"
             @click="handleViewSpu(scope.row.id)"
-            v-hasPermi="['supplier:spu:query']"
+            v-hasPermi="['supplier:product-category:query']"
           >
             查看产品
           </el-button>
@@ -79,7 +79,7 @@
             link
             type="danger"
             @click="handleDelete(scope.row.id)"
-            v-hasPermi="['supplier:product:delete']"
+            v-hasPermi="['supplier:product-category:delete']"
           >
             删除
           </el-button>