YangJian0701 1 year ago
parent
commit
b471428e01

+ 9 - 2
.env

@@ -1,5 +1,12 @@
 NODE_ENV = 'production'
-VUE_APP_BASE_URL = 'https://cold.coldbaozhida.com/api/'
+VUE_APP_BASE_URL1 = 'http://192.168.11.77:8100/'
+VUE_APP_BASE_URL2 = 'http://192.168.11.77:8110/'
+
+
+
+VUE_APP_BASE_URL_PORT1 = '8100/' 
+VUE_APP_BASE_URL_PORT2 = '8110/'
+
 VUE_APP_BASE_API = '/api'
 VUE_APP_BASE_TITLE = 'ERP宝智达'
-VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'
+VUE_APP_BASE_ERPOSS_API = 'http://192.168.11.77'

+ 6 - 0
README.md

@@ -29,3 +29,9 @@ See [Configuration Reference](https://www.zcool.com.cn/work/ZNjQ1ODE0MjA=.html).
 <!-- https://www.zcool.com.cn/work/ZNDU1MzczNTI=.html -->
 ### 原型图
 See [Configuration Reference](https://9geiuz.axshare.com/#id=p7i65o&p=%E5%8D%95%E4%BD%8D&g=1).
+
+
+
+<!-- 代理处 -->
+<!-- 用户 部门 登录 那一块是用户系统的 就是8100端口 -->
+<!-- 药品方面的 是出入库系统的 8110 -->

+ 11 - 2
env.development

@@ -1,5 +1,14 @@
 NODE_ENV = 'development'
-VUE_APP_BASE_URL = 'https://cold.coldbaozhida.com/api/'
+VUE_APP_BASE_URL1 = 'http://192.168.11.77:8100/'
+VUE_APP_BASE_URL2 = 'http://192.168.11.77:8110/'
+
+
+
+
+VUE_APP_BASE_URL_PORT1 = '8100/' 
+VUE_APP_BASE_URL_PORT2 = '8110/'
+
+
 VUE_APP_BASE_API = '/api'
 VUE_APP_BASE_TITLE = 'ERP宝智达'
-VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'
+VUE_APP_BASE_ERPOSS_API = 'http://192.168.11.77'

+ 9 - 2
env.production

@@ -1,5 +1,12 @@
 NODE_ENV = 'production'
-VUE_APP_BASE_URL = 'https://cold.coldbaozhida.com/api/'
+
+VUE_APP_BASE_URL1 = 'http://192.168.11.77:8100/'
+VUE_APP_BASE_URL2 = 'http://192.168.11.77:8110/'
+
+
+VUE_APP_BASE_URL_PORT1 = '8100/' 
+VUE_APP_BASE_URL_PORT2 = '8110/'
+
 VUE_APP_BASE_API = '/api'
 VUE_APP_BASE_TITLE = 'ERP宝智达'
-VUE_APP_BASE_ERPOSS_API = 'https://erposs.baozhida.cn'
+VUE_APP_BASE_ERPOSS_API = 'http://192.168.11.77'

+ 2 - 2
src/api/module/login.ts

@@ -2,6 +2,6 @@
 import $http from '@/utils/index'
 
 // 项目列表(财务)
-export const login = (params: any) => $http.post('/v3/Login_verification', params)
+export const login = (params: any) => $http.post('/login', params)
 
-export const CompanyTree = (params: any) => $http.post('/v3/DeviceWarning/List', params)
+export const CompanyTree = (params: any) => $http.post('/product/list', params)

BIN
src/assets/img/dayinyulan.png


BIN
src/assets/img/excel.png


BIN
src/assets/img/ico_art_tuijian.png


+ 0 - 0
src/assets/logo.png → src/assets/img/logo.png


BIN
src/assets/img/print.png


+ 8 - 4
src/components/bg.vue

@@ -1,10 +1,13 @@
 <template>
     <div class="bg">
         <div class="bg-tit">
-            <markGreen></markGreen>
-            <el-text style="margin-left: 20px;" tag="b">
-                <slot name="tit">{{props.istitle}}</slot>
-            </el-text>
+            <div style="display: flex;align-items: center;flex: 1;">
+                <markGreen></markGreen>
+                <el-text style="margin-left: 20px;" tag="b">
+                    <slot name="tit">{{props.istitle}}</slot>
+                </el-text>
+            </div>
+            <slot name="btn"></slot>
         </div>
         <slot name="bg"></slot>
     </div>
@@ -39,5 +42,6 @@ const props = defineProps({
         margin-bottom: var(--y-margin);
         display: flex;
         align-items: center;
+        justify-content: space-between;
     }
 }</style>

+ 0 - 1
src/components/searchAdd.vue

@@ -8,7 +8,6 @@
           <el-input v-model="data.input" :placeholder="props.isPlaceholder" clearable />
         </el-form-item>
       </el-form>
-      
       <el-form-item>
         <el-button type="primary" @click="subClick">{{ props.isButtom }}</el-button>
       </el-form-item>

+ 49 - 28
src/components/table.vue

@@ -4,34 +4,55 @@
         <el-table v-loading="loading" :data="tableData" @row-click="props.rowClick"
             @selection-change="props.selectionChange" :row-key="props.getRowKey"
             :row-style="tableRowClassName">
-            <!-- 默认插槽 -->
-            <slot></slot>
-            <template v-for="item in tableColumns" :key="item">
-                <!-- selection || index -->
-                <el-table-column v-bind="item" :align="item.align ?? 'left'" :reserve-selection="item.type == 'selection'"
-                    v-if="item.type == 'selection' || item.type == 'index'" :show-overflow-tooltip="true"></el-table-column>
-                <!-- <el-table-column v-bind="item" v-slot="scope">
-                    {{ scope.row.prop }}
-                </el-table-column> -->
-
-                <!-- 普通渲染 -->
-                <el-table-column v-bind="item" :align="item.align ?? 'left'" :show-overflow-tooltip="true"
-                    v-if="!item.type && item.prop && item.name !== item.prop" v-slot="scope">
-                    <div v-if="item.prop == 'T_wait_audit'" style="color: red;">
-                        {{ scope.row[item.prop] == true ? '待审核' : '' }}
-                    </div>
-                    <el-tooltip v-if="item.ellipsis" effect="dark" :content="scope.row[item.prop]" placement="bottom">
-                        {{ scope.row[item.prop] }}
-                    </el-tooltip>
-                    <slot v-if="item.fixed" :name="item.fixed" :row="scope.row"></slot>
-                </el-table-column>
-
-                <!-- 自定义slot 可以显示一些tab等等-->
-                <el-table-column v-bind="item" :align="item.align ?? 'left'" :show-overflow-tooltip="true"
-                    v-if="!item.type && item.prop && item.name === item.prop" v-slot="scope">
-                    <slot :name="item.prop" :row="scope.row"></slot>
-                </el-table-column>
-            </template>
+           <!-- 默认插槽 -->
+      <slot></slot>
+      <template v-for="item in tableColumns" :key="item">
+        <!-- selection || index -->
+        <el-table-column
+          v-bind="item"
+          :align="item.align ?? 'center'"
+          :reserve-selection="item.type == 'selection'"
+          v-if="item.type == 'selection' || item.type == 'index'"
+          
+        ></el-table-column>
+        <!-- expand 支持 tsx 语法 && 作用域插槽 (tsx > slot) -->
+        <el-table-column v-bind="item" :align="item.align ?? 'center'" v-if="item.type === 'expand'" v-slot="scope">
+          <component :is="item.render" :row="scope.row" v-if="item.render"> </component>
+          <slot :name="item.type" :row="scope.row" v-else></slot>
+        </el-table-column>
+        <!-- 普通渲染 -->
+        <el-table-column
+          v-bind="item"
+          :align="item.align ?? 'center'"
+          v-if="!item.type && item.prop && item.name !== item.prop"
+          v-slot="scope"
+        >
+          <div v-if="item.prop=='T_wait_audit'" style="color: red;">
+            {{ scope.row[item.prop]==true?'待审核':'' }}
+          </div>
+          <el-tooltip v-if="item.ellipsis" effect="dark" :content="scope.row[item.prop]" placement="bottom">
+            {{ scope.row[item.prop] }}
+          </el-tooltip>
+          <slot v-if="item.fixed" :name="item.fixed" :row="scope.row"></slot>
+        </el-table-column>
+        <!-- 自定义slot -->
+        <el-table-column
+          v-bind="item"
+          :align="item.align ?? 'center'"
+          v-if="!item.type && item.prop && item.name === item.prop"
+          v-slot="scope"
+        >
+          <slot :name="item.prop" :row="scope.row"></slot>
+        </el-table-column>
+      </template>
+      <!-- 插入表格最后一行之后的插槽 -->
+      <template #append>
+        <slot name="append"> </slot>
+      </template>
+      <!-- 表格无数据情况 -->
+      <template #empty>
+        <el-empty></el-empty>
+      </template>
         </el-table>
         <!-- 分页组件 -->
         <div style="margin-top: 20px;">

+ 1 - 1
src/hooks/useTable.ts

@@ -57,7 +57,7 @@ export const useTable = (
   const getTableList = async () => {
     const params: any = {
       page: state.pageable.pageNum,
-      page_z: state.pageable.pageSize,
+      pageSize: state.pageable.pageSize,
       ...initParam
     }
     requestApi(params).then(res => {

+ 3 - 3
src/plugins/login.ts

@@ -6,9 +6,9 @@
 export function loginsetItem(rlue:any,data:any){
     console.log('111',rlue,data)
     if (rlue.length==0) {
-        sessionStorage.setItem('infos',JSON.stringify({bzd_username:'',bzd_password:'',type:[]}))
+        sessionStorage.setItem('infos',JSON.stringify({username:'',password:'',type:[]}))
     }else{
-        sessionStorage.setItem('infos',JSON.stringify({bzd_username:data.bzd_username,bzd_password:data.bzd_password,type:rlue}))
+        sessionStorage.setItem('infos',JSON.stringify({username:data.username,password:data.password,type:rlue}))
     }
 }
 /**
@@ -18,6 +18,6 @@ export function loginsetItem(rlue:any,data:any){
  */
 export function JudgmentStatus(data:any){
     return Object.keys(data).every((item,index,arr)=>{ 
-        return data[item]!=undefined
+        return data[item]!=undefined && data[item]!=''
     })
  }

+ 1 - 1
src/plugins/setFun.ts

@@ -24,7 +24,7 @@ export function exitFun (key:any) {
                   center: true,
                 }
               ).then(() => {
-                sessionStorage.setItem('User_tokey','')
+                sessionStorage.setItem('token','')
                 router.replace('/')
                 })
                 .catch(() => {

+ 2 - 2
src/router/index.ts

@@ -23,7 +23,7 @@ router.afterEach((to, from) => {
 
 
 router.beforeEach((to, from, next) => {
-	const token = sessionStorage.getItem('User_tokey')
+	const token = sessionStorage.getItem('token')
 	// console.log('拦截',to)
 	const store = useStore()
 	if(to.path!='/'){
@@ -44,7 +44,7 @@ router.beforeEach((to, from, next) => {
 		}
 	}
 	if(to.name=='login'){//直接进入了登录,清除token
-		sessionStorage.setItem('User_tokey','')
+		sessionStorage.setItem('token','')
 	}
 })
 

+ 6 - 0
src/utils/diffhost/hostData.ts

@@ -0,0 +1,6 @@
+
+/**
+ * host1  8100端口
+ * host2  8110端口
+ */
+export const HostList = ['/login']

+ 10 - 0
src/utils/diffhost/index.ts

@@ -0,0 +1,10 @@
+
+import { HostList } from "./hostData";
+/**
+ * @description:请求配置
+ */
+export function diffhost(host:any) {
+    const b = HostList.find(item => item == host.url)
+    console.log('是否存在',b)
+    return b?true:false
+}

+ 13 - 7
src/utils/index.ts

@@ -3,6 +3,8 @@ import axios from 'axios'
 import type { AxiosInstance, AxiosError, AxiosRequestConfig, InternalAxiosRequestConfig, AxiosResponse } from 'axios'
 import { ElMessage, ElNotification } from 'element-plus'
 import { ResultEnum, ResultData, ContentType } from './interface/index'
+import {diffhost } from './diffhost/index'
+
 import router from '@/router/index'
 type LoadingType = {
 	close?: () => void
@@ -11,14 +13,14 @@ let loadingInstance: LoadingType = {}
 const config = {
 	// 默认地址请求地址,可在 .env.*** 文件中修改
 	// baseURL: process.env.NODE_ENV ?(import.meta.env.VITE_BZD_ERP_APP_API as string) : '' ,
-
-	baseURL: process.env.VUE_APP_BASE_URL,
+	baseURL:process.env.VUE_APP_BASE_URL,
 	// 设置超时时间(10s)
 	timeout: ResultEnum.TIMEOUT as number,
 	// 跨域时候允许携带凭证
 	withCredentials: false,
 	headers: {
-		'Content-Type': 'application/x-www-form-urlencoded',//x-www-form-urlencoded
+		'Content-Type': 'application/json',//x-www-form-urlencoded
+		// 'Authorization': 'Bearer '+sessionStorage.getItem('token')
 	},
 }
 class RequestHttp {
@@ -34,7 +36,11 @@ class RequestHttp {
 		 */
 
 		this.service.interceptors.request.use((config: InternalAxiosRequestConfig) => {
-			config.data.User_tokey = sessionStorage.getItem('User_tokey')
+			config.headers.Authorization = 'Bearer '+sessionStorage.getItem('token')
+			const host = diffhost(config)
+			const url1 = process.env.VUE_APP_BASE_URL1
+			const url2 = process.env.VUE_APP_BASE_URL2
+			config.baseURL = host?url1 +'api':url2 +'api'
 			return config
 		},
 			(err: any) => err
@@ -74,20 +80,20 @@ class RequestHttp {
 			}
 		)
 		function showStatus(params:any) {
-			switch (params.Code) {
+			switch (params.code) {
 				case 200:
 					break;
 				case ResultEnum.OVERDUE:
 					ElNotification.error({
 						title: '登陆失效',
-						message: params.Msg,
+						message: params.msg,
 						position: 'bottom-right'
 					})
 					localStorage.clear()
 					router.replace('/')
 					break;
 				default:
-					ElMessage.error(params.Msg)
+					ElMessage.error(params.msg)
 					break;
 			}
 		}

+ 2 - 2
src/views/login/index copy.vue

@@ -59,11 +59,11 @@ const submitForm = async () => {
         return
     }
     const froms = { ...data.form }
-    froms.bzd_password = md5(froms.bzd_password)
+    froms.bzd_password = md5(froms.)
     const result: any = await login(froms)
     console.log(result)
     if (result.Code == 200) {
-        sessionStorage.setItem('User_tokey', result.Data)
+        sessionStorage.setItem('token', result.Data)
         loginsetItem(data.type,data.form)
         router.push('/home')
     }

+ 6 - 6
src/views/login/index.vue

@@ -12,10 +12,10 @@
                 </div>
                 <el-form :model="data.form">
                     <el-form-item>
-                        <el-input v-model="data.form.bzd_username" prefix-icon="Key" />
+                        <el-input v-model="data.form.username" prefix-icon="Key" />
                     </el-form-item>
                     <el-form-item>
-                        <el-input v-model="data.form.bzd_password" prefix-icon="Unlock" type="password" show-password />
+                        <el-input v-model="data.form.password" prefix-icon="Unlock" type="password" show-password />
                     </el-form-item>
                     <el-form-item>
                         <el-checkbox-group v-model="data.type">
@@ -38,16 +38,16 @@ import loadingBtn from './loadingBtn.vue'
 
 const data = reactive({
     form: {
-        bzd_username: '',
-        bzd_password: '',
+        username: '',
+        password: '',
     },
     type: []
 })
 onMounted(() => {
     const info: any = sessionStorage.getItem('infos')
     if (JSON.parse(info) && JSON.parse(info).type) {
-        data.form.bzd_username = JSON.parse(info).bzd_username
-        data.form.bzd_password = JSON.parse(info).bzd_password
+        data.form.username = JSON.parse(info).username
+        data.form.password = JSON.parse(info).password
         data.type = JSON.parse(info).type
     }
 })

+ 4 - 3
src/views/login/loadingBtn.vue

@@ -47,10 +47,11 @@ const submitForm = async () => {
         return
     }
     const froms = { ...props.data.form }
-    froms.bzd_password = md5(froms.bzd_password)
+    // froms.password = md5(froms.password)
     const result: any = await login(froms)
-    if (result.Code == 200) {
-        sessionStorage.setItem('User_tokey', result.Data)
+    if (result.code == 200) {
+        console.log('登录',result)
+        sessionStorage.setItem('token', result.token)
         loginsetItem(props.data.type, props.data)
         ElNotification({
             title: '登录成功',

+ 25 - 7
src/views/storageInquire/index.vue

@@ -1,16 +1,18 @@
 <!--  -->
 <template>
-    <div class="">
+    <div class="storageInquire">
         <searchAdd isButtom="查询" istitle="疫苗批号" isPlaceholder="请输入疫苗批号" @event="eventFn">
-            <template #searchBtn>
-                <el-button type="primary">导出</el-button>
-                <el-button type="success">下载</el-button>
-            </template>
         </searchAdd>
-
         <bg istitle="库存统计列表">
+            <template #btn>
+                <el-button round :icon="Download">下载</el-button>
+                <el-button round :icon="Tickets">打印</el-button>
+            </template>
             <template #bg>
                 <tables :requestApi="CompanyTree" :columns="columns" :initParam="initParam">
+                    <template #T_State="{ row }">
+                        <div style="width: 10px;height: 10px;border-radius: 50%;background: red;"></div>
+                    </template>
                     <template #right="{ row }">
                         <el-button type="primary">编辑</el-button>
                         <el-button type="danger">删除</el-button>
@@ -26,6 +28,7 @@ import searchAdd from "@/components/searchAdd.vue";
 import { CompanyTree } from "@/api/index";
 import tables from "@/components/table.vue";
 import bg from '@/components/bg.vue'
+import {Download,Tickets} from '@element-plus/icons-vue'
 
 // 渲染表格
 const columns: any = [
@@ -38,7 +41,7 @@ const columns: any = [
     { prop: 'T_D_name', label: '生产日期', width: 150 },
     { prop: 'T_D_name', label: '疫苗批号', width: 150 },
     { prop: 'T_D_name', label: '疫苗效期', width: 150 },
-    { prop: 'T_D_name', label: '类型', width: 80 },
+    { prop: 'T_State', label: '类型', name: 'T_State', width: 80 },
     { prop: 'T_D_name', label: '收入数量', width: 150 },
     { prop: 'T_D_name', label: '发出数量', width: 150 },
     { prop: 'T_D_name', label: '结余数量', width: 150 },
@@ -63,4 +66,19 @@ const eventFn = (val: any) => {
 </script>
 <style lang="scss">
 /* @import url(); 引入css类 */
+.storageInquire {
+    &-main {
+        margin-bottom: var(--y-margin);
+        background: var(--y-card-background);
+        border-radius: var(--y-radius);
+        display: flex;
+        gap: 60px;
+        &-bg {
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+        }
+    }
+}
 </style>

+ 1 - 1
src/views/user/index.vue

@@ -31,7 +31,7 @@ const columns: any = [
   { prop: 'operation', label: '操作', fixed: 'right', 'min-width': 200 }
 ]
 //请求参数
-const initParam = { T_name: '' }
+const initParam = {name: '' }
 /**
  * 
  * @param val 子传值

+ 9 - 9
vue.config.js

@@ -13,15 +13,15 @@ module.exports = {
 	devServer: {
 		open: false,//打开浏览器
 		host: '0.0.0.0',
-		proxy: {
-			[process.env.VUE_APP_BASE_API]: {
-				target: process.env.VUE_APP_BASE_URL,
-				changeOrigin: true,
-				pathRewrite: {
-					'^/api': ''
-				}
-			}
-		}
+		// proxy: {
+		// 	[process.env.VUE_APP_BASE_API]: {
+		// 		target: process.env.VUE_APP_BASE_URL,
+		// 		changeOrigin: true,
+		// 		pathRewrite: {
+		// 			'^/api': ''
+		// 		}
+		// 	}
+		// }
 	},