Compare commits
4 Commits
259219053d
...
70dae6364b
Author | SHA1 | Date | |
---|---|---|---|
70dae6364b | |||
9da22a17b9 | |||
43f2c269b8 | |||
fd81dce26c |
@ -21,6 +21,7 @@
|
|||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
"axios": "^1.6.5",
|
"axios": "^1.6.5",
|
||||||
|
"dayjs": "^1.11.13",
|
||||||
"echarts": "^5.6.0",
|
"echarts": "^5.6.0",
|
||||||
"element-plus": "^2.7.2",
|
"element-plus": "^2.7.2",
|
||||||
"js-base64": "^3.7.6",
|
"js-base64": "^3.7.6",
|
||||||
|
@ -23,10 +23,10 @@ const inputSuppliesRoutes = [
|
|||||||
meta: { title: '物资管理', icon: 'Document' },
|
meta: { title: '物资管理', icon: 'Document' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/sub-government-affairs-service/material/pesticide',
|
path: '/sub-government-affairs-service/material/seed',
|
||||||
name: 'input-supplies-pesticide',
|
name: 'input-supplies-seed',
|
||||||
component: () => import('@/views/inputSuppliesManage/material/pesticide/index.vue'),
|
component: () => import('@/views/inputSuppliesManage/material/seed/index.vue'),
|
||||||
meta: { title: '农药管理', icon: 'Document' },
|
meta: { title: '种源管理', icon: 'Document' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-government-affairs-service/material/fertilizer',
|
path: '/sub-government-affairs-service/material/fertilizer',
|
||||||
@ -34,18 +34,18 @@ const inputSuppliesRoutes = [
|
|||||||
component: () => import('@/views/inputSuppliesManage/material/fertilizer/index.vue'),
|
component: () => import('@/views/inputSuppliesManage/material/fertilizer/index.vue'),
|
||||||
meta: { title: '肥料管理', icon: 'Document' },
|
meta: { title: '肥料管理', icon: 'Document' },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/sub-government-affairs-service/material/pesticide',
|
||||||
|
name: 'input-supplies-pesticide',
|
||||||
|
component: () => import('@/views/inputSuppliesManage/material/pesticide/index.vue'),
|
||||||
|
meta: { title: '农药管理', icon: 'Document' },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-government-affairs-service/material/ratPoison',
|
path: '/sub-government-affairs-service/material/ratPoison',
|
||||||
name: 'input-supplies-ratPoison',
|
name: 'input-supplies-ratPoison',
|
||||||
component: () => import('@/views/inputSuppliesManage/material/ratPoison/index.vue'),
|
component: () => import('@/views/inputSuppliesManage/material/ratPoison/index.vue'),
|
||||||
meta: { title: '兽药管理', icon: 'Document' },
|
meta: { title: '兽药管理', icon: 'Document' },
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: '/sub-government-affairs-service/material/seed',
|
|
||||||
name: 'input-supplies-seed',
|
|
||||||
component: () => import('@/views/inputSuppliesManage/material/seed/index.vue'),
|
|
||||||
meta: { title: '种源管理', icon: 'Document' },
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/sub-government-affairs-service/material/farmMachinery',
|
path: '/sub-government-affairs-service/material/farmMachinery',
|
||||||
name: 'input-supplies-farmMachinery',
|
name: 'input-supplies-farmMachinery',
|
||||||
@ -90,12 +90,12 @@ const inputSuppliesRoutes = [
|
|||||||
component: () => import('@/views/inputSuppliesManage/knowledgeManage/index.vue'),
|
component: () => import('@/views/inputSuppliesManage/knowledgeManage/index.vue'),
|
||||||
meta: { title: '知识库', icon: 'Document' },
|
meta: { title: '知识库', icon: 'Document' },
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// path: '/sub-government-affairs-service/patrolCaseManage',
|
path: '/sub-government-affairs-service/patrolCaseManage',
|
||||||
// name: 'patrolCaseManage',
|
name: 'patrolCaseManage',
|
||||||
// component: () => import('@/views/inputSuppliesManage/patrolCaseManage/index.vue'),
|
component: () => import('@/views/inputSuppliesManage/patrolCaseManage/index.vue'),
|
||||||
// meta: { title: '巡查与案件管理', icon: 'Document' },
|
meta: { title: '巡查与案件管理', icon: 'Document' },
|
||||||
// },
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog v-model="visible" title="Tips" width="500" draggable>
|
||||||
|
<avue-radio v-model="radio" :dic="radioDic" :button="true" class="top_radio"></avue-radio>
|
||||||
|
<br />
|
||||||
|
<avue-form v-model="data" :option="option"> </avue-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">Cancel</el-button>
|
||||||
|
<el-button type="primary" @click="visible = false"> Confirm </el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, defineExpose, reactive, onMounted } from 'vue';
|
||||||
|
import { customRules } from '@/config';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
|
const data = ref({});
|
||||||
|
const visible = ref(false);
|
||||||
|
const radio = ref('1');
|
||||||
|
const radioDic = reactive([
|
||||||
|
{ label: '执法消息', value: '1' },
|
||||||
|
{ label: '被询问人信息', value: '2' },
|
||||||
|
{ label: '询问内容', value: '3' },
|
||||||
|
]);
|
||||||
|
const option = reactive({
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '询问时间',
|
||||||
|
prop: 'time',
|
||||||
|
type: 'date',
|
||||||
|
format: 'YYYY-MM-DD HH:mm',
|
||||||
|
valueFormat: 'YYYY-MM-DD HH:mm',
|
||||||
|
span: 24,
|
||||||
|
disabled: true,
|
||||||
|
},
|
||||||
|
{ label: '询问地点', prop: 'address', span: 24 },
|
||||||
|
{ label: '询问机关', prop: 'unit', span: 24 },
|
||||||
|
{ label: '询问人', prop: 'person', span: 24 },
|
||||||
|
{ label: '记录人', prop: 'recordPerson', span: 24 },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
function handleRecordOpen(obj = {}) {
|
||||||
|
visible.value = Object.keys(obj).length ? true : false;
|
||||||
|
if (visible.value) {
|
||||||
|
data.value = Object.assign({}, obj);
|
||||||
|
option.column[0].value = dayjs().format('YYYY-MM-DD HH:mm');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
console.log('dayjs', dayjs().format('YYYY-MM-DD HH-mm'));
|
||||||
|
option.column[0].value = dayjs().format('YYYY-MM-DD HH:mm');
|
||||||
|
});
|
||||||
|
defineExpose({
|
||||||
|
handleRecordOpen,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.top_radio {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,19 +1,354 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="custom-page">巡查与案件</section>
|
<section class="custom-page">
|
||||||
|
<avue-crud ref="crudRef" v-model:search="searchCondition" v-model:page="pageData" :data="data" :option="option">
|
||||||
|
<template #menu="scpoe">
|
||||||
|
<custom-table-operate :actions="actions" :data="scpoe" />
|
||||||
|
</template>
|
||||||
|
<template #sceneProof-form="{ row, type }">
|
||||||
|
<section class="proof_content_">
|
||||||
|
<span v-if="type == 'add'">(照片、视频)</span>
|
||||||
|
<Attrs v-model:attrs="examineForm.proof" :type="type" :limit="5" :file-num="5" accept="image/*,video/*" />
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
<template #documentAttrs-form="{ row, type }">
|
||||||
|
<FileUpload v-model:attrs="examineForm.documentAttrs" :format="['rar', 'zip', 'doc', 'docx', 'pdf']" :type="type" />
|
||||||
|
</template>
|
||||||
|
<template #c2-form="{ type }">
|
||||||
|
<section class="record_content">
|
||||||
|
<FileUpload v-model:attrs="examineForm.documentAttrs" :type="type" />
|
||||||
|
<span>填写笔录</span>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
</avue-crud>
|
||||||
|
<RecordModal ref="recordModalRef" />
|
||||||
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue';
|
import { ref, reactive, onMounted, watch } from 'vue';
|
||||||
|
import { getRegion as GetRegion } from '@/apis';
|
||||||
|
import { GetEntityList as GetUserList } from '@/apis/system/user';
|
||||||
|
import { GetEntityList as GetDict } from '@/apis/system/dict';
|
||||||
|
import { CRUD_OPTIONS, pageData, customRules } from '@/config';
|
||||||
|
import { useUserStore } from '@/store/modules/user';
|
||||||
|
import FileUpload from '@/views/landManage/component/illegalHandle/common/FileUpload.vue';
|
||||||
|
import Attrs from '@/views/inputSuppliesManage/common/Attrs.vue';
|
||||||
|
import RecordModal from './common/RecordModal.vue';
|
||||||
|
|
||||||
|
const UserStore = useUserStore();
|
||||||
|
const { VITE_APP_BASE_API } = import.meta.env;
|
||||||
|
onMounted(() => {
|
||||||
|
getRegion();
|
||||||
|
getMumber();
|
||||||
|
});
|
||||||
/* --------------- data --------------- */
|
/* --------------- data --------------- */
|
||||||
// #region
|
// #region
|
||||||
|
const regionData = ref([]);
|
||||||
|
const memberData = ref([]);
|
||||||
|
const crudRef = ref(null);
|
||||||
|
const searchCondition = reactive({
|
||||||
|
keyword: '',
|
||||||
|
});
|
||||||
|
const data = ref([{}]);
|
||||||
|
const option = reactive({
|
||||||
|
...CRUD_OPTIONS,
|
||||||
|
selection: false,
|
||||||
|
dialogWidth: '50%',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '任务编号',
|
||||||
|
prop: 'text1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '任务名称',
|
||||||
|
prop: 'text2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '单位名称',
|
||||||
|
prop: 'text3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '统一社会信用代码',
|
||||||
|
prop: 'text4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '法定代表人',
|
||||||
|
prop: 'text5',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '联系电话',
|
||||||
|
prop: 'text6',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
viewDisplay: false,
|
||||||
|
label: '区域',
|
||||||
|
prop: 'text7',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
group: [
|
||||||
|
{
|
||||||
|
label: '任务信息',
|
||||||
|
prop: 'taskInfo',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '任务名称',
|
||||||
|
prop: 'taskName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '任务编号',
|
||||||
|
prop: 'taskNumber',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '任务巡查时限',
|
||||||
|
type: 'date',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd',
|
||||||
|
prop: 'taskTime',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '任务巡查类型',
|
||||||
|
prop: 'taskType',
|
||||||
|
type: 'select',
|
||||||
|
value: '1',
|
||||||
|
clearable: false,
|
||||||
|
dicData: [
|
||||||
|
{
|
||||||
|
label: '指定事项巡查',
|
||||||
|
value: '1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '定期巡查',
|
||||||
|
value: '2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '全面巡查',
|
||||||
|
value: '3',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '执法区域',
|
||||||
|
prop: 'region',
|
||||||
|
type: 'cascader',
|
||||||
|
dicData: [],
|
||||||
|
props: {
|
||||||
|
label: 'areaName',
|
||||||
|
value: 'areaCode',
|
||||||
|
children: 'areaChildVOS',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '小组成员',
|
||||||
|
prop: 'groupMember',
|
||||||
|
type: 'select',
|
||||||
|
dicData: [],
|
||||||
|
multiple: true,
|
||||||
|
props: {
|
||||||
|
label: 'nickName',
|
||||||
|
value: 'userId',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '执法对象',
|
||||||
|
prop: 'checkObject',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '单位名称',
|
||||||
|
prop: 'b1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '社会统一信用代码',
|
||||||
|
prop: 'b2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '法定代表人',
|
||||||
|
prop: 'b3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '联系电话',
|
||||||
|
prop: 'phone',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '所在区域',
|
||||||
|
prop: 'region1',
|
||||||
|
type: 'cascader',
|
||||||
|
dicData: [],
|
||||||
|
props: {
|
||||||
|
label: 'areaName',
|
||||||
|
value: 'areaCode',
|
||||||
|
children: 'areaChildVOS',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '详细地址',
|
||||||
|
prop: 'addressDetail',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '登记核查信息',
|
||||||
|
prop: 'registerCheckInfo',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '案情记录',
|
||||||
|
prop: 'record',
|
||||||
|
span: 24,
|
||||||
|
type: 'textarea',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '现场取证',
|
||||||
|
prop: 'sceneProof',
|
||||||
|
span: 24,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '执法文书',
|
||||||
|
prop: 'c1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '',
|
||||||
|
prop: 'documentAttrs',
|
||||||
|
span: 24,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '巡查笔录',
|
||||||
|
prop: 'c2',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '案件处理',
|
||||||
|
prop: '_caseResult',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
label: '案件处理结果',
|
||||||
|
prop: 'caseResult',
|
||||||
|
span: 24,
|
||||||
|
type: 'radio',
|
||||||
|
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
|
||||||
|
dicQuery: {
|
||||||
|
dictType: 'sys_law_case_result',
|
||||||
|
current: 1,
|
||||||
|
size: 9999,
|
||||||
|
},
|
||||||
|
dicHeaders: {
|
||||||
|
authorization: UserStore.token,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
label: 'dictLabel',
|
||||||
|
value: 'dictValue',
|
||||||
|
},
|
||||||
|
dicFormatter: (res) => res?.data?.records ?? [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const actions = reactive([
|
||||||
|
{
|
||||||
|
name: '详情',
|
||||||
|
icon: 'view',
|
||||||
|
event: ({ row }) => {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '编辑',
|
||||||
|
icon: 'edit',
|
||||||
|
event: ({ row }) => {
|
||||||
|
crudRef.value.rowEdit(row);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '登记核查信息',
|
||||||
|
icon: 'clock',
|
||||||
|
event: ({ row }) => {
|
||||||
|
option.group[0].editDisplay = false;
|
||||||
|
option.group[1].column.forEach((v) => (v.editDisabled = true));
|
||||||
|
crudRef.value.rowEdit(row);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'danger',
|
||||||
|
name: '删除',
|
||||||
|
icon: 'delete',
|
||||||
|
event: ({ row }) => {},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const examineForm = reactive({
|
||||||
|
caseId: '',
|
||||||
|
proof: [],
|
||||||
|
documentAttrs: [],
|
||||||
|
});
|
||||||
|
watch(
|
||||||
|
() => examineForm,
|
||||||
|
() => {
|
||||||
|
console.log('examineForm', examineForm.attrs);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const recordModalRef = ref(null);
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
/* --------------- methods --------------- */
|
/* --------------- methods --------------- */
|
||||||
// #region
|
// #region
|
||||||
|
async function getRegion() {
|
||||||
|
let res = await GetRegion();
|
||||||
|
if (res.code == 200) {
|
||||||
|
regionData.value = res?.data ?? [];
|
||||||
|
option.group[0].column[4].dicData = regionData.value;
|
||||||
|
option.group[1].column[4].dicData = regionData.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function getMumber() {
|
||||||
|
let res = await GetUserList({
|
||||||
|
current: 1,
|
||||||
|
size: 99999,
|
||||||
|
deptId: 105,
|
||||||
|
});
|
||||||
|
if (res.code == 200) {
|
||||||
|
memberData.value = res?.data?.records ?? [];
|
||||||
|
option.group[0].column[5].dicData = memberData.value;
|
||||||
|
console.log('regionData.value', memberData.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function getDictData(dicType) {
|
||||||
|
let res = await GetDict({
|
||||||
|
current: 1,
|
||||||
|
size: 99999,
|
||||||
|
dictType: dicType,
|
||||||
|
});
|
||||||
|
if (res.code == 200) {
|
||||||
|
option.group[0].column[3].dicData = res?.data?.records ?? [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// #endregion
|
// #endregion
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
<style lang="scss" scoped></style>
|
.record_content {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<el-upload ref="upload" :file-list="fileList" class="upload-demo" :limit="props.limit" :auto-upload="false" :on-change="fileChange">
|
<el-upload ref="upload" :file-list="fileList" class="upload-demo" :limit="props.limit" :auto-upload="false" :on-change="fileChange">
|
||||||
<el-button type="primary" :disabled="fileList.length == 5">点击上传</el-button>
|
<el-button type="primary" :disabled="fileList.length == 5">点击上传</el-button>
|
||||||
<template #tip>
|
<template #tip>
|
||||||
<div v-if="props.format.length" class="el-upload__tip">只能上传{{ props.format.join() }} 文件,且不超过20MB</div>
|
<div v-if="props.format.length && props.tips" class="el-upload__tip">只能上传{{ props.format.join() }} 文件,且不超过20MB</div>
|
||||||
</template>
|
</template>
|
||||||
<template #file="{ file }">
|
<template #file="{ file }">
|
||||||
<section class="file_line">
|
<section class="file_line">
|
||||||
@ -41,6 +41,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: 'view',
|
default: 'view',
|
||||||
},
|
},
|
||||||
|
tips: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
/* --------------- data --------------- */
|
/* --------------- data --------------- */
|
||||||
|
@ -422,16 +422,7 @@ const examineForm = reactive({
|
|||||||
proof: [],
|
proof: [],
|
||||||
attrs: [],
|
attrs: [],
|
||||||
});
|
});
|
||||||
watch(
|
|
||||||
() => examineForm,
|
|
||||||
() => {
|
|
||||||
console.log('examineForm', examineForm.attrs);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deep: true,
|
|
||||||
immediate: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
/* --------------- methods --------------- */
|
/* --------------- methods --------------- */
|
||||||
|
@ -24,6 +24,7 @@ const size = computed(() => SettingStore.themeConfig.globalComSize);
|
|||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import './styles/style.scss';
|
@import './styles/style.scss';
|
||||||
|
@import './styles/global.scss';
|
||||||
// @import '@/styles/iconfont.css';
|
// @import '@/styles/iconfont.css';
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -48,9 +48,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layout-header-menu">
|
<div class="layout-header-menu">
|
||||||
<el-menu ellipsis class="layout-header-bottom-menu" mode="horizontal">
|
<el-menu ellipsis class="layout-header-bottom-menu" mode="horizontal" :default-active="defaultActive">
|
||||||
<app-link v-for="(item, index) in meuns" :key="index" :to="item.path">
|
<app-link v-for="(item, index) in meuns" :key="index" :to="item.path">
|
||||||
<el-menu-item active-text-color="#25BF82">{{ item.label }}</el-menu-item>
|
<el-menu-item active-text-color="#25BF82" :index="item.key">{{ item.label }}</el-menu-item>
|
||||||
</app-link>
|
</app-link>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="layout-header">
|
<script setup name="layout-header">
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref, onMounted } from 'vue';
|
||||||
import { useSettingStore } from '@/store/modules/setting';
|
import { useSettingStore } from '@/store/modules/setting';
|
||||||
import { usePermissionStore } from '@/store/modules/permission';
|
import { usePermissionStore } from '@/store/modules/permission';
|
||||||
import { qrImg } from './base64img';
|
import { qrImg } from './base64img';
|
||||||
@ -75,6 +75,11 @@ const cacheRoutes = computed(() => PermissionStore.keepAliveRoutes);
|
|||||||
const isReload = computed(() => SettingStore.isReload);
|
const isReload = computed(() => SettingStore.isReload);
|
||||||
|
|
||||||
const isSubApp = computed(() => route.path.includes('sub'));
|
const isSubApp = computed(() => route.path.includes('sub'));
|
||||||
|
const defaultActive = ref('');
|
||||||
|
onMounted(() => {
|
||||||
|
defaultActive.value = route.meta.headerActive;
|
||||||
|
console.log('route', defaultActive.value);
|
||||||
|
});
|
||||||
|
|
||||||
const keyword = ref('');
|
const keyword = ref('');
|
||||||
|
|
||||||
@ -82,30 +87,37 @@ const meuns = ref([
|
|||||||
{
|
{
|
||||||
label: '智慧种植',
|
label: '智慧种植',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: '0',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '农事服务',
|
label: '农事服务',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/farmingService',
|
||||||
|
key: 'farmingService',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '涉农金融',
|
label: '涉农金融',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: '1',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '电商交易',
|
label: '电商交易',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: 'ecommerce',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '分拣包装',
|
label: '分拣包装',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: '3',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '仓储物流',
|
label: '仓储物流',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: '4',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '公共品牌运营',
|
label: '公共品牌运营',
|
||||||
path: '/sub-operation-service/ecommerce',
|
path: '/sub-operation-service/ecommerce',
|
||||||
|
key: '5',
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -138,6 +150,9 @@ div {
|
|||||||
.el-menu {
|
.el-menu {
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
|
.is-active {
|
||||||
|
color: $color-main !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.el-menu-item {
|
.el-menu-item {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
@ -148,7 +163,6 @@ div {
|
|||||||
}
|
}
|
||||||
.el-menu-item:active {
|
.el-menu-item:active {
|
||||||
background: none !important;
|
background: none !important;
|
||||||
color: $color-main;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,25 +50,25 @@ export const constantRoutes = [
|
|||||||
component: Views,
|
component: Views,
|
||||||
redirect: '/sub-operation-service/ecommerce-agricultural',
|
redirect: '/sub-operation-service/ecommerce-agricultural',
|
||||||
name: 'agriculturalParent',
|
name: 'agriculturalParent',
|
||||||
meta: { title: '农资交易' },
|
meta: { title: '农资交易', headerActive: 'ecommerce' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-agricultural',
|
path: '/sub-operation-service/ecommerce-agricultural',
|
||||||
component: () => import('@/views/ecommerce/index.vue'),
|
component: () => import('@/views/ecommerce/index.vue'),
|
||||||
name: 'agricultural',
|
name: 'agricultural',
|
||||||
meta: { title: '农资交易' },
|
meta: { title: '农资交易', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-agriculturalDetail',
|
path: '/sub-operation-service/ecommerce-agriculturalDetail',
|
||||||
component: () => import('@/views/ecommerce/agriculturalDetail.vue'),
|
component: () => import('@/views/ecommerce/agriculturalDetail.vue'),
|
||||||
name: 'agriculturalDetail',
|
name: 'agriculturalDetail',
|
||||||
meta: { title: '农资详情' },
|
meta: { title: '农资详情', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-sourceCodeDetail',
|
path: '/sub-operation-service/ecommerce-sourceCodeDetail',
|
||||||
component: () => import('@/views/ecommerce/sourceCodeDetail.vue'),
|
component: () => import('@/views/ecommerce/sourceCodeDetail.vue'),
|
||||||
name: 'sourceCodeDetail',
|
name: 'sourceCodeDetail',
|
||||||
meta: { title: '溯源详情' },
|
meta: { title: '溯源详情', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -77,19 +77,19 @@ export const constantRoutes = [
|
|||||||
component: Views,
|
component: Views,
|
||||||
redirect: '/sub-operation-service/ecommerce-purchaser',
|
redirect: '/sub-operation-service/ecommerce-purchaser',
|
||||||
name: 'purchaserParent',
|
name: 'purchaserParent',
|
||||||
meta: { title: '采购商服务' },
|
meta: { title: '采购商服务', headerActive: 'ecommerce' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-purchaser',
|
path: '/sub-operation-service/ecommerce-purchaser',
|
||||||
component: () => import('@/views/ecommerce/purchaser.vue'),
|
component: () => import('@/views/ecommerce/purchaser.vue'),
|
||||||
name: 'purchaser',
|
name: 'purchaser',
|
||||||
meta: { title: '采购商服务' },
|
meta: { title: '采购商服务', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-purchaserDetail',
|
path: '/sub-operation-service/ecommerce-purchaserDetail',
|
||||||
component: () => import('@/views/ecommerce/purchaserDetail.vue'),
|
component: () => import('@/views/ecommerce/purchaserDetail.vue'),
|
||||||
name: 'purchaserDetail',
|
name: 'purchaserDetail',
|
||||||
meta: { title: '采购详情' },
|
meta: { title: '采购详情', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -98,31 +98,38 @@ export const constantRoutes = [
|
|||||||
path: '/sub-operation-service/ecommerce-supplier',
|
path: '/sub-operation-service/ecommerce-supplier',
|
||||||
component: () => import('@/views/ecommerce/supplier.vue'),
|
component: () => import('@/views/ecommerce/supplier.vue'),
|
||||||
name: 'supplier',
|
name: 'supplier',
|
||||||
meta: { title: '供应商服务' },
|
meta: { title: '供应商服务', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-land',
|
path: '/sub-operation-service/ecommerce-land',
|
||||||
component: Views,
|
component: Views,
|
||||||
redirect: '/sub-operation-service/ecommerce-land',
|
redirect: '/sub-operation-service/ecommerce-land',
|
||||||
name: 'landParent',
|
name: 'landParent',
|
||||||
meta: { title: '土地交易' },
|
meta: { title: '土地交易', headerActive: 'ecommerce' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-land',
|
path: '/sub-operation-service/ecommerce-land',
|
||||||
component: () => import('@/views/ecommerce/land.vue'),
|
component: () => import('@/views/ecommerce/land.vue'),
|
||||||
name: 'land',
|
name: 'land',
|
||||||
meta: { title: '土地交易' },
|
meta: { title: '土地交易', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/ecommerce-landDetail',
|
path: '/sub-operation-service/ecommerce-landDetail',
|
||||||
component: () => import('@/views/ecommerce/landDetail.vue'),
|
component: () => import('@/views/ecommerce/landDetail.vue'),
|
||||||
name: 'landDetail',
|
name: 'landDetail',
|
||||||
meta: { title: '土地详情' },
|
meta: { title: '土地详情', headerActive: 'ecommerce' },
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/sub-operation-service/farmingService',
|
||||||
|
name: 'farmingService',
|
||||||
|
component: Layout,
|
||||||
|
// component: () => import('@/views/farmingService/index.vue'),
|
||||||
|
meta: { title: '农事服务', headerActive: 'farmingService' },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/sub-operation-service/userCenter',
|
path: '/sub-operation-service/userCenter',
|
||||||
name: 'userCentre',
|
name: 'userCentre',
|
||||||
|
19
sub-operation-service/src/views/farmingService/index.vue
Normal file
19
sub-operation-service/src/views/farmingService/index.vue
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<template>
|
||||||
|
<section>农事服务</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
/* --------------- data --------------- */
|
||||||
|
// #region
|
||||||
|
|
||||||
|
// #endregion
|
||||||
|
|
||||||
|
/* --------------- methods --------------- */
|
||||||
|
// #region
|
||||||
|
|
||||||
|
// #endregion
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
Loading…
x
Reference in New Issue
Block a user