index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. <template>
  2. <div>
  3. <basicLayout
  4. customClassName="quotedPriceList"
  5. ref="quotedPriceList"
  6. formPath="QuotedPrice"
  7. tableName="quotedPriceTable"
  8. idName="sa_quotedpriceid"
  9. :apiId="{ query: 20221020165103, del: 20221020165503 }"
  10. :options="options"
  11. :isExport="false"
  12. :autoQuery="false"
  13. :specialKey="[
  14. { key: 'leader', value: 'name' },
  15. { key: 'tag_sys', value: null },
  16. { key: 'industry', value: null },
  17. ]"
  18. :detail-path="{ path: '/quotedPriceDetail' }"
  19. >
  20. <template #titleRight>
  21. <div>
  22. <exportFile :param="param" fileName="报价单" ></exportFile>
  23. </div>
  24. </template>
  25. <template #custom>
  26. <div class="mt-10">
  27. <label class="search__label">{{ $t("范围") }}:</label>
  28. <el-select
  29. class="inline-24"
  30. v-model="tabName"
  31. :placeholder="$t(`请选择数据分类`)"
  32. @change="selectChange"
  33. size="small"
  34. >
  35. <el-option
  36. v-for="item in editableTabs"
  37. :key="item.index"
  38. :label="$t(item.templetname)"
  39. :value="item.templetid"
  40. ></el-option>
  41. </el-select>
  42. </div>
  43. <div class="mt-10">
  44. <label class="search__label">{{ $t("报价类型") }}:</label>
  45. <el-select
  46. class="inline-24"
  47. v-model="selectParam.isproject"
  48. :placeholder="$t(`请选择报价类型`)"
  49. @change="selectChange"
  50. size="small"
  51. clearable
  52. >
  53. <el-option
  54. v-for="item in isprojectList"
  55. :key="item.value"
  56. :label="$t(item.label)"
  57. :value="item.value"
  58. >
  59. </el-option>
  60. </el-select>
  61. </div>
  62. <div class="mt-10">
  63. <label class="search__label">{{ $t("状态") }}:</label>
  64. <el-select
  65. class="inline-24"
  66. v-model="selectParam.status"
  67. :placeholder="$t(`请选择状态`)"
  68. @change="selectChange"
  69. size="small"
  70. clearable
  71. >
  72. <el-option
  73. v-for="item in statusList"
  74. :key="item.value"
  75. :label="$t(item.value)"
  76. :value="item.value"
  77. >
  78. </el-option>
  79. </el-select>
  80. </div>
  81. <div class="mt-10">
  82. <label class="search__label">{{ $t("创建日期") }}:</label>
  83. <el-date-picker
  84. style="margin-right: 24px !important"
  85. size="small"
  86. @change="selectChange"
  87. value-format="yyyy-MM-dd"
  88. v-model="dateSelect"
  89. type="daterange"
  90. :range-separator="$t(`至`)"
  91. :start-placeholder="$t(`开始日期`)"
  92. :end-placeholder="$t(`结束日期`)"
  93. clearable
  94. >
  95. </el-date-picker>
  96. </div>
  97. </template>
  98. <template v-slot:tbList="scope">
  99. <div v-if="scope.data.column.columnname === 'specialoffer'">
  100. <div v-if="scope.data.column.data.specialoffer === 0">
  101. {{ $t("否") }}
  102. </div>
  103. <div v-else-if="scope.data.column.data.specialoffer === 1">
  104. {{ $t("是") }}
  105. </div>
  106. <div v-else>--</div>
  107. </div>
  108. <div v-else-if="scope.data.column.columnname === 'tag'">
  109. <div
  110. v-for="item in scope.data.column.data.tag"
  111. :key="item.index"
  112. style="float: left; margin-left: 5px; margin-bottom: 5px"
  113. >
  114. <el-tag type="warning" size="mini">
  115. <span>{{ $t(item) }}</span>
  116. </el-tag>
  117. </div>
  118. <div
  119. v-for="item in scope.data.column.data.tag_sys"
  120. :key="item.index"
  121. style="float: left; margin-left: 5px; margin-bottom: 5px"
  122. >
  123. <el-tag size="mini">
  124. <span>{{ $t(item) }}</span>
  125. </el-tag>
  126. </div>
  127. </div>
  128. <div v-else-if="scope.data.column.columnname === 'leader'">
  129. <span>{{
  130. scope.data.column.data.leader.length !== 0
  131. ? scope.data.column.data.leader[0].name
  132. : "--"
  133. }}</span>
  134. </div>
  135. <div v-else-if="scope.data.column.columnname === 'status'">
  136. <span
  137. style="color: #3874f6"
  138. v-if="
  139. scope.data.column.data[[scope.data.column.columnname]] == '新建'
  140. "
  141. >{{
  142. $t(scope.data.column.data[[scope.data.column.columnname]])
  143. }}</span
  144. >
  145. <span
  146. style="color: #67C23A"
  147. v-else-if="
  148. scope.data.column.data[[scope.data.column.columnname]] == '提交'
  149. "
  150. >{{
  151. $t(scope.data.column.data[[scope.data.column.columnname]])
  152. }}</span
  153. >
  154. <span
  155. style="color: #e6a23c"
  156. v-else-if="
  157. scope.data.column.data[[scope.data.column.columnname]] == '审核'
  158. "
  159. >{{
  160. $t(scope.data.column.data[[scope.data.column.columnname]])
  161. }}</span
  162. >
  163. <span
  164. style="color: #e6a23c"
  165. v-else-if="
  166. scope.data.column.data[[scope.data.column.columnname]] == '复核'
  167. "
  168. >{{
  169. $t(scope.data.column.data[[scope.data.column.columnname]])
  170. }}</span
  171. >
  172. <span
  173. v-else
  174. >{{
  175. $t(scope.data.column.data[[scope.data.column.columnname]])
  176. }}</span
  177. >
  178. </div>
  179. <div v-else-if="scope.data.column.columnname === 'invaliddate'">
  180. <p>
  181. {{
  182. scope.data.column.data.begdate
  183. ? scope.data.column.data.begdate +
  184. $t("至") +
  185. scope.data.column.data.enddate
  186. : "--"
  187. }}
  188. </p>
  189. </div>
  190. <div v-else-if="scope.data.column.columnname === 'salesman'">
  191. <!-- {{issaler?'&#45;&#45;':scope.data.column.data.createby}}-->
  192. <span>{{
  193. scope.data.column.data.leader.length !== 0
  194. ? scope.data.column.data.leader[0].name
  195. : "--"
  196. }}</span>
  197. </div>
  198. <div v-else-if="scope.data.column.columnname === 'distributor'">
  199. {{ issaler ? scope.data.column.data.enterprisename : "--" }}
  200. </div>
  201. <div v-else>
  202. {{
  203. scope.data.column.data[[scope.data.column.columnname]]
  204. ? $t(scope.data.column.data[[scope.data.column.columnname]])
  205. : "--"
  206. }}
  207. </div>
  208. </template>
  209. <!-- <template v-slot:tbOpreation="scope">
  210. <el-button size="mini" type="text" @click="$router.push({path:'/quotedPriceDetail',query:{id:scope.data.data.sa_quotedpriceid,rowindex:scope.data.data.rowindex}})">详情</el-button>
  211. </template>-->
  212. </basicLayout>
  213. </div>
  214. </template>
  215. <script>
  216. import importExcel from "./modules/importQuotedPrice.vue";
  217. import exportFile from "@/components/export_file/index2";
  218. import {mapGetters} from "vuex";
  219. export default {
  220. name: "index",
  221. components: {
  222. importExcel,
  223. exportFile,
  224. },
  225. data() {
  226. return {
  227. issaler: false,
  228. options: [],
  229. tabName: "",
  230. tabIndex: "1",
  231. dateSelect: "",
  232. editableTabs: [],
  233. statusList: [
  234. {
  235. value: "新建",
  236. },
  237. {
  238. value: "提交",
  239. },
  240. {
  241. value: "审核",
  242. },
  243. {
  244. value: "复核",
  245. },
  246. ],
  247. isprojectList: [
  248. {
  249. label: "客户报价",
  250. value: "0",
  251. },
  252. {
  253. label: "项目报价",
  254. value: "1",
  255. },
  256. ],
  257. selectParam: {
  258. status: "",
  259. isproject: "",
  260. startdate: "",
  261. enddate: "",
  262. },
  263. param: {},
  264. };
  265. },
  266. methods: {
  267. selectChange() {
  268. this.tabIndex = this.tabName;
  269. let sort = [
  270. {
  271. reversed: 0,
  272. sorted: 1,
  273. sortid: 71,
  274. sortname: "默认",
  275. },
  276. {
  277. reversed: 0,
  278. sorted: 1,
  279. sortid: 136,
  280. sortname: "站点全部",
  281. },
  282. ];
  283. if (this.dateSelect !== "" && this.dateSelect !== null) {
  284. this.selectParam.startdate = this.dateSelect[0];
  285. this.selectParam.enddate = this.dateSelect[1];
  286. } else {
  287. this.selectParam.startdate = "";
  288. this.selectParam.enddate = "";
  289. }
  290. this.$refs.quotedPriceList.param.content.type = this.tabIndex;
  291. this.$refs.quotedPriceList.param.content.where = this.selectParam;
  292. if (this.tabIndex == "99") {
  293. this.$refs.quotedPriceList.param.content.sort = [sort[1]];
  294. } else {
  295. this.$refs.quotedPriceList.param.content.sort = [sort[0]];
  296. }
  297. this.param = this.$refs.quotedPriceList.param;
  298. this.$refs.quotedPriceList.listData(this.$refs.quotedPriceList.param.content.pageNumber = 1);
  299. },
  300. /*是否经销商*/
  301. async isSaler() {
  302. const res = await this.$api.requested({
  303. classname: "common.usercenter.usercenter",
  304. content: {},
  305. method: "queryUserMsg",
  306. });
  307. this.issaler = res.data.hr.issaler;
  308. },
  309. async queryUserInfo() {
  310. let res = await this.$api.requested({
  311. classname: "common.usercenter.usercenter",
  312. method: "queryUserMsg",
  313. content: {},
  314. });
  315. this.userInfo = {
  316. isAuth: res.data.hr.isleader,
  317. userid: res.data.hr.userid,
  318. };
  319. console.log(this.userInfo, "user");
  320. window.sessionStorage.setItem("userInfo", JSON.stringify(this.userInfo));
  321. console.log(JSON.parse(window.sessionStorage.getItem("userInfo")));
  322. },
  323. list(param) {
  324. param.content.isAll = 0;
  325. param.content.deleted = 0;
  326. param.content.type = this.tabName;
  327. },
  328. list2(data) {},
  329. async querytemplet() {
  330. const res = await this.$api.requested({
  331. classname: "sysmanage.develop.querytemplet.querytemplet",
  332. method: "query",
  333. content: {},
  334. });
  335. this.editableTabs = res.data;
  336. for (let i = 0; i < res.data.length; i++) {
  337. if (res.data[i].templetname == "站点全部") {
  338. this.tabName = res.data[i].templetid;
  339. break;
  340. } else {
  341. this.tabName = res.data[0].templetid;
  342. }
  343. }
  344. this.selectChange();
  345. },
  346. async onExport() {
  347. const res = await this.$api.requested({
  348. id: 20221020165103,
  349. content: {
  350. type: this.tabName,
  351. pageNumber: 1,
  352. pageSize: 20,
  353. isAll: 1,
  354. isExport: 1, //0:不导出,1:导出
  355. where: {
  356. condition: "",
  357. startdate: "",
  358. enddate: "",
  359. },
  360. },
  361. });
  362. window.open(res.data, "_self");
  363. },
  364. },
  365. mounted() {
  366. this.isSaler();
  367. this.querytemplet();
  368. },
  369. computed:{
  370. ...mapGetters({
  371. closeDrawerTemp:'closeDrawerTemp',
  372. historyRouter:'historyRouter'
  373. })
  374. },
  375. watch:{
  376. closeDrawerTemp (val) {
  377. if (!this.editableTabs){
  378. this.querytemplet()
  379. }
  380. }
  381. },
  382. created() {
  383. this.queryUserInfo();
  384. },
  385. };
  386. </script>
  387. <style scoped>
  388. </style>