feat(backend): 初始化中储粮后端后台代码与数据库脚本

这个提交包含在:
wikiboss
2026-10-15 10:27:34 +08:00
当前提交 2fd14ac036
共有 5554 个文件被更改,包括 1122036 次插入 和 0 次删除

查看文件

@@ -0,0 +1,159 @@
<link rel="stylesheet" href="__CDN__/assets/element-ui-2.15.14/css/index.css">
<style>
.el-form-item__label {
width: 120px !important;
}
.el-tag + .el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
input[type="file"] {
display: none !important;
}
.search-select .el-input--suffix .el-input__inner {
width: 130px;
}
body {
background: #fff !important;
}
.el-form-item__content {
margin-left: 120px !important;
}
[v-cloak] {
display: none !important;
}
.image {
width: 160px;
height: 140px;
border-radius: 10px;
margin-top: 10px;
}
</style>
<div id="vue" data-id="{$id}" v-cloak>
<el-form ref="form" :rules="rules" :model="formData" label-width="90px">
<el-form-item label="所属仓库:" prop="gid">
<el-select style="width: 330px;" v-model="formData.gid" filterable clearable
placeholder="请您选择所属仓库">
<el-option
v-for="item in granaryList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="记录年份:" prop="test_date">
<el-date-picker
style="width: 330px;"
value-format="yyyy"
v-model="formData.test_date"
type="year"
placeholder="请您选择记录年份">
</el-date-picker>
</el-form-item>
<el-form-item label="报告类型:" prop="title">
<el-radio-group size="small" v-model="formData.type">
<el-radio-button :label="1">满仓验收</el-radio-button>
<el-radio-button :label="2">春普</el-radio-button>
<el-radio-button :label="3">秋普</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="图册:" prop="content">
<el-upload
action="{:url('Upload/uploadImg')}"
:before-upload="beforeUpImage"
:on-success="upImageSuccess"
:on-remove="removeUpImage"
:file-list="fileList"
list-type="picture-card"
accept=".jpg,.jpeg,.png,.gif.JPG,.JPEG,.PNG,.GIF"
multiple
name="image"
>
<template slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt="file.name"
>
<div v-show="file.title" class="img-bg">{{file.title}}</div>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
>
<a style="color: #fff;" :href="file.url" target="_blank">
<i class="el-icon-zoom-in"></i>
</a>
</span>
<span
@click="handleShowAlbumDialog(file)"
class="el-upload-list__item-edit"
>
<i class="el-icon-edit"></i>
</span>
<span
class="el-upload-list__item-delete"
@click="removeUpImage(file)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</template>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-radio style="margin-right: 0;" v-model="formData.status" :label="1" border size="small">显示</el-radio>
<el-radio v-model="formData.status" :label="2" border size="small">隐藏</el-radio>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-s-promotion" type="primary" @click="submit" size="small">提交</el-button>
<el-button icon="el-icon-switch-button" plain @click="closeLayerDialog" size="small">关闭</el-button>
</el-form-item>
</el-form>
<!-- 图册标题弹框 -->
<div class="album-dialog">
<el-dialog
:close-on-click-modal="false"
title="设置标题"
:visible.sync="showAlbumDialog"
width="40%"
>
<div class="form">
<el-form ref="albumForm" :rules="albumRules" :model="albumFormData" label-width="90px">
<el-form-item label="标题:" prop="title">
<el-input style="width: 330px;" maxlength="50" placeholder="请您输入标题" show-word-limit v-model="albumFormData.title"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="showAlbumDialog = false" size="small" icon="el-icon-switch-button">取 消</el-button>
<el-button type="primary" size="small" @click="handleSaveTitle" icon="el-icon-position">提 交</el-button>
</span>
</el-dialog>
</div>
</div>
<script src="__CDN__/assets/element-ui-2.15.14/js/vue.js"></script>
<script src="__CDN__/assets/element-ui-2.15.14/js/index.js"></script>
<script src="__CDN__/assets/js/jquery-2.1.1.min.js"></script>

查看文件

@@ -0,0 +1,194 @@
<link rel="stylesheet" href="__CDN__/assets/element-ui-2.15.14/css/index.css">
<link rel="stylesheet" href="__CDN__/assets/css/vvv.css">
<style>
.el-form-item__label {
width: 120px !important;
}
.el-tag + .el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
input[type="file"] {
display: none !important;
}
.el-form-item__error {
margin-left: 30px;
}
.search-select .el-input--suffix .el-input__inner {
width: 130px;
}
.layui-layer-title {
background: #605ca8 !important;
}
</style>
<div id="vue" v-cloak>
<div class="screen-container">
<div class="screen-container-show">
<div class="screen-container-left display-flex">
<el-button size="small" @click="refreshPage" icon="el-icon-refresh" circle type="primary"></el-button>
<div class="datetime">
<el-date-picker
value-format="yyyy-MM-dd HH:mm:ss"
@change="handleClearDate('startTime')"
size="small"
v-model="search.startTime"
type="datetime"
placeholder="选择起始时间">
</el-date-picker>
</div>
<div class="datetime">
<el-date-picker
value-format="yyyy-MM-dd HH:mm:ss"
@change="handleClearDate('endTime')"
size="small"
v-model="search.endTime"
type="datetime"
placeholder="选择结束时间">
</el-date-picker>
</div>
</div>
<div class="screen-container-right display-flex">
<el-select @clear="handleClearSelect('gid')" clearable filterable size="small" style="width: 220px;"
v-model="search.gid" placeholder="所属仓库">
<el-option
v-for="item in granaryList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="search-select screen-container-right display-flex keyword">
<el-select size="small" v-model="search.status" filterable @clear="handleClearSelect('status')"
clearable placeholder="状态">
<el-option
v-for="item in statusOpt"
:key="item.id"
:label="item.value"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="screen-container-right display-flex">
<el-date-picker
@change="handleClearDate('test_date')"
size="small"
value-format="yyyy"
style="width: 220px;"
v-model="search.test_date"
type="year"
placeholder="记录年份">
</el-date-picker>
</div>
<div class="screen-container-right display-flex" style="position: relative; top: 2px;">
<el-radio-group @input="handelTypeRadio" size="small" v-model="search.type">
<el-radio-button :label="0">全部</el-radio-button>
<el-radio-button :label="1">满仓验收</el-radio-button>
<el-radio-button :label="2">春普</el-radio-button>
<el-radio-button :label="3">秋普</el-radio-button>
</el-radio-group>
</div>
<div class="screen-container-right display-flex">
<el-button @click="searchData" size="small" type="success" plain icon="el-icon-search">搜索
</el-button>
</div>
<div class="screen-container-right display-flex keyword">
<el-button @click="add" size="small" type="primary" plain icon="el-icon-plus">添加
</el-button>
<el-button icon="el-icon-delete" type="danger" @click="del" size="small" plain>删除</el-button>
</div>
</div>
</div>
<div class="vue-table background-white color-666">
<el-table :data="tableData" border highlight-current-row v-loading="listLoading"
@sort-change="sortChange" element-loading-text="拼命加载中..."
@selection-change="handleSelectionChange" style="width: 100%">
<el-table-column type="selection" width="60" align="center"></el-table-column>
<el-table-column width="120" label="操作"
show-overflow-tooltip
align="center">
<template scope="scope">
<el-dropdown trigger="click">
<el-button size="small" plain type="primary">
操作<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<el-button size="small" @click="edit(scope.row.id)" type="primary" icon="el-icon-edit">
编辑
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button size="small" @click="dell(scope.row.id)" type="danger" icon="el-icon-delete">
删除
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
<el-table-column prop="id" width="70" label="ID" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column prop="granary.name" label="所属仓库" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column prop="type" width="150" label="报告类型" show-overflow-tooltip
align="center">
<template scope="scope">
<span v-if="scope.row.type == 1">{{scope.row.test_date}}年满仓验收</span>
<span v-if="scope.row.type == 2">{{scope.row.test_date}}年春普</span>
<span v-if="scope.row.type == 3">{{scope.row.test_date}}年秋普</span>
</template>
</el-table-column>
<el-table-column prop="status" width="120" label="状态" show-overflow-tooltip
align="center">
<template scope="scope">
<el-switch
v-model="scope.row.status"
:active-value="1"
:inactive-value="2"
@change="statusChange(scope.row)"
>
</el-switch>
</template>
</el-table-column>
<el-table-column prop="create_time" width="160" :formatter="dateFormat" label="创建时间" show-overflow-tooltip
align="center"></el-table-column>
</el-table>
<div class="layout-pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalCount">
</el-pagination>
</div>
</div>
</div>
<script src="__CDN__/assets/element-ui-2.15.14/js/vue.js"></script>
<script src="__CDN__/assets/element-ui-2.15.14/js/index.js"></script>
<script src="__CDN__/assets/tool/libs/moment.js"></script>
<script src="__CDN__/assets/js/jquery-2.1.1.min.js"></script>
<script src="__CDN__/assets/layer/layer.js"></script>