AddVersion.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <template>
  2. <div>
  3. <crumbs :title="title" :param="$route.params" linkTo="VersionInfo"></crumbs>
  4. <div class="contents">
  5. <div class="content">
  6. <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
  7. <el-form ref="form" :label-position="labelPosition" label-width="108px" class="add-version-form" :model="form" :rules="rules">
  8. <el-form-item label="版本号归属:" prop="productType">
  9. <el-select v-model="form.productType"
  10. placeholder="请选择"
  11. size="small"
  12. :disabled="id && !copy?true:false">
  13. <el-option
  14. v-for="item in typeList"
  15. :key="item.key"
  16. :label="item.name"
  17. :value="item.key">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="版本号:" prop="name" class="version-num">
  22. <el-input v-model="form.name" placeholder="请输入版本号" maxlength="21"></el-input>
  23. </el-form-item>
  24. <el-form-item label="版本时间:" prop="refreshTime">
  25. <el-date-picker
  26. v-model="form.refreshTime"
  27. type="date"
  28. placeholder="选择日期"
  29. value-format="yyyy-MM-dd"
  30. :clearable='false'>
  31. </el-date-picker>
  32. </el-form-item>
  33. <el-form-item label="版本备注:" prop="remark" class="discDesc">
  34. <el-input type="textarea" :rows="3" placeholder="请输入版本备注" v-model="form.remark" maxlength="121"></el-input>
  35. </el-form-item>
  36. <el-form-item label="版本说明:" v-if="list&&list.length>0">
  37. </el-form-item>
  38. <VersionDesc :detail="list" :versionId="id" :isFirst="isFirst" :isCopy="copy" @func="getDetailList"/>
  39. <el-button class="disclButn" size="small" type="primary" :disabled = 'saveDisable' @click="comfirn('form')">确定</el-button>
  40. </el-form>
  41. <!-- <VersionDesc :detail="list" :versionId="id" :isFirst="isFirst" :isCopy="copy" @func="getDetailList"/>
  42. <el-button class="disclButn" size="small" type="primary" @click="comfirn">确定</el-button> -->
  43. </div>
  44. </div>
  45. </div>
  46. </template>
  47. <script type="text/javascript">
  48. import api from '@api/icss.js';
  49. import VersionDesc from './VersionDesc.vue';
  50. export default {
  51. name:'AddVersion',
  52. data(){
  53. const titleVaild = (rule, value, callback) => {
  54. if (!value) {
  55. return callback(new Error('请输入版本号'));
  56. }
  57. if (value.length > 20) {
  58. this.form.name = value.substr(0, 20);
  59. this.$message({
  60. showClose: true,
  61. type: 'warning',
  62. message: '版本号已超过最大限制20字'
  63. })
  64. }
  65. callback();
  66. };
  67. const remarkVaild = (rule, value, callback) => {
  68. if (value.length > 120) {
  69. this.form.remark = value.substr(0, 120);
  70. this.$message({
  71. showClose: true,
  72. type: 'warning',
  73. message: '版本备注已超过最大限制120字'
  74. })
  75. }
  76. callback();
  77. };
  78. return{
  79. // data:{},
  80. list:[],
  81. labelPosition:'left',
  82. isFirst:true,
  83. title:'版本信息维护-添加版本信息',
  84. form:{
  85. name:'',
  86. refreshTime:'',
  87. remark:'',
  88. productType:null
  89. },
  90. id:null,
  91. rules:{
  92. name:[{ required: true, validator: titleVaild, trigger: [ 'change'] },
  93. { required: true, message: '请输入版本号',trigger: ['blur', 'change'] }],
  94. remark:{ required: false, validator: remarkVaild, trigger: [ 'change'] },
  95. refreshTime:{ required: true, message: '请选择时间', trigger: ['blur', 'change'] },
  96. productType:{ required: true, message: '请选择版本号归属', trigger: ['blur', 'change'] },
  97. },
  98. pickerOptions1:{
  99. disabledDate(time) {
  100. return time.getTime() < Date.now();
  101. },
  102. },
  103. copy:null,
  104. saveDisable: false, //保存按钮禁止点击
  105. typeList:[]
  106. }
  107. },
  108. created(){
  109. let info = this.$route.params.info;
  110. this.copy = this.$route.params.copy;
  111. if(info){
  112. this.id = info.id;
  113. this.form.name = info.name;
  114. this.form.refreshTime = info.refreshTime;
  115. this.form.remark = info.remark;
  116. this.form.productType = info.productType && !this.copy?info.productType:null;
  117. this.title = this.copy?"版本信息维护-复制版本信息":"版本信息维护-修改版本信息";
  118. // this.getList();
  119. this.list = info.detail;
  120. }
  121. let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
  122. this.typeList = typeList.productTypeEnum;
  123. },
  124. methods:{
  125. /*getList(){
  126. api.getVersionDetlInfo({id:this.id}).then((res)=>{
  127. const result = res.data;
  128. if(result.code==0){
  129. this.list = result.data;
  130. }else{
  131. this.$message({
  132. message:result.msg,
  133. type:'warning'
  134. });
  135. }
  136. })
  137. },*/
  138. getDetailList(data){//子组件数据
  139. this.list = data;
  140. },
  141. comfirn(form){
  142. /*if(!this.form.name.trim() || !this.form.refreshTime.trim()){
  143. this.$message({
  144. message:'请填写相关内容',
  145. type:'warning'
  146. });
  147. return
  148. }*/
  149. this.$refs[form].validate((valid) => {
  150. if (valid) {
  151. if(this.id && !this.copy){//修改
  152. const param = Object.assign({},this.form,{id:this.id})
  153. this.saveDisable = true //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  154. api.updateVersInfo(param).then((res)=>{
  155. if(res.data.code==0){
  156. this.$message({
  157. message:"修改成功",
  158. type:'success'
  159. });
  160. //返回带搜索条件的首页
  161. this.$router.push({
  162. name: 'VersionInfo',
  163. params: Object.assign({}, this.$route.params, {currentPage: 1})
  164. });
  165. }else{
  166. this.$message({
  167. message:res.data.msg,
  168. type:'warning'
  169. });
  170. }
  171. this.saveDisable = false
  172. })
  173. }else{//添加
  174. // 复制时把list多余字段过滤掉,如id等
  175. const detail = this.list;
  176. let copyDetail=[];
  177. let item={};
  178. if(detail && detail.length>0){
  179. for(let i=0; i<detail.length; i++){
  180. item.title = detail[i].title;
  181. item.description = detail[i].description;
  182. copyDetail.push(item);
  183. item={};
  184. }
  185. }
  186. const params = Object.assign({},this.form,{'versionDetail':copyDetail});
  187. // api.addVersInfo(this.form).then((res)=>{
  188. this.saveDisable = true //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  189. api.addVersInfo(params).then((res)=>{
  190. if(res.data.code==0){
  191. this.$message({
  192. message:"添加成功",
  193. type:'success'
  194. })
  195. // this.$router.push({path: 'LT-GBBXXWH-BBXXWH'});
  196. this.$router.push({name: 'VersionInfo'});
  197. }else{
  198. this.$message({
  199. message:res.data.msg,
  200. type:'warning'
  201. });
  202. }
  203. this.saveDisable = false
  204. })
  205. }
  206. } else {
  207. return false;
  208. }
  209. });
  210. },
  211. },
  212. components:{
  213. VersionDesc
  214. }
  215. }
  216. </script>
  217. <style lang="less">
  218. @import "../../less/admin.less";
  219. .content{
  220. background: #fff;
  221. // padding: 20px 20px 30px;
  222. padding: 20px 20px 50px;
  223. color: #545455;
  224. min-width: 980px;
  225. position: relative;
  226. .discDesc{
  227. margin-bottom: 20px;
  228. }
  229. .disclButn{
  230. position: absolute;
  231. right: 80px;
  232. bottom: 10px;
  233. }
  234. }
  235. .add-version-form{
  236. .version-num{
  237. width: 500px;
  238. }
  239. }
  240. </style>