add.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. <template>
  2. <div>
  3. <el-button size="small" type="primary" @click="dialogFormVisible = true">{{
  4. $t("新 建")
  5. }}</el-button>
  6. <el-drawer
  7. :title="$t(`新 建`)"
  8. append-to-body
  9. :show-close="false"
  10. :visible.sync="dialogFormVisible"
  11. :wrapperClosable="false"
  12. size="50%"
  13. >
  14. <div slot="title" style="font-size: 15px">{{ $t("新增服务申请单") }}</div>
  15. <div class="drawer__panel">
  16. <el-row :gutter="20">
  17. <el-form
  18. :model="form"
  19. :rules="rules"
  20. ref="form"
  21. :label-width="tool.onlyZh('140px')"
  22. label-position="right"
  23. size="mini"
  24. >
  25. <el-col :span="12">
  26. <el-form-item :label="$t(`企业名称`)+':'" prop="enterprisename">
  27. <selectAgent
  28. :customParam="agentParam"
  29. ref="agent"
  30. @selectRow="agentChange"
  31. qiyi="企业名称"
  32. >
  33. <el-input
  34. :disabled="
  35. accountInfo.usertype != 1 && accountInfo.usertype != 0
  36. "
  37. readonly
  38. type="text"
  39. slot="input"
  40. size="mini"
  41. @focus="$refs.agent.visible = true"
  42. v-model="form.enterprisename"
  43. ></el-input>
  44. </selectAgent>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="12">
  48. <el-form-item :label="$t(`服务类型`)" prop="servicetype">
  49. <el-select
  50. class="inline-24"
  51. v-model="form.servicetype"
  52. @change="classChange"
  53. :placeholder="$t(`请选择状态`)"
  54. size="mini"
  55. clearable
  56. >
  57. <el-option
  58. v-for="(item, index) in serveClassList"
  59. :key="index"
  60. :label="$t(item.value)"
  61. :value="item.value"
  62. ></el-option>
  63. </el-select>
  64. </el-form-item>
  65. </el-col>
  66. <el-col
  67. :span="12"
  68. v-if="form.servicetype == '售中' || form.servicetype == '售后'"
  69. >
  70. <el-form-item :label="$t(`订单号`)+':'" prop="sonum">
  71. <selectOrder
  72. :id="form.sys_enterpriseid"
  73. ref="order"
  74. @selectRow="orderChange"
  75. >
  76. <el-input
  77. readonly
  78. :disabled="!form.sys_enterpriseid"
  79. type="text"
  80. slot="input"
  81. size="mini"
  82. @focus="
  83. $refs.order.listData(), ($refs.order.visible = true)
  84. "
  85. v-model="form.sonum"
  86. ></el-input>
  87. </selectOrder>
  88. </el-form-item>
  89. </el-col>
  90. <el-col :span="12">
  91. <el-form-item :label="$t(`单据日期`)" prop="billdate">
  92. <el-date-picker
  93. v-model="form.billdate"
  94. type="date"
  95. value-format="yyyy-MM-dd"
  96. :placeholder="$t('选择日期')"
  97. >
  98. </el-date-picker>
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="12">
  102. <el-form-item :label="$t('省市县')" prop="province">
  103. <el-cascader :placeholder="$t('请选择')"
  104. size="mini"
  105. v-model="form.province"
  106. :options="basicData.data().areaData"
  107. ref="cascader"
  108. >
  109. </el-cascader>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <el-form-item :label="$t('地址')" prop="address">
  114. <el-input
  115. v-model="form.address"
  116. :placeholder="$t(`请输入地址`)"
  117. ></el-input>
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="12">
  121. <el-form-item :label="$t(`现场联系人`)" prop="scenecontact">
  122. <el-input
  123. v-model="form.scenecontact"
  124. :placeholder="$t(`请输入现场联系人`)"
  125. ></el-input>
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="12">
  129. <el-form-item :label="$t(`身份备注`)" prop="scenecontactrole">
  130. <el-input
  131. v-model="form.scenecontactrole"
  132. :placeholder="$t(`请输入身份备注`)"
  133. ></el-input>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="12">
  137. <el-form-item
  138. :label="$t(`现场联系人手机号`)"
  139. prop="scenecontactphonenumber"
  140. >
  141. <el-input
  142. v-model="form.scenecontactphonenumber"
  143. :placeholder="$t(`请输入现场联系人手机号`)"
  144. ></el-input>
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="12">
  148. <el-form-item :label="$t(`应用系统`)" prop="class1">
  149. <el-select
  150. class="inline-24"
  151. v-model="form.class1"
  152. @change="classChange"
  153. :placeholder="$t(`请选择应用系统`)"
  154. size="mini"
  155. clearable
  156. >
  157. <el-option
  158. v-for="(item, index) in systemapp"
  159. :key="index"
  160. :label="$t(item.value)"
  161. :value="item.value"
  162. ></el-option>
  163. </el-select>
  164. </el-form-item>
  165. </el-col>
  166. <el-col :span="12">
  167. <el-form-item :label="$t(`客诉大类`)" prop="class2">
  168. <el-select
  169. class="inline-24"
  170. v-model="form.class2"
  171. @change="classChange"
  172. :placeholder="$t(`请选择客诉大类`)"
  173. size="mini"
  174. clearable
  175. >
  176. <el-option
  177. v-for="(item, index) in customerclass"
  178. :key="index"
  179. :label="$t(item.value)"
  180. :value="item.value"
  181. ></el-option>
  182. </el-select>
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="12">
  186. <el-form-item :label="$t(`问题描述`)" prop="reason">
  187. <el-input
  188. v-model="form.reason"
  189. :placeholder="$t(`请输入问题描述`)"
  190. ></el-input>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="12">
  194. <el-form-item :label="$t(`服务开始时间`)" prop="begdate">
  195. <el-date-picker
  196. v-model="form.begdate"
  197. type="date"
  198. value-format="yyyy-MM-dd"
  199. :placeholder="$t('选择日期')"
  200. >
  201. </el-date-picker>
  202. </el-form-item>
  203. </el-col>
  204. <el-col :span="12">
  205. <el-form-item :label="$t(`服务结束时间`)" prop="enddate">
  206. <el-date-picker
  207. v-model="form.enddate"
  208. type="date"
  209. value-format="yyyy-MM-dd"
  210. :placeholder="$t('选择日期')"
  211. >
  212. </el-date-picker>
  213. </el-form-item>
  214. </el-col>
  215. <el-col :span="12">
  216. <el-form-item :label="$t('备注')" prop="remarks">
  217. <el-input
  218. type="textarea"
  219. v-model="form.remarks"
  220. :placeholder="$t(`请输入备注`)"
  221. ></el-input>
  222. </el-form-item>
  223. </el-col>
  224. </el-form>
  225. </el-row>
  226. </div>
  227. <div class="fixed__btn__panel">
  228. <el-button
  229. size="small"
  230. @click="dialogFormVisible = false"
  231. class="normal-btn-width"
  232. >{{ $t("取 消") }}</el-button
  233. >
  234. <el-button
  235. size="small"
  236. type="warning"
  237. @click="onSubmit"
  238. class="normal-btn-width btn-warning"
  239. >{{ $t("确 定") }}</el-button
  240. >
  241. </div>
  242. </el-drawer>
  243. </div>
  244. </template>
  245. <script>
  246. import selectAgent from "@/template/selectAgent/index";
  247. import selectOrder from "./selectOrder";
  248. import { log } from "@antv/g2plot/lib/utils";
  249. export default {
  250. name: "add",
  251. components: { selectAgent, selectOrder },
  252. data() {
  253. return {
  254. dialogFormVisible: false,
  255. serveClassList: [],
  256. customerclass: [],
  257. systemapp: [],
  258. accountInfo: JSON.parse(window.sessionStorage.getItem("accountinfo")),
  259. form: {
  260. sa_serviceorderid: 0, //sa_brandid<=0时 为新增
  261. servicetype: "",
  262. sa_orderid: 0,
  263. sonum: "",
  264. sys_enterpriseid: "",
  265. enterprisename: "",
  266. remarks: "",
  267. class1: "",
  268. class2: "",
  269. reason: "",
  270. province: "",
  271. city: "",
  272. county: "",
  273. address: "",
  274. scenecontact: "",
  275. scenecontactrole: "",
  276. scenecontactphonenumber: "",
  277. billdate: `${new Date().getFullYear()}-${
  278. new Date().getMonth() + 1
  279. }-${new Date().getDate()}`,
  280. begdate: "",
  281. enddate: "",
  282. },
  283. rules: {
  284. servicetype: [
  285. {
  286. required: true,
  287. message: this.$t("请选择服务类型"),
  288. trigger: "change",
  289. },
  290. ],
  291. enterprisename: [
  292. {
  293. required: true,
  294. message: this.$t("请选择经销商"),
  295. trigger: "change",
  296. },
  297. ],
  298. sonum: [
  299. { required: true, message: this.$t("请选择订单"), trigger: "change" },
  300. ],
  301. scenecontactphonenumber: [
  302. {
  303. required: true,
  304. message: this.$t("请填写手机号码"),
  305. trigger: "blur",
  306. },
  307. {
  308. pattern: /^1[3-9][0-9]\d{8}$/,
  309. message: this.$t("请输入正确手机号码"),
  310. trigger: "blur",
  311. },
  312. ],
  313. province: [
  314. {
  315. required: true,
  316. message: this.$t("请选择省市县"),
  317. trigger: "change",
  318. },
  319. ],
  320. address: [
  321. { required: true, message: this.$t("请填写地址"), trigger: "blur" },
  322. ],
  323. scenecontact: [
  324. { required: true, message: this.$t("现场联系人"), trigger: "blur" },
  325. ],
  326. scenecontactrole: [
  327. { required: true, message: this.$t("身份备注"), trigger: "blur" },
  328. ],
  329. class1: [
  330. { required: true, message: this.$t("应用系统"), trigger: "change" },
  331. ],
  332. class2: [
  333. { required: true, message: this.$t("客诉大类"), trigger: "change" },
  334. ],
  335. reason: [{ required: true, message: this.$t("问题描述"), trigger: "blur" }],
  336. begdate: [
  337. {
  338. required: true,
  339. message: this.$t("服务开始时间"),
  340. trigger: "change",
  341. },
  342. ],
  343. enddate: [
  344. {
  345. required: true,
  346. message: this.$t("服务结束时间"),
  347. trigger: "change",
  348. },
  349. ],
  350. },
  351. agentParam: {
  352. id: 20220920083901,
  353. content: {
  354. pageNumber: 1,
  355. pageSize: 20,
  356. where: {
  357. condition: "",
  358. type: 9,
  359. },
  360. },
  361. },
  362. };
  363. },
  364. methods: {
  365. onSubmit() {
  366. console.log(this.form);
  367. this.$refs["form"].validate(async (valid) => {
  368. if (!valid) return false;
  369. if (this.form.province) {
  370. this.form.city = this.form.province[1];
  371. this.form.county = this.form.province[2];
  372. this.form.province = this.form.province[0];
  373. }
  374. const res = await this.$api.requested({
  375. id: "20230206091403",
  376. version: 1,
  377. content: this.form,
  378. });
  379. this.tool.showMessage(res, () => {
  380. this.$emit("onSuccess");
  381. this.$refs["form"].resetFields();
  382. this.dialogFormVisible = false;
  383. this.$store.dispatch("changeDetailDrawer", true);
  384. this.$router.push({
  385. path: "/serveBillDetail",
  386. query: {
  387. id: res.data.sa_serviceorderid,
  388. rowindex: res.data.rowindex,
  389. },
  390. });
  391. });
  392. });
  393. },
  394. async getServeClass() {
  395. let res = await this.$api.requested({
  396. id: 20230206112003,
  397. content: {},
  398. });
  399. this.serveClassList = res.data;
  400. console.log(this.serveClassList);
  401. },
  402. orderChange(data) {
  403. console.log(data);
  404. this.form.sa_orderid = data.sa_orderid;
  405. this.form.sonum = data.sonum;
  406. this.$refs.order.visible = false;
  407. console.log(this.form.sonum);
  408. },
  409. agentChange(data) {
  410. console.log(data);
  411. this.form.sys_enterpriseid = data.sys_enterpriseid;
  412. this.form.enterprisename = data.enterprisename;
  413. this.$refs.agent.visible = false;
  414. this.form.sa_orderid = 0;
  415. this.form.sonum = "";
  416. },
  417. classChange() {
  418. if (this.form.servicetype == "售中" || this.form.servicetype == "售后") {
  419. this.$refs.agent.param.content.sys_enterpriseid =
  420. this.form.sys_enterpriseid;
  421. }
  422. },
  423. },
  424. async created() {
  425. this.getServeClass();
  426. const res = await this.$store.dispatch("optiontypeselect", "customerclass");
  427. this.customerclass = res.data;
  428. const res1 = await this.$store.dispatch("optiontypeselect", "systemapp");
  429. this.systemapp = res1.data;
  430. console.log(this.customerclass, this.systemapp);
  431. },
  432. mounted() {
  433. this.form.sys_enterpriseid =
  434. this.accountInfo.usertype != 1 && this.accountInfo.usertype != 0
  435. ? this.accountInfo.enterprise.sys_enterpriseid
  436. : "";
  437. this.form.enterprisename =
  438. this.accountInfo.usertype != 1 && this.accountInfo.usertype != 0
  439. ? this.accountInfo.enterprise.enterprisename
  440. : "";
  441. },
  442. };
  443. </script>
  444. <style scoped>
  445. .dialog-footer {
  446. margin-top: 0;
  447. }
  448. .el-select,
  449. .el-input,
  450. .el-cascader {
  451. width: 100% !important;
  452. }
  453. </style>