index.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <template>
  2. <el-card class="box-card" v-loading="loadingStatus" element-loading-text="数据同步中,请稍后" element-loading-background="rgba(0, 0, 0, 0.2)">
  3. <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 42vw">
  4. <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)">
  5. <el-tabs v-model="activeName">
  6. <el-tab-pane label="重置时间" name="first" v-if="!userInfo.subsidiaryId">
  7. <div style="font-size: 24px; font-weight: 700; color: #e51717; text-align: center">最后一次同步时间: {{ synchroTime }}</div>
  8. <br />
  9. <el-form ref="ruleForm" :model="form" :rules="formRules" label-width="100px">
  10. <el-form-item label="重置同步时间:" prop="time">
  11. <el-date-picker
  12. type="datetime"
  13. v-model="form.time"
  14. placeholder="请选择重置同步时间"
  15. size="small"
  16. style="width: 100%"
  17. value-format="yyyy-MM-dd HH:mm:ss"
  18. :picker-options="pickerOptions"
  19. :default-time="time"
  20. >
  21. </el-date-picker>
  22. </el-form-item>
  23. <div style="width: 100%; padding-top: 16px; text-align: center">
  24. <el-button type="primary" @click="clickSubmit()" size="small" v-db-click>保 存</el-button>
  25. </div>
  26. </el-form>
  27. </el-tab-pane>
  28. <el-tab-pane label="已发货订单" name="second">
  29. <el-form ref="ruleFormTwo" :model="formTwo" :rules="formTwoRules" label-width="100px">
  30. <el-form-item label="开始时间:" prop="approve_time">
  31. <el-date-picker
  32. type="datetime"
  33. v-model="formTwo.approve_time"
  34. placeholder="请选择开始时间"
  35. size="small"
  36. style="width: 100%"
  37. value-format="yyyy-MM-dd HH:mm:ss"
  38. >
  39. </el-date-picker>
  40. </el-form-item>
  41. <el-form-item label="结束时间:" prop="end_time">
  42. <el-date-picker
  43. type="datetime"
  44. v-model="formTwo.end_time"
  45. placeholder="请选择结束时间"
  46. size="small"
  47. style="width: 100%"
  48. value-format="yyyy-MM-dd HH:mm:ss"
  49. >
  50. </el-date-picker>
  51. </el-form-item>
  52. <el-form-item label="订单号:" prop="bill_code">
  53. <el-input v-model="formTwo.bill_code" placeholder="请输入订单号" size="small"></el-input>
  54. </el-form-item>
  55. <el-form-item label="订单状态" prop="trade_status_arr">
  56. <el-select v-model="formTwo.trade_status_arr" multiple placeholder="请选择订单状态" style="width: 100%" size="small">
  57. <el-option v-for="item in tradeStatus" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="仓库编码:" prop="storage_code">
  61. <el-input v-model="formTwo.storage_code" placeholder="请输入仓库编码" size="small"></el-input>
  62. </el-form-item>
  63. <el-form-item label="付款时间:" prop="pay_time">
  64. <el-date-picker
  65. type="datetime"
  66. v-model="formTwo.pay_time"
  67. placeholder="请选择付款时间"
  68. size="small"
  69. style="width: 100%"
  70. value-format="yyyy-MM-dd HH:mm:ss"
  71. >
  72. </el-date-picker>
  73. </el-form-item>
  74. <el-form-item label="完成时间:" prop="finish_time">
  75. <el-date-picker
  76. type="datetime"
  77. v-model="formTwo.finish_time"
  78. placeholder="请选择完成时间"
  79. size="small"
  80. style="width: 100%"
  81. value-format="yyyy-MM-dd HH:mm:ss"
  82. :picker-options="pickerOptionsTwo"
  83. >
  84. </el-date-picker>
  85. </el-form-item>
  86. <el-form-item label="发货时间:" prop="send_goods_time">
  87. <el-date-picker
  88. type="datetime"
  89. v-model="formTwo.send_goods_time"
  90. placeholder="请选择发货时间"
  91. size="small"
  92. style="width: 100%"
  93. value-format="yyyy-MM-dd HH:mm:ss"
  94. :picker-options="pickerOptionsTwo"
  95. >
  96. </el-date-picker>
  97. </el-form-item>
  98. <div style="width: 100%; padding-top: 16px; text-align: center">
  99. <el-button type="primary" @click="clickTwoSubmit()" size="small" v-db-click>保 存</el-button>
  100. </div>
  101. </el-form>
  102. </el-tab-pane>
  103. </el-tabs>
  104. </div>
  105. </div>
  106. </el-card>
  107. </template>
  108. <script>
  109. import * as API from '@/api/shengde/group/synchronization/order'
  110. import moment from 'moment'
  111. import { mapGetters } from 'vuex'
  112. export default {
  113. name: 'orderSynchronization',
  114. data() {
  115. return {
  116. synchroTime: '',
  117. form: {
  118. time: '',
  119. },
  120. formRules: {
  121. time: [{ required: true, message: '请选择重置同步时间', trigger: ['change', 'blur'] }],
  122. },
  123. formTwo: {
  124. approve_time: '',
  125. end_time: '',
  126. bill_code: '',
  127. trade_status: '',
  128. trade_status_arr: '',
  129. storage_code: '',
  130. pay_time: '',
  131. finish_time: '',
  132. send_goods_time: '',
  133. },
  134. tradeStatus: [
  135. {
  136. dictValue: '打单配货',
  137. dictKey: '1',
  138. },
  139. {
  140. dictValue: '验货',
  141. dictKey: '2',
  142. },
  143. {
  144. dictValue: '承重',
  145. dictKey: '3',
  146. },
  147. {
  148. dictValue: '待发货',
  149. dictKey: '4',
  150. },
  151. {
  152. dictValue: '财审',
  153. dictKey: '5',
  154. },
  155. {
  156. dictValue: '已发货',
  157. dictKey: '8',
  158. },
  159. {
  160. dictValue: '完成',
  161. dictKey: '9',
  162. },
  163. {
  164. dictValue: '关闭',
  165. dictKey: '10',
  166. },
  167. {
  168. dictValue: '配货中',
  169. dictKey: '13',
  170. },
  171. {
  172. dictValue: '打包',
  173. dictKey: '15',
  174. },
  175. ],
  176. formTwoRules: {
  177. approve_time: [{ required: true, message: '请选择开始时间', trigger: ['change', 'blur'] }],
  178. end_time: [{ required: true, message: '请选择结束时间', trigger: ['change', 'blur'] }],
  179. bill_code: [{ required: true, message: '请输入订单号', trigger: 'blur' }],
  180. },
  181. time: '00:00:00',
  182. loadingStatus: false,
  183. pickerOptions: {
  184. disabledDate(time) {
  185. return time.getTime() < Date.now() - 8.64e7 - 8.64e7 - 8.64e7
  186. },
  187. },
  188. pickerOptionsTwo: {
  189. disabledDate(time) {
  190. return time.getTime() < Date.now() - 2592000000 - 2592000000 - 2592000000
  191. },
  192. },
  193. activeName: '',
  194. }
  195. },
  196. created() {
  197. this.time = moment().format('HH:mm:ss')
  198. },
  199. mounted() {
  200. if (this.userInfo.subsidiaryId) {
  201. this.activeName = 'second'
  202. } else {
  203. this.activeName = 'first'
  204. }
  205. this.getTime()
  206. },
  207. computed: mapGetters(['userInfo']),
  208. methods: {
  209. getTime() {
  210. API.synchroTimeDetails().then((res) => {
  211. this.synchroTime = moment(parseInt(res.data.data)).format('YYYY-MM-DD HH:mm:ss')
  212. })
  213. },
  214. clickSubmit() {
  215. this.$refs.ruleForm.validate((valid) => {
  216. if (valid) {
  217. this.loadingStatus = true
  218. API.resetTime({ time: new Date(this.form.time).getTime() }).then(
  219. () => {
  220. this.loadingStatus = false
  221. this.msgSuccess('同步完成')
  222. this.getTime()
  223. },
  224. (err) => {
  225. console.log('resetTime: ' + err)
  226. this.loadingStatus = false
  227. }
  228. )
  229. }
  230. })
  231. },
  232. clickTwoSubmit() {
  233. this.$refs.ruleFormTwo.validate((valid) => {
  234. if (valid) {
  235. if (this.formTwo.trade_status_arr && this.formTwo.trade_status_arr.length > 0) {
  236. this.formTwo.trade_status = this.formTwo.trade_status_arr.join(',')
  237. } else {
  238. this.formTwo.trade_status = ''
  239. }
  240. console.log(this.formTwo)
  241. // let data = JSON.parse(JSON.stringify(this.formTwo))
  242. // let approve_time = new Date(this.formTwo.approve_time)
  243. // data.approve_time = Date.parse(approve_time)
  244. // let end_time = new Date(this.formTwo.end_time)
  245. // data.end_time = Date.parse(end_time)
  246. // this.loadingStatus = true
  247. // API.importContract(data).then(
  248. // () => {
  249. // this.loadingStatus = false
  250. // this.msgSuccess('同步完成')
  251. // // this.resetForm('ruleFormTwo')
  252. // },
  253. // (err) => {
  254. // console.log('importContract: ' + err)
  255. // this.loadingStatus = false
  256. // }
  257. // )
  258. }
  259. })
  260. },
  261. },
  262. }
  263. </script>
  264. <style lang="scss" scoped>
  265. * {
  266. font-size: 12px;
  267. }
  268. .box-card {
  269. height: calc(100vh - 110px);
  270. overflow-y: auto;
  271. }
  272. .searchBtn {
  273. background: #20b2aa;
  274. color: #fff;
  275. border: 1px solid #20b2aa;
  276. }
  277. ::v-deep {
  278. .el-input__inner {
  279. border-radius: 1px;
  280. }
  281. .el-button--small {
  282. border-radius: 1px;
  283. }
  284. .tableHeader th {
  285. background-color: #edf0f5;
  286. height: 35px;
  287. padding: 0;
  288. }
  289. }
  290. </style>