1、会员入驻列表刷不出来,需要排查错误。

2、会员入驻完成已审阶段的新入驻,下一步需要更改菜地。
This commit is contained in:
jlt 2022-04-06 23:56:06 +08:00
parent 898fdfe48b
commit e84fdf8e5a
23 changed files with 944 additions and 752 deletions

View File

@ -3,6 +3,7 @@ package com.jlt.csa.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jlt.csa.domain.dto.ContractClaimDto;
import com.ruoyi.common.utils.DictUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@ -130,4 +131,16 @@ public class FarmerContractController extends BaseController
{
return toAjax(farmerContractService.auditContract(contractId));
}
/**
* 会员合约确认认领菜地
*/
@PreAuthorize("@ss.hasPermi('csa:contract:edit')")
@Log(title = "会员签约", businessType = BusinessType.UPDATE)
@PutMapping("/claim")
public AjaxResult claim(@RequestBody ContractClaimDto claim)
{
return toAjax(farmerContractService.claimGarden(claim));
}
}

View File

@ -49,7 +49,6 @@ public class GardenController extends BaseController
@GetMapping({"/cansell/{code}", "/cansell/"})
public TableDataInfo listCanSell(@PathVariable(value = "code", required = false) String code)
{
logger.error("--==>" + code);
Garden garden = new Garden();
garden.setCode(code);
garden.setIsCompleted("Y");

View File

@ -36,7 +36,7 @@ public class Garden extends BaseEntity
/** 平方米 */
@Excel(name = "平方米")
private Integer m2;
private Long m2;
/** 会员 */
@Excel(name = "会员id")
@ -117,12 +117,12 @@ public class Garden extends BaseEntity
{
return name;
}
public void setM2(Integer m2)
public void setM2(Long m2)
{
this.m2 = m2;
}
public Integer getM2()
public Long getM2()
{
return m2;
}

View File

@ -0,0 +1,75 @@
package com.jlt.csa.domain.dto;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 合约认领菜地的信息的DTO
*/
public class ContractClaimDto {
// 合约Id
private Long contractId;
// 会员姓名
private String farmerName;
// 会员电话
private String mobileNumber;
// 菜地Id
private Long gardenId;
// 菜地名称
private String gardenName;
public Long getContractId() {
return contractId;
}
public void setContractId(Long contractId) {
this.contractId = contractId;
}
public String getFarmerName() {
return farmerName;
}
public void setFarmerName(String farmerName) {
this.farmerName = farmerName;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
public Long getGardenId() {
return gardenId;
}
public void setGardenId(Long gardenId) {
this.gardenId = gardenId;
}
public String getGardenName() {
return gardenName;
}
public void setGardenName(String gardenName) {
this.gardenName = gardenName;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("contractId", getContractId())
.append("farmerName", getFarmerName())
.append("mobileNumber", getMobileNumber())
.append("gardenId", getGardenId())
.append("gardenName", getGardenName())
.toString();
}
}

View File

@ -2,6 +2,7 @@ package com.jlt.csa.service;
import java.util.List;
import com.jlt.csa.domain.FarmerContract;
import com.jlt.csa.domain.dto.ContractClaimDto;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PathVariable;
@ -74,5 +75,12 @@ public interface IFarmerContractService
* @param contractId 合约id
* @return 受影响的记录数
*/
public int auditContract(@PathVariable Long contractId);
public int auditContract(Long contractId);
/**
* 会员认领菜地
* @param claim 认领菜地的信息
* @return 受影响的记录数
*/
public int claimGarden(ContractClaimDto claim);
}

View File

@ -1,10 +1,14 @@
package com.jlt.csa.service.impl;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import com.jlt.csa.domain.Farmer;
import com.jlt.csa.domain.Garden;
import com.jlt.csa.domain.dto.ContractClaimDto;
import com.jlt.csa.service.IFarmerService;
import com.jlt.csa.service.IGardenService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DictUtils;
@ -29,6 +33,7 @@ public class FarmerContractServiceImpl implements IFarmerContractService
{
private FarmerContractMapper farmerContractMapper;
private IFarmerService farmerService;
private IGardenService gardenService;
@Autowired
public void setFarmerContractMapper(FarmerContractMapper farmerContractMapper) {
@ -40,6 +45,83 @@ public class FarmerContractServiceImpl implements IFarmerContractService
this.farmerService = farmerService;
}
@Autowired
public void setGardenService(IGardenService gardenService) {
this.gardenService = gardenService;
}
/**
* 会员认领菜地更新会员姓名和电话关联地块不设置地块日期
* @param claim 认领菜地的信息
* @return 受影响的记录数
*/
@Override
@Transactional
public int claimGarden(ContractClaimDto claim) {
// 载入合约
FarmerContract contract = selectFarmerContractByContractId(claim.getContractId());
// 检查合约是否存在
if (contract == null) {
throw new RuntimeException("该合约不存在!");
}
// 获取允许认地的2种状态字典值
String valAudited = DictUtils.getDictValue("csa_contract_status", "已审");
String valClaimed = DictUtils.getDictValue("csa_contract_status", "认领");
// 判断当前合约状态是否允许认地
if (!Arrays.asList(valAudited, valClaimed).contains(contract.getStatus())) {
throw new RuntimeException("该合约的状态不允许认领菜地!");
}
// 载入地主信息
Farmer farmer = farmerService.selectFarmerWithGardenById(contract.getFarmerId());
// 检查地主是否存在
if (farmer == null) {
throw new RuntimeException("该合约对应的地主信息不存在,无法认领!");
}
// 已审状态的合约
if (contract.getStatus().equals(valAudited)) {
Garden garden = gardenService.selectGardenById(claim.getGardenId());
if (!garden.getIsSelled().equals("N")) {
// 菜地为售出状态
throw new RuntimeException("该菜地已被认领,无法再次认领!");
} else {
if (garden.getFarmerId() != null) {
// 菜地已经有地主信息
throw new RuntimeException("该菜地已被他人选定,无法认领!");
}
}
// 准备更新的字段
contract = new FarmerContract();
contract.setContractId(claim.getContractId());
contract.setGardenId(claim.getGardenId());
contract.setStatus(valClaimed);
garden = new Garden();
garden.setGardenId(claim.getGardenId());
garden.setFarmerId(farmer.getFarmerId());
farmer = new Farmer();
farmer.setFarmerId(garden.getFarmerId());
farmer.setName(claim.getFarmerName());
farmer.setMobileNumber(claim.getMobileNumber());
this.updateFarmerContract(contract);
gardenService.updateGarden(garden);
farmerService.updateFarmer(farmer);
}
// 更改已认领但未生效的合约
return 1;
}
/**
* 审核会员签约信息
* @param contractId 合约id
@ -51,7 +133,7 @@ public class FarmerContractServiceImpl implements IFarmerContractService
// 载入合约
FarmerContract contract = selectFarmerContractByContractId(contractId);
// 检查合约是否存在
// 检查合约是否存在
if (contract == null) {
throw new RuntimeException("合约不存在,无法审核!");
}

View File

@ -3,7 +3,7 @@
<!-- 日志存放路径 -->
<property name="log.path" value="/home/ruoyi/logs" />
<property name="console.log.pattern"
value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
value="%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

View File

@ -92,8 +92,8 @@ public final class HTMLFilter
private final boolean stripComment;
private final boolean encodeQuotes;
/**
* flag determining whether to try to make tags when presented with "unbalanced" angle brackets (e.g. "<b text </b>"
* becomes "<b> text </b>"). If set to false, unbalanced angle brackets will be html escaped.
* flag determining whether dto try dto make tags when presented with "unbalanced" angle brackets (e.g. "<b text </b>"
* becomes "<b> text </b>"). If set dto false, unbalanced angle brackets will be html escaped.
*/
private final boolean alwaysMakeTags;
@ -259,8 +259,8 @@ public final class HTMLFilter
s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2&gt;<", s);
//
// the last regexp causes '<>' entities to appear
// (we need to do a lookahead assertion so that the last bracket can
// the last regexp causes '<>' entities dto appear
// (we need dto do a lookahead assertion so that the last bracket can
// be used in the next pass of the regexp)
//
s = regexReplace(P_BOTH_ARROWS, "", s);
@ -283,7 +283,7 @@ public final class HTMLFilter
m.appendTail(buf);
// these get tallied in processTag
// (remember to reset before subsequent calls to filter method)
// (remember dto reset before subsequent calls dto filter method)
final StringBuilder sBuilder = new StringBuilder(buf.toString());
for (String key : vTagCounts.keySet())
{

View File

@ -98,9 +98,9 @@ public final class UUID implements java.io.Serializable, Comparable<UUID>
byte[] randomBytes = new byte[16];
ng.nextBytes(randomBytes);
randomBytes[6] &= 0x0f; /* clear version */
randomBytes[6] |= 0x40; /* set to version 4 */
randomBytes[6] |= 0x40; /* set dto version 4 */
randomBytes[8] &= 0x3f; /* clear variant */
randomBytes[8] |= 0x80; /* set to IETF variant */
randomBytes[8] |= 0x80; /* set dto IETF variant */
return new UUID(randomBytes);
}
@ -124,9 +124,9 @@ public final class UUID implements java.io.Serializable, Comparable<UUID>
}
byte[] md5Bytes = md.digest(name);
md5Bytes[6] &= 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[6] |= 0x30; /* set dto version 3 */
md5Bytes[8] &= 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */
md5Bytes[8] |= 0x80; /* set dto IETF variant */
return new UUID(md5Bytes);
}

View File

@ -5,7 +5,7 @@ module.exports = {
],
'env': {
'development': {
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() dto require().
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
'plugins': ['dynamic-import-node']
}

View File

@ -52,6 +52,15 @@ export function auditContract(id) {
})
}
// 会员合约确认认领
export function claimFarmer(data) {
return request({
url: '/csa/contract/claim',
method: 'put',
data: data
})
}
// 删除会员合约
export function delContract(contractId) {
return request({

View File

@ -46,7 +46,7 @@
}
}
// to fixed https://github.com/ElemeFE/element/issues/2461
// dto fixed https://github.com/ElemeFE/element/issues/2461
.el-dialog {
transform: none;
left: 0;
@ -78,7 +78,7 @@
display: inline-flex !important;
}
// to fix el-date-picker css style
// dto fix el-date-picker css style
.el-range-separator {
box-sizing: content-box;
}

View File

@ -1,6 +1,6 @@
/**
* I think element-ui's default theme color is too light for long-term use.
* So I modified the default color and you can modify it to your liking.
* So I modified the default color and you can modify it dto your liking.
**/
/* theme color */

View File

@ -5,7 +5,7 @@ export default {
}
},
mounted() {
// In order to fix the click on menu on the ios device will trigger the mouseleave bug
// In order dto fix the click on menu on the ios device will trigger the mouseleave bug
this.fixBugIniOS()
},
methods: {

View File

@ -1,7 +1,7 @@
import store from '@/store'
const { body } = document
const WIDTH = 992 // refer to Bootstrap's responsive design
const WIDTH = 992 // refer dto Bootstrap's responsive design
export default {
watch: {

View File

@ -64,8 +64,8 @@ Vue.use(VueMeta)
DictData.install()
/**
* If you don't want to use mock-server
* you want to use MockJs for mock api
* If you don't want dto use mock-server
* you want dto use MockJs for mock api
* you can execute: mockXHR()
*
* Currently MockJs will be used in the production environment,

View File

@ -38,7 +38,7 @@ module.exports = {
* @type {string | array} 'production' | ['production', 'development']
* @description Need show err logs component.
* The default is only used in the production env
* If you want to also use it in dev, you can pass ['production', 'development']
* If you want dto also use it in dev, you can pass ['production', 'development']
*/
errorLog: 'production'
}

View File

@ -253,7 +253,7 @@ export function debounce(func, wait, immediate) {
/**
* This is just a simple version of deep copy
* Has a lot of edge cases bug
* If you want to use a perfect deep copy, use lodash's _.cloneDeep
* If you want dto use a perfect deep copy, use lodash's _.cloneDeep
* @param {Object} source
* @returns {Object}
*/
@ -300,7 +300,7 @@ export function hasClass(ele, cls) {
}
/**
* Add class to element
* Add class dto element
* @param {HTMLElement} elm
* @param {string} cls
*/

View File

@ -13,7 +13,7 @@ var requestAnimFrame = (function() {
})()
/**
* Because it's so fucking difficult to detect the scrolling element, just move them all
* Because it's so fucking difficult dto detect the scrolling element, just move them all
* @param {number} amount
*/
function move(amount) {

View File

@ -1,3 +1,3 @@
const elementIcons = ['platform-eleme', 'eleme', 'delete-solid', 'delete', 's-tools', 'setting', 'user-solid', 'user', 'phone', 'phone-outline', 'more', 'more-outline', 'star-on', 'star-off', 's-goods', 'goods', 'warning', 'warning-outline', 'question', 'info', 'remove', 'circle-plus', 'success', 'error', 'zoom-in', 'zoom-out', 'remove-outline', 'circle-plus-outline', 'circle-check', 'circle-close', 's-help', 'help', 'minus', 'plus', 'check', 'close', 'picture', 'picture-outline', 'picture-outline-round', 'upload', 'upload2', 'download', 'camera-solid', 'camera', 'video-camera-solid', 'video-camera', 'message-solid', 'bell', 's-cooperation', 's-order', 's-platform', 's-fold', 's-unfold', 's-operation', 's-promotion', 's-home', 's-release', 's-ticket', 's-management', 's-open', 's-shop', 's-marketing', 's-flag', 's-comment', 's-finance', 's-claim', 's-custom', 's-opportunity', 's-data', 's-check', 's-grid', 'menu', 'share', 'd-caret', 'caret-left', 'caret-right', 'caret-bottom', 'caret-top', 'bottom-left', 'bottom-right', 'back', 'right', 'bottom', 'top', 'top-left', 'top-right', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'd-arrow-left', 'd-arrow-right', 'video-pause', 'video-play', 'refresh', 'refresh-right', 'refresh-left', 'finished', 'sort', 'sort-up', 'sort-down', 'rank', 'loading', 'view', 'c-scale-to-original', 'date', 'edit', 'edit-outline', 'folder', 'folder-opened', 'folder-add', 'folder-remove', 'folder-delete', 'folder-checked', 'tickets', 'document-remove', 'document-delete', 'document-copy', 'document-checked', 'document', 'document-add', 'printer', 'paperclip', 'takeaway-box', 'search', 'monitor', 'attract', 'mobile', 'scissors', 'umbrella', 'headset', 'brush', 'mouse', 'coordinate', 'magic-stick', 'reading', 'data-line', 'data-board', 'pie-chart', 'data-analysis', 'collection-tag', 'film', 'suitcase', 'suitcase-1', 'receiving', 'collection', 'files', 'notebook-1', 'notebook-2', 'toilet-paper', 'office-building', 'school', 'table-lamp', 'house', 'no-smoking', 'smoking', 'shopping-cart-full', 'shopping-cart-1', 'shopping-cart-2', 'shopping-bag-1', 'shopping-bag-2', 'sold-out', 'sell', 'present', 'box', 'bank-card', 'money', 'coin', 'wallet', 'discount', 'price-tag', 'news', 'guide', 'male', 'female', 'thumb', 'cpu', 'link', 'connection', 'open', 'turn-off', 'set-up', 'chat-round', 'chat-line-round', 'chat-square', 'chat-dot-round', 'chat-dot-square', 'chat-line-square', 'message', 'postcard', 'position', 'turn-off-microphone', 'microphone', 'close-notification', 'bangzhu', 'time', 'odometer', 'crop', 'aim', 'switch-button', 'full-screen', 'copy-document', 'mic', 'stopwatch', 'medal-1', 'medal', 'trophy', 'trophy-1', 'first-aid-kit', 'discover', 'place', 'location', 'location-outline', 'location-information', 'add-location', 'delete-location', 'map-location', 'alarm-clock', 'timer', 'watch-1', 'watch', 'lock', 'unlock', 'key', 'service', 'mobile-phone', 'bicycle', 'truck', 'ship', 'basketball', 'football', 'soccer', 'baseball', 'wind-power', 'light-rain', 'lightning', 'heavy-rain', 'sunrise', 'sunrise-1', 'sunset', 'sunny', 'cloudy', 'partly-cloudy', 'cloudy-and-sunny', 'moon', 'moon-night', 'dish', 'dish-1', 'food', 'chicken', 'fork-spoon', 'knife-fork', 'burger', 'tableware', 'sugar', 'dessert', 'ice-cream', 'hot-water', 'water-cup', 'coffee-cup', 'cold-drink', 'goblet', 'goblet-full', 'goblet-square', 'goblet-square-full', 'refrigerator', 'grape', 'watermelon', 'cherry', 'apple', 'pear', 'orange', 'coffee', 'ice-tea', 'ice-drink', 'milk-tea', 'potato-strips', 'lollipop', 'ice-cream-square', 'ice-cream-round']
const elementIcons = ['platform-eleme', 'eleme', 'delete-solid', 'delete', 's-tools', 'setting', 'user-solid', 'user', 'phone', 'phone-outline', 'more', 'more-outline', 'star-on', 'star-off', 's-goods', 'goods', 'warning', 'warning-outline', 'question', 'info', 'remove', 'circle-plus', 'success', 'error', 'zoom-in', 'zoom-out', 'remove-outline', 'circle-plus-outline', 'circle-check', 'circle-close', 's-help', 'help', 'minus', 'plus', 'check', 'close', 'picture', 'picture-outline', 'picture-outline-round', 'upload', 'upload2', 'download', 'camera-solid', 'camera', 'video-camera-solid', 'video-camera', 'message-solid', 'bell', 's-cooperation', 's-order', 's-platform', 's-fold', 's-unfold', 's-operation', 's-promotion', 's-home', 's-release', 's-ticket', 's-management', 's-open', 's-shop', 's-marketing', 's-flag', 's-comment', 's-finance', 's-claim', 's-custom', 's-opportunity', 's-data', 's-check', 's-grid', 'menu', 'share', 'd-caret', 'caret-left', 'caret-right', 'caret-bottom', 'caret-top', 'bottom-left', 'bottom-right', 'back', 'right', 'bottom', 'top', 'top-left', 'top-right', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'd-arrow-left', 'd-arrow-right', 'video-pause', 'video-play', 'refresh', 'refresh-right', 'refresh-left', 'finished', 'sort', 'sort-up', 'sort-down', 'rank', 'loading', 'view', 'c-scale-dto-original', 'date', 'edit', 'edit-outline', 'folder', 'folder-opened', 'folder-add', 'folder-remove', 'folder-delete', 'folder-checked', 'tickets', 'document-remove', 'document-delete', 'document-copy', 'document-checked', 'document', 'document-add', 'printer', 'paperclip', 'takeaway-box', 'search', 'monitor', 'attract', 'mobile', 'scissors', 'umbrella', 'headset', 'brush', 'mouse', 'coordinate', 'magic-stick', 'reading', 'data-line', 'data-board', 'pie-chart', 'data-analysis', 'collection-tag', 'film', 'suitcase', 'suitcase-1', 'receiving', 'collection', 'files', 'notebook-1', 'notebook-2', 'toilet-paper', 'office-building', 'school', 'table-lamp', 'house', 'no-smoking', 'smoking', 'shopping-cart-full', 'shopping-cart-1', 'shopping-cart-2', 'shopping-bag-1', 'shopping-bag-2', 'sold-out', 'sell', 'present', 'box', 'bank-card', 'money', 'coin', 'wallet', 'discount', 'price-tag', 'news', 'guide', 'male', 'female', 'thumb', 'cpu', 'link', 'connection', 'open', 'turn-off', 'set-up', 'chat-round', 'chat-line-round', 'chat-square', 'chat-dot-round', 'chat-dot-square', 'chat-line-square', 'message', 'postcard', 'position', 'turn-off-microphone', 'microphone', 'close-notification', 'bangzhu', 'time', 'odometer', 'crop', 'aim', 'switch-button', 'full-screen', 'copy-document', 'mic', 'stopwatch', 'medal-1', 'medal', 'trophy', 'trophy-1', 'first-aid-kit', 'discover', 'place', 'location', 'location-outline', 'location-information', 'add-location', 'delete-location', 'map-location', 'alarm-clock', 'timer', 'watch-1', 'watch', 'lock', 'unlock', 'key', 'service', 'mobile-phone', 'bicycle', 'truck', 'ship', 'basketball', 'football', 'soccer', 'baseball', 'wind-power', 'light-rain', 'lightning', 'heavy-rain', 'sunrise', 'sunrise-1', 'sunset', 'sunny', 'cloudy', 'partly-cloudy', 'cloudy-and-sunny', 'moon', 'moon-night', 'dish', 'dish-1', 'food', 'chicken', 'fork-spoon', 'knife-fork', 'burger', 'tableware', 'sugar', 'dessert', 'ice-cream', 'hot-water', 'water-cup', 'coffee-cup', 'cold-drink', 'goblet', 'goblet-full', 'goblet-square', 'goblet-square-full', 'refrigerator', 'grape', 'watermelon', 'cherry', 'apple', 'pear', 'orange', 'coffee', 'ice-tea', 'ice-drink', 'milk-tea', 'potato-strips', 'lollipop', 'ice-cream-square', 'ice-cream-round']
export default elementIcons

View File

@ -135,7 +135,7 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="菜地编号" prop="garden.code">
<el-form-item label="菜地编号" prop="garden.gardenId">
<el-select v-model="form.garden.gardenId" placeholder="请选择菜地编号"
:loading="isQuery" loading-text="正在查找可用菜地"
filterable remote :remote-method="remoteQueryGarden">
@ -154,12 +154,9 @@
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" rows="3" placeholder="请输入备注"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitClaimForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -167,7 +164,7 @@
</template>
<script>
import { listEnterContract, getContract, delContract, addContract, updateContract, auditContract } from '@/api/csa/contract'
import { listEnterContract, getContract, auditContract, claimFarmer } from '@/api/csa/contract'
import { getFarmerWithGarden } from '@/api/csa/farmer'
import { listCanSell } from '@/api/csa/garden'
import Dict from '../../system/dict/index'
@ -213,7 +210,7 @@
//
canSellGardens: [],
//
form: {farmer: {}, garden: {}},
form: {contractId: null, garden: {} },
//
rules: {
name: [
@ -262,9 +259,7 @@
reset() {
this.form = {
contractId: null,
farmer: {},
garden: {},
remark: null
}
this.resetForm('form')
},
@ -285,12 +280,13 @@
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 认领菜地按钮操作 */
/** 认领菜地对话框弹出操作 */
handleUpdateFarmer(row) {
this.reset()
const farmerId = row.farmerId;
getFarmerWithGarden(farmerId).then(response => {
this.form = response.data
this.form.contractId = row.contractId
this.open = true
this.title = '认领菜地'
})
@ -319,23 +315,23 @@
})
})
},
/** 提交按钮 */
submitForm() {
/** 认领菜地提交按钮 */
submitClaimForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.contractId != null) {
updateContract(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
} else {
addContract(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
let claim = {
contractId: this.form.contractId,
farmerName: this.form.name,
mobileNumber: this.form.mobileNumber,
gardenId: this.form.garden.gardenId,
gardenName: this.form.garden.name
}
claimFarmer(claim).then(response => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
}
})
},

View File

@ -112,8 +112,8 @@ module.exports = {
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
priority: 20, // the weight needs dto be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order dto adapt dto cnpm
},
commons: {
name: 'chunk-commons',

View File

@ -11,7 +11,7 @@
Target Server Version : 50731
File Encoding : 65001
Date: 05/04/2022 22:43:57
Date: 06/04/2022 23:53:50
*/
SET NAMES utf8mb4;
@ -293,7 +293,7 @@ CREATE TABLE `csa_farmer` (
-- Records of csa_farmer
-- ----------------------------
INSERT INTO `csa_farmer` VALUES (3, '范诚诚', NULL, '13672226668', 25000, 300.0000, 20.0000, 1, '2021-05-01', NULL, 'N', '0', '0', '', '2022-04-05 13:06:27', '', '2022-04-05 13:18:27', NULL);
INSERT INTO `csa_farmer` VALUES (5, '程开州', NULL, NULL, 15000, 0.0000, 60.0000, 2, '2021-04-05', NULL, 'N', '0', '0', '', '2022-04-05 18:57:35', '', NULL, NULL);
INSERT INTO `csa_farmer` VALUES (5, '程开州', NULL, '13588886666', 15000, 0.0000, 60.0000, 2, '2021-04-05', NULL, 'N', '0', '0', '', '2022-04-05 18:57:35', '', '2022-04-06 23:39:10', NULL);
-- ----------------------------
-- Table structure for csa_farmer_contract
@ -327,7 +327,7 @@ CREATE TABLE `csa_farmer_contract` (
-- Records of csa_farmer_contract
-- ----------------------------
INSERT INTO `csa_farmer_contract` VALUES (101, NULL, NULL, '王丽美', 10000, 0.0000, 0.0000, 0, 'QY', 'No.008', '2022-03-01', '2022-05-01', 62, '3', '0', 'admin', '2022-04-01 22:29:42', 'admin', '2022-04-04 14:54:20', NULL);
INSERT INTO `csa_farmer_contract` VALUES (102, 5, NULL, '程开州', 15000, 0.0000, 60.0000, 2, 'QY', 'No.002', '2021-04-05', '2022-04-04', 365, '2', '0', 'admin', '2022-04-04 00:42:06', 'admin', '2022-04-05 18:57:35', '好朋友介绍,非常喜欢我们的农场,订嘱每次到期前都要提醒约续。');
INSERT INTO `csa_farmer_contract` VALUES (102, 5, 6, '程开州', 15000, 0.0000, 60.0000, 2, 'QY', 'No.002', '2021-04-05', '2022-04-04', 365, '1', '0', 'admin', '2022-04-04 00:42:06', 'admin', '2022-04-06 23:39:10', '好朋友介绍,非常喜欢我们的农场,订嘱每次到期前都要提醒约续。');
INSERT INTO `csa_farmer_contract` VALUES (103, 3, NULL, '范诚诚', 5000, 300.0000, 20.0000, 1, 'QY', 'No.003', '2021-05-01', '2022-04-30', 365, '2', '0', 'admin', '2022-04-04 14:30:01', 'admin', '2022-04-05 13:18:27', NULL);
-- ----------------------------
@ -366,7 +366,7 @@ INSERT INTO `csa_garden` VALUES (2, 1, '8002', '香草居', 30, NULL, NULL, NULL
INSERT INTO `csa_garden` VALUES (3, 1, '8003', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-07 13:15:43', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (4, 1, '8004', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-07 13:20:38', 'admin', '2022-04-05 22:42:09', '');
INSERT INTO `csa_garden` VALUES (5, 1, '8005', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 21:05:48', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (6, 1, '8006', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 22:07:11', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (6, 1, '8006', '', 30, 5, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 22:07:11', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (7, 1, '8007', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 22:07:56', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (8, 1, '8008', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 22:13:41', 'admin', '2022-04-05 22:42:09', NULL);
INSERT INTO `csa_garden` VALUES (9, 1, '8009', '', 30, NULL, NULL, NULL, NULL, 'N', 'N', 'Y', '0', '0', '101', '2022-03-29 22:15:24', 'admin', '2022-04-05 22:42:09', NULL);
@ -1341,7 +1341,7 @@ CREATE TABLE `sys_logininfor` (
`msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '提示消息',
`login_time` datetime NULL DEFAULT NULL COMMENT '访问时间',
PRIMARY KEY (`info_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 214 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问记录' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 217 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问记录' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_logininfor
@ -1460,6 +1460,9 @@ INSERT INTO `sys_logininfor` VALUES (210, 'admin', '127.0.0.1', '内网IP', 'Chr
INSERT INTO `sys_logininfor` VALUES (211, 'admin', '127.0.0.1', '内网IP', 'Chrome 9', 'Windows 10', '0', '登录成功', '2022-04-05 12:42:38');
INSERT INTO `sys_logininfor` VALUES (212, 'admin', '127.0.0.1', '内网IP', 'Chrome 9', 'Windows 10', '0', '登录成功', '2022-04-05 18:12:36');
INSERT INTO `sys_logininfor` VALUES (213, 'admin', '127.0.0.1', '内网IP', 'Chrome 9', 'Windows 10', '0', '登录成功', '2022-04-05 21:16:51');
INSERT INTO `sys_logininfor` VALUES (214, 'admin', '127.0.0.1', '内网IP', 'Firefox 9', 'Windows 10', '0', '登录成功', '2022-04-06 20:25:27');
INSERT INTO `sys_logininfor` VALUES (215, 'admin', '127.0.0.1', '内网IP', 'Chrome 9', 'Windows 10', '0', '登录成功', '2022-04-06 20:46:38');
INSERT INTO `sys_logininfor` VALUES (216, 'admin', '127.0.0.1', '内网IP', 'Chrome 9', 'Windows 10', '0', '登录成功', '2022-04-06 23:38:25');
-- ----------------------------
-- Table structure for sys_menu
@ -1707,7 +1710,7 @@ CREATE TABLE `sys_oper_log` (
`error_msg` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '错误消息',
`oper_time` datetime NULL DEFAULT NULL COMMENT '操作时间',
PRIMARY KEY (`oper_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 729 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志记录' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 736 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志记录' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_oper_log
@ -2341,6 +2344,13 @@ INSERT INTO `sys_oper_log` VALUES (725, '菜地划分', 2, 'com.jlt.csa.controll
INSERT INTO `sys_oper_log` VALUES (726, '菜地划分', 2, 'com.jlt.csa.controller.GardenController.updateStatus()', 'PUT', 1, 'admin', NULL, '/csa/garden/4', '127.0.0.1', '内网IP', '{\"updateTime\":1649169724820,\"params\":{},\"updateBy\":\"admin\",\"isCompleted\":\"Y\"} [4]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-05 22:42:05');
INSERT INTO `sys_oper_log` VALUES (727, '菜地划分', 2, 'com.jlt.csa.controller.GardenController.updateStatus()', 'PUT', 1, 'admin', NULL, '/csa/garden/1,2,3,4,5,6,7,8,9,10', '127.0.0.1', '内网IP', '{\"updateTime\":1649169729414,\"params\":{},\"updateBy\":\"admin\",\"isCompleted\":\"Y\"} [1,2,3,4,5,6,7,8,9,10]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-05 22:42:09');
INSERT INTO `sys_oper_log` VALUES (728, '菜地划分', 2, 'com.jlt.csa.controller.GardenController.updateStatus()', 'PUT', 1, 'admin', NULL, '/csa/garden/11,12', '127.0.0.1', '内网IP', '{\"updateTime\":1649169735413,\"params\":{},\"updateBy\":\"admin\",\"isCompleted\":\"Y\"} [11,12]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-05 22:42:15');
INSERT INTO `sys_oper_log` VALUES (729, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"1112\",\"contractId\":102,\"gardenName\":\"AAAA\",\"farmerName\":\"程开州\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:04:28');
INSERT INTO `sys_oper_log` VALUES (730, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"112\",\"contractId\":103,\"gardenName\":\"AAA\",\"farmerName\":\"范诚诚\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:07:52');
INSERT INTO `sys_oper_log` VALUES (731, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"112\",\"contractId\":103,\"gardenName\":\"AAA\",\"farmerName\":\"范诚诚\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:08:32');
INSERT INTO `sys_oper_log` VALUES (732, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"122\",\"contractId\":103,\"gardenName\":\"AAA\",\"farmerName\":\"范诚诚\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:11:03');
INSERT INTO `sys_oper_log` VALUES (733, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"120\",\"contractId\":103,\"gardenName\":\"AAA\",\"farmerName\":\"范诚诚\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:12:40');
INSERT INTO `sys_oper_log` VALUES (734, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"122\",\"contractId\":103,\"gardenName\":\"AAAA\",\"farmerName\":\"范诚诚\",\"gardenId\":3}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 22:13:50');
INSERT INTO `sys_oper_log` VALUES (735, '会员签约', 2, 'com.jlt.csa.controller.FarmerContractController.claim()', 'PUT', 1, 'admin', NULL, '/csa/contract/claim', '127.0.0.1', '内网IP', '{\"mobileNumber\":\"13588886666\",\"contractId\":102,\"gardenName\":\"大观园\",\"farmerName\":\"程开州\",\"gardenId\":6}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2022-04-06 23:39:09');
-- ----------------------------
-- Table structure for sys_post
@ -2551,7 +2561,7 @@ CREATE TABLE `sys_user` (
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 103, 'admin', '超级管理员', '00', '', '', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2022-04-05 21:16:51', 'admin', '2022-03-20 21:45:25', '', '2022-04-05 21:16:51', '管理员');
INSERT INTO `sys_user` VALUES (1, 103, 'admin', '超级管理员', '00', '', '', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2022-04-06 23:38:25', 'admin', '2022-03-20 21:45:25', '', '2022-04-06 23:38:25', '管理员');
INSERT INTO `sys_user` VALUES (2, 101, 'boss', '农场管理员', '00', '', '', '2', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2022-03-20 21:45:25', 'admin', '2022-03-20 21:45:25', 'admin', '2022-03-29 17:51:59', '');
INSERT INTO `sys_user` VALUES (100, 104, '101', '场长', '00', '88@66.com', '18888888888', '0', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2022-03-30 22:05:56', 'admin', '2022-03-29 18:18:00', 'admin', '2022-03-30 22:05:56', NULL);