ts_aimz/pages/shop/publishCopyright/publishCopyright.js

630 lines
19 KiB
JavaScript
Raw Normal View History

2025-06-09 17:02:32 +08:00
// pages/shop/publishCopyright/publishCopyright.js
import Shop from '../../../net/api/shop'
import {
2025-06-12 10:22:05 +08:00
upShopImgUrl,
sImgPrefix
2025-06-09 17:02:32 +08:00
} from '../../../net/mainUrl'
const {
isValidPhone
} = require('../../../utils/validator')
const Utils = require('../../../utils/util')
const Cache = require('../../../utils/storage')
Page({
/**
* 页面的初始数据
*/
data: {
// 0b00884a-f7a2-425f-93e5-599fbaad4bde 软著分类
// ce3ded65-68ed-4f42-89da-de1b813b8f7e 证件类型
curStartDate: Utils.currentDate(),
personType: [{
dataName: '自然人',
dataId: '1'
}, {
dataName: '法人',
dataId: '2'
}, {
dataName: '非法人组织或其他',
dataId: '3'
}],
selPersonType: null,
creType: [],
rightType: [],
areaList: [], //省
cityList: [], //市
rightName: '', //软著名称
orgName: '', //著作权人姓名
orgPhone: '', //联系电话
cardNumber: '', //证件号码
selRightType: [], //选中分类
rightPrice: '', //售价
rightStopDate: '', //停止日期
selCreType: null, //选中证件类型
showArea: false,
prevValue: [0, 0], // 用于存储上一次的值
selArea: null,
selCity: null,
msgHint: '',
msgType: 'info',
msgShow: false,
files: [],
2025-06-12 10:22:05 +08:00
showType: false,
goodsId: '',
goods: null,
2025-06-09 17:02:32 +08:00
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
wx.setNavigationBarTitle({
2025-06-11 11:22:53 +08:00
title: '我要卖软著',
2025-06-09 17:02:32 +08:00
})
wx.setNavigationBarColor({
frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000
2025-06-11 11:22:53 +08:00
backgroundColor: '#FFFFFF', // 传递的颜色值,仅支持十六进制颜色
2025-06-09 17:02:32 +08:00
animation: { // 可选项
duration: 500,
timingFunc: 'easeIn'
}
})
this.setData({
selPersonType: this.data.personType[0],
selectFile: this.selectFile.bind(this),
uploadFile: this.uploadFile.bind(this)
})
2025-06-12 10:22:05 +08:00
const id = options.id
if (id && id != '') {
this.setData({
goodsId: id
})
this.doGetGoodsDetail()
} else {
this.getDic()
}
},
//获取商品详情
doGetGoodsDetail() {
wx.showLoading({
title: '加载中...',
})
const _self = this
Shop.doGetGoodsDetail(_self.data.goodsId)
.then(res => {
wx.hideLoading()
var tempFile = [{
fileId: res.goodsLocalPhoto,
fileName: 'ceshi',
fileSize: 223,
fileUrl: sImgPrefix + res.goodsLocalPhoto,
url: sImgPrefix + res.goodsLocalPhoto
}]
_self.setData({
rightName: res.goodsName,
rightPrice: res.goodsPrice,
rightStopDate: res.goodsLastTime,
orgName: res.goodsLeader,
orgPhone: res.goodsLeaderPhone,
cardNumber: res.goodsLeaderIdcard,
files: tempFile,
goods: res
})
_self.getDic()
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgHint: err.msg ? err.msg : '网络错误,请稍后重试',
msgType: 'error',
msgShow: true
})
setTimeout(() => {
wx.navigateBack()
}, 1500);
})
2025-06-09 17:02:32 +08:00
},
inputRightName(e) {
this.setData({
rightName: e.detail.value
})
},
2025-06-11 11:22:53 +08:00
doClearRightName() {
this.setData({
rightName: ''
})
},
2025-06-09 17:02:32 +08:00
inputRightPrice(e) {
this.setData({
rightPrice: e.detail.value
})
},
2025-06-11 11:22:53 +08:00
doClearPrice() {
this.setData({
rightPrice: 0
})
},
2025-06-09 17:02:32 +08:00
inputOrgName(e) {
this.setData({
orgName: e.detail.value
})
},
inputCardNumber(e) {
this.setData({
cardNumber: e.detail.value
})
},
//著作权人类别
bindChangePersonType(e) {
this.setData({
selPersonType: this.data.personType[e.detail.value]
})
},
clearPersonType() {
this.setData({
selPersonType: null
})
},
//证件类型
bindChangeCreType(e) {
this.setData({
selCreType: this.data.creType[e.detail.value]
})
},
clearCreType() {
this.setData({
selCreType: null
})
},
//选择软著分类
onShowRightType() {
this.setData({
showType: true
})
},
2025-06-11 17:02:30 +08:00
//选择软著分类
2025-06-09 17:02:32 +08:00
bindChangeRightType(e) {
2025-06-11 17:02:30 +08:00
const selectedIds = e.detail.value;
const selectedItems = [];
for (let i = 0; i < this.data.rightType.length; i++) {
const item = this.data.rightType[i];
item.checked = selectedIds.indexOf(item.dataId) !== -1;
if (item.checked) {
selectedItems.push(item);
2025-06-09 17:02:32 +08:00
}
2025-06-11 17:02:30 +08:00
}
2025-06-09 17:02:32 +08:00
this.setData({
2025-06-11 17:02:30 +08:00
rightType: this.data.rightType,
selRightType: selectedItems
})
2025-06-09 17:02:32 +08:00
},
clearRightType() {
this.data.rightType.forEach(item => {
item.checked = false
})
this.setData({
selRightType: [],
rightType: this.data.rightType
})
},
confirmSelRightType() {
this.setData({
showType: false
})
},
//显示日期选择
bindDateChange(e) {
this.setData({
rightStopDate: e.detail.value
})
},
clearTime() {
this.setData({
rightStopDate: ''
})
},
deleteImage(e) {
var index = e.detail.index;
this.data.files.splice(index, 1);
},
selectFile(files) {
console.log('files', files)
},
uploadFile(files) {
console.log(files)
const tempFilePaths = files.tempFilePaths;
const token = Cache.get('token')
const header = {}
if (token) {
header.Auth = `Bearer ${token}`;
}
var that = this
for (let i = 0; i < tempFilePaths.length; i++) {
wx.uploadFile({
url: upShopImgUrl,
header: header,
filePath: tempFilePaths[i],
name: 'image',
success(res) {
console.log(res)
let result = JSON.parse(res.data)
that.data.files.push(result.data)
},
fail(err) {
console.log(err);
}
})
}
// 文件上传的函数返回一个promise
return new Promise((resolve, reject) => {
var result = {};
result['urls'] = tempFilePaths;
resolve(result);
})
},
//显示地区选择
onShowArea() {
this.setData({
showArea: true
})
},
clearArea() {
this.setData({
selArea: null,
selCity: null
})
},
confirmSelArea() {
this.setData({
showArea: false
})
},
inputOrgPhone(e) {
this.setData({
orgPhone: e.detail.value
})
},
2025-06-11 11:22:53 +08:00
doClearPhone() {
this.setData({
orgPhone: ''
})
},
2025-06-12 10:22:05 +08:00
//获取字典
2025-06-09 17:02:32 +08:00
getDic() {
const _self = this
const cre = Shop.doGetGoodsDic('0b00884a-f7a2-425f-93e5-599fbaad4bde') //软著分类
const right = Shop.doGetGoodsDic('ce3ded65-68ed-4f42-89da-de1b813b8f7e') //证件类型
const area = Shop.doGetAreaList('0')
const list = [cre, right, area]
Promise.all(list)
.then(res => {
if (res) {
_self.setData({
rightType: res[0],
creType: res[1],
areaList: res[2]
})
_self.data.rightType.forEach(item => {
item.checked = false
})
2025-06-12 10:22:05 +08:00
//判断是否是编辑
if (_self.data.goodsId != '') {
_self.data.rightType.forEach(item => {
// selRightType
if (_self.data.goods.goodsType.indexOf(item.dataId) != -1) {
item.checked = true
_self.data.selRightType.push(item)
}
})
var tempPersonType
_self.data.personType.forEach(item => {
if (_self.data.goods.goodsLeaderType == item.dataId) {
tempPersonType = item
}
})
var tempCreType
_self.data.creType.forEach(item => {
if (_self.data.goods.goodsLeaderIdcardType == item.dataId) {
tempCreType = item
}
})
_self.setData({
rightType: _self.data.rightType,
selRightType: _self.data.selRightType,
selPersonType: tempPersonType,
selCreType: tempCreType
})
_self.doGetProvince(_self.data.goods.goodsLeaderCity1)
} else {
//默认加载第一个area
_self.setData({
selCreType: _self.data.creType[0],
selArea: _self.data.areaList[0],
rightType: _self.data.rightType
})
_self.doGetArea(_self.data.selArea.areaId)
}
2025-06-09 17:02:32 +08:00
}
})
.catch(err => {
_self.setData({
msgShow: true,
msgHint: '数据加载错误,请稍后重试',
msgType: 'error'
})
setTimeout(() => {
wx.navigateBack()
}, 1500);
})
},
2025-06-12 10:22:05 +08:00
//获取省
doGetProvince(id) {
wx.showLoading({
title: '加载中...',
})
const _self = this
Shop.doGetAreaDetail(id)
.then(res => {
wx.hideLoading()
_self.setData({
selArea: res
})
_self.doGetArea(_self.data.selArea.areaId)
})
.catch(err => {
wx.hideLoading()
//重置selArea selCity
_self.setData({
selArea: null,
selCity: null
})
})
},
2025-06-09 17:02:32 +08:00
//获取区域
doGetArea(pId) {
wx.showLoading({
title: '加载中...',
})
const _self = this
Shop.doGetAreaList(pId)
.then(res => {
wx.hideLoading()
if (res) {
_self.setData({
2025-06-12 10:22:05 +08:00
cityList: res
2025-06-09 17:02:32 +08:00
})
2025-06-12 10:22:05 +08:00
if (_self.data.goodsId != '') {
var tempCity
_self.data.cityList.forEach(item => {
if (_self.data.goods.goodsLeaderCity2 == item.areaId) {
tempCity = item
}
})
_self.setData({
selCity: tempCity
})
} else {
_self.setData({
selCity: res[0]
})
}
2025-06-09 17:02:32 +08:00
}
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgShow: true,
msgHint: '数据加载错误,请稍后重试',
msgType: 'error'
})
})
},
//选中省市
areaChange(e) {
const _self = this
const currentValue = e.detail.value;
const prevValue = _self.data.prevValue;
_self.setData({
prevValue: currentValue
});
for (let i = 0; i < currentValue.length; i++) {
if (currentValue[i] !== prevValue[i]) {
if (i == 0) {
//获取city
const area = _self.data.areaList[currentValue[0]]
_self.setData({
selArea: area
})
_self.doGetArea(area.areaId)
} else {
const city = _self.data.cityList[currentValue[1]]
_self.setData({
selCity: city
})
}
}
}
},
2025-06-12 10:22:05 +08:00
//发布新商品
doConfirmPublish() {
2025-06-09 17:02:32 +08:00
const isLegal = this.checkParams()
if (isLegal) {
const _self = this
const data = _self.buildParams()
wx.showLoading({
title: '保存中...',
})
Shop.doSaveGoods(data)
.then(res => {
wx.hideLoading()
_self.setData({
msgType: 'success',
msgHint: '保存成功',
msgShow: true
})
setTimeout(() => {
2025-06-11 11:22:53 +08:00
_self.backPageRefresh()
2025-06-09 17:02:32 +08:00
}, 1500);
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgType: 'error',
msgHint: err.msg ? err.msg : '网络错误,请稍后重试',
msgShow: true
})
})
}
},
2025-06-12 10:22:05 +08:00
//修改新商品
doConfirmUpdate() {
const isLegal = this.checkParams()
if (isLegal) {
const _self = this
const data = _self.buildParams()
wx.showLoading({
title: '保存中...',
})
Shop.doUpdateGoods(_self.data.goodsId, data)
.then(res => {
wx.hideLoading()
//修改成功
_self.setData({
msgType: 'success',
msgHint: '修改成功',
msgShow: true
})
setTimeout(() => {
_self.backPageRefresh()
}, 1500);
})
.catch(err => {
wx.hideLoading()
_self.setData({
msgType: 'error',
msgHint: err.msg ? err.msg : '网络错误,请稍后重试',
msgShow: true
})
})
}
},
//保存商品
doSave() {
if (this.data.goodsId != '') {
//编辑
this.doConfirmUpdate()
} else {
//新增
this.doConfirmPublish()
}
},
2025-06-09 17:02:32 +08:00
//校验参数
checkParams() {
const rules = [{
field: 'rightName',
message: '请输入软著名称',
validator: v => v.trim() !== ''
},
{
field: 'selRightType',
message: '请选择软著分类',
validator: v => v !== null
},
{
field: 'rightPrice',
message: '请输入软著售价',
validator: v => v.trim() !== ''
},
{
field: 'rightStopDate',
message: '请选择截止售卖日期',
validator: v => v.trim() !== ''
},
{
field: 'files',
message: '请上传软著图片',
validator: v => v && v.length > 0
},
{
field: 'selPersonType',
message: '请选择著作权人类别',
validator: v => v !== null
},
{
field: 'orgName',
message: '请输入姓名或机构名称',
validator: v => v.trim() !== ''
},
{
field: ['selArea', 'selCity'],
message: '请选择所在省市',
validator: (_, data) => data.selArea !== null && data.selCity !== null
},
{
field: 'orgPhone',
message: '请输入合法的联系电话',
validator: v => v.trim() !== '' && isValidPhone(v.trim())
},
{
field: 'selCreType',
message: '请选择证件类型',
validator: v => v !== null
},
{
field: 'cardNumber',
message: '请输入证件号码',
validator: v => v.trim() !== ''
}
];
for (const rule of rules) {
let isValid;
if (Array.isArray(rule.field)) {
// 多字段联合验证
isValid = rule.validator(null, this.data);
} else {
// 单字段验证
const value = this.data[rule.field];
isValid = rule.validator(value, this.data);
}
if (!isValid) {
this.setData({
msgType: 'error',
msgHint: rule.message,
msgShow: true
});
return false;
}
}
return true;
},
buildParams() {
2025-06-11 17:02:30 +08:00
const typeIds = this.data.selRightType.map(item => item.dataId).join(',');
2025-06-09 17:02:32 +08:00
const data = {
goodsLastTime: this.data.rightStopDate,
goodsLeader: this.data.orgName,
goodsLeaderCity1: this.data.selArea.areaId,
goodsLeaderCity2: this.data.selCity.areaId,
goodsLeaderIdcard: this.data.cardNumber,
goodsLeaderIdcardType: this.data.selCreType.dataId,
goodsLeaderPhone: this.data.orgPhone,
goodsLeaderType: this.data.selPersonType.dataId,
goodsName: this.data.rightName,
goodsLocalPhoto: this.data.files[0].fileId,
goodsPrice: this.data.rightPrice,
2025-06-11 17:02:30 +08:00
goodsType: typeIds
2025-06-09 17:02:32 +08:00
}
return data
2025-06-11 11:22:53 +08:00
},
backPageRefresh() {
let pages = getCurrentPages();
let beforePage = pages[pages.length - 2];
beforePage.setData({
needRefresh: true
})
wx.navigateBack()
2025-06-09 17:02:32 +08:00
}
})