editTarget.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. <template>
  2. <div class="edit_dialog_container">
  3. <el-dialog
  4. :modal-append-to-body='false'
  5. :title="editTitle"
  6. :visible.sync="isShowedit"
  7. :close-on-click-modal="false"
  8. @close="cancelHandle"
  9. center
  10. v-dialogDrag
  11. custom-class="dialogclass"
  12. width="700px">
  13. <div slot="title" style="display:flex;alignItems:center;">
  14. <img :src="$icons.edit" style="color:#fff;width:16px;height:16px;marginRight:5px;">
  15. <span style="fontSize:16px;">{{editTitle==='编辑指标'?$t('ManualEdbListPage.edit_edb_msg'):$t('ManualEdbListPage.edit_input_data')}}</span>
  16. </div>
  17. <div class="dialog-min" style="height:560px;">
  18. <div style="overflowY:auto;overflowX:hidden;">
  19. <el-tree
  20. class="type-list"
  21. accordion
  22. highlight-current
  23. :data="typeList"
  24. :props="defaultProps"
  25. @node-click="chooseType"
  26. style="width:160px;">
  27. </el-tree>
  28. </div>
  29. <div class="rigth-cont">
  30. <el-form
  31. ref="formD"
  32. label-position="right"
  33. label-width="120px"
  34. :model="formData"
  35. :rules="formRules">
  36. <el-form-item :label="$t('ManualEdbListPage.label_classify')" prop="type">
  37. <span style="fontSize:14px;" :class="editTitle==='修改录入数据'?'not-allow':''">{{formData.type}}</span>
  38. </el-form-item>
  39. <!-- 修改数据 -->
  40. <template v-if="editTitle==='修改录入数据'">
  41. <el-form-item label="录入日期" prop="date">
  42. <el-date-picker type="date" placeholder="选择日期" v-model="formData.date" value-format="yyyy-MM-dd" style="width: 321px"></el-date-picker>
  43. </el-form-item>
  44. <el-form-item label="录入指标" prop="target">
  45. <el-select v-model="formData.target" placeholder="请选择录入指标" filterable disabled style="width: 321px">
  46. <el-option
  47. v-for="item in targetList"
  48. :key="item.TRADE_CODE"
  49. :label="item.SEC_NAME"
  50. :value="item.SEC_NAME">
  51. </el-option>
  52. </el-select>
  53. </el-form-item>
  54. <el-form-item label="值" prop="value">
  55. <!-- <span class="require_tag">*</span> -->
  56. <el-input v-model="formData.value" placeholder="请填写数值" style="width: 321px"></el-input>
  57. </el-form-item>
  58. </template>
  59. <!-- 修改指标 -->
  60. <template v-else>
  61. <el-form-item :label="$t('Edb.Detail.e_fre')" prop="frequency">
  62. <!-- <span class="require_tag">*</span> -->
  63. <el-select v-model="formData.frequency" placeholder="请选择频度" style="width: 321px" @change="handleFrequencyChange">
  64. <el-option
  65. v-for="item in frequencyArr"
  66. :label="item.label"
  67. :value="item.value"
  68. :key="item.value"
  69. ></el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item :label="$t('Edb.Detail.e_unit')" prop="unit">
  73. <!-- <span class="require_tag">*</span> -->
  74. <!-- <el-input v-model="formData.unit" placeholder="请填写单位" style="width: 321px"></el-input> -->
  75. <el-autocomplete
  76. class="inline-input"
  77. v-model="formData.unit"
  78. :fetch-suggestions="querySearchUnit"
  79. placeholder="请填写单位"
  80. suffix-icon="el-icon-arrow-down"
  81. style="width: 321px;"
  82. ></el-autocomplete>
  83. </el-form-item>
  84. <el-form-item :label="$t('Edb.Detail.e_name')" prop="targetName">
  85. <!-- <span class="require_tag">*</span> -->
  86. <el-input v-model="formData.targetName" placeholder="请输入指标名称" style="width: 321px"></el-input>
  87. </el-form-item>
  88. <el-form-item :label="$t('ManualEdbListPage.label_update_remin')" prop="up_week" v-permission="permissionBtn.dataSourcePermission.manualData_add_updateRemind">
  89. <el-select v-model="formData.up_week" :placeholder="$t('ManualEdbListPage.ph_update_remin')" style="width:145px" v-if="formData.frequency === '周度'">
  90. <el-option
  91. v-for="item in weeksArr"
  92. :label="item.label"
  93. :value="item.value"
  94. :key="item.value"
  95. ></el-option>
  96. </el-select>
  97. <el-select v-model="formData.up_day" placeholder="请选择更新日" style="width:145px" v-if="formData.frequency === '月度'">
  98. <el-option :label="item" :value="item" v-for="(item,index) in days" :key="index"></el-option>
  99. </el-select>
  100. <el-select v-model="formData.up_day" placeholder="请选择更新日" style="width:145px" v-if="formData.frequency === '季度'">
  101. <el-option label="每季度末" value="每季度末"></el-option>
  102. </el-select>
  103. <el-select v-model="formData.up_day" placeholder="请选择更新日" style="width:145px" v-if="formData.frequency === '半年度'">
  104. <el-option label="每半年末" value="每半年末"></el-option>
  105. </el-select>
  106. <el-select v-model="formData.up_day" placeholder="请选择更新日" style="width:145px" v-if="formData.frequency === '年度'">
  107. <el-option label="每年末" value="每年末"></el-option>
  108. </el-select>
  109. <el-time-picker
  110. :style="formData.frequency === '日度'?'width:321px':'width:170px'"
  111. v-model="formData.up_time"
  112. value-format="HH:mm:ss"
  113. :placeholder="$t('ManualEdbListPage.ph_update_remin')">
  114. </el-time-picker>
  115. </el-form-item>
  116. </template>
  117. </el-form>
  118. <div class="dialog-footer">
  119. <el-button type="primary" size="medium" @click.native="editHandle()"><!-- 提交 -->{{$t('Dialog.submit_btn')}}</el-button>
  120. <!-- <el-button type="primary" size="medium" @click.native="editHandle()" v-else>提交</el-button> -->
  121. <el-button size="medium" @click.native="cancelHandle" style="marginLeft:50px;"><!-- 取消 -->{{$t('Dialog.cancel_btn')}}</el-button>
  122. </div>
  123. </div>
  124. </div>
  125. </el-dialog>
  126. </div>
  127. </template>
  128. <script>
  129. import {dataInterence} from 'api/api.js';
  130. export default {
  131. name:'',
  132. props:{
  133. tab_act:{
  134. type:Number
  135. },
  136. //标题
  137. editTitle: {
  138. type:String
  139. },
  140. // 指标类型
  141. typeList: {
  142. type:Array
  143. },
  144. // 显示弹窗
  145. isShowedit: {
  146. type:Boolean
  147. },
  148. // 修改的表单数据
  149. formData: {
  150. type:Object,
  151. default:{}
  152. },
  153. //编辑id
  154. edit_dataId: {
  155. type:String|Number
  156. },
  157. // 修改数据时的老日期
  158. old_date: {
  159. type:String,
  160. default:''
  161. },
  162. //指标单位
  163. unitList:{
  164. type:Array
  165. }
  166. },
  167. data () {
  168. return {
  169. defaultProps: {
  170. children: 'Child',
  171. label: 'ClassifyName'
  172. },
  173. formRules:{
  174. date:[
  175. {required: true, message: '请选择日期', trigger: 'blur'}
  176. ],
  177. frequency:[
  178. { required: true,message: /* '频度不能为空' */this.$t('Edb.Valids.fre_msg'), trigger: 'change' }
  179. ],
  180. value:[
  181. { required: true,message: /* '录入值不能为空' */this.$t('Edb.Valids.val_msg'), trigger: 'blur' }
  182. ],
  183. target:[
  184. { required: true,message: '录入指标不能为空', trigger: 'change' }
  185. ],
  186. unit:[
  187. { required: true,message: /* '单位不能为空' */this.$t('Edb.Valids.unit_msg'), trigger: 'change' }
  188. ],
  189. targetName:[
  190. { required: true,message: /* '指标名称不能为空' */this.$t('Edb.Valids.name_msg'), trigger: 'blur' }
  191. ],
  192. },
  193. frequencyArr: [
  194. { label:'日度',value:'日度' },
  195. { label:'周度',value:'周度' },
  196. { label:'旬度',value:'旬度' },
  197. { label:'月度',value:'月度' },
  198. { label:'季度',value:'季度' },
  199. { label:'半年度',value:'半年度' },
  200. { label:'年度',value:'年度' },
  201. ],
  202. weeksArr: [
  203. { label:'周一',value:'周一' },
  204. { label:'周二',value:'周二' },
  205. { label:'周三',value:'周三' },
  206. { label:'周四',value:'周四' },
  207. { label:'周五',value:'周五' },
  208. { label:'周六',value:'周六' },
  209. { label:'周日',value:'周日' },
  210. ],
  211. classify_id:'',//分类id
  212. targetList:[],//指标列表
  213. defaultNode:'',
  214. // unitList:[
  215. // {value:'吨'},
  216. // {value:'元'},
  217. // {value:'米'},
  218. // ]
  219. };
  220. },
  221. watch: {
  222. formData: {
  223. handler(newValue) {
  224. // console.log(newValue)
  225. this.formData = newValue;
  226. },
  227.   deep: true
  228. },
  229. // // 指标值发生变化时
  230. // 'formData.target': {
  231. // handler() {
  232. // this.getTargetlist();
  233. // },
  234. // },
  235. // // 指标分类发生变化时
  236. // 'formData.type': {
  237. // handler() {
  238. // //重置指标值
  239. // // this.$emit('resetTarget');
  240. // this.getTargetlist();
  241. // },
  242. // }
  243. },
  244. computed:{
  245. days() {
  246. let days = [];
  247. for(let i = 1;i<=30;i++) {
  248. if(i < 10) {
  249. days.push('0'+i+'日')
  250. }else {
  251. days.push(i+'日')
  252. }
  253. }
  254. return days
  255. }
  256. },
  257. methods: {
  258. //搜索单位
  259. querySearchUnit(queryString, cb){
  260. let results = queryString ? this.unitList.filter(item=>item.value.indexOf(queryString) === 0) : this.unitList;
  261. // 调用 callback 返回建议列表的数据
  262. cb(results);
  263. },
  264. // 频度改变
  265. handleFrequencyChange(e){
  266. if(e==='季度'){
  267. this.formData.up_day='每季度末'
  268. }else if(e==='半年度'){
  269. this.formData.up_day='每半年末'
  270. }else if(e==='年度'){
  271. this.formData.up_day='每年末'
  272. }
  273. },
  274. // 获取指标列表
  275. // getTargetlist() {
  276. // console.log(this.is_editData,this.edit_dataId)
  277. // dataInterence.searchTarget({
  278. // classify_id:this.is_editData?this.edit_dataId:this.classify_id,
  279. // key_word:this.formData.target||''
  280. // }).then(res => {
  281. // if(res.Ret === 200) {
  282. // this.targetList = res.data;
  283. // }
  284. // })
  285. // },
  286. // 点击确定
  287. editHandle(type) {
  288. this.$refs.formD.validate((valid) => {
  289. if (valid) {
  290. if(this.tab_act === 0) {
  291. // 检查录入日期数据是否已存在
  292. dataInterence.checkData({
  293. TradeCode:this.formData.trade_code,
  294. CreateDate:this.formData.date
  295. }).then(res => {
  296. if(res.Data.Status==0) {
  297. //编辑数据
  298. dataInterence.editData({
  299. TradeCode:this.formData.trade_code,
  300. CreateDate:this.formData.date,
  301. Close:this.formData.value,
  302. OldCreateDate:this.old_date
  303. }).then(res => {
  304. if(res.Ret === 200) {
  305. this.$message({
  306. message: '录入成功',
  307. type: 'success'
  308. });
  309. this.$emit('editDataOver')
  310. }else {
  311. this.$message({
  312. message: res.Msg,
  313. type: 'warning'
  314. });
  315. }
  316. })
  317. }else if(res.Data.Status==1) {
  318. this.$confirm('该日期已存在数据值'+res.Data.Close+',确认修改?','提示',{
  319. type:'warning'
  320. }).then(() => {
  321. //编辑数据
  322. dataInterence.editData({
  323. TradeCode:this.formData.trade_code,
  324. CreateDate:this.formData.date,
  325. Close:this.formData.value,
  326. OldCreateDate:this.old_date
  327. }).then(res => {
  328. if(res.Ret === 200) {
  329. this.$message({
  330. message: '修改成功',
  331. type: 'success'
  332. });
  333. this.$emit('editDataOver')
  334. }else {
  335. this.$message({
  336. message: res.Msg,
  337. type: 'warning'
  338. });
  339. }
  340. })
  341. })
  342. }else {
  343. console.log(res.Msg)
  344. }
  345. })
  346. }else {
  347. // let notice_time = this.formData.frequency === '日度'?this.formData.up_time
  348. // :this.formData.frequency === '周度'?this.formData.up_week+' ' + this.formData.up_time
  349. // :this.formData.frequency === '月度'?this.formData.up_day+' ' + this.formData.up_time
  350. // :this.formData.frequency === '季度'?this.formData.up_day+' ' + this.formData.up_time
  351. // :this.formData.frequency === '半年度'?this.formData.up_day+' ' + this.formData.up_time
  352. // :this.formData.frequency === '年度'?this.formData.up_day+' ' + this.formData.up_time:''
  353. let notice_time=''
  354. if(this.formData.frequency==='日度'){
  355. notice_time=this.formData.up_time
  356. }else if(this.formData.frequency === '周度'){
  357. if(this.formData.up_week&&this.formData.up_time){
  358. notice_time=this.formData.up_week+' ' + this.formData.up_time
  359. }
  360. }else{
  361. if(this.formData.up_day&&this.formData.up_time){
  362. notice_time=this.formData.up_day+' ' + this.formData.up_time
  363. }
  364. }
  365. // 编辑指标
  366. dataInterence.editTarget({
  367. ClassifyId:Number(this.edit_dataId),
  368. TradeCode:this.formData.trade_code,
  369. Frequency:this.formData.frequency,
  370. Unit:this.formData.unit,
  371. SecName:this.formData.targetName,
  372. NoticeTime:notice_time
  373. }).then(res => {
  374. if(res.Ret === 200) {
  375. this.$message({
  376. message: '修改成功',
  377. type: 'success'
  378. });
  379. this.$emit('editDataOver',1)
  380. }else if(res.Ret!=403){
  381. this.$message({
  382. message: res.Msg,
  383. type: 'warning'
  384. });
  385. }
  386. })
  387. }
  388. } else {
  389. // console.log('error submit!!');
  390. return false;
  391. }
  392. });
  393. },
  394. cancelHandle() {
  395. this.$emit('cancelEdit',1);
  396. },
  397. // 选择类别
  398. chooseType(item) {
  399. //修改指标可选择分类
  400. if(this.tab_act !== 0) {
  401. if(!item.Child || !item.Child.length ) {
  402. //修改表单数据
  403. this.$emit('changeEditForm',item.ClassifyName,item.ClassifyId)
  404. this.classify_id = item.ClassifyId;
  405. // console.log(this.classify_id)
  406. }
  407. }
  408. },
  409. },
  410. created() {
  411. },
  412. mounted() {
  413. },
  414. }
  415. </script>
  416. <style lang='scss'>
  417. .edit_dialog_container {
  418. .dialog-min {
  419. display: flex;
  420. .rigth-cont {
  421. border-left: 1px solid #dcdcdc;
  422. padding: 0 0 48px 60px;
  423. .not-allow {
  424. // background-color: #F5F7FA;
  425. color: #C0C4CC;
  426. cursor: not-allowed;
  427. }
  428. .el-form-item {
  429. position: relative;
  430. .require_tag {
  431. font-size: 20px;
  432. color: #F56C6C;
  433. position: absolute;
  434. left: -132px;
  435. top: 4px;
  436. }
  437. }
  438. .el-input{
  439. width: 100%;
  440. }
  441. }
  442. // ele-reset
  443. .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  444. // background: #fff !important;
  445. // color: #5882EF !important;
  446. background: #fff !important;
  447. .el-tree-node__label {
  448. // background: #fff !important;
  449. color: #5882EF !important;
  450. }
  451. }
  452. .el-tree-node {
  453. margin-bottom: 18px !important;
  454. }
  455. .el-tree-node__children .el-tree-node {
  456. margin-bottom: 0 !important;
  457. }
  458. .el-tree-node__content:hover {
  459. color: #5882EF !important;
  460. }
  461. .el-tree-node__content>.el-tree-node__label {
  462. font-size: 16px !important;
  463. color: #333;
  464. font-weight: bold;
  465. }
  466. .el-tree-node__children .el-tree-node__content>.el-tree-node__label {
  467. font-size: 14px !important;
  468. font-weight: normal !important;
  469. }
  470. // .el-form-item__label {
  471. // font-size: 17px;
  472. // text-align: left;
  473. // color: #3464E0;
  474. // }
  475. .el-form-item__label {
  476. font-size: 14px;
  477. color: #333;
  478. width: 100px !important;
  479. text-align:inherit;
  480. }
  481. .el-form-item__content {
  482. margin-left: 120px !important;
  483. }
  484. // .el-date-editor,.el-input {
  485. // width: 321px !important;
  486. // }
  487. // .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before {
  488. // content: ''!important;
  489. // // color: #F56C6C;
  490. // margin-right: 0 !important;
  491. // }
  492. .el-tree-node.is-expanded>.el-tree-node__children {
  493. margin-top: 5px!important;
  494. }
  495. }
  496. .dialog-footer {
  497. margin: 50px 0;
  498. display: flex;
  499. justify-content: center;
  500. }
  501. }
  502. </style>