From 0b1c5e6680c2986b54866b8dded31c4d9c497fdc Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 22 四月 2024 17:26:47 +0800 Subject: [PATCH] 消息通知页面 --- static/img/notice-3.svg | 1 static/img/notice-6.svg | 1 src/components/view/b4-sample-defects.vue | 201 +++++++++++++++ static/js/menu.js | 12 src/view/index.vue | 11 src/components/view/b2-standard.vue | 2 src/view/notice.vue | 320 ++++++++++++++++++++++++ static/img/notice-4.svg | 1 static/img/notice-2.svg | 1 static/img/notice-1.svg | 1 src/components/view/a5-laboratory-management.vue | 190 ++++++++++++++ src/components/view/a6-device-management.vue | 1 static/img/notice-5.svg | 1 src/components/view/index-index.vue | 3 14 files changed, 735 insertions(+), 11 deletions(-) diff --git a/src/components/view/a5-laboratory-management.vue b/src/components/view/a5-laboratory-management.vue index b37f44b..87acad9 100644 --- a/src/components/view/a5-laboratory-management.vue +++ b/src/components/view/a5-laboratory-management.vue @@ -34,6 +34,35 @@ height: calc(100% - 60px - 80px - 10px - 40px); padding: 20px; } + .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; + } + .el-upload:hover { + border-color: #409EFF; + } + .avatar-uploader-icon { + border: 1px dashed #d9d9d9; + font-size: 28px; + color: #8c939d; + width: 120px; + height: 120px; + line-height: 120px; + text-align: center; + } + .avatar { + width: 120px; + height: 120px; + display: block; + } + .btns{ + position: absolute; + right: 80px; + top: 13px; + } </style> <template> @@ -67,6 +96,52 @@ :upUrl="$api.laboratoryScope.upParameter" :delUrl="$api.laboratoryScope.delParameter" :componentData="componentData" :key="upIndex" /> </div> + <el-dialog title="鍗扮珷绠$悊" :visible.sync="fileVisible" width="60vw"> + <div class="btns"> + <el-button size="medium" type="primary" @click="openUpload">鏇存柊鍗扮珷</el-button> + </div> + <ValueTable ref="ValueTable0" :url="$api.laboratoryScope.selectItemParameter" + :componentData="fileComponentData" :key="upIndex" style="height: 400px;" /> + </el-dialog> + <el-dialog title="鏇存柊鍗扮珷" :visible.sync="upFileVisible" width="400px"> + <div class="search_thing" style="margin-bottom: 16px;"> + <div class="search_label" style="width:90px">鍗扮珷绫诲瀷锛�</div> + <div class="search_input"> + <el-cascader + v-model="dataForm.insProductIds" + :options="options" + :show-all-levels="false" + :props="props" + placeholder="璇烽�夋嫨" size="small" + style="width:100%" + collapse-tags + clearable></el-cascader> + </div> + </div> + <div class="search_thing"> + <div class="search_label" style="width:90px">鍗扮珷鍥剧墖锛�</div> + <div class="search_input"> + <el-upload + :action="action" + :headers="headers" + accept='image/jpg,image/jpeg,image/png' + :show-file-list="false" + :on-success="handleSuccess" + :on-change="beforeUpload" + ref="upload" + :on-error="onError" + :limit="1" + > + <img v-if="dataForm.pic1" :src="dataForm.pic1" > + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="upFileVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmConnect" :loading="loading">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> @@ -75,6 +150,16 @@ export default { components: { ValueTable + }, + computed: { + headers() { + return { + 'token': sessionStorage.getItem('token') + } + }, + action() { + return this.javaApi + this.$api.deviceScope.uploadFile + } }, data() { return { @@ -102,26 +187,92 @@ font: '鍒犻櫎', type: 'text', method: 'doDiy' + }, { + id: '', + font: '鍗扮珷绠$悊', + type: 'text', + method: 'fileManagement' }], tagField: {}, selectField: {}, requiredAdd: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber'], requiredUp: ['laboratoryName', 'laboratoryNumber', 'head', 'phoneNumber'] }, + fileComponentData: { + entity: { + orderBy: { + field: 'id', + order: 'asc' + } + }, + isPage:false, + init:false, + isIndex: true, + showSelect: false, + select: false, + do: [], + tagField: {}, + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, entityCopy: {}, upIndex: 0, addDia: true, - addPower: true + addPower: true, + fileVisible:true, + upFileVisible:false, + loading:false, + dataForm:{}, + props: { multiple: false,emitPath:false,}, + options:[ + { + value:0, + label:'瀹為獙瀹よ祫璐�', + children:[] + }, + { + value:1, + label:'棰濆绫诲瀷', + children:null + }, + ] } }, mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() + this.getCertificationDetail() }, methods: { refreshTable() { this.$refs['ValueTable'].selectList() }, + getCertificationDetail(){ + this.$axios.post(this.$api.certification.getCertificationDetail, { + page: { + current: -1, + size: -1, + }, + entity: { + name: null, + } + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + return + } + let arr = res.data.body.records.map(m=>{ + m.value = m.id; + m.label = m.name; + return m + }) + this.options[0].children = arr; + }) + }, refresh() { this.componentData.entity = this.HaveJson(this.entityCopy) this.upIndex++ @@ -129,6 +280,43 @@ openAdd() { this.$refs.ValueTable.openAddDia(this.$api.laboratoryScope.addParameter); }, + openUpload(){ + this.dataForm = {}; + this.upFileVisible = true; + }, + fileManagement(row){ + this.$refs['ValueTable0'].selectList() + this.fileVisible = true; + }, + confirmConnect(){ + if(!this.dataForm.pic1){ + this.$message.error('鏈笂浼犱紒涓氬嵃绔�'); + return + } + if(!this.dataForm.pic2){ + this.$message.error('鏈笂浼燙NAS鍗扮珷'); + return + } + this.loading = true; + }, + handleSuccess(response,){ + if (response.code == 200) { + this.dataForm.pic1 = response.data + } + }, + beforeUpload(file,type) { + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + return false; + } else { + return true; + } + }, + onError(err, file, fileList,type) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, // 鏉冮檺鍒嗛厤 getPower(radio) { let power = JSON.parse(sessionStorage.getItem('power')) diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue index 718be7c..a491558 100644 --- a/src/components/view/a6-device-management.vue +++ b/src/components/view/a6-device-management.vue @@ -615,7 +615,6 @@ n.value = n.id; return n }) - console.log(123,children) this.componentData.tagField.insProductIds.select = [...this.componentData.tagField.insProductIds.select,...children] this.componentData.selectField.insProductIds.select = [...this.componentData.selectField.insProductIds.select,...children] return m diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index ce94306..080f0f7 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -110,7 +110,7 @@ :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false" :default-expanded-keys="expandedKeys" - style="max-height: 500px;overflow-y: scroll;scrollbar-width: none;"> + style="height:calc(100% - 30px);overflow-y: scroll;scrollbar-width: none;"> <div class="custom-tree-node" slot-scope="{ node, data }"> <el-row style="width: 100%;"> <el-col :span="21" :class="{sort:node.level>3}"> diff --git a/src/components/view/b4-sample-defects.vue b/src/components/view/b4-sample-defects.vue new file mode 100644 index 0000000..da232f8 --- /dev/null +++ b/src/components/view/b4-sample-defects.vue @@ -0,0 +1,201 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + width: 350px; + display: flex; + align-items: center; + } + + .search_label { + width: 110px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 110px); + } + + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } + >>>.cell{ + display: flex; + align-items: center; + } + .page { + width: 100%; + height: 30px; + text-align: right; + margin-bottom: 10px; + } +</style> + +<template> + <div class="role_manage"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;">鏍峰搧缂洪櫡鎸囨暟</el-col> + </el-row> + </div> + <div class="search"> + <div class="search_thing"> + <div class="search_label">妫�楠岄」鐩細</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="entity.laboratoryName" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing"> + <div class="search_label">濮旀墭缂栧彿锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="entity.laboratoryNumber" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <el-table + :data="tableData" + style="width: 100%;margin-bottom: 10px;height: calc(100% - 40px);" + row-key="id" + v-loading="loading" + border + default-expand-all + :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> + <el-table-column + prop="date" + label="妫�楠岄」鐩�" + sortable + min-width="180"> + <template slot-scope="scope"> + <p> + <el-tag style="margin-right: 10px;height: 24px;border-radius: 10px;line-height: 24px;border: 0;" :type="scope.row.level==2?'success':''">{{ '0' + scope.row.level }}</el-tag> + <span>{{ scope.row.date }}</span> + </p> + </template> + </el-table-column> + <el-table-column + prop="name" + label="濮旀墭缂栧彿" + sortable + min-width="180"> + </el-table-column> + <el-table-column + prop="address" + label="妫�楠屼汉" + min-width="180"> + </el-table-column> + <el-table-column + prop="address" + label="妫�楠屾椂闂�" + min-width="180"> + </el-table-column> + </el-table> + <div class="page"> + <el-pagination @size-change="sizeChange" @current-change="currentChange" :current-page="page.current" + :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" + :total="total" > + </el-pagination> + </div> + </div> + </div> +</template> + +<script> + export default { + data() { + return { + entity: {}, + tableData: [{ + id: 3, + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�', + level:1, + children: [{ + id: 31, + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�', + level:2, + }, { + id: 32, + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�', + level:2, + }] + }], + page:{ + current:1, + size:20, + }, + total:0, + loading:false, + } + }, + mounted() { + + this.getPower() + }, + methods: { + refreshTable(){ + this.loading = true + }, + refresh(){ + this.page.size = 20; + this.page.current = 1; + this.refreshTable(); + }, + sizeChange(val){ + this.page.size = val + this.refreshTable() + }, + currentChange(val){ + this.page.current = val + this.refreshTable() + }, + // 鏉冮檺鍒嗛厤 + getPower(radio) { + let power = JSON.parse(sessionStorage.getItem('power')); + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'upParameter') { + up = true + } + if (power[i].menuMethod == 'delParameter') { + del = true + } + if (power[i].menuMethod == 'addParameter') { + add = true + } + } + if (!del) { + this.componentData.do.splice(1, 1) + } + if (!up) { + this.componentData.do.splice(0, 1) + } + this.addPower = add + } + } + } +</script> diff --git a/src/components/view/index-index.vue b/src/components/view/index-index.vue index 63d5312..c222aeb 100644 --- a/src/components/view/index-index.vue +++ b/src/components/view/index-index.vue @@ -182,6 +182,7 @@ } .left-2-item{ border-right: 1px solid #F1F1F1; + overflow: hidden !important; } .left-2-item:nth-last-child(1){ border-right: 0; @@ -255,7 +256,7 @@ </div> </div> </div> - <div class="left-2 card" v-loading="workLoading"> + <div class="left-2 card" v-loading="workLoading" style="overflow: hidden;"> <div class="left-2-item" v-for="(item,index) in workDay" :key="index"> <div class="left-item-title"> <span style="font-size: 18px;">{{ item }}</span> diff --git a/src/view/index.vue b/src/view/index.vue index 5bf3b0c..77afae7 100644 --- a/src/view/index.vue +++ b/src/view/index.vue @@ -295,6 +295,9 @@ </div> <div class="label">LIMS瀹為獙瀹ょ鐞嗙郴缁�</div> <div class="user"> + <el-badge is-dot style="cursor: pointer;margin-right: 10px;"> + <i class="el-icon-bell" style="font-size: 20px;" @click="openNotice"></i> + </el-badge> <el-dropdown trigger="click" @command="handleCommand"> <el-avatar :size="26">{{ userName.substring(0, 1) }}</el-avatar> <span>{{ userName }}</span> @@ -363,6 +366,7 @@ </el-card> </el-col> </div> + <!-- 淇敼瀵嗙爜 --> <el-dialog title="淇敼瀵嗙爜" :visible.sync="editVisible" @@ -389,6 +393,7 @@ <el-button type="primary" @click="handleEdit">纭� 瀹�</el-button> </span> </el-dialog> + <notice ref="notice" /> </div> </template> @@ -405,9 +410,10 @@ }); import menus from '../../static/js/menu.js' import nullFace from '../view/404.vue' + import notice from './notice.vue' comObj['nullFace'] = nullFace export default { - components: comObj, + components: {...comObj,notice}, data() { return { userName: "value", @@ -607,6 +613,9 @@ handleClose(){ this.editVisible = false this.query = {} + }, + openNotice(){ + this.$refs.notice.open() } } }; diff --git a/src/view/notice.vue b/src/view/notice.vue new file mode 100644 index 0000000..b8657b1 --- /dev/null +++ b/src/view/notice.vue @@ -0,0 +1,320 @@ +<template> +<div class="notice-page"> + <el-drawer + title="娑堟伅閫氱煡" + :visible.sync="drawer" + :direction="direction" + :before-close="handleClose" style="height: 100vh;"> + <div class="head"> + <div class="head-search"> + <label>娑堟伅绫诲瀷锛�</label> + <el-select v-model="type" placeholder="璇烽�夋嫨" style="width: 150px;" size="small"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </div> + <el-dropdown style="margin-right: 20px;"> + <span class="el-dropdown-link"> + <span class="more">···</span> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item> + <i class="el-icon-check"></i> + <span>鏍囪鎵�鏈夋秷鎭负宸茶</span> + </el-dropdown-item> + <el-dropdown-item> + <i class="el-icon-delete"></i> + <span>鍒犻櫎鎵�鏈夊凡璇绘秷鎭�</span> + </el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </div> + <div class="notice-content"> + <div class="notice-content-item" v-for="(m,i) in list" :key="i"> + <div class="btns"> + <el-dropdown style="margin-right: 20px;" trigger="click"> + <span class="el-dropdown-link"> + <span class="more" style="line-height: 26px;display: inline-block;">···</span> + </span> + <el-dropdown-menu slot="dropdown"> + <el-dropdown-item> + 鎷掔粷 + </el-dropdown-item> + <el-dropdown-item> + 鎺ユ敹 + </el-dropdown-item> + <el-dropdown-item> + 閫氳繃 + </el-dropdown-item> + <el-dropdown-item> + 涓嶉�氳繃 + </el-dropdown-item> + <el-dropdown-item> + 鎵瑰噯 + </el-dropdown-item> + <el-dropdown-item> + 涓嶆壒鍑� + </el-dropdown-item> + <el-dropdown-item> + 鏇村 + </el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + <i class="el-icon-close" style="cursor: pointer;"></i> + </div> + <div class="content"> + <img :src="`../../static/img/notice-${m.type}.svg`" alt="" style="width: 50px;margin-right: 18px;"> + <div class="content-info"> + <h4 style="font-weight: normal;margin-bottom: 6px;display: flex;align-items: center;justify-content: space-between;"> + <span>{{ m.title }}</span> + <span class="time" style="color: #999999;font-size: 14px;">{{ m.time }}</span> + </h4> + <p style="color: #999999;font-size: 14px;margin-bottom: 8px;" class="ellipsis-multiline">{{ m.content }}</p> + <el-tag type="danger" v-if="m.status==0">宸叉嫆缁�</el-tag> + <el-tag type="success" v-if="m.status==1">宸叉帴鏀�</el-tag> + <p style="font-size: 14px;color: #999999;display: flex;align-items: center;justify-content: space-between;"> + <span>鍙戦�佷汉锛歿{m.sendUser}}</span> + <span>鏀朵欢浜猴細{{ m.getUser }}</span> + </p> + </div> + </div> + <div class="new-notice" v-if="m.isRead==0"> + <span>new</span> + </div> + </div> + </div> + </el-drawer> +</div> +</template> + +<script> +export default { + data(){ + return{ + drawer:true, + direction:'rtl', + options:[], + type:'0', + list:[ + { + type:1, + title:'鏍囬', + content:'鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:0,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:2, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:3, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:0,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:4, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:0,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:5, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:0,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:6, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:6, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:6, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:6, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + { + type:6, + title:'鏍囬', + content:'鍐呭', + time:'2019-08-07 15:34:26', + status:1,//娑堟伅鐘舵�侊細鎷掔粷銆佹帴鏀� + isRead:1,//鏄惁宸茶 + sendUser:'灏忔槑', + getUser:'鏉庡崕', + }, + ] + } + }, + mounted(){ + this.getTypeDicts(); + }, + methods:{ + open(){ + this.drawer = true; + }, + handleClose(){ + this.drawer = false; + }, + getTypeDicts() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "娑堟伅绫诲瀷" + }).then(res => { + let data = res.data + this.options = data; + }) + }, + } +} +</script> + +<style scoped> +>>>.el-drawer__header::before { + content: ""; + display: inline-block; + width: 4px; + height: 30.24px; + background: #3A7BFA; + border-radius: 10px; + margin-left: 32px; + margin-right: 8.5px; +} + +>>>.el-drawer__header { + color: #303133; +} +>>>.el-drawer__body{ + box-sizing: border-box; + padding: 0 16px; + height: calc(100vh - 82px); + overflow: hidden; +} +.head{ + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} +.more{ + font-size: 20px; + color: grey !important; + cursor: pointer; +} +.notice-content{ + height: calc(100% - 60px); + overflow-y: auto; +} +.notice-content-item{ + position: relative; + width: 100%; + padding: 16px; + border-radius: 8px; + box-sizing: border-box; + border: 1px solid #EEEEEE; + margin-bottom: 10px; + overflow: hidden; +} +.btns{ + position: absolute; + right: 20px; + top: 4px; +} +.notice-content-item .btns{ + opacity: 0; +} +.time{ + opacity: 1; +} +.notice-content-item:hover{ + box-shadow: 4px 4px 8px 0px rgba(51,51,51,0.04); +} +.notice-content-item:hover .btns{ + opacity: 1; +} +.notice-content-item:hover .time{ + opacity: 0; +} +.content{ + display: flex; + align-items: center; +} +.content-info{ + flex: 1; +} +.new-notice{ + position: absolute; + left: 0; + top: 0; + width: 0; + height: 0; + border-top: 14px solid red; + border-right: 14px solid transparent; + border-bottom: 14px solid transparent; + border-left: 14px solid red; +} +.new-notice span{ + position: absolute; + font-size: 12px; + top: -13px; + left: -17px; + color: #fff; + transform: rotate(-45deg) scale(0.8); +} +</style> diff --git a/static/img/notice-1.svg b/static/img/notice-1.svg new file mode 100644 index 0000000..2998671 --- /dev/null +++ b/static/img/notice-1.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774541141" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2168" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M533.333333 533.333333h117.333334a32 32 0 1 1 0 64h-149.333334a31.914667 31.914667 0 0 1-32-32v-192a32 32 0 1 1 64 0v160zM85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 810.666667a298.666667 298.666667 0 1 0 0-597.333334 298.666667 298.666667 0 0 0 0 597.333334z" fill="#F57818" p-id="2169"></path></svg> \ No newline at end of file diff --git a/static/img/notice-2.svg b/static/img/notice-2.svg new file mode 100644 index 0000000..ac86ffb --- /dev/null +++ b/static/img/notice-2.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774580175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2343" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 213.333333c-68.778667-0.682667-278.144 112.426667-277.333333 149.248 3.242667 296.96 225.322667 447.744 277.333333 448.085334 52.010667 0.341333 278.613333-148.565333 277.333333-448-0.256-37.418667-208.554667-148.650667-277.333333-149.333334z m164.394667 196.010667c12.032 12.458667 12.032 32.981333-0.725334 44.672l-155.264 160.426667a30.506667 30.506667 0 0 1-22.656 9.557333 32.085333 32.085333 0 0 1-23.381333-9.514667l-91.477333-93.781333c-12.757333-13.226667-12.757333-33.706667 0-46.890667 12.8-13.226667 33.322667-13.226667 46.08 0l70.186666 72.533334 132.565334-137.002667a31.36 31.36 0 0 1 44.672 0z" fill="#15B4D4" p-id="2344"></path></svg> \ No newline at end of file diff --git a/static/img/notice-3.svg b/static/img/notice-3.svg new file mode 100644 index 0000000..415db6a --- /dev/null +++ b/static/img/notice-3.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774491978" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1483" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M554.666667 554.666667v-92.586667a128.042667 128.042667 0 1 0-85.333334 0V554.666667H267.946667a42.666667 42.666667 0 0 0-41.386667 53.034666l21.333333 85.333334a42.666667 42.666667 0 0 0 41.386667 32.298666h445.44a42.666667 42.666667 0 0 0 41.386667-32.298666l21.333333-85.333334A42.666667 42.666667 0 0 0 756.053333 554.666667H554.666667zM85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m234.666667 768a21.333333 21.333333 0 1 0 0 42.666667h384a21.333333 21.333333 0 1 0 0-42.666667h-384z" fill="#FAAB0C" p-id="1484"></path></svg> \ No newline at end of file diff --git a/static/img/notice-4.svg b/static/img/notice-4.svg new file mode 100644 index 0000000..dcfcf93 --- /dev/null +++ b/static/img/notice-4.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774535390" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1993" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 810.666667a298.666667 298.666667 0 1 0 0-597.333334 298.666667 298.666667 0 0 0 0 597.333334z m-170.666667-256a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z" fill="#B162D9" p-id="1994"></path></svg> \ No newline at end of file diff --git a/static/img/notice-5.svg b/static/img/notice-5.svg new file mode 100644 index 0000000..39c8f84 --- /dev/null +++ b/static/img/notice-5.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774524927" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1786" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m496.426667 257.792c-31.317333-59.306667-108.202667-59.306667-139.52 0L224.469333 672.853333C193.152 733.738667 231.594667 810.666667 294.229333 810.666667h435.541334c62.634667 0 101.12-76.928 69.76-137.813334l-217.770667-415.061333zM512 725.333333a42.666667 42.666667 0 1 1 0-85.333333 42.666667 42.666667 0 0 1 0 85.333333z m-0.938667-341.333333a40.874667 40.874667 0 0 1 40.746667 44.16l-11.562667 143.530667c-1.194667 14.506667-13.269333 25.642667-27.818666 25.642666a28.245333 28.245333 0 0 1-28.074667-25.6l-13.44-143.616A40.362667 40.362667 0 0 1 511.061333 384z" fill="#EA493D" p-id="1787"></path></svg> \ No newline at end of file diff --git a/static/img/notice-6.svg b/static/img/notice-6.svg new file mode 100644 index 0000000..cb6d3b9 --- /dev/null +++ b/static/img/notice-6.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774611710" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3358" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m227.541334 213.333333C257.92 213.333333 213.333333 249.002667 213.333333 292.992v438.016C213.333333 774.997333 257.92 810.666667 312.874667 810.666667h398.250666C766.08 810.666667 810.666667 774.997333 810.666667 731.008V292.992C810.666667 249.002667 766.08 213.333333 711.125333 213.333333H312.874667z m149.333333 85.333334a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m-128 220.842666h355.584c19.626667 0 35.541333 14.336 35.541333 32 0 17.706667-15.914667 32-35.541333 32H334.208c-19.626667 0-35.541333-14.293333-35.541333-32 0-17.664 15.914667-32 35.541333-32z m0 130.56H512c19.626667 0 35.541333 14.293333 35.541333 32 0 17.664-15.914667 32-35.541333 32H334.208c-19.626667 0-35.541333-14.336-35.541333-32 0-17.706667 15.914667-32 35.541333-32z" fill="#F57818" p-id="3359"></path></svg> \ No newline at end of file diff --git a/static/js/menu.js b/static/js/menu.js index 4f17007..afe46e8 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -111,16 +111,16 @@ v: "姣忔棩涓氬姟缁熻", i: "font icon-erjidaohang", u: "b4-daily-business-statistics", - p: "" + p: "businessStatisticsByDay" }, { v: "妫�娴嬮」鐩粺璁�", i: "font icon-erjidaohang", u: "b4-inspection-item-statistics", - p: "" + p: "testProductByDay" }, { v: "鏍峰搧缂洪櫡鎸囨暟", i: "font icon-erjidaohang", - u: "", + u: "b4-sample-defects", p: "" }, { v: "鑰楁潗缁熻", @@ -234,7 +234,7 @@ i: "font icon-erjidaohang", u: "a5-laboratory-qualifications", g: "C鑳藉姏鑼冨洿鍜岃祫璐�", - p: "" + p: "getCertificationDetail" }, { v: "鑳藉姏鑼冨洿", i: "font icon-erjidaohang", @@ -281,13 +281,13 @@ i: "font icon-erjidaohang", u: "a6-personnel-overview", g: "6.2 浜哄憳", - p: "" + p: "selectUserList" }, { v: "浜哄憳鏄庣粏", i: "font icon-erjidaohang", u: "a6-personnel-detail", g: "6.2 浜哄憳", - p: "" + p: "selectUserList" }, { v: "浜哄憳鍩硅", i: "font icon-erjidaohang", -- Gitblit v1.9.3