From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1
---
src/views/modules/mining/stock-release-add-or-update.vue | 496 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 496 insertions(+), 0 deletions(-)
diff --git a/src/views/modules/mining/stock-release-add-or-update.vue b/src/views/modules/mining/stock-release-add-or-update.vue
new file mode 100644
index 0000000..f7c22fc
--- /dev/null
+++ b/src/views/modules/mining/stock-release-add-or-update.vue
@@ -0,0 +1,496 @@
+<template>
+ <el-dialog :title="!row ? '新增' : '修改'" :close-on-click-modal="false" width="1200px" @close="handClose"
+ :visible.sync="visible">
+ <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
+ label-width="150px">
+ <el-form-item class="titleDivTwo" label="基础信息" prop="">
+ </el-form-item>
+ <el-row>
+ <el-col :span="8">
+ <!-- <el-form-item label="申购代码(字母)" prop="productName">
+ <el-input
+ v-model="dataForm.productName"
+ placeholder="申购代码(字母)"
+ :disabled="row ? true : false"
+ @change="openMsg()"
+ ></el-input>
+ </el-form-item> -->
+ <el-form-item label="申购代码(字母)" prop="productName">
+ <el-select class="searchInput" v-model="dataForm.productName" filterable allow-create remote clearable
+ reserve-keyword placeholder="请输入关键词" :remote-method="loadOptions" @change="openMsg()" :loading="loading">
+ <el-option v-for="item in symbolDate" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8" v-if="!dataForm.id">
+ <el-form-item label="股票类型" prop="">
+ <el-select class="searchInput" v-model="options.value" @change="changeVal" placeholder="请选择">
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="股票简称" prop="">
+ <el-input v-model="dataForm.name" placeholder="股票简称"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8" v-if="dataForm.id">
+ <el-form-item label="提示" prop="">
+ <div class="green">输入申购代码获取股票简称</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="发行价" prop="marketPrice">
+ <el-input v-model="dataForm.marketPrice" type="number" maxlength="11" placeholder="发行价"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="承销价" prop="underwritingPrice">
+ <el-input type="number" maxlength="11" v-model="dataForm.underwritingPrice" placeholder="承销价"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="发行总数" prop="subscribeTotalNumber">
+ <el-input type="number" maxlength="11" v-model="dataForm.subscribeTotalNumber"
+ placeholder="发行总数"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="已申购数" prop="">
+ <el-input type="number" maxlength="11" disabled v-model="dataForm.appliedSubscribeNumber"
+ placeholder="已申购数"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="排序" prop="weight">
+ <el-input v-model="dataForm.weight" maxlength="11" type="number" placeholder="排序"></el-input>
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="8">
+ <el-form-item label="用户申购额度" prop="defaultLimit">
+ <el-input type="number" maxlength="11" v-model="dataForm.defaultLimit" placeholder="用户申购额度"></el-input>
+ </el-form-item>
+ </el-col> -->
+ <el-col :span="8">
+ <el-form-item label="发行市场" prop="ipoStatus">
+ <el-select class="speaInputTwo" v-model="dataForm.ipoStatus" placeholder="请选择" @change="changeVal()">
+ <el-option v-for="item in direction" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="锁定时间(天)" prop="lockDay">
+ <el-input maxlength="11" type="number" v-model="dataForm.lockDay" placeholder="锁定时间(天)"></el-input>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="8">
+ <el-form-item label="用户最小申购数" prop="userApplyNums">
+ <el-input type="number" v-model="dataForm.userApplyNums" placeholder="用户最小申购数"></el-input>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="8" v-if="!dataForm.id">
+ <el-form-item label="提示" prop="">
+ <div class="green">输入申购代码获取股票简称</div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <!-- 填写日期 -->
+ <el-form-item class="titleDivTwo" label="日期填写" prop="">
+ </el-form-item>
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="发券日期" prop="issuanceDate">
+ <el-date-picker v-model="dataForm.issuanceDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="选择日期时间">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="8">
+ <el-form-item label="抽签日期" prop="drawDate">
+ <el-date-picker
+ v-model="dataForm.drawDate"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="选择日期时间"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col> -->
+ <el-col :span="8">
+ <el-form-item label="开放申购日" prop="startSubscribeDate">
+ <el-date-picker v-model="dataForm.startSubscribeDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="选择日期时间">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="截止申购日" prop="endSubscribeDate">
+ <el-date-picker v-model="dataForm.endSubscribeDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="选择日期时间">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="公布中签日" prop="releaseDate">
+ <el-date-picker v-model="dataForm.releaseDate" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="选择日期时间">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-form-item label="状态" prop="status">
+ <el-radio-group v-model="dataForm.status">
+ <el-radio :label="1">未开始</el-radio>
+ <el-radio :label="2">开放中</el-radio>
+ <el-radio :label="3">已结束</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="visible = false">取消</el-button>
+ <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+ </span>
+ </el-dialog>
+</template>
+<script>
+import { Debounce } from "@/utils/debounce";
+import { encrypt } from "@/utils/crypto";
+export default {
+ data() {
+ return {
+ visible: false,
+ imageUrl: "",
+ row: "",
+ loading: false,
+ dataForm: {
+ appliedSubscribeNumber: "", //已申购数 false
+ // defaultLimit: "", //用户申购额度 false
+ //drawDate:'', // 抽签日期 2023-03-22 00:00:00 false
+ endSubscribeDate: "", // 截止申购日期 2023-03-22 00:00:00 false
+ marketPrice: "", // 市场价 false
+ issuanceDate: "", // 发劵日期 2023-03-22 00:00:00 false
+ name: "", // 股票简称 false
+ productCode: "", // 申购代码(数字) false
+ productName: "", // 申购代码(字母) false
+ startSubscribeDate: "", // 开放申购日期 2023-03-22 00:00:00 false
+ status: "", // 状态 1 未开始 2 开放中 3 已结束 false
+ subscribeTotalNumber: "", // 发行总数 false
+ underwritingPrice: "", // 承销价 false
+ weight: "", // 权重 false
+ ipoStatus: "",
+ id: "",
+ lockDay: "", //锁定时间
+ userApplyNums: "", //用户最小申购数
+ releaseDate: "", //公布中签日
+ },
+ symbolDate: [],
+ page: {
+ total: 0, // 总页数
+ currentPage: 1, // 当前页数
+ pageSize: 30, // 每页显示多少条
+ },
+ direction: [
+ {
+ label: "待上市",
+ value: 1,
+ },
+ {
+ label: "已上市",
+ value: 2,
+ },
+ ],
+ dataRule: {
+ //{ validator: validateindex, trigger: "blur" },
+ name: [
+ { required: true, message: "股票简称不能为空", trigger: "blur" },
+ ],
+ productName: [
+ { required: true, message: "申购代码不能为空", trigger: "blur" },
+ ],
+ productCode: [
+ { required: true, message: "申购代码不能为空", trigger: "blur" },
+ ],
+ status: [{ required: true, message: "状态不能为空", trigger: "blur" }],
+ marketPrice: [
+ { validator: this.validateWeightLength, trigger: "blur" },
+ { required: true, message: "发行价不能为空", trigger: "blur" },
+ ],
+ underwritingPrice: [
+ { validator: this.validateWeightLength, trigger: "blur" },
+ { required: true, message: "承销价不能为空", trigger: "blur" },
+ ],
+ subscribeTotalNumber: [
+ { validator: this.validateInteger, trigger: "blur" },
+ { required: true, message: "发行总数不能为空", trigger: "blur" },
+ ],
+ appliedSubscribeNumber: [
+ { validator: this.validateInteger, trigger: "blur" },
+ { required: true, message: "已申购数不能为空", trigger: "blur" },
+ ],
+ drawDate: [
+ { required: true, message: "抽签日期不能为空", trigger: "blur" },
+ ],
+ startSubscribeDate: [
+ { required: true, message: "开放申购日期不能为空", trigger: "blur" },
+ ],
+ endSubscribeDate: [
+ { required: true, message: "截止申购日不能为空", trigger: "blur" },
+ ],
+ issuanceDate: [
+ { required: true, message: "发劵日期不能为空", trigger: "blur" },
+ ],
+ releaseDate: [
+ { required: true, message: "公布中签日不能为空", trigger: "blur" },
+ ],
+ weight: [
+ { validator: this.validateWeightLength, trigger: "blur" },
+ { required: true, message: "排序不能为空", trigger: "blur" },
+ ],
+ // defaultLimit: [
+ // { required: true, message: "用户申购额度不能为空", trigger: "blur" },
+ // { validator: this.validateWeightLength, trigger: "blur" },
+ // ],
+ // lockDay: [
+ // { required: true, message: "锁定时间不能为空", trigger: "blur" },
+ // { validator: this.validateWeightLength, trigger: "blur" },
+ // ],
+ },
+ tempKey: -666666, // 临时key, 用于解决tree半选中状态项不能传给后台接口问题. # 待优化
+ options: [],
+ };
+ },
+ methods: {
+ init(row, arr) {
+ this.options = arr || []
+ this.row = row || "";
+ console.log(row);
+ if (!row) {
+ this.dataForm.status = 1;
+ this.dataForm.ipoStatus = 1;
+ this.dataForm.id = "";
+ } else {
+ this.dataForm = { ...row };
+ this.dataForm.id = row.uuid;
+ }
+ this.visible = true;
+ },
+ validateInteger(rule, value, callback) {
+ const maxLength = 11; // 设置最大输入长度
+ if (!/^\d+$/.test(value)) {
+ callback(new Error("只能输入整数且不能为空"));
+ } else if (value && value.toString().length > maxLength) {
+ callback(new Error(`最大长度为 ${maxLength} 位字符`));
+ } else {
+ callback();
+ }
+ },
+ loadOptions(query) {
+ if (query !== "") {
+ this.loading = true;
+ this.$http({
+ url: this.$http.adornUrl("/newSharesConfig/searchNewShare"),
+ method: "post",
+ data: this.$http.adornData(
+ Object.assign({
+ symbol: query,
+ current: 1,
+ size: 50,
+ })
+ ),
+ }).then(({ data }) => {
+ if (data.code == 0) {
+ this.symbolDate = data.data.map((item) => ({
+ value: item.symbol,
+ label: item.symbol + '(' + item.name + ')',
+ }));
+ } else {
+ this.$message({
+ message: data.msg,
+ type: "error",
+ duration: 1500,
+ onClose: () => { },
+ });
+ }
+ this.loading = false;
+ });
+ } else {
+ this.symbolDate = [];
+ }
+ },
+ validateWeightLength(rule, value, callback) {
+ const maxLength = 11; // 设置最大输入长度
+
+ if (value && value.toString().length > maxLength) {
+ callback(new Error(`最大长度为 ${maxLength} 位字符`));
+ } else {
+ callback();
+ }
+ },
+ handClose() {
+ this.$data.dataForm = JSON.parse(
+ JSON.stringify(this.$options.data().dataForm)
+ );
+ this.row = "";
+ this.$nextTick(() => {
+ this.$refs["dataForm"].clearValidate(); // 清除表单验证
+ });
+ },
+ changeVal(val) {
+ this.$forceUpdate();
+ },
+ openMsg() {
+ this.symbolDate = [];
+ //获取 股票简称
+ this.$http({
+ url: this.$http.adornUrl("/newSharesConfig/getNewShare"),
+ method: "post",
+ data: this.$http.adornData({
+ productCode: this.dataForm.productName,
+ }),
+ }).then(({ data }) => {
+ if (data.code == 0) {
+ this.dataForm.name = data.data.name;
+ this.dataForm.marketPrice = data.data.nowPrice || ''; //发行价
+ } else {
+ // this.$message({
+ // message: data.msg,
+ // type: "error",
+ // duration: 1500,
+ // onClose: () => {},
+ // });
+ }
+ });
+ },
+ // 表单提交
+ dataFormSubmit: Debounce(function () {
+ console.log("新增股票=>" + this.options.value);
+ let url = `/newSharesConfig/update`;
+ let dataType = {
+ appliedSubscribeNumber: this.dataForm.appliedSubscribeNumber, //已申购数 false
+ // defaultLimit: this.dataForm.defaultLimit, //用户申购额度 false
+ //drawDate:this.dataForm.drawDate, // 抽签日期 2023-03-22 00:00:00 false
+ endSubscribeDate: this.dataForm.endSubscribeDate, // 截止申购日期 2023-03-22 00:00:00 false
+ marketPrice: this.dataForm.marketPrice, // 市场价 false
+ issuanceDate: this.dataForm.issuanceDate, // 发劵日期 2023-03-22 00:00:00 false
+ name: this.dataForm.name, // 股票简称 false
+ productCode: this.dataForm.productCode, // 申购代码(数字) false
+ productName: this.dataForm.productName, // 申购代码(字母) false
+ startSubscribeDate: this.dataForm.startSubscribeDate, // 开放申购日期 2023-03-22 00:00:00 false
+ status: this.dataForm.status, // 状态 1 未开始 2 开放中 3 已结束 false
+ subscribeTotalNumber: this.dataForm.subscribeTotalNumber, // 发行总数 false
+ underwritingPrice: this.dataForm.underwritingPrice, // 承销价 false
+ weight: this.dataForm.weight, // 权重 false
+ ipoStatus: this.dataForm.ipoStatus,
+ id: this.dataForm.id,
+ lockDay: this.dataForm.lockDay,
+ userApplyNums: this.dataForm.userApplyNums,
+ releaseDate: this.dataForm.releaseDate,
+ type: this.options.value || "",
+ };
+ if (!this.dataForm.id) {
+ console.log(this.row);
+ url = `/newSharesConfig/add`;
+ dataType = {
+ appliedSubscribeNumber: this.dataForm.appliedSubscribeNumber, //已申购数 false
+ // defaultLimit: this.dataForm.defaultLimit, //用户申购额度 false
+ //drawDate:this.dataForm.drawDate, // 抽签日期 2023-03-22 00:00:00 false
+ endSubscribeDate: this.dataForm.endSubscribeDate, // 截止申购日期 2023-03-22 00:00:00 false
+ marketPrice: this.dataForm.marketPrice, // 市场价 false
+ issuanceDate: this.dataForm.issuanceDate, // 发劵日期 2023-03-22 00:00:00 false
+ name: this.dataForm.name, // 股票简称 false
+ productCode: this.dataForm.productCode, // 申购代码(数字) false
+ productName: this.dataForm.productName, // 申购代码(字母) false
+ startSubscribeDate: this.dataForm.startSubscribeDate, // 开放申购日期 2023-03-22 00:00:00 false
+ status: this.dataForm.status, // 状态 1 未开始 2 开放中 3 已结束 false
+ subscribeTotalNumber: this.dataForm.subscribeTotalNumber, // 发行总数 false
+ underwritingPrice: this.dataForm.underwritingPrice, // 承销价 false
+ weight: this.dataForm.weight, // 权重 false
+ ipoStatus: this.dataForm.ipoStatus,
+ lockDay: this.dataForm.lockDay,
+ userApplyNums: this.dataForm.userApplyNums,
+ releaseDate: this.dataForm.releaseDate,
+ type: this.options.value || "",
+ };
+ }
+ this.$refs["dataForm"].validate((valid) => {
+ if (valid) {
+ this.$http({
+ url: this.$http.adornUrl(url),
+ method: "post",
+ data: this.$http.adornData(dataType),
+ }).then(({ data }) => {
+ if (data.code == 0) {
+ this.$message({
+ message: "操作成功",
+ type: "success",
+ duration: 1500,
+ onClose: () => {
+ this.visible = false;
+ this.$emit("refreshDataList");
+ },
+ });
+ } else {
+ this.$message({
+ message: data.msg,
+ type: "error",
+ duration: 1500,
+ onClose: () => { },
+ });
+ }
+ });
+ }
+ });
+ }),
+ },
+};
+</script>
+<style scoped>
+.searchInput {
+ width: 235px !important;
+}
+
+.titleDivTwo {
+ height: 40px;
+ border-left: 3px solid #1c4efa;
+ background: #f4f7ff;
+}
+
+.avatar-uploader .el-upload {
+ border: 1px dashed #d9d9d9;
+ border-radius: 6px;
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+}
+
+.avatar-uploader .el-upload:hover {
+ border-color: #409eff;
+}
+
+.avatar-uploader-icon {
+ font-size: 28px;
+ color: #8c939d;
+ width: 178px;
+ height: 178px;
+ line-height: 178px;
+ text-align: center;
+}
+
+.avatar {
+ width: 178px;
+ height: 178px;
+ display: block;
+}
+
+.speaInputTwo {
+ width: 240px;
+}
+</style>
--
Gitblit v1.9.3